[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.519,2.520 object.cpp,1.248,1.249

kirben kirben at users.sourceforge.net
Tue Sep 13 21:19:16 CEST 2005


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

Modified Files:
	intern.h object.cpp 
Log Message:

Fix room object loading in C64 maniac.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.519
retrieving revision 2.520
diff -u -d -r2.519 -r2.520
--- intern.h	6 Sep 2005 15:38:04 -0000	2.519
+++ intern.h	14 Sep 2005 04:18:29 -0000	2.520
@@ -399,6 +399,8 @@
 	ScummEngine_c64(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16], int substResFileNameIndex);
 
 protected:
+	virtual void setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr = NULL);
+
 	virtual void setupOpcodes();
 	virtual void executeOpcode(byte i);
 	virtual const char *getOpcodeDesc(byte i);

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.248
retrieving revision 1.249
diff -u -d -r1.248 -r1.249
--- object.cpp	14 Aug 2005 02:04:26 -0000	1.248
+++ object.cpp	14 Sep 2005 04:18:29 -0000	1.249
@@ -692,6 +692,29 @@
 	CHECK_HEAP
 }
 
+void ScummEngine_c64::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
+	assert(room);
+	const byte *ptr = room + od->OBCDoffset;
+	ptr -= 2;
+
+	od->obj_nr = *(ptr + 6);
+
+	od->x_pos = *(ptr + 8) * 8;
+	od->y_pos = ((*(ptr + 9)) & 0x7F) * 8;
+
+	od->parentstate = (*(ptr + 9) & 0x80) ? 1 : 0;
+	od->parentstate *= 8;
+
+	od->width = *(ptr + 10) * 8;
+
+	od->parent = *(ptr + 11);
+
+	od->walk_x = *(ptr + 12) * 8;
+	od->walk_y = (*(ptr + 13) & 0x1f) * 8;
+	od->actordir = (*(ptr + 14)) & 7;
+	od->height = *(ptr + 14) & 0xf8;
+}
+
 void ScummEngine_v4::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
 	assert(room);
 	const byte *ptr = room + od->OBCDoffset;
@@ -699,11 +722,7 @@
 	if (_features & GF_OLD_BUNDLE)
 		ptr -= 2;
 
-	if (_gameId == GID_MANIAC && _platform == Common::kPlatformC64) {
-		od->obj_nr = *(ptr + 7);
-	} else {
-		od->obj_nr = READ_LE_UINT16(ptr + 6);
-	}
+	od->obj_nr = READ_LE_UINT16(ptr + 6);
 
 	od->x_pos = *(ptr + 9) * 8;
 	od->y_pos = ((*(ptr + 10)) & 0x7F) * 8;





More information about the Scummvm-git-logs mailing list