[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.22,1.23

James Brown ender at users.sourceforge.net
Tue Dec 24 04:28:02 CET 2002


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

Modified Files:
	object.cpp 
Log Message:
Fix a typo, add some more code.

Current crash is caused due to the non-existant mapping between objid's and the object names


Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- object.cpp	24 Dec 2002 12:09:11 -0000	1.22
+++ object.cpp	24 Dec 2002 12:27:35 -0000	1.23
@@ -420,7 +420,7 @@
 
 	od = &_objs[1];
 
-	if (_features & GF_AFTER_V7)
+	if (_features & GF_AFTER_V8)
 		searchptr = getResourceAddress(rtRoomScripts, _roomResource);
 	else
 		searchptr = room;
@@ -430,7 +430,7 @@
 		if (ptr == NULL)
 			error("Room %d missing object code block(s)", _roomResource);
 
-		od->offs_obcd_to_room = ptr - room;
+		od->offs_obcd_to_room = ptr - searchptr;
 		cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), ptr);
 
 		if (_features & GF_AFTER_V7)
@@ -474,6 +474,7 @@
 	}
 
 	od = &_objs[1];
+
 	for (i = 1; i <= _numObjectsInRoom; i++, od++) {
 		setupRoomObject(od, room);
 	}
@@ -544,8 +545,9 @@
 
 void Scumm::setupRoomObject(ObjectData *od, byte *room)
 {
-	CodeHeader *cdhd;
-	ImageHeader *imhd;
+	CodeHeader *cdhd = NULL;
+	ImageHeader *imhd = NULL;
+	byte *searchptr = NULL;
 
 	if (_features & GF_SMALL_HEADER) {
 
@@ -577,7 +579,14 @@
 		return;
 	}
 
-	cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), room + od->offs_obcd_to_room);
+        if (_features & GF_AFTER_V8)
+                searchptr = getResourceAddress(rtRoomScripts, _roomResource);
+        else
+                searchptr = room;
+
+	cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), searchptr + od->offs_obcd_to_room);
+	if (cdhd == NULL)
+		error("Room %d missing CDHD blocks(s)", _roomResource);
 
 	if (_features & GF_AFTER_V8) {
 		od->obj_nr = READ_LE_UINT16(&(cdhd->v7.obj_id));





More information about the Scummvm-git-logs mailing list