aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/object.cpp
diff options
context:
space:
mode:
authorMax Horn2011-04-12 16:53:15 +0200
committerMax Horn2011-04-12 16:53:15 +0200
commit0ce2ca4e006a70d787481040fa844c85aac43222 (patch)
tree25fb61d7e7165ec2570ecf14a4af52e9bdb6b176 /engines/scumm/object.cpp
parenta8b3501252c46c3fc4fd129fa0a945eb87f47d0a (diff)
downloadscummvm-rg350-0ce2ca4e006a70d787481040fa844c85aac43222.tar.gz
scummvm-rg350-0ce2ca4e006a70d787481040fa844c85aac43222.tar.bz2
scummvm-rg350-0ce2ca4e006a70d787481040fa844c85aac43222.zip
COMMON: Replace MKID_BE by MKTAG
MKID_BE relied on unspecified behavior of the C++ compiler, and as such was always a bit unsafe. The new MKTAG macro is slightly less elegant, but does no longer depend on the behavior of the compiler. Inspired by FFmpeg, which has an almost identical macro.
Diffstat (limited to 'engines/scumm/object.cpp')
-rw-r--r--engines/scumm/object.cpp88
1 files changed, 44 insertions, 44 deletions
diff --git a/engines/scumm/object.cpp b/engines/scumm/object.cpp
index c44043ca81..c2547f74f4 100644
--- a/engines/scumm/object.cpp
+++ b/engines/scumm/object.cpp
@@ -416,7 +416,7 @@ void ScummEngine::getObjectXYPos(int object, int &x, int &y, int &dir) {
debug(0, "getObjectXYPos: Can't find object %d", object);
return;
}
- imhd = (const ImageHeader *)findResourceData(MKID_BE('IMHD'), ptr);
+ imhd = (const ImageHeader *)findResourceData(MKTAG('I','M','H','D'), ptr);
assert(imhd);
if (_game.version == 8) {
switch (FROM_LE_32(imhd->v8.version)) {
@@ -655,7 +655,7 @@ void ScummEngine::drawObject(int obj, int arg) {
flags |= Gdi::dbDrawMaskOnAll;
#ifdef ENABLE_HE
- if (_game.heversion >= 70 && findResource(MKID_BE('SMAP'), ptr) == NULL)
+ if (_game.heversion >= 70 && findResource(MKTAG('S','M','A','P'), ptr) == NULL)
_gdi->drawBMAPObject(ptr, &_virtscr[kMainVirtScreen], obj, od.x_pos, od.y_pos, od.width, od.height);
else
#endif
@@ -762,12 +762,12 @@ void ScummEngine::resetRoomObjects() {
for (i = 0; i < _numObjectsInRoom; i++) {
od = &_objs[findLocalObjectSlot()];
- ptr = obcds.findNext(MKID_BE('OBCD'));
+ ptr = obcds.findNext(MKTAG('O','B','C','D'));
if (ptr == NULL)
error("Room %d missing object code block(s)", _roomResource);
od->OBCDoffset = ptr - rootptr;
- cdhd = (const CodeHeader *)findResourceData(MKID_BE('CDHD'), ptr);
+ cdhd = (const CodeHeader *)findResourceData(MKTAG('C','D','H','D'), ptr);
if (_game.version >= 7)
od->obj_nr = READ_LE_UINT16(&(cdhd->v7.obj_id));
@@ -779,7 +779,7 @@ void ScummEngine::resetRoomObjects() {
if (_dumpScripts) {
char buf[32];
sprintf(buf, "roomobj-%d-", _roomResource);
- ptr = findResource(MKID_BE('VERB'), ptr);
+ ptr = findResource(MKTAG('V','E','R','B'), ptr);
dumpResource(buf, od->obj_nr, ptr);
}
@@ -788,7 +788,7 @@ void ScummEngine::resetRoomObjects() {
searchptr = room;
ResourceIterator obims(room, false);
for (i = 0; i < _numObjectsInRoom; i++) {
- ptr = obims.findNext(MKID_BE('OBIM'));
+ ptr = obims.findNext(MKTAG('O','B','I','M'));
if (ptr == NULL)
error("Room %d missing image blocks(s)", _roomResource);
@@ -870,7 +870,7 @@ void ScummEngine_v4::resetRoomObjects() {
for (i = 0; i < _numObjectsInRoom; i++) {
od = &_objs[findLocalObjectSlot()];
- ptr = obcds.findNext(MKID_BE('OBCD'));
+ ptr = obcds.findNext(MKTAG('O','B','C','D'));
if (ptr == NULL)
error("Room %d missing object code block(s)", _roomResource);
@@ -887,7 +887,7 @@ void ScummEngine_v4::resetRoomObjects() {
for (i = 0; i < _numObjectsInRoom; i++) {
// In the PC Engine version of Loom, there aren't image blocks
// for all objects.
- ptr = obims.findNext(MKID_BE('OBIM'));
+ ptr = obims.findNext(MKTAG('O','B','I','M'));
if (ptr == NULL)
break;
@@ -991,11 +991,11 @@ void ScummEngine::resetRoomObject(ObjectData *od, const byte *room, const byte *
searchptr = room;
}
- cdhd = (const CodeHeader *)findResourceData(MKID_BE('CDHD'), searchptr + od->OBCDoffset);
+ cdhd = (const CodeHeader *)findResourceData(MKTAG('C','D','H','D'), searchptr + od->OBCDoffset);
if (cdhd == NULL)
error("Room %d missing CDHD blocks(s)", _roomResource);
if (od->OBIMoffset)
- imhd = (const ImageHeader *)findResourceData(MKID_BE('IMHD'), room + od->OBIMoffset);
+ imhd = (const ImageHeader *)findResourceData(MKTAG('I','M','H','D'), room + od->OBIMoffset);
od->flags = Gdi::dbAllowMaskOr;
@@ -1194,7 +1194,7 @@ const byte *ScummEngine::getObjOrActorName(int obj) {
return (objptr + offset);
}
- return findResourceData(MKID_BE('OBNA'), objptr);
+ return findResourceData(MKTAG('O','B','N','A'), objptr);
}
void ScummEngine::setObjectName(int obj) {
@@ -1278,7 +1278,7 @@ const byte *ScummEngine::getOBIMFromObjectData(const ObjectData &od) {
if (od.fl_object_index) {
ptr = getResourceAddress(rtFlObject, od.fl_object_index);
- ptr = findResource(MKID_BE('OBIM'), ptr);
+ ptr = findResource(MKTAG('O','B','I','M'), ptr);
} else {
ptr = getResourceAddress(rtRoom, _roomResource);
if (ptr)
@@ -1288,23 +1288,23 @@ const byte *ScummEngine::getOBIMFromObjectData(const ObjectData &od) {
}
static const uint32 IMxx_tags[] = {
- MKID_BE('IM00'),
- MKID_BE('IM01'),
- MKID_BE('IM02'),
- MKID_BE('IM03'),
- MKID_BE('IM04'),
- MKID_BE('IM05'),
- MKID_BE('IM06'),
- MKID_BE('IM07'),
- MKID_BE('IM08'),
- MKID_BE('IM09'),
- MKID_BE('IM0A'),
- MKID_BE('IM0B'),
- MKID_BE('IM0C'),
- MKID_BE('IM0D'),
- MKID_BE('IM0E'),
- MKID_BE('IM0F'),
- MKID_BE('IM10')
+ MKTAG('I','M','0','0'),
+ MKTAG('I','M','0','1'),
+ MKTAG('I','M','0','2'),
+ MKTAG('I','M','0','3'),
+ MKTAG('I','M','0','4'),
+ MKTAG('I','M','0','5'),
+ MKTAG('I','M','0','6'),
+ MKTAG('I','M','0','7'),
+ MKTAG('I','M','0','8'),
+ MKTAG('I','M','0','9'),
+ MKTAG('I','M','0','A'),
+ MKTAG('I','M','0','B'),
+ MKTAG('I','M','0','C'),
+ MKTAG('I','M','0','D'),
+ MKTAG('I','M','0','E'),
+ MKTAG('I','M','0','F'),
+ MKTAG('I','M','1','0')
};
const byte *ScummEngine::getObjectImage(const byte *ptr, int state) {
@@ -1317,15 +1317,15 @@ const byte *ScummEngine::getObjectImage(const byte *ptr, int state) {
// The OBIM contains an IMAG, which in turn contains a WRAP, which contains
// an OFFS chunk and multiple BOMP/SMAP chunks. To find the right BOMP/SMAP,
// we use the offsets in the OFFS chunk,
- ptr = findResource(MKID_BE('IMAG'), ptr);
+ ptr = findResource(MKTAG('I','M','A','G'), ptr);
if (!ptr)
return 0;
- ptr = findResource(MKID_BE('WRAP'), ptr);
+ ptr = findResource(MKTAG('W','R','A','P'), ptr);
if (!ptr)
return 0;
- ptr = findResource(MKID_BE('OFFS'), ptr);
+ ptr = findResource(MKTAG('O','F','F','S'), ptr);
if (!ptr)
return 0;
@@ -1348,7 +1348,7 @@ int ScummEngine::getObjectImageCount(int object) {
return 0;
ptr = getOBIMFromObjectData(_objs[objnum]);
- imhd = (const ImageHeader *)findResourceData(MKID_BE('IMHD'), ptr);
+ imhd = (const ImageHeader *)findResourceData(MKTAG('I','M','H','D'), ptr);
if (!imhd)
return 0;
@@ -1365,7 +1365,7 @@ int ScummEngine::getObjectImageCount(int object) {
int ScummEngine_v8::getObjectIdFromOBIM(const byte *obim) {
// In V8, IMHD has no obj_id, but rather a name string. We map the name
// back to an object id using a table derived from the DOBJ resource.
- const ImageHeader *imhd = (const ImageHeader *)findResourceData(MKID_BE('IMHD'), obim);
+ const ImageHeader *imhd = (const ImageHeader *)findResourceData(MKTAG('I','M','H','D'), obim);
ObjectNameId *found = (ObjectNameId *)bsearch(imhd->v8.name, _objectIDMap, _objectIDMapSize,
sizeof(ObjectNameId), (int (*)(const void*, const void*))strcmp);
assert(found);
@@ -1373,7 +1373,7 @@ int ScummEngine_v8::getObjectIdFromOBIM(const byte *obim) {
}
int ScummEngine_v7::getObjectIdFromOBIM(const byte *obim) {
- const ImageHeader *imhd = (const ImageHeader *)findResourceData(MKID_BE('IMHD'), obim);
+ const ImageHeader *imhd = (const ImageHeader *)findResourceData(MKTAG('I','M','H','D'), obim);
return READ_LE_UINT16(&imhd->v7.obj_id);
}
#endif
@@ -1382,7 +1382,7 @@ int ScummEngine::getObjectIdFromOBIM(const byte *obim) {
if (_game.features & GF_SMALL_HEADER)
return READ_LE_UINT16(obim + 6);
- const ImageHeader *imhd = (const ImageHeader *)findResourceData(MKID_BE('IMHD'), obim);
+ const ImageHeader *imhd = (const ImageHeader *)findResourceData(MKTAG('I','M','H','D'), obim);
return READ_LE_UINT16(&imhd->old.obj_id);
}
@@ -1400,7 +1400,7 @@ void ScummEngine::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id,
if (findWhat & foCodeHeader) {
fo->obcd = obcdptr = getOBCDFromObject(id);
assert(obcdptr);
- fo->cdhd = (const CodeHeader *)findResourceData(MKID_BE('CDHD'), obcdptr);
+ fo->cdhd = (const CodeHeader *)findResourceData(MKTAG('C','D','H','D'), obcdptr);
}
if (findWhat & foImageHeader) {
fo->obim = obimptr = getOBIMFromObjectData(_objs[id2]);
@@ -1416,7 +1416,7 @@ void ScummEngine::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id,
if (_game.features & GF_OLD_BUNDLE) {
numobj = roomptr[20];
} else {
- const RoomHeader *roomhdr = (const RoomHeader *)findResourceData(MKID_BE('RMHD'), roomptr);
+ const RoomHeader *roomhdr = (const RoomHeader *)findResourceData(MKTAG('R','M','H','D'), roomptr);
if (_game.version == 8)
numobj = READ_LE_UINT32(&(roomhdr->v8.numObjects));
@@ -1467,10 +1467,10 @@ void ScummEngine::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id,
assert(searchptr);
ResourceIterator obcds(searchptr, (_game.features & GF_SMALL_HEADER) != 0);
for (i = 0; i < numobj; i++) {
- obcdptr = obcds.findNext(MKID_BE('OBCD'));
+ obcdptr = obcds.findNext(MKTAG('O','B','C','D'));
if (obcdptr == NULL)
error("findObjectInRoom: Not enough code blocks in room %d", room);
- cdhd = (const CodeHeader *)findResourceData(MKID_BE('CDHD'), obcdptr);
+ cdhd = (const CodeHeader *)findResourceData(MKTAG('C','D','H','D'), obcdptr);
if (_game.features & GF_SMALL_HEADER)
id2 = READ_LE_UINT16(obcdptr + 6);
@@ -1495,7 +1495,7 @@ void ScummEngine::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id,
if (findWhat & foImageHeader) {
ResourceIterator obims(roomptr, (_game.features & GF_SMALL_HEADER) != 0);
for (i = 0; i < numobj; i++) {
- obimptr = obims.findNext(MKID_BE('OBIM'));
+ obimptr = obims.findNext(MKTAG('O','B','I','M'));
if (obimptr == NULL)
error("findObjectInRoom: Not enough image blocks in room %d", room);
obim_id = getObjectIdFromOBIM(obimptr);
@@ -1699,7 +1699,7 @@ void ScummEngine_v6::drawBlastObject(BlastObject *eo) {
if (!img)
img = getObjectImage(ptr, 1); // Backward compatibility with samnmax blast objects
assert(img);
- bomp = findResourceData(MKID_BE('BOMP'), img);
+ bomp = findResourceData(MKTAG('B','O','M','P'), img);
}
if (!bomp)
@@ -1843,7 +1843,7 @@ void ScummEngine::loadFlObject(uint object, uint room) {
char buf[32];
const byte *ptr = foir.obcd;
sprintf(buf, "roomobj-%d-", room);
- ptr = findResource(MKID_BE('VERB'), ptr);
+ ptr = findResource(MKTAG('V','E','R','B'), ptr);
dumpResource(buf, object, ptr);
}
@@ -1869,7 +1869,7 @@ void ScummEngine::loadFlObject(uint object, uint room) {
assert(flob);
// Copy object code + object image to floating object
- WRITE_UINT32(flob, MKID_BE('FLOB'));
+ WRITE_UINT32(flob, MKTAG('F','L','O','B'));
WRITE_BE_UINT32(flob + 4, flob_size);
memcpy(flob + 8, foir.obcd, obcd_size);
memcpy(flob + 8 + obcd_size, foir.obim, obim_size);