[Scummvm-cvs-logs] CVS: scummvm/scumm script_v6.cpp,1.453.2.5,1.453.2.6

Joost Peters joostp at users.sourceforge.net
Mon Jan 23 11:29:01 CET 2006


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20914/scumm

Modified Files:
      Tag: branch-0-8-0
	script_v6.cpp 
Log Message:
Backport eriktorbjorn's patch for bug #1398195.

Even though I personally don't consider COMI playable/enjoyable on PSP with 0.8.* (speed-wise - it's considerably better with 0.9.0 due to the smooth scrolling optimisation and the increased size of maxHeapThreshold), someone with a high tolerance might actually play it, so I guess we should fix the hang here too.



Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.453.2.5
retrieving revision 1.453.2.6
diff -u -d -r1.453.2.5 -r1.453.2.6
--- script_v6.cpp	18 Jan 2006 18:07:32 -0000	1.453.2.5
+++ script_v6.cpp	23 Jan 2006 19:28:45 -0000	1.453.2.6
@@ -2255,6 +2255,18 @@
 	int num = getStackList(list, ARRAYSIZE(list));
 
 	_sound->soundKludge(list, num);
+
+	// WORKAROUND for bug #1398195: The room-11-2016 script contains a
+	// slight bug causing it to busy-wait for a sound to finish. Even under
+	// the best of circumstances, this will cause the game to hang briefly.
+	// On platforms where threading is cooperative, it will cause the game
+	// to hang indefinitely. We identify the buggy part of the script by
+	// looking for a soundKludge() opcode immediately followed by a jump.
+
+	if (_gameId == GID_CMI && _roomResource == 11 && vm.slot[_currentScript].number == 2016 && *_scriptPointer == 0x66) {
+		debug(3, "Working around script bug in room-11-2016");
+		o6_breakHere();
+	}
 }
 
 void ScummEngine_v6::o6_isAnyOf() {





More information about the Scummvm-git-logs mailing list