aboutsummaryrefslogtreecommitdiff
path: root/scumm/resource.cpp
diff options
context:
space:
mode:
authorJonathan Gray2004-08-26 14:07:19 +0000
committerJonathan Gray2004-08-26 14:07:19 +0000
commit3d8ef64d39fcc05e216478840a84f96ee6833987 (patch)
treefd7fbeaf17b281b69ea66ece9c4370e107e8dec7 /scumm/resource.cpp
parent35a0c52f4292c75bf4bbc98ac687d6d68a37630b (diff)
downloadscummvm-rg350-3d8ef64d39fcc05e216478840a84f96ee6833987.tar.gz
scummvm-rg350-3d8ef64d39fcc05e216478840a84f96ee6833987.tar.bz2
scummvm-rg350-3d8ef64d39fcc05e216478840a84f96ee6833987.zip
allocate memory for dobj in he 90, point games claiming to be 90 at 72he class
svn-id: r14777
Diffstat (limited to 'scumm/resource.cpp')
-rw-r--r--scumm/resource.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/scumm/resource.cpp b/scumm/resource.cpp
index c0492b4e29..d97c89f8e0 100644
--- a/scumm/resource.cpp
+++ b/scumm/resource.cpp
@@ -527,12 +527,11 @@ void ScummEngine::readIndexFile() {
_fileHandle.read(_objectStateTable, num);
_fileHandle.read(_objectRoomTable, num);
memset(_objectOwnerTable, 0xFF, num);
- } else if (_heversion >= 90) { // newer windows titles
- error("DOBJ reading not yet supported for Scummsys >= 90");
- } else if (_heversion >= 70) { // older Windows titles
+ } else if (_heversion >= 70) { // HE Windows titles
_fileHandle.read(_objectStateTable, num);
_fileHandle.read(_objectOwnerTable, num);
_fileHandle.read(_objectRoomTable, num);
+ // FIXME more DOBJ bits left to sort out here
} else {
_fileHandle.read(_objectOwnerTable, num);
for (i = 0; i < num; i++) {
@@ -2310,6 +2309,17 @@ void ScummEngine::readMAXS(int blockSize) {
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // _numLocalScripts?
_fileHandle.readUint16LE(); // unknown
+
+ /* TODO check these values */
+
+ _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+
+ _numNewNames = 10;
+
+ _objectRoomTable = (byte *)calloc(_numGlobalObjects * 4, 1);
+
+ _numGlobalScripts = 200;
+ _shadowPaletteSize = 256;
} else if (_heversion >= 70 && (blockSize == 44 + 8)) { // C++ based engine
error("MAXS blocks from C++ based games not yet supported");
} else if (_heversion >= 70 && blockSize > 38) { // sputm7.2