aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/engine
diff options
context:
space:
mode:
authorathrxx2019-04-11 22:55:51 +0200
committerathrxx2019-04-13 18:55:02 +0200
commit6c496af5af4006304d01f0e6026e897c44ee57ef (patch)
treee3c91548e015ad76edb20ed000a0ecc8e78ecad1 /engines/kyra/engine
parentd84061c036dcf27efa9276a2f86619af0eac1dbe (diff)
downloadscummvm-rg350-6c496af5af4006304d01f0e6026e897c44ee57ef.tar.gz
scummvm-rg350-6c496af5af4006304d01f0e6026e897c44ee57ef.tar.bz2
scummvm-rg350-6c496af5af4006304d01f0e6026e897c44ee57ef.zip
KYRA: (EOB2/Amiga) - final glitches fix
Diffstat (limited to 'engines/kyra/engine')
-rw-r--r--engines/kyra/engine/timer_eob.cpp14
1 files changed, 12 insertions, 2 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);
+ }
}
}