aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/object.cpp33
-rw-r--r--scumm/saveload.cpp4
-rw-r--r--scumm/script.cpp5
-rw-r--r--scumm/scumm.h4
4 files changed, 23 insertions, 23 deletions
diff --git a/scumm/object.cpp b/scumm/object.cpp
index a8396bf8ae..8af39580f7 100644
--- a/scumm/object.cpp
+++ b/scumm/object.cpp
@@ -192,7 +192,7 @@ void Scumm::getObjectXYPos(int object, int &x, int &y, int &dir)
ptr = findResource(MKID('OBIM'), ptr);
} else {
ptr = getResourceAddress(rtRoom, _roomResource);
- ptr += od->offs_obim_to_room;
+ ptr += od->OBIMoffset;
}
assert(ptr);
imhd = (ImageHeader *)findResourceData(MKID('IMHD'), ptr);
@@ -355,7 +355,7 @@ void Scumm::drawObject(int obj, int arg)
ptr = findResource(MKID('OBIM'), ptr);
} else {
ptr = getResourceAddress(rtRoom, _roomResource);
- ptr = ptr + od->offs_obim_to_room;
+ ptr = ptr + od->OBIMoffset;
}
if (_features & GF_SMALL_HEADER)
@@ -431,7 +431,7 @@ void Scumm::loadRoomObjects()
if (ptr == NULL)
error("Room %d missing object code block(s)", _roomResource);
- od->offs_obcd_to_room = ptr - rootptr;
+ od->OBCDoffset = ptr - rootptr;
cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), ptr);
if (_features & GF_AFTER_V7)
@@ -469,7 +469,7 @@ void Scumm::loadRoomObjects()
for (j = 1; j <= _numObjectsInRoom; j++) {
if (_objs[j].obj_nr == obim_id)
- _objs[j].offs_obim_to_room = ptr - room;
+ _objs[j].OBIMoffset = ptr - room;
}
searchptr = NULL;
}
@@ -508,7 +508,7 @@ void Scumm::loadRoomObjectsSmall()
if (ptr == NULL)
error("Room %d missing object code block(s)", _roomResource);
- od->offs_obcd_to_room = ptr - room;
+ od->OBCDoffset = ptr - room;
od->obj_nr = READ_LE_UINT16(ptr + 6);
#ifdef DUMP_SCRIPTS
@@ -531,7 +531,7 @@ void Scumm::loadRoomObjectsSmall()
for (j = 1; j <= _numObjectsInRoom; j++) {
if (_objs[j].obj_nr == obim_id)
- _objs[j].offs_obim_to_room = ptr - room;
+ _objs[j].OBIMoffset = ptr - room;
}
searchptr = NULL;
}
@@ -552,7 +552,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room)
if (_features & GF_SMALL_HEADER) {
- byte *ptr = room + od->offs_obcd_to_room;
+ byte *ptr = room + od->OBCDoffset;
od->obj_nr = READ_LE_UINT16(ptr + 6); // ok
@@ -583,7 +583,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room)
else
searchptr = room;
- cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), searchptr + od->offs_obcd_to_room);
+ cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), searchptr + od->OBCDoffset);
if (cdhd == NULL)
error("Room %d missing CDHD blocks(s)", _roomResource);
@@ -593,7 +593,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room)
od->parent = cdhd->v7.parent;
od->parentstate = cdhd->v7.parentstate;
- imhd = (ImageHeader *)findResourceData(MKID('IMHD'), room + od->offs_obim_to_room);
+ imhd = (ImageHeader *)findResourceData(MKID('IMHD'), room + od->OBIMoffset);
od->x_pos = (int)READ_LE_UINT32(&imhd->v8.x_pos);
od->y_pos = (int)READ_LE_UINT32(&imhd->v8.y_pos);
od->width = (uint)READ_LE_UINT32(&imhd->v8.width);
@@ -606,7 +606,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room)
od->parent = cdhd->v7.parent;
od->parentstate = cdhd->v7.parentstate;
- imhd = (ImageHeader *)findResourceData(MKID('IMHD'), room + od->offs_obim_to_room);
+ imhd = (ImageHeader *)findResourceData(MKID('IMHD'), room + od->OBIMoffset);
od->x_pos = READ_LE_UINT16(&imhd->v7.x_pos);
od->y_pos = READ_LE_UINT16(&imhd->v7.y_pos);
od->width = READ_LE_UINT16(&imhd->v7.width);
@@ -786,7 +786,7 @@ uint32 Scumm::getOBCDOffs(int object)
if (_objs[i].obj_nr == object) {
if (_objs[i].fl_object_index != 0)
return 8;
- return _objs[i].offs_obcd_to_room;
+ return _objs[i].OBCDoffset;
}
}
return 0;
@@ -806,7 +806,10 @@ byte *Scumm::getOBCDFromObject(int obj)
if (_objs[i].obj_nr == obj) {
if (_objs[i].fl_object_index)
return getResourceAddress(rtFlObject, _objs[i].fl_object_index) + 8;
- return getResourceAddress(rtRoom, _roomResource) + _objs[i].offs_obcd_to_room;
+ if (_features & GF_AFTER_V8)
+ return getResourceAddress(rtRoomScripts, _roomResource) + _objs[i].OBCDoffset;
+ else
+ return getResourceAddress(rtRoom, _roomResource) + _objs[i].OBCDoffset;
}
}
}
@@ -1281,7 +1284,7 @@ void Scumm::drawBlastObject(BlastObject *eo)
} else {
idx = getObjectIndex(eo->number);
assert(idx != -1);
- ptr = getResourceAddress(1, _roomResource) + _objs[idx].offs_obim_to_room;
+ ptr = getResourceAddress(1, _roomResource) + _objs[idx].OBIMoffset;
}
if (!ptr)
error("BlastObject object %d image not found", eo->number);
@@ -1603,8 +1606,8 @@ void Scumm::loadFlObject(uint object, uint room)
/* Setup sizes */
obcd_size = READ_BE_UINT32_UNALIGNED(foir.obcd + 4);
- od->offs_obcd_to_room = 8;
- od->offs_obim_to_room = obcd_size + 8;
+ od->OBCDoffset = 8;
+ od->OBIMoffset = obcd_size + 8;
obim_size = READ_BE_UINT32_UNALIGNED(foir.obim + 4);
flob_size = obcd_size + obim_size + 8;
diff --git a/scumm/saveload.cpp b/scumm/saveload.cpp
index ac00617a0e..c8675b0e9e 100644
--- a/scumm/saveload.cpp
+++ b/scumm/saveload.cpp
@@ -219,8 +219,8 @@ bool Scumm::getSavegameName(int slot, char *desc, SaveFileManager *mgr)
void Scumm::saveOrLoad(Serializer *s, uint32 savegameVersion)
{
const SaveLoadEntry objectEntries[] = {
- MKLINE(ObjectData, offs_obim_to_room, sleUint32, VER_V8),
- MKLINE(ObjectData, offs_obcd_to_room, sleUint32, VER_V8),
+ MKLINE(ObjectData, OBIMoffset, sleUint32, VER_V8),
+ MKLINE(ObjectData, OBCDoffset, sleUint32, VER_V8),
MKLINE(ObjectData, walk_x, sleUint16, VER_V8),
MKLINE(ObjectData, walk_y, sleUint16, VER_V8),
MKLINE(ObjectData, obj_nr, sleUint16, VER_V8),
diff --git a/scumm/script.cpp b/scumm/script.cpp
index cb89bea63a..7cf0cce9a2 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -878,10 +878,7 @@ int Scumm::getVerbEntrypoint(int obj, int entry)
else
verbptr = findResource(MKID('VERB'), objptr);
- if (verbptr == NULL) { // FIXME: Hacked from an error() for CMI
- warning("No verb block in object %d", obj);
- return 0;
- }
+ assert(verbptr);
verboffs = verbptr - objptr;
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 6b886eae33..fd84740f36 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -81,8 +81,8 @@ struct MemBlkHeader {
struct VerbSlot;
struct ObjectData {
- uint32 offs_obim_to_room;
- uint32 offs_obcd_to_room;
+ uint32 OBIMoffset;
+ uint32 OBCDoffset;
int16 walk_x, walk_y;
uint16 obj_nr;
int16 x_pos;