From 91bdf9a3f5abff5651679b414de878a890219b44 Mon Sep 17 00:00:00 2001 From: Tobias Gunkel Date: Sun, 29 Jan 2012 17:18:31 +0100 Subject: SCUMM: fix cutscenes by reintroduction of freeze modes --- engines/scumm/script_v0.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'engines') 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; } } -- cgit v1.2.3