From d473d295c4513db29ddefeed321d5c4ee48b6195 Mon Sep 17 00:00:00 2001 From: Ralph Brorsen Date: Sun, 25 Aug 2002 11:35:13 +0000 Subject: Fix for #556564 svn-id: r4846 --- scumm/saveload.cpp | 2 +- scumm/script.cpp | 5 ++++- scumm/script_v2.cpp | 12 ++++++------ scumm/scumm.h | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) (limited to 'scumm') 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(); -- cgit v1.2.3