aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/scumm/resource_v4.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/engines/scumm/resource_v4.cpp b/engines/scumm/resource_v4.cpp
index 75858f7b42..808fcbd73e 100644
--- a/engines/scumm/resource_v4.cpp
+++ b/engines/scumm/resource_v4.cpp
@@ -199,14 +199,28 @@ void ScummEngine_v4::readGlobalObjects() {
uint32 bits;
byte tmp;
- for (i = 0; i != num; i++) {
- bits = _fileHandle->readByte();
- bits |= _fileHandle->readByte() << 8;
- bits |= _fileHandle->readByte() << 16;
- _classData[i] = bits;
- tmp = _fileHandle->readByte();
- _objectOwnerTable[i] = tmp & OF_OWNER_MASK;
- _objectStateTable[i] = tmp >> OF_STATE_SHL;
+ if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine) {
+ for (i = 0; i != num; i++) {
+ bits = _fileHandle->readByte();
+ bits |= _fileHandle->readByte() << 8;
+ bits |= _fileHandle->readByte() << 16;
+ _classData[i] = bits;
+ }
+ for (i = 0; i != num; i++) {
+ tmp = _fileHandle->readByte();
+ _objectOwnerTable[i] = tmp & OF_OWNER_MASK;
+ _objectStateTable[i] = tmp >> OF_STATE_SHL;
+ }
+ } else {
+ for (i = 0; i != num; i++) {
+ bits = _fileHandle->readByte();
+ bits |= _fileHandle->readByte() << 8;
+ bits |= _fileHandle->readByte() << 16;
+ _classData[i] = bits;
+ tmp = _fileHandle->readByte();
+ _objectOwnerTable[i] = tmp & OF_OWNER_MASK;
+ _objectStateTable[i] = tmp >> OF_STATE_SHL;
+ }
}
// FIXME: Indy3 FM-TOWNS has 32 extra bytes of unknown meaning