[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,2.140,2.141

Torbjörn Andersson eriktorbjorn at users.sourceforge.net
Sat May 28 05:30:04 CEST 2005


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

Modified Files:
	imuse.cpp 
Log Message:
Swapped the last two parameters to Sam & Max iMUSE command 257. This fixes
bug #1202071 and probably (it's much less obvious) bug #888248 as well.

Since these parameters are both zero in all other known uses of this
particular iMUSE command, it doesn't affect anything else.

I don't know if it's correct, or if it sounds like in the original, but it
sounds good to me.


Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.140
retrieving revision 2.141
diff -u -d -r2.140 -r2.141
--- imuse.cpp	27 May 2005 10:25:14 -0000	2.140
+++ imuse.cpp	28 May 2005 12:29:31 -0000	2.141
@@ -847,9 +847,34 @@
 				return player->getParam(a[2], a[3]);
 			}
 		case 1:
-			if (g_scumm->_gameId == GID_SAMNMAX)
-				player->jump(a[3] - 1, (a[4] - 1) * 4 + a[5], ((a[6] * player->getTicksPerBeat()) >> 2) + a[7]);
-			else
+			if (g_scumm->_gameId == GID_SAMNMAX) {
+				// FIXME: Could someone verify this?
+				//
+				// This jump instruction is known to be used in
+				// the following cases:
+				//
+				// 1) Going anywhere on the USA map
+				// 2) Winning the Wak-A-Rat game
+				// 3) Losing or quitting the Wak-A-Rat game
+				// 4) Conroy hitting Max with a golf club
+				//
+				// For all these cases the position parameters
+				// are always the same: 2, 1, 0, 0.
+				//
+				// 5) When leaving the bigfoot party. The
+				//    position parameters are: 3, 4, 300, 0
+				// 6) At Frog Rock, when the UFO appears. The
+				//    position parameters are: 10, 4, 400, 1
+				//
+				// The last two cases used to be buggy, so I
+				// have made a change to how the last two
+				// position parameters are handled. I still do
+				// not know if it's correct, but it sounds
+				// good to me at least.
+
+				debug(0, "doCommand(%d [%d/%d], %d, %d, %d, %d, %d, %d, %d)", a[0], param, cmd, a[1], a[2], a[3], a[4], a[5], a[6], a[7]);
+				player->jump(a[3] - 1, (a[4] - 1) * 4 + a[5], a[6] + ((a[7] * player->getTicksPerBeat()) >> 2));
+			} else
 				player->setPriority(a[2]);
 			return 0;
 		case 2:





More information about the Scummvm-git-logs mailing list