diff options
| author | Vincent Hamm | 2002-03-05 20:13:47 +0000 |
|---|---|---|
| committer | Vincent Hamm | 2002-03-05 20:13:47 +0000 |
| commit | 6387020fd9a9c41654d37cb8feca464fd7d5fec1 (patch) | |
| tree | 88f9c26db4fac514e7d8bb60c6fcc10c7d1bd2dd | |
| parent | 5eb73a9af4bd3c78662cec1a95b11b7137e9a568 (diff) | |
| download | scummvm-rg350-6387020fd9a9c41654d37cb8feca464fd7d5fec1.tar.gz scummvm-rg350-6387020fd9a9c41654d37cb8feca464fd7d5fec1.tar.bz2 scummvm-rg350-6387020fd9a9c41654d37cb8feca464fd7d5fec1.zip | |
Fixed struct RoomHeader for v7 implementation
svn-id: r3650
| -rw-r--r-- | actor.cpp | 7 | ||||
| -rw-r--r-- | object.cpp | 14 | ||||
| -rw-r--r-- | script_v2.cpp | 14 | ||||
| -rw-r--r-- | scumm.h | 16 | ||||
| -rw-r--r-- | scummvm.cpp | 11 |
5 files changed, 41 insertions, 21 deletions
@@ -404,11 +404,10 @@ void Scumm::fixActorDirection(Actor *a, int direction) { vald = a->cost.frame[i]; if (vald==0xFFFF) continue; -#if !defined(FULL_THROTTLE) - cost_decodeData(a, vald, mask); -#else + if(_features & GF_AFTER_V7) akos_decodeData(a, vald, mask); -#endif + else + cost_decodeData(a, vald, mask); } a->needRedraw = true; diff --git a/object.cpp b/object.cpp index 78ad2378a2..efae0982f8 100644 --- a/object.cpp +++ b/object.cpp @@ -354,7 +354,10 @@ void Scumm::loadRoomObjects() { room = getResourceAddress(rtRoom, _roomResource); roomhdr = (RoomHeader*)findResourceData(MKID('RMHD'), room); - _numObjectsInRoom = READ_LE_UINT16(&roomhdr->numObjects); + if(_features & GF_AFTER_V7) + _numObjectsInRoom = READ_LE_UINT16(&(roomhdr->v7.numObjects)); + else + _numObjectsInRoom = READ_LE_UINT16(&(roomhdr->old.numObjects)); if (_numObjectsInRoom == 0) return; @@ -420,7 +423,7 @@ void Scumm::loadRoomObjectsSmall() { room = getResourceAddress(rtRoom, _roomResource); roomhdr = (RoomHeader*)findResourceData(MKID('RMHD'), room); - _numObjectsInRoom = READ_LE_UINT16(&roomhdr->numObjects); + _numObjectsInRoom = READ_LE_UINT16(&(roomhdr->old.numObjects)); if (_numObjectsInRoom == 0) return; @@ -747,7 +750,12 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint fo->roomptr = roomptr = getResourceAddress(rtRoom, room); roomhdr = (RoomHeader*)findResourceData(MKID('RMHD'), roomptr); - numobj = READ_LE_UINT16(&roomhdr->numObjects); + + if(_features & GF_AFTER_V7) + numobj = READ_LE_UINT16(&(roomhdr->v7.numObjects)); + else + numobj = READ_LE_UINT16(&(roomhdr->old.numObjects)); + if (numobj==0) error("findObjectInRoom: No object found in room %d", room); if (numobj > _numLocalObjects) diff --git a/script_v2.cpp b/script_v2.cpp index e4f3cec9f7..25ddbf5df2 100644 --- a/script_v2.cpp +++ b/script_v2.cpp @@ -1179,13 +1179,13 @@ void Scumm::o6_stopObjectScript() { } void Scumm::o6_panCameraTo() { -#if defined(FULL_THROTTLE) - int y = pop(); - int x = pop(); - panCameraTo(x,y); -#else - panCameraTo(pop(), 0); -#endif + if(_features & GF_AFTER_V7) { + int y = pop(); + int x = pop(); + panCameraTo(x,y); + } else { + panCameraTo(pop(), 0); + } } void Scumm::o6_actorFollowCamera() { @@ -75,11 +75,17 @@ struct ResHdr { struct RoomHeader { -#ifdef FULL_THROTTLE - uint32 version; -#endif - uint16 width,height; - uint16 numObjects; + union { + struct { + uint32 version; + uint16 width,height; + uint16 numObjects; + } v7; + struct { + uint16 width,height; + uint16 numObjects; + } old; + }; } GCC_PACK; struct BompHeader { diff --git a/scummvm.cpp b/scummvm.cpp index 2c4f5dca3d..4dabc1523d 100644 --- a/scummvm.cpp +++ b/scummvm.cpp @@ -681,8 +681,15 @@ void Scumm::initRoomSubBlocks() { roomptr = getResourceAddress(rtRoom, _roomResource); rmhd = (RoomHeader*)findResourceData(MKID('RMHD'), roomptr); - _scrWidth = READ_LE_UINT16(&rmhd->width); - _scrHeight = READ_LE_UINT16(&rmhd->height); + + if(_features & GF_AFTER_V7) { + _scrWidth = READ_LE_UINT16(&(rmhd->v7.width)); + _scrHeight = READ_LE_UINT16(&(rmhd->v7.height)); + } else { + _scrWidth = READ_LE_UINT16(&(rmhd->old.width)); + _scrHeight = READ_LE_UINT16(&(rmhd->old.height)); + } + if( _features & GF_SMALL_HEADER) _IM00_offs = findResourceData(MKID('IM00'), roomptr) - roomptr; |
