aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/scumm/resource_v4.cpp14
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);
}