diff options
| -rw-r--r-- | engines/kyra/engine/timer_eob.cpp | 14 | ||||
| -rw-r--r-- | engines/kyra/gui/gui_eob.cpp | 2 | ||||
| -rw-r--r-- | engines/kyra/gui/saveload_eob.cpp | 2 | ||||
| -rw-r--r-- | engines/kyra/script/script_eob.cpp | 4 |
4 files changed, 19 insertions, 3 deletions
diff --git a/engines/kyra/engine/timer_eob.cpp b/engines/kyra/engine/timer_eob.cpp index ef50201bc8..8bc81b324a 100644 --- a/engines/kyra/engine/timer_eob.cpp +++ b/engines/kyra/engine/timer_eob.cpp @@ -61,6 +61,9 @@ void EoBCoreEngine::enableSysTimer(int sysTimer) { KyraRpgEngine::enableSysTimer(sysTimer); + if (!_disableElapsedTime) + return; + _disableElapsedTime = _system->getMillis() - _disableElapsedTime; for (int i = 0; i < 6; i++) { @@ -75,8 +78,10 @@ void EoBCoreEngine::enableSysTimer(int sysTimer) { if (_scriptTimersMode & 1) { for (int i = 0; i < _scriptTimersCount; i++) { - if (_scriptTimers[i].next) + if (_scriptTimers[i].next) { _scriptTimers[i].next += _disableElapsedTime; + debugC(3, kDebugLevelTimer, "EoBCoreEngine::enableSysTimer() - CTIME: %08d SCRIPT TIMER[%02d].NEXT: %08d", _system->getMillis(), i, _scriptTimers[i].next); + } } } @@ -94,6 +99,9 @@ void EoBCoreEngine::disableSysTimer(int sysTimer) { KyraRpgEngine::disableSysTimer(sysTimer); + if (_disableElapsedTime) + return; + _disableElapsedTime = _system->getMillis(); } @@ -202,9 +210,11 @@ void EoBCoreEngine::advanceTimers(uint32 millis) { if (_scriptTimers[i].next > ct) { uint32 chrt = _scriptTimers[i].next - ct; _scriptTimers[i].next = chrt > millis ? ct + chrt - millis : 1; + debugC(3, kDebugLevelTimer, "EoBCoreEngine::advanceTimers() - CTIME: %08d SCRIPT TIMER[%02d].NEXT: %08d", ct, i, _scriptTimers[i].next); } else if (_scriptTimers[i].next) { _scriptTimers[i].next = 1; - } + debugC(3, kDebugLevelTimer, "EoBCoreEngine::advanceTimers() - CTIME: %08d SCRIPT TIMER[%02d].NEXT: %08d", ct, i, _scriptTimers[i].next); + } } } diff --git a/engines/kyra/gui/gui_eob.cpp b/engines/kyra/gui/gui_eob.cpp index 981a33fb52..2d51adb498 100644 --- a/engines/kyra/gui/gui_eob.cpp +++ b/engines/kyra/gui/gui_eob.cpp @@ -507,7 +507,7 @@ void EoBCoreEngine::gui_drawInventoryItem(int slot, int redraw, int pageNum) { uint8 col1 = guiSettings()->colors.frame1; uint8 col2 = guiSettings()->colors.frame2; - if (_flags.platform == Common::kPlatformAmiga) { + if (_flags.gameID == GI_EOB1 && _flags.platform == Common::kPlatformAmiga) { col1 = guiSettings()->colors.inactiveTabFrame1; col2 = guiSettings()->colors.inactiveTabFrame2; } else if (_configRenderMode == Common::kRenderCGA) { diff --git a/engines/kyra/gui/saveload_eob.cpp b/engines/kyra/gui/saveload_eob.cpp index 5a55c8f68b..07c99d5b95 100644 --- a/engines/kyra/gui/saveload_eob.cpp +++ b/engines/kyra/gui/saveload_eob.cpp @@ -51,6 +51,8 @@ Common::Error EoBCoreEngine::loadGameState(int slot) { if (slot != -1) _screen->fadeToBlack(10); + enableSysTimer(2); + for (int i = 0; i < 6; i++) { EoBCharacter *c = &_characters[i]; c->id = in.readByte(); diff --git a/engines/kyra/script/script_eob.cpp b/engines/kyra/script/script_eob.cpp index a7363967d7..8c0fb0601e 100644 --- a/engines/kyra/script/script_eob.cpp +++ b/engines/kyra/script/script_eob.cpp @@ -58,6 +58,7 @@ const uint8 *EoBCoreEngine::initScriptTimers(const uint8 *pos) { _scriptTimers[_scriptTimersCount].ticks = ticks; pos += 2; _scriptTimers[_scriptTimersCount++].next = _system->getMillis() + ticks * _tickLength; + debugC(3, kDebugLevelTimer, "EoBCoreEngine::initScriptTimers() - CTIME: %08d SCRIPT TIMER[%02d].NEXT: %08d", _system->getMillis(), _scriptTimersCount - 1, _scriptTimers[_scriptTimersCount - 1].next); } return pos; @@ -76,6 +77,7 @@ void EoBCoreEngine::updateScriptTimers() { if (_scriptTimers[i].next < _system->getMillis()) { _inf->run(_scriptTimers[i].func, _flags.gameID == GI_EOB1 ? 0x20 : 0x80); _scriptTimers[i].next = _system->getMillis() + _scriptTimers[i].ticks * _tickLength; + debugC(3, kDebugLevelTimer, "EoBCoreEngine::updateScriptTimers() - CTIME: %08d SCRIPT TIMER[%02d].NEXT: %08d", _system->getMillis(), i, _scriptTimers[i].next); _sceneUpdateRequired = true; timerUpdate = true; } @@ -1537,6 +1539,8 @@ int EoBInfProcessor::oeob_delay(int8 *data) { } int EoBInfProcessor::oeob_drawScene(int8 *data) { + if (_vm->game() == GI_EOB2 && _vm->gameFlags().platform == Common::kPlatformAmiga) + _screen->setupDualPalettesSplitScreen(_screen->getPalette(6), _screen->getPalette(7)); _vm->drawScene(1); return 0; } |
