[Scummvm-cvs-logs] CVS: scummvm/scumm scummvm.cpp,2.86,2.87

Pawel Kolodziejski aquadran at users.sourceforge.net
Sat Apr 12 00:07:02 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv19297

Modified Files:
	scummvm.cpp 
Log Message:
fixed setting local scripts for unblocked games

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.86
retrieving revision 2.87
diff -u -d -r2.86 -r2.87
--- scummvm.cpp	12 Apr 2003 02:38:40 -0000	2.86
+++ scummvm.cpp	12 Apr 2003 07:06:19 -0000	2.87
@@ -1024,17 +1024,20 @@
 	searchptr = roomResPtr;
 
 	if (_features & GF_OLD_BUNDLE) {
-		ptr = roomptr + 32;	// FIXME ???
-		while (*ptr) {
-			int id = *ptr++;
-			int offset = READ_LE_UINT16(ptr);
-			ptr += 2;
-			// TODO / FIXME: It seems also global scripts are stored in here?!?
-			// At least there are scripts with ID < _numGlobalScripts, need to look
-			// into this...
-			printf("Local script %d at offset %d (_numGlobalScripts = %d)\n", id, offset, _numGlobalScripts);
-			if (id >= _numGlobalScripts)
-				_localScriptList[id - _numGlobalScripts] = offset;
+		int num_objects = *(roomResPtr + 20);
+		int num_sounds = *(roomResPtr + 23);
+		int num_scripts = *(roomResPtr + 24);
+		int offset = 29 + num_objects * 4 + num_sounds + num_scripts;
+
+		if ((_gameId != GID_MANIAC) && (_gameId != GID_ZAK)) {
+			for (;;) {
+				int id = *(roomResPtr + offset);
+				if (id == 0)
+					break;
+
+				_localScriptList[id - _numGlobalScripts] = offset + 1;
+				offset += 3;
+			}
 		}
 	} else if (_features & GF_SMALL_HEADER) {
 		while ((ptr = findResourceSmall(MKID('LSCR'), searchptr)) != NULL) {





More information about the Scummvm-git-logs mailing list