diff options
-rw-r--r-- | engines/voyeur/voyeur.cpp | 46 | ||||
-rw-r--r-- | engines/voyeur/voyeur.h | 1 |
2 files changed, 45 insertions, 2 deletions
diff --git a/engines/voyeur/voyeur.cpp b/engines/voyeur/voyeur.cpp index 1e140f8621..75d97aa174 100644 --- a/engines/voyeur/voyeur.cpp +++ b/engines/voyeur/voyeur.cpp @@ -163,8 +163,7 @@ void VoyeurEngine::doHeadTitle() { return; } - playRL2Video("a1100100.rl2"); - // TODO + showTitleScreen(); } void VoyeurEngine::showConversionScreen() { @@ -392,6 +391,49 @@ bool VoyeurEngine::doLock() { return result; } +void VoyeurEngine::showTitleScreen() { + if (_bVoy->getBoltGroup(0x10500)) { + _graphicsManager._backgroundPage = _bVoy->getPictureResource(0x500); + + (*_graphicsManager._vPort)->setupViewPort(); + (*_graphicsManager._vPort)->_flags |= DISPFLAG_8; + _graphicsManager.flipPage(); + _eventsManager.sWaitFlip(); + + // Immediate palette load to show the initial screen + CMapResource *cMap = _bVoy->getCMapResource(0x501); + assert(cMap); + cMap->_steps = 60; + cMap->startFade(); + + // Wait briefly + _eventsManager.delay(200); + if (shouldQuit()) + return; + + // Fade out the screen + cMap = _bVoy->getCMapResource(0x504); + cMap->_steps = 30; + cMap->startFade(); + + (*_graphicsManager._vPort)->_flags |= DISPFLAG_8; + _graphicsManager.flipPage(); + _eventsManager.sWaitFlip(); + + while (!shouldQuit() && (_eventsManager._fadeStatus & 1)) + _eventsManager.delay(1); + if (shouldQuit()) + return; + + _graphicsManager.screenReset(); + _eventsManager.delay(200); + _bVoy->freeBoltGroup(0x10500); + + playRL2Video("a1100100.rl2"); + _graphicsManager.screenReset(); + } +} + void VoyeurEngine::playRL2Video(const Common::String &filename) { ::Video::RL2Decoder decoder; decoder.loadFile(filename); diff --git a/engines/voyeur/voyeur.h b/engines/voyeur/voyeur.h index 06ac691569..10fe19253c 100644 --- a/engines/voyeur/voyeur.h +++ b/engines/voyeur/voyeur.h @@ -79,6 +79,7 @@ private: void doHeadTitle(); void showConversionScreen(); bool doLock(); + void showTitleScreen(); protected: // Engine APIs virtual Common::Error run(); |