aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/kyra/engine/timer_eob.cpp14
-rw-r--r--engines/kyra/gui/gui_eob.cpp2
-rw-r--r--engines/kyra/gui/saveload_eob.cpp2
-rw-r--r--engines/kyra/script/script_eob.cpp4
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;
}