[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