[Scummvm-cvs-logs] CVS: scummvm/scumm scummvm.cpp,2.106,2.107
Max Horn
fingolfin at users.sourceforge.net
Mon Apr 28 06:36:30 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv7896
Modified Files:
scummvm.cpp
Log Message:
hack to fix entry script dumping in GF_OLD_BUNDLE (post V2) games
Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.106
retrieving revision 2.107
diff -u -d -r2.106 -r2.107
--- scummvm.cpp 28 Apr 2003 13:16:15 -0000 2.106
+++ scummvm.cpp 28 Apr 2003 13:35:36 -0000 2.107
@@ -949,17 +949,26 @@
//
// Look for an entry script
//
- if (_features & GF_AFTER_V2)
+ int ENCD_len = -1;
+ if (_features & GF_AFTER_V2) {
_ENCD_offs = READ_LE_UINT16(roomptr + 0x1A);
- else if (_features & GF_OLD_BUNDLE)
+ } else if (_features & GF_OLD_BUNDLE) {
_ENCD_offs = READ_LE_UINT16(roomptr + 0x1B);
- else {
+ // FIXME - the following is a hack which assumes that immediately after
+ // the entry script the first local script follows.
+ int num_objects = *(roomResPtr + 20);
+ int num_sounds = *(roomResPtr + 23);
+ int num_scripts = *(roomResPtr + 24);
+ ptr = roomptr + 29 + num_objects * 4 + num_sounds + num_scripts;
+ if (*ptr)
+ ENCD_len = READ_LE_UINT16(ptr + 1) - _ENCD_offs + _resourceHeaderSize; // HACK
+ } else {
ptr = findResourceData(MKID('ENCD'), roomResPtr);
if (ptr)
_ENCD_offs = ptr - roomResPtr;
}
if (_dumpScripts && _ENCD_offs)
- dumpResource("entry-", _roomResource, roomResPtr + _ENCD_offs - _resourceHeaderSize);
+ dumpResource("entry-", _roomResource, roomResPtr + _ENCD_offs - _resourceHeaderSize, ENCD_len);
//
// Load box data
@@ -1070,9 +1079,7 @@
loadResource(rtSound, *ptr++);
while (num_scripts--)
loadResource(rtScript, *ptr++);
- }
-
- if (_features & GF_AFTER_V3) {
+ } else if (_features & GF_AFTER_V3) {
num_sounds = *(roomResPtr + 23);
num_scripts = *(roomResPtr + 24);
ptr = roomptr + 29 + num_objects * 4 + num_sounds + num_scripts;
More information about the Scummvm-git-logs
mailing list