diff options
-rw-r--r-- | engines/draci/game.cpp | 8 | ||||
-rw-r--r-- | engines/draci/game.h | 2 | ||||
-rw-r--r-- | engines/draci/screen.cpp | 6 | ||||
-rw-r--r-- | engines/draci/script.cpp | 2 |
4 files changed, 9 insertions, 9 deletions
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp index b2e28b70a7..e59e4677b5 100644 --- a/engines/draci/game.cpp +++ b/engines/draci/game.cpp @@ -243,15 +243,15 @@ void Game::loop() { if (_fadePhase > 0 && (_vm->_system->getMillis() - _fadeTick) >= kFadingTimeUnit) { _fadeTick = _vm->_system->getMillis(); --_fadePhase; - const BAFile *startPal = _vm->_paletteArchive->getFile(_currentRoom._palette); - const BAFile *endPal = getScheduledPalette() >= 0 ? _vm->_paletteArchive->getFile(getScheduledPalette()) : NULL; - _vm->_screen->interpolatePalettes(startPal->_data, endPal->_data, 0, kNumColours, _fadePhases - _fadePhase, _fadePhases); + const byte *startPal = _currentRoom._palette >= 0 ? _vm->_paletteArchive->getFile(_currentRoom._palette)->_data : NULL; + const byte *endPal = getScheduledPalette() >= 0 ? _vm->_paletteArchive->getFile(getScheduledPalette())->_data : NULL; + _vm->_screen->interpolatePalettes(startPal, endPal, 0, kNumColours, _fadePhases - _fadePhase, _fadePhases); if (_loopSubstatus == kSubstatusFade && _fadePhase == 0) { setExitLoop(true); // Rewrite the palette index of the current // room. This is necessary when two fadings // are called after each other, such as in the - // intro. We rely on that getScheduledPalette() >= 0. + // intro. _currentRoom._palette = getScheduledPalette(); } } diff --git a/engines/draci/game.h b/engines/draci/game.h index e4d857809b..0f1765345f 100644 --- a/engines/draci/game.h +++ b/engines/draci/game.h @@ -200,7 +200,7 @@ struct Room { int _roomNum; byte _music; WalkingMap _walkingMap; - byte _palette; + int _palette; int _numOverlays; int _init, _look, _use, _canUse; bool _imInit, _imLook, _imUse; diff --git a/engines/draci/screen.cpp b/engines/draci/screen.cpp index d7c5dec027..019ffa605e 100644 --- a/engines/draci/screen.cpp +++ b/engines/draci/screen.cpp @@ -55,7 +55,7 @@ Screen::~Screen() { */ void Screen::setPalette(const byte *data, uint16 start, uint16 num) { Common::MemoryReadStream pal(data ? data : _blackPalette, 3 * kNumColours); - pal.seek(start * 4); + pal.seek(start * 3); // Copy the palette for (uint16 i = start; i < start + num; ++i) { @@ -77,8 +77,8 @@ void Screen::setPalette(const byte *data, uint16 start, uint16 num) { void Screen::interpolatePalettes(const byte *first, const byte *second, uint16 start, uint16 num, int index, int number) { Common::MemoryReadStream firstPal(first ? first : _blackPalette, 3 * kNumColours); Common::MemoryReadStream secondPal(second ? second : _blackPalette, 3 * kNumColours); - firstPal.seek(start * 4); - secondPal.seek(start * 4); + firstPal.seek(start * 3); + secondPal.seek(start * 3); // Interpolate the palettes for (uint16 i = start; i < start + num; ++i) { diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp index b09a9d6298..ae8127d496 100644 --- a/engines/draci/script.cpp +++ b/engines/draci/script.cpp @@ -869,7 +869,7 @@ void Script::setPalette(Common::Queue<int> ¶ms) { } // Immediately update the palette _vm->_screen->copyToScreen(); - _vm->_system->delayMillis(100); + _vm->_system->delayMillis(20); } void Script::quitGame(Common::Queue<int> ¶ms) { |