aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorRalph Brorsen2002-08-25 11:35:13 +0000
committerRalph Brorsen2002-08-25 11:35:13 +0000
commitd473d295c4513db29ddefeed321d5c4ee48b6195 (patch)
treebe551c6bba565a8036f9a94c40390d6deab7983b /scumm
parentfe53d3ecc2226082561eadbe288d2c8dcdd98e65 (diff)
downloadscummvm-rg350-d473d295c4513db29ddefeed321d5c4ee48b6195.tar.gz
scummvm-rg350-d473d295c4513db29ddefeed321d5c4ee48b6195.tar.bz2
scummvm-rg350-d473d295c4513db29ddefeed321d5c4ee48b6195.zip
Fix for #556564
svn-id: r4846
Diffstat (limited to 'scumm')
-rw-r--r--scumm/saveload.cpp2
-rw-r--r--scumm/script.cpp5
-rw-r--r--scumm/script_v2.cpp12
-rw-r--r--scumm/scumm.h4
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();