aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorTravis Howell2009-10-08 09:33:20 +0000
committerTravis Howell2009-10-08 09:33:20 +0000
commit982950941c8fa0f240dcc3b4393beb0a61d23a31 (patch)
treeb6ee677692de52037c86ade9fe6a4c8356d1f815 /engines/scumm
parentbac0c769475bde85a240c557b7dab28c345dae4a (diff)
downloadscummvm-rg350-982950941c8fa0f240dcc3b4393beb0a61d23a31.tar.gz
scummvm-rg350-982950941c8fa0f240dcc3b4393beb0a61d23a31.tar.bz2
scummvm-rg350-982950941c8fa0f240dcc3b4393beb0a61d23a31.zip
The layout of global object data is different in the PCE version of Loom.
svn-id: r44779
Diffstat (limited to 'engines/scumm')
-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