diff options
-rw-r--r-- | engines/scumm/resource_v4.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/engines/scumm/resource_v4.cpp b/engines/scumm/resource_v4.cpp index 158780fc97..04e37b3728 100644 --- a/engines/scumm/resource_v4.cpp +++ b/engines/scumm/resource_v4.cpp @@ -65,6 +65,10 @@ void ScummEngine_v4::readIndexFile() { break; case 0x4F30: // 'O0' _numGlobalObjects = _fileHandle->readUint16LE(); + + // Indy3 FM-TOWNS has 32 extra bytes of unknown meaning + if (_game.id == GID_INDY3 && _game.platform == Common::kPlatformFMTowns) + itemsize += 32; break; } _fileHandle->seek(itemsize - 8, SEEK_CUR); @@ -121,11 +125,7 @@ void ScummEngine_v4::readIndexFile() { break; default: - // FIXME: this is a little hack because Indy3 FM-TOWNS has - // 32 extra bytes of unknown meaning appended to 00.LFL - if (!(_game.id == GID_INDY3 && _game.platform == Common::kPlatformFMTowns)) - error("Bad ID %c%c found in directory!", blocktype & 0xFF, blocktype >> 8); - return; + error("Bad ID %c%c found in directory!", blocktype & 0xFF, blocktype >> 8); } } closeRoom(); @@ -188,6 +188,10 @@ void ScummEngine_v4::readGlobalObjects() { _objectOwnerTable[i] = tmp & OF_OWNER_MASK; _objectStateTable[i] = tmp >> OF_STATE_SHL; } + + // FIXME: Indy3 FM-TOWNS has 32 extra bytes of unknown meaning + if (_game.id == GID_INDY3 && _game.platform == Common::kPlatformFMTowns) + _fileHandle->seek(32, SEEK_CUR); } |