aboutsummaryrefslogtreecommitdiff
path: root/scumm/script.cpp
diff options
context:
space:
mode:
authorMax Horn2003-01-01 17:57:14 +0000
committerMax Horn2003-01-01 17:57:14 +0000
commit53a8fc24fe6b248234a2e2b5036526097f5a7834 (patch)
tree7eb5dc5a0efaea96302357f3359fab6dbbff4442 /scumm/script.cpp
parent0ab1edf809972ac94a03d74d72d730a0d72e1184 (diff)
downloadscummvm-rg350-53a8fc24fe6b248234a2e2b5036526097f5a7834.tar.gz
scummvm-rg350-53a8fc24fe6b248234a2e2b5036526097f5a7834.tar.bz2
scummvm-rg350-53a8fc24fe6b248234a2e2b5036526097f5a7834.zip
fixed cutscene override in V8; cleanup
svn-id: r6316
Diffstat (limited to 'scumm/script.cpp')
-rw-r--r--scumm/script.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp
index 82311a5207..f64e4658c7 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -918,7 +918,6 @@ int Scumm::getVerbEntrypoint(int obj, int entry)
void Scumm::endCutscene()
{
ScriptSlot *ss = &vm.slot[_currentScript];
- uint32 *csptr;
int args[16];
memset(args, 0, sizeof(args));
@@ -929,12 +928,11 @@ void Scumm::endCutscene()
args[0] = vm.cutSceneData[vm.cutSceneStackPointer];
_vars[VAR_OVERRIDE] = 0;
- csptr = &vm.cutScenePtr[vm.cutSceneStackPointer];
- if (*csptr && (ss->cutsceneOverride > 0)) // Only terminate if active
+ if (vm.cutScenePtr[vm.cutSceneStackPointer] && (ss->cutsceneOverride > 0)) // Only terminate if active
ss->cutsceneOverride--;
vm.cutSceneScript[vm.cutSceneStackPointer] = 0;
- *csptr = 0;
+ vm.cutScenePtr[vm.cutSceneStackPointer] = 0;
vm.cutSceneStackPointer--;
if (_vars[VAR_CUTSCENE_END_SCRIPT])
@@ -998,14 +996,16 @@ bool Scumm::isRoomScriptRunning(int script)
void Scumm::beginOverride()
{
int idx;
- uint32 *ptr;
idx = vm.cutSceneStackPointer;
- ptr = &vm.cutScenePtr[idx];
+ assert(idx < 5);
- *ptr = _scriptPointer - _scriptOrgPointer;
+ vm.cutScenePtr[idx] = _scriptPointer - _scriptOrgPointer;
vm.cutSceneScript[idx] = _currentScript;
+ // Skip the jump instruction following the override instruction
+ // (the jump is responsible for "skipping" cutscenes, and the reason
+ // why we record the current script position in vm.cutScenePtr).
fetchScriptByte();
fetchScriptWord();
_vars[VAR_OVERRIDE] = 0;
@@ -1014,12 +1014,11 @@ void Scumm::beginOverride()
void Scumm::endOverride()
{
int idx;
- uint32 *ptr;
idx = vm.cutSceneStackPointer;
- ptr = &vm.cutScenePtr[idx];
+ assert(idx < 5);
- *ptr = 0;
+ vm.cutScenePtr[idx] = 0;
vm.cutSceneScript[idx] = 0;
_vars[VAR_OVERRIDE] = 0;
}
@@ -1152,6 +1151,7 @@ void Scumm::exitCutscene()
if (ss->cutsceneOverride > 0)
ss->cutsceneOverride--;
+printf("exitCutscene()\n");
_vars[VAR_OVERRIDE] = 1;
vm.cutScenePtr[vm.cutSceneStackPointer] = 0;
}