[Scummvm-cvs-logs] CVS: scummvm-new/scumm script_v1.cpp,1.1.1.1,1.2 scumm.h,1.2,1.3

Max Horn fingolfin at users.sourceforge.net
Sat Aug 24 06:13:01 CEST 2002


Update of /cvsroot/scummvm/scummvm-new/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv7546/scumm

Modified Files:
	script_v1.cpp scumm.h 
Log Message:
added/corrected some missing opcodes - this fixes the issues with the voodoo lady in MI1VGA

Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm-new/scumm/script_v1.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- script_v1.cpp	21 Aug 2002 16:07:33 -0000	1.1.1.1
+++ script_v1.cpp	24 Aug 2002 13:12:29 -0000	1.2
@@ -86,7 +86,7 @@
 		&Scumm::o5_cursorCommand,
 		&Scumm::o5_putActorInRoom,
 		&Scumm::o5_delay,
-		&Scumm::o5_getObjectState,
+		&Scumm::o5_ifState,
 		/* 30 */
 		&Scumm::o5_matrixOps,
 		&Scumm::o5_getInventoryCount,
@@ -126,7 +126,7 @@
 		&Scumm::o5_soundKludge,
 		&Scumm::o5_walkActorToActor,
 		&Scumm::o5_putActorAtObject,
-		&Scumm::o5_badOpcode,
+		&Scumm::o5_ifState,
 		/* 50 */
 		&Scumm::o5_pickupObjectOld,
 		&Scumm::o5_animateActor,
@@ -166,7 +166,7 @@
 		&Scumm::o5_getActorWidth,
 		&Scumm::o5_putActorInRoom,
 		&Scumm::o5_stopObjectScript,
-		&Scumm::o5_badOpcode,
+		&Scumm::o5_ifState,
 		/* 70 */
 		&Scumm::o5_lights,
 		&Scumm::o5_getActorCostume,
@@ -246,7 +246,7 @@
 		&Scumm::o5_expression,
 		&Scumm::o5_putActorInRoom,
 		&Scumm::o5_wait,
-		&Scumm::o5_badOpcode,
+		&Scumm::o5_ifState,
 		/* B0 */
 		&Scumm::o5_matrixOps,
 		&Scumm::o5_getInventoryCount,
@@ -286,7 +286,7 @@
 		&Scumm::o5_pseudoRoom,
 		&Scumm::o5_walkActorToActor,
 		&Scumm::o5_putActorAtObject,
-		&Scumm::o5_badOpcode,
+		&Scumm::o5_ifState,
 		/* D0 */
 		&Scumm::o5_pickupObjectOld,
 		&Scumm::o5_animateActor,
@@ -326,7 +326,7 @@
 		&Scumm::o5_getActorWidth,
 		&Scumm::o5_putActorInRoom,
 		&Scumm::o5_stopObjectScript,
-		&Scumm::o5_badOpcode,
+		&Scumm::o5_ifState,
 		/* F0 */
 		&Scumm::o5_lights,
 		&Scumm::o5_getActorCostume,
@@ -409,7 +409,7 @@
 		"o5_cursorCommand",
 		"o5_putActorInRoom",
 		"o5_delay",
-		"o5_badOpcode",
+		"o5_ifNotState",
 		/* 30 */
 		"o5_matrixOps",
 		"o5_getInventoryCount",
@@ -437,7 +437,7 @@
 		"o5_getActorX",
 		/* 44 */
 		"o5_isLess",
-		"o5_badOpcode",
+		"o5_drawObject",
 		"o5_increment",
 		"o5_setState",
 		/* 48 */
@@ -449,7 +449,7 @@
 		"o5_soundKludge",
 		"o5_walkActorToActor",
 		"o5_putActorAtObject",
-		"o5_badOpcode",
+		"o5_ifState",
 		/* 50 */
 		"o5_pickupObjectOld",
 		"o5_animateActor",
@@ -489,7 +489,7 @@
 		"o5_getActorWidth",
 		"o5_putActorInRoom",
 		"o5_stopObjectScript",
-		"o5_badOpcode",
+		"o5_ifNotState",
 		/* 70 */
 		"o5_lights",
 		"o5_getActorCostume",
@@ -569,7 +569,7 @@
 		"o5_expression",
 		"o5_putActorInRoom",
 		"o5_wait",
-		"o5_badOpcode",
+		"o5_ifNotState",
 		/* B0 */
 		"o5_matrixOps",
 		"o5_getInventoryCount",
@@ -597,7 +597,7 @@
 		"o5_getActorX",
 		/* C4 */
 		"o5_isLess",
-		"o5_badOpcode",
+		"o5_drawObject",
 		"o5_decrement",
 		"o5_setState",
 		/* C8 */
@@ -609,7 +609,7 @@
 		"o5_pseudoRoom",
 		"o5_walkActorToActor",
 		"o5_putActorAtObject",
-		"o5_badOpcode",
+		"o5_ifState",
 		/* D0 */
 		"o5_pickupObjectOld",
 		"o5_animateActor",
@@ -649,7 +649,7 @@
 		"o5_getActorWidth",
 		"o5_putActorInRoom",
 		"o5_stopObjectScript",
-		"o5_badOpcode",
+		"o5_ifNotState",
 		/* F0 */
 		"o5_lights",
 		"o5_getActorCostume",
@@ -1367,17 +1367,23 @@
 void Scumm::o5_getObjectState()
 {
 	if (_features & GF_SMALL_HEADER) {
-		int a = getVarOrDirectWord(0x80);
-		int b = getVarOrDirectByte(0x40);
-
-		if ((getState(a) & 0xF0 >> 4) != b)
-			o5_jumpRelative();
-		else
-			ignoreScriptWord();
+		o5_ifState();
 	} else {
 		getResultPos();
 		setResult(getState(getVarOrDirectWord(0x80)));
 	}
+}
+
+void Scumm::o5_ifState()
+{
+	int a = getVarOrDirectWord(0x80);
+	int b = getVarOrDirectByte(0x40);
+	bool isNegated = _opcode & 0x20;
+
+	if (((getState(a) & 0xF0 >> 4) != b) ^ isNegated)
+		o5_jumpRelative();
+	else
+		ignoreScriptWord();
 }
 
 void Scumm::o5_getRandomNr()

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm-new/scumm/scumm.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- scumm.h	21 Aug 2002 17:35:46 -0000	1.2
+++ scumm.h	24 Aug 2002 13:12:29 -0000	1.3
@@ -1017,6 +1017,7 @@
 	void o5_isGreaterEqual();
 	void o5_isLess();
 	void o5_isNotEqual();
+	void o5_ifState();
 	void o5_isSoundRunning();
 	void o5_jumpRelative();
 	void o5_lessOrEqual();





More information about the Scummvm-git-logs mailing list