diff options
author | Ralph Brorsen | 2002-08-25 11:35:13 +0000 |
---|---|---|
committer | Ralph Brorsen | 2002-08-25 11:35:13 +0000 |
commit | d473d295c4513db29ddefeed321d5c4ee48b6195 (patch) | |
tree | be551c6bba565a8036f9a94c40390d6deab7983b | |
parent | fe53d3ecc2226082561eadbe288d2c8dcdd98e65 (diff) | |
download | scummvm-rg350-d473d295c4513db29ddefeed321d5c4ee48b6195.tar.gz scummvm-rg350-d473d295c4513db29ddefeed321d5c4ee48b6195.tar.bz2 scummvm-rg350-d473d295c4513db29ddefeed321d5c4ee48b6195.zip |
Fix for #556564
svn-id: r4846
-rw-r--r-- | scumm/saveload.cpp | 2 | ||||
-rw-r--r-- | scumm/script.cpp | 5 | ||||
-rw-r--r-- | scumm/script_v2.cpp | 12 | ||||
-rw-r--r-- | scumm/scumm.h | 4 |
4 files changed, 13 insertions, 10 deletions
diff --git a/scumm/saveload.cpp b/scumm/saveload.cpp index e2e11d555b..9e718f9f6e 100644 --- a/scumm/saveload.cpp +++ b/scumm/saveload.cpp @@ -535,7 +535,7 @@ void Scumm::saveOrLoad(Serializer *s) MKLINE(ScriptSlot, offs, sleUint32), MKLINE(ScriptSlot, delay, sleInt32), MKLINE(ScriptSlot, number, sleUint16), - MKLINE(ScriptSlot, newfield, sleUint16), + MKLINE(ScriptSlot, delayFrameCount, sleUint16), MKLINE(ScriptSlot, status, sleByte), MKLINE(ScriptSlot, where, sleByte), MKLINE(ScriptSlot, unk1, sleByte), diff --git a/scumm/script.cpp b/scumm/script.cpp index f46bd4bb24..d5fd2458d3 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -70,6 +70,7 @@ void Scumm::runScript(int script, int a, int b, int16 *lvarptr) s->unk1 = a; s->unk2 = b; s->freezeCount = 0; + s->delayFrameCount = 0; initializeLocals(slot, lvarptr); @@ -620,6 +621,7 @@ void Scumm::runExitScript() vm.slot[slot].unk1 = 0; vm.slot[slot].unk2 = 0; vm.slot[slot].freezeCount = 0; + vm.slot[slot].delayFrameCount = 0; runScriptNested(slot); } if (_vars[VAR_EXIT_SCRIPT2]) @@ -639,6 +641,7 @@ void Scumm::runEntryScript() vm.slot[slot].unk1 = 0; vm.slot[slot].unk2 = 0; vm.slot[slot].freezeCount = 0; + vm.slot[slot].delayFrameCount = 0; runScriptNested(slot); } if (_vars[VAR_ENTRY_SCRIPT2]) @@ -770,7 +773,7 @@ void Scumm::runVerbCode(int object, int entry, int a, int b, int16 *vars) vm.slot[slot].unk1 = a; vm.slot[slot].unk2 = b; vm.slot[slot].freezeCount = 0; - vm.slot[slot].newfield = 0; + vm.slot[slot].delayFrameCount = 0; initializeLocals(slot, vars); diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index 5487e9dc1e..cde491405d 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -286,7 +286,7 @@ void Scumm::setupOpcodes2() /* C8 */ &Scumm::o6_kernelFunction, &Scumm::o6_miscOps, - &Scumm::o6_breakMaybe, + &Scumm::o6_delayFrames, &Scumm::o6_pickOneOf, /* CC */ &Scumm::o6_pickOneOfDefault, @@ -2984,15 +2984,15 @@ void Scumm::o6_kernelFunction() } } -void Scumm::o6_breakMaybe() +void Scumm::o6_delayFrames() { ScriptSlot *ss = &vm.slot[_currentScript]; - if (ss->newfield == 0) { - ss->newfield = pop(); + if (ss->delayFrameCount== 0) { + ss->delayFrameCount = pop(); } else { - ss->newfield--; + ss->delayFrameCount--; } - if (ss->newfield) { + if (ss->delayFrameCount) { _scriptPointer--; o6_breakHere(); } diff --git a/scumm/scumm.h b/scumm/scumm.h index 693535aba5..8147020f33 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -108,7 +108,7 @@ struct ScriptSlot { uint32 offs; int32 delay; uint16 number; - uint16 newfield; + uint16 delayFrameCount; byte status; byte where; byte unk1, unk2, freezeCount, didexec; @@ -1213,7 +1213,7 @@ public: void o6_distPtPt(); void o6_dummy_stacklist(); void o6_miscOps(); - void o6_breakMaybe(); + void o6_delayFrames(); void o6_pickOneOf(); void o6_pickOneOfDefault(); void o6_jumpToScript(); |