[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.89,2.90 object.cpp,1.98,1.99 script_v2.cpp,2.83,2.84 script_v5.cpp,1.86,1.87

Max Horn fingolfin at users.sourceforge.net
Tue May 20 09:14:16 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv761

Modified Files:
	intern.h object.cpp script_v2.cpp script_v5.cpp 
Log Message:
renamed o2_matrixOps -> o2_setBoxFlags; V2 'objY' fixes; cleanup

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.89
retrieving revision 2.90
diff -u -d -r2.89 -r2.90
--- intern.h	19 May 2003 04:29:41 -0000	2.89
+++ intern.h	20 May 2003 16:13:33 -0000	2.90
@@ -238,7 +238,7 @@
 	void o2_getActorX();
 	void o2_getActorY();
 	void o2_getBitVar();
-	void o2_getObjY();
+	void o2_getObjUnknown();
 	void o2_ifClassOfIs();
 	void o2_ifNotState01();
 	void o2_ifNotState02();
@@ -249,7 +249,7 @@
 	void o2_ifState04();
 	void o2_ifState08();
 	void o2_loadRoomWithEgo();
-	void o2_matrixOps();
+	void o2_setBoxFlags();
 	void o2_panCameraTo();
 	void o2_pickupObject();
 	void o2_putActor();
@@ -262,7 +262,7 @@
 	void o2_setBitVar();
 	void o2_setCameraAt();
 	void o2_setObjectName();
-	void o2_setObjY();
+	void o2_setObjUnknown();
 	void o2_setOwnerOf();
 	void o2_setState01();
 	void o2_setState02();

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -d -r1.98 -r1.99
--- object.cpp	19 May 2003 01:27:30 -0000	1.98
+++ object.cpp	20 May 2003 16:13:34 -0000	1.99
@@ -203,6 +203,9 @@
 			x = od->x_pos + (int16)READ_LE_UINT16(&imhd->old.hotspot[state].x);
 			y = od->y_pos + (int16)READ_LE_UINT16(&imhd->old.hotspot[state].y);
 		}
+	} else if (_features & GF_AFTER_V2){
+		x = od->walk_x * 8;
+		y = (od->walk_y & 0x1f) * 8;
 	} else {
 		x = od->walk_x;
 		y = od->walk_y;
@@ -656,8 +659,11 @@
 		od->parent = *(ptr + 12);
 
 		if (_features & GF_AFTER_V2) {
-			od->walk_x = *(ptr + 13) * 8;
-			od->walk_y = *(ptr + 14) * 8;
+			od->walk_x = *(ptr + 13);
+			// V2 stores an as of now unknown value in the upper 3 bits of the Y coordinate.
+			// Maybe we shoudl add an entry for it to ObjectData. That would be cleaner,
+			// but requires us to inc the savegame format version.
+			od->walk_y = *(ptr + 14);
 			od->actordir = (*(ptr + 15)) & 7;
 			od->height = *(ptr + 15) & 0xf8;
 		} else {

Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v2.cpp,v
retrieving revision 2.83
retrieving revision 2.84
diff -u -d -r2.83 -r2.84
--- script_v2.cpp	19 May 2003 00:25:26 -0000	2.83
+++ script_v2.cpp	20 May 2003 16:13:34 -0000	2.84
@@ -46,7 +46,7 @@
 		OPCODE(o5_isNotEqual),
 		OPCODE(o5_faceActor),
 		OPCODE(o2_assignVarWordIndirect),
-		OPCODE(o2_setObjY),
+		OPCODE(o2_setObjUnknown),
 		/* 0C */
 		OPCODE(o2_resourceRoutines),
 		OPCODE(o5_walkActorToActor),
@@ -93,7 +93,7 @@
 		OPCODE(o2_delay),
 		OPCODE(o2_ifNotState04),
 		/* 30 */
-		OPCODE(o2_matrixOps),
+		OPCODE(o2_setBoxFlags),
 		OPCODE(o2_getBitVar),
 		OPCODE(o2_setCameraAt),
 		OPCODE(o2_roomOps),
@@ -126,7 +126,7 @@
 		OPCODE(o5_isEqual),
 		OPCODE(o5_faceActor),
 		OPCODE(o2_chainScript),
-		OPCODE(o2_setObjY),
+		OPCODE(o2_setObjUnknown),
 		/* 4C */
 		OPCODE(o2_waitForSentence),
 		OPCODE(o5_walkActorToActor),
@@ -168,7 +168,7 @@
 		OPCODE(o2_subIndirect),
 		OPCODE(o2_dummy),
 		/* 6C */
-		OPCODE(o2_getObjY),
+		OPCODE(o2_getObjUnknown),
 		OPCODE(o5_putActorInRoom),
 		OPCODE(o2_dummy),
 		OPCODE(o2_ifState04),
@@ -206,7 +206,7 @@
 		OPCODE(o5_isNotEqual),
 		OPCODE(o5_faceActor),
 		OPCODE(o2_assignVarWordIndirect),
-		OPCODE(o2_setObjY),
+		OPCODE(o2_setObjUnknown),
 		/* 8C */
 		OPCODE(o2_resourceRoutines),
 		OPCODE(o5_walkActorToActor),
@@ -253,7 +253,7 @@
 		OPCODE(o2_waitForMessage),
 		OPCODE(o2_ifNotState04),
 		/* B0 */
-		OPCODE(o2_matrixOps),
+		OPCODE(o2_setBoxFlags),
 		OPCODE(o2_getBitVar),
 		OPCODE(o2_setCameraAt),
 		OPCODE(o2_roomOps),
@@ -286,7 +286,7 @@
 		OPCODE(o5_isEqual),
 		OPCODE(o5_faceActor),
 		OPCODE(o2_chainScript),
-		OPCODE(o2_setObjY),
+		OPCODE(o2_setObjUnknown),
 		/* CC */
 		OPCODE(o5_pseudoRoom),
 		OPCODE(o5_walkActorToActor),
@@ -328,7 +328,7 @@
 		OPCODE(o2_subIndirect),
 		OPCODE(o2_dummy),
 		/* EC */
-		OPCODE(o2_getObjY),
+		OPCODE(o2_getObjUnknown),
 		OPCODE(o5_putActorInRoom),
 		OPCODE(o2_dummy),
 		OPCODE(o2_ifState04),
@@ -506,17 +506,17 @@
 	setResult(fetchScriptByte());
 }
 
-void Scumm_v2::o2_setObjY() {
+void Scumm_v2::o2_setObjUnknown() {
 	int obj = getVarOrDirectWord(0x80);
-	int y = fetchScriptByte();
+	int unk = fetchScriptByte();
 
 	if (whereIsObject(obj) != WIO_NOT_FOUND) {
 		ObjectData *od = &_objs[getObjectIndex(obj)];
-		od->walk_y = (y << 5) | (od->walk_y & 0x1F);
+		od->walk_y = (unk << 5) | (od->walk_y & 0x1F);
 	}
 }
 
-void Scumm_v2::o2_getObjY() {
+void Scumm_v2::o2_getObjUnknown() {
 	int obj = getVarOrDirectWord(0x80);
 	getResultPos();
 
@@ -841,6 +841,7 @@
 	st->verb = a;
 	st->objectA = getVarOrDirectWord(0x40);
 	st->objectB = getVarOrDirectWord(0x20);
+	st->unk2 = (st->objectB != 0);
 	st->freezeCount = 0;
 	
 	// TODO
@@ -1092,7 +1093,7 @@
 	o5_breakHere();
 }
 
-void Scumm_v2::o2_matrixOps() {
+void Scumm_v2::o2_setBoxFlags() {
 	int a, b;
 
 	a = getVarOrDirectByte(0x80);

Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- script_v5.cpp	19 May 2003 15:40:34 -0000	1.86
+++ script_v5.cpp	20 May 2003 16:13:34 -0000	1.87
@@ -732,7 +732,7 @@
 }
 
 void Scumm_v5::o5_doSentence() {
-	int a, b;
+	int a;
 	SentenceTab *st;
 
 	a = getVarOrDirectByte(0x80);
@@ -747,12 +747,8 @@
 
 	st->verb = a;
 	st->objectA = getVarOrDirectWord(0x40);
-	b = st->objectB = getVarOrDirectWord(0x20);
-	if (b == 0) {
-		st->unk2 = 0;
-	} else {
-		st->unk2 = 1;
-	}
+	st->objectB = getVarOrDirectWord(0x20);
+	st->unk2 = (st->objectB != 0);
 	st->freezeCount = 0;
 }
 





More information about the Scummvm-git-logs mailing list