diff options
author | athrxx | 2019-04-11 22:55:51 +0200 |
---|---|---|
committer | athrxx | 2019-04-13 18:55:02 +0200 |
commit | 6c496af5af4006304d01f0e6026e897c44ee57ef (patch) | |
tree | e3c91548e015ad76edb20ed000a0ecc8e78ecad1 /engines/kyra/engine | |
parent | d84061c036dcf27efa9276a2f86619af0eac1dbe (diff) | |
download | scummvm-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.cpp | 14 |
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); + } } } |