diff options
Diffstat (limited to 'engines/voyeur/voyeur.cpp')
-rw-r--r-- | engines/voyeur/voyeur.cpp | 46 |
1 files changed, 44 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); |