[Scummvm-cvs-logs] SF.net SVN: scummvm: [21002] scummvm/trunk/engines/scumm

kirben at users.sourceforge.net kirben at users.sourceforge.net
Wed Mar 1 19:32:12 CET 2006


Revision: 21002
Author:   kirben
Date:     2006-03-01 19:31:45 -0800 (Wed, 01 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm?rev=21002&view=rev

Log Message:
-----------
Add difference in bitVars opcodes in C64 maniac

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/intern.h
    scummvm/trunk/engines/scumm/script_c64.cpp
    scummvm/trunk/engines/scumm/vars.cpp
    scummvm/trunk/engines/scumm/verbs.cpp
Modified: scummvm/trunk/engines/scumm/intern.h
===================================================================
--- scummvm/trunk/engines/scumm/intern.h	2006-03-02 02:10:54 UTC (rev 21001)
+++ scummvm/trunk/engines/scumm/intern.h	2006-03-02 03:31:45 UTC (rev 21002)
@@ -412,6 +412,7 @@
 	virtual const char *getOpcodeDesc(byte i);
 
 	virtual void setupScummVars();
+	virtual void initScummVars();
 	virtual void decodeParseString();
 
 	void initC64Verbs();
@@ -453,6 +454,8 @@
 	void o_nop();
 	void o_getActorBitVar();
 	void o_setActorBitVar();
+	void o_getBitVar();
+	void o_setBitVar();
 	void o_doSentence();
 	void o_unknown2();
 	void o_unknown3();

Modified: scummvm/trunk/engines/scumm/script_c64.cpp
===================================================================
--- scummvm/trunk/engines/scumm/script_c64.cpp	2006-03-02 02:10:54 UTC (rev 21001)
+++ scummvm/trunk/engines/scumm/script_c64.cpp	2006-03-02 03:31:45 UTC (rev 21002)
@@ -73,7 +73,7 @@
 		OPCODE(o_getActorBitVar),
 		/* 1C */
 		OPCODE(o5_startSound),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifState04),
 		/* 20 */
@@ -98,7 +98,7 @@
 		OPCODE(o2_ifState08),
 		/* 30 */
 		OPCODE(o_loadActor),
-		OPCODE(o2_getBitVar),
+		OPCODE(o_getBitVar),
 		OPCODE(o2_setCameraAt),
 		OPCODE(o_lockScript),
 		/* 34 */
@@ -113,7 +113,7 @@
 		OPCODE(o_stopCurrentScript),
 		/* 3C */
 		OPCODE(o5_stopSound),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifState02),
 		/* 40 */
@@ -153,7 +153,7 @@
 		OPCODE(o_getActorBitVar),
 		/* 5C */
 		OPCODE(o5_startSound),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifState04),
 		/* 60 */
@@ -178,7 +178,7 @@
 		OPCODE(o2_ifState08),
 		/* 70 */
 		OPCODE(o_lights),
-		OPCODE(o2_getBitVar),
+		OPCODE(o_getBitVar),
 		OPCODE(o_nop),
 		OPCODE(o5_getObjectOwner),
 		/* 74 */
@@ -193,7 +193,7 @@
 		OPCODE(o_stopCurrentScript),
 		/* 7C */
 		OPCODE(o5_isSoundRunning),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifNotState02),
 		/* 80 */
@@ -233,7 +233,7 @@
 		OPCODE(o_getActorBitVar),
 		/* 9C */
 		OPCODE(o5_startSound),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifNotState04),
 		/* A0 */
@@ -258,7 +258,7 @@
 		OPCODE(o2_ifNotState08),
 		/* B0 */
 		OPCODE(o_loadActor),
-		OPCODE(o2_getBitVar),
+		OPCODE(o_getBitVar),
 		OPCODE(o2_setCameraAt),
 		OPCODE(o_unlockScript),
 		/* B4 */
@@ -273,7 +273,7 @@
 		OPCODE(o_stopCurrentScript),
 		/* BC */
 		OPCODE(o5_stopSound),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifNotState02),
 		/* C0 */
@@ -313,7 +313,7 @@
 		OPCODE(o_getActorBitVar),
 		/* DC */
 		OPCODE(o5_startSound),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifNotState04),
 		/* E0 */
@@ -338,7 +338,7 @@
 		OPCODE(o2_ifNotState08),
 		/* F0 */
 		OPCODE(o_lights),
-		OPCODE(o2_getBitVar),
+		OPCODE(o_getBitVar),
 		OPCODE(o_nop),
 		OPCODE(o5_getObjectOwner),
 		/* F4 */
@@ -353,7 +353,7 @@
 		OPCODE(o_stopCurrentScript),
 		/* FC */
 		OPCODE(o5_isSoundRunning),
-		OPCODE(o2_setBitVar),
+		OPCODE(o_setBitVar),
 		OPCODE(o2_walkActorTo),
 		OPCODE(o2_ifState02)
 	};
@@ -687,6 +687,29 @@
 	warning("STUB: o_getActorBitVar(%d, %d)", flag, mask);
 }
 
+void ScummEngine_c64::o_setBitVar() {
+	int var = getVarOrDirectByte(PARAM_1);
+	byte mask = getVarOrDirectByte(PARAM_2);
+	byte mod = getVarOrDirectByte(PARAM_3);
+
+	if (mod)
+		_scummVars[var] |= (1 << mask);
+	else
+		_scummVars[var] &= ~(1 << mask);
+
+	debug(0, "o_setBitVar (%d, %d %d)", var, mask, mod);
+}
+
+void ScummEngine_c64::o_getBitVar() {
+	getResultPos();
+	int var = getVarOrDirectByte(PARAM_1);
+	byte mask = getVarOrDirectByte(PARAM_2);
+
+	setResult((_scummVars[var] & (1 << mask)) ? 1 : 0);
+
+	debug(0, "o_getBitVar (%d, %d %d)", var, mask, _scummVars[var] & (1 << mask));
+}
+
 void ScummEngine_c64::o_print_c64() {
 	_actorToPrintStrFor = fetchScriptByte();
 	decodeParseString();

Modified: scummvm/trunk/engines/scumm/vars.cpp
===================================================================
--- scummvm/trunk/engines/scumm/vars.cpp	2006-03-02 02:10:54 UTC (rev 21001)
+++ scummvm/trunk/engines/scumm/vars.cpp	2006-03-02 03:31:45 UTC (rev 21002)
@@ -543,12 +543,13 @@
 }
 #endif
 
-void ScummEngine_v2::initScummVars() {
+void ScummEngine_c64::initScummVars() {
+	_activeVerb = 13;
 
-	if (_game.platform == Common::kPlatformC64 && _game.id == GID_MANIAC) {
-		VAR(VAR_EGO) = 3;
-	}
+	VAR(VAR_EGO) = 3;
+}
 
+void ScummEngine_v2::initScummVars() {
 	// This needs to be at least greater than 40 to get the more
 	// elaborate version of the EGA Zak into. I don't know where
 	// else it makes any difference.

Modified: scummvm/trunk/engines/scumm/verbs.cpp
===================================================================
--- scummvm/trunk/engines/scumm/verbs.cpp	2006-03-02 02:10:54 UTC (rev 21001)
+++ scummvm/trunk/engines/scumm/verbs.cpp	2006-03-02 03:31:45 UTC (rev 21002)
@@ -521,13 +521,10 @@
 				return;
 			}
 
-			// HACK: Reset value
-			VAR(VAR_EGO) = 3;
-
 			int object = findObject(_virtualMouse.x, _virtualMouse.y);
 			if (object) {
 				_activeObject = object;
-				if (_currentMode == 3 && _activeVerb == 13) {
+				if (_currentMode == 3) {
 					int x, y, dir;
 					a = derefActor(VAR(VAR_EGO), "checkExecVerbs");
 					getObjectXYPos(object, x, y, dir);







More information about the Scummvm-git-logs mailing list