[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