aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Gunkel2012-01-29 17:18:31 +0100
committerTobias Gunkel2012-02-11 08:29:54 +0100
commit91bdf9a3f5abff5651679b414de878a890219b44 (patch)
treef28173d7748fce9b3a54573adb8379b2f3a392ed
parent984c2a05e4e4ec643c1135c6b087f6e7faf1997f (diff)
downloadscummvm-rg350-91bdf9a3f5abff5651679b414de878a890219b44.tar.gz
scummvm-rg350-91bdf9a3f5abff5651679b414de878a890219b44.tar.bz2
scummvm-rg350-91bdf9a3f5abff5651679b414de878a890219b44.zip
SCUMM: fix cutscenes by reintroduction of freeze modes
-rw-r--r--engines/scumm/script_v0.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp
index a7187237f3..faac991193 100644
--- a/engines/scumm/script_v0.cpp
+++ b/engines/scumm/script_v0.cpp
@@ -636,14 +636,13 @@ void ScummEngine_v0::setMode(byte mode) {
_redrawSentenceLine = false;
// Note: do not change freeze state here
state = USERSTATE_SET_IFACE |
- USERSTATE_SET_CURSOR |
- USERSTATE_SET_FREEZE;
+ USERSTATE_SET_CURSOR;
break;
case kModeKeypad:
_redrawSentenceLine = false;
state = USERSTATE_SET_IFACE |
USERSTATE_SET_CURSOR | USERSTATE_CURSOR_ON |
- USERSTATE_SET_FREEZE;
+ USERSTATE_SET_FREEZE | USERSTATE_FREEZE_ON;
break;
case kModeNormal:
case kModeNoNewKid:
@@ -927,12 +926,14 @@ void ScummEngine_v0::o_cutscene() {
vm.cutSceneData[0] = _currentMode;
vm.cutSceneData[2] = _currentRoom;
+ freezeScripts(0);
setMode(kModeCutscene);
_sentenceNum = 0;
resetSentence();
vm.cutScenePtr[0] = 0;
+ vm.cutSceneScript[0] = 0;
}
void ScummEngine_v0::o_endCutscene() {
@@ -946,8 +947,13 @@ void ScummEngine_v0::o_endCutscene() {
if (_currentMode == kModeKeypad) {
startScene(vm.cutSceneData[2], 0, 0);
+ // in contrast to the normal keypad behavior we unfreeze scripts here
+ unfreezeScripts();
} else {
+ unfreezeScripts();
actorFollowCamera(VAR(VAR_EGO));
+ // set mode again to have the freeze mode right
+ setMode(vm.cutSceneData[0]);
_redrawSentenceLine = true;
}
}