[Scummvm-cvs-logs] SF.net SVN: scummvm: [30167] scummvm/trunk/engines/scumm
sev at users.sourceforge.net
sev at users.sourceforge.net
Wed Jan 2 22:15:24 CET 2008
Revision: 30167
http://scummvm.svn.sourceforge.net/scummvm/?rev=30167&view=rev
Author: sev
Date: 2008-01-02 13:15:23 -0800 (Wed, 02 Jan 2008)
Log Message:
-----------
Fix for bug #896489: "DIG: Missing subtitles when talking to Brink"
Modified Paths:
--------------
scummvm/trunk/engines/scumm/intern.h
scummvm/trunk/engines/scumm/script_v6.cpp
scummvm/trunk/engines/scumm/scumm.cpp
Modified: scummvm/trunk/engines/scumm/intern.h
===================================================================
--- scummvm/trunk/engines/scumm/intern.h 2008-01-02 21:05:36 UTC (rev 30166)
+++ scummvm/trunk/engines/scumm/intern.h 2008-01-02 21:15:23 UTC (rev 30167)
@@ -604,6 +604,8 @@
int _curVerb;
int _curVerbSlot;
+ bool _forcedWaitForMessage;
+
public:
ScummEngine_v6(OSystem *syst, const DetectorResult &dr);
Modified: scummvm/trunk/engines/scumm/script_v6.cpp
===================================================================
--- scummvm/trunk/engines/scumm/script_v6.cpp 2008-01-02 21:05:36 UTC (rev 30166)
+++ scummvm/trunk/engines/scumm/script_v6.cpp 2008-01-02 21:15:23 UTC (rev 30167)
@@ -2372,11 +2372,46 @@
}
void ScummEngine_v6::o6_talkActor() {
+ int offset = _scriptPointer - _scriptOrgPointer;
+
+ // WORKAROUNDfor bug #896489: see below for detailed description
+ if (_forcedWaitForMessage) {
+ if (VAR(VAR_HAVE_MSG)) {
+ _scriptPointer--;
+ o6_breakHere();
+ return;
+ }
+
+ _forcedWaitForMessage = false;
+ _scriptPointer += resStrLen(_scriptPointer) + 1;
+
+ return;
+ }
+
_actorToPrintStrFor = pop();
_string[0].loadDefault();
actorTalk(_scriptPointer);
+ // WORKAROUND for bug #896489: "DIG: Missing subtitles when talking to Brink"
+ // Original script does not have wait.waitForMessage() after several messages:
+ //
+ // [011A] (5D) if (getActorCostume(VAR_EGO) == 1) {
+ // [0126] (BA) talkActor("/STOP.008/Low out.",3)
+ // [013D] (A9) wait.waitForMessage()
+ // [013F] (5D) } else if (var227 == 0) {
+ // [014C] (BA) talkActor("/STOP.009/Never mind.",3)
+ // [0166] (73) } else {
+ //
+ // Here we simulate that opcode.
+ if (_game.id == GID_DIG && vm.slot[_currentScript].number == 88) {
+ if (offset == 0x158 || offset == 0x214 || offset == 0x231 || offset == 0x278) {
+ _forcedWaitForMessage = true;
+ _scriptPointer--;
+
+ return;
+ }
+ }
_scriptPointer += resStrLen(_scriptPointer) + 1;
}
Modified: scummvm/trunk/engines/scumm/scumm.cpp
===================================================================
--- scummvm/trunk/engines/scumm/scumm.cpp 2008-01-02 21:05:36 UTC (rev 30166)
+++ scummvm/trunk/engines/scumm/scumm.cpp 2008-01-02 21:15:23 UTC (rev 30167)
@@ -674,6 +674,8 @@
_curVerb = 0;
_curVerbSlot = 0;
+ _forcedWaitForMessage = false;
+
VAR_VIDEONAME = 0xFF;
VAR_RANDOM_NR = 0xFF;
VAR_STRING2DRAW = 0xFF;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list