aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2004-09-16 09:40:08 +0000
committerTravis Howell2004-09-16 09:40:08 +0000
commitb45b800ed52ec2c721c2f9c17bb09c59b4249d8e (patch)
treeba9d6703cda44a08a36d3849c40b1b2deb92d6fc /scumm
parent0233a1c6107b8089d59881e2d78ff340d5bd5a28 (diff)
downloadscummvm-rg350-b45b800ed52ec2c721c2f9c17bb09c59b4249d8e.tar.gz
scummvm-rg350-b45b800ed52ec2c721c2f9c17bb09c59b4249d8e.tar.bz2
scummvm-rg350-b45b800ed52ec2c721c2f9c17bb09c59b4249d8e.zip
HE90+ games use two local resource types
svn-id: r15136
Diffstat (limited to 'scumm')
-rw-r--r--scumm/scumm.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index f66670f371..22b1f897f0 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -2727,7 +2727,7 @@ void ScummEngine::initRoomSubBlocks() {
_localScriptList[id - _numGlobalScripts] = ptr + 1 - roomptr;
}
- } else if (_heversion >= 99) {
+ } else if (_heversion >= 90) {
ResourceIterator localScriptIterator(searchptr, false);
while ((ptr = localScriptIterator.findNext(MKID('LSC2'))) != NULL) {
int id = 0;
@@ -2735,6 +2735,7 @@ void ScummEngine::initRoomSubBlocks() {
ptr += _resourceHeaderSize; /* skip tag & size */
id = READ_LE_UINT32(ptr);
+
checkRange(NUM_LOCALSCRIPT + _numGlobalScripts, _numGlobalScripts, id, "Invalid local script %d");
_localScriptList[id - _numGlobalScripts] = ptr + 4 - roomResPtr;
@@ -2744,6 +2745,22 @@ void ScummEngine::initRoomSubBlocks() {
dumpResource(buf, id, ptr - _resourceHeaderSize);
}
}
+
+ while ((ptr = localScriptIterator.findNext(MKID('LSCR'))) != NULL) {
+ int id = 0;
+
+ ptr += _resourceHeaderSize; /* skip tag & size */
+
+ id = ptr[0];
+ _localScriptList[id - _numGlobalScripts] = ptr + 1 - roomResPtr;
+
+ if (_dumpScripts) {
+ char buf[32];
+ sprintf(buf, "room-%d-", _roomResource);
+ dumpResource(buf, id, ptr - _resourceHeaderSize);
+ }
+ }
+
} else {
ResourceIterator localScriptIterator(searchptr, false);
while ((ptr = localScriptIterator.findNext(MKID('LSCR'))) != NULL) {