[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