[Scummvm-cvs-logs] CVS: scummvm/scumm resource.cpp,1.247,1.248 script_v6.cpp,1.385,1.386 script_v72he.cpp,2.6,2.7

Travis Howell kirben at users.sourceforge.net
Mon Aug 23 22:05:17 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19365/scumm

Modified Files:
	resource.cpp script_v6.cpp script_v72he.cpp 
Log Message:

Correct bug in array loading from index.
A few changes/corrections for HE 7.2


Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.247
retrieving revision 1.248
diff -u -d -r1.247 -r1.248
--- resource.cpp	24 Aug 2004 02:02:55 -0000	1.247
+++ resource.cpp	24 Aug 2004 05:04:14 -0000	1.248
@@ -987,6 +987,14 @@
 		total_size = _fileHandle.readUint32BE();
 		_fileHandle.read(createResource(type, idx, total_size), total_size - 8);
 		return 1;
+	} else if (basetag == MKID('TALK')) {
+		debugC(DEBUG_SOUND, "Found base tag TALK in sound %d, size %d", idx, total_size);
+		debugC(DEBUG_SOUND, "It was at position %d", _fileHandle.pos());
+
+		_fileHandle.seek(-12, SEEK_CUR);
+		total_size = _fileHandle.readUint32BE();
+		_fileHandle.read(createResource(type, idx, total_size), total_size - 8);
+		return 1;
 	} else if (basetag == MKID('DIGI')) {
 		// Use in Putt-Putt Demo
 		debugC(DEBUG_SOUND, "Found base tag DIGI in sound %d, size %d", idx, total_size);

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.385
retrieving revision 1.386
diff -u -d -r1.385 -r1.386
--- script_v6.cpp	23 Aug 2004 14:11:53 -0000	1.385
+++ script_v6.cpp	24 Aug 2004 05:04:14 -0000	1.386
@@ -505,9 +505,8 @@
 int ScummEngine_v6::readArray(int array, int idx, int base) {
 	ArrayHeader *ah = getArray(array);
 
-	if (ah == NULL || ah->data == NULL) {
+	if (ah == NULL || ah->data == NULL)
 		error("readArray: invalid array %d (%d)", array, readVar(array));
-	}
 	
 	// WORKAROUND bug #645711. This is clearly a script bug, as this script
 	// excerpt shows nicely:
@@ -565,7 +564,10 @@
 		a = _fileHandle.readUint16LE();
 		b = _fileHandle.readUint16LE();
 		c = _fileHandle.readUint16LE();
-		defineArray(num, c, a, b);
+		if (c == 1)
+			defineArray(num, kBitArray, a, b);
+		else
+			defineArray(num, kIntArray, a, b);
 	}
 }
 

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.6
retrieving revision 2.7
diff -u -d -r2.6 -r2.7
--- script_v72he.cpp	23 Aug 2004 14:23:40 -0000	2.6
+++ script_v72he.cpp	24 Aug 2004 05:04:14 -0000	2.7
@@ -551,6 +551,9 @@
 	case 4:		// SO_BYTE_ARRAY
 		data = kByteArray;
 		break;
+	case 6:
+		error("New array type");
+		break;
 	case 7:		// SO_STRING_ARRAY
 		data = kStringArray;
 		break;
@@ -568,20 +571,23 @@
 void ScummEngine_v72he::o72_dim2dimArray() {
 	int a, b, data;
 	int type = fetchScriptByte();
-	switch (type - 2) {
-	case 0:		// SO_INT_ARRAY
-		data = kIntArray;
-		break;
-	case 1:		// SO_BIT_ARRAY
+	switch (type) {
+	case 2:		// SO_BIT_ARRAY
 		data = kBitArray;
 		break;
-	case 2:		// SO_NIBBLE_ARRAY
+	case 3:		// SO_NIBBLE_ARRAY
 		data = kNibbleArray;
 		break;
-	case 3:		// SO_BYTE_ARRAY
+	case 4:		// SO_BYTE_ARRAY
 		data = kByteArray;
 		break;
-	case 4:		// SO_STRING_ARRAY
+	case 5:		// SO_INT_ARRAY
+		data = kIntArray;
+		break;
+	case 6:		
+		error("New array type");
+		break;
+	case 7:		// SO_STRING_ARRAY
 		data = kStringArray;
 		break;
 	default:
@@ -645,20 +651,13 @@
 
 void ScummEngine_v72he::o72_unknownF4() {
 	byte b;
-	int len;
 	b = fetchScriptByte();
 
 	switch (b) {
 	case 6:
 		pop();
-		len = resStrLen(_scriptPointer);
-		_scriptPointer += len + 1;
 		break;
 	case 7:
-		len = resStrLen(_scriptPointer);
-		_scriptPointer += len + 1;
-		len = resStrLen(_scriptPointer);
-		_scriptPointer += len + 1;
 		break;
 	}
 	warning("o72_unknownF4 stub");





More information about the Scummvm-git-logs mailing list