diff options
-rw-r--r-- | engines/scumm/resource_v4.cpp | 30 |
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 |