[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.274,2.275 resource.cpp,1.277,1.278 script_v72he.cpp,2.137,2.138 script_v90he.cpp,2.59,2.60

Travis Howell kirben at users.sourceforge.net
Thu Sep 30 02:36:07 CEST 2004


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

Modified Files:
	intern.h resource.cpp script_v72he.cpp script_v90he.cpp 
Log Message:

Add some extra cases/opcodes for lost/smaller.
Add work around for paths


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.274
retrieving revision 2.275
diff -u -d -r2.274 -r2.275
--- intern.h	29 Sep 2004 21:45:52 -0000	2.274
+++ intern.h	30 Sep 2004 09:35:01 -0000	2.275
@@ -887,6 +887,8 @@
 	void o90_unknown29();
 	void o90_unknown2F();
 	void o90_mod();
+	void o90_unknown31();
+	void o90_unknown32();
 	void o90_unknown34();
 	void o90_unknown36();
 	void o90_unknown37();

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.277
retrieving revision 1.278
diff -u -d -r1.277 -r1.278
--- resource.cpp	30 Sep 2004 07:26:21 -0000	1.277
+++ resource.cpp	30 Sep 2004 09:35:01 -0000	1.278
@@ -2423,6 +2423,8 @@
 		_numFlObject = 50;
 	}
 
+	printf("_numLocalScripts is %d\n", _numLocalScripts);
+
 	if (_shadowPaletteSize)
 		_shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
 

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.137
retrieving revision 2.138
diff -u -d -r2.137 -r2.138
--- script_v72he.cpp	30 Sep 2004 06:57:18 -0000	2.137
+++ script_v72he.cpp	30 Sep 2004 09:35:02 -0000	2.138
@@ -872,22 +872,32 @@
 void ScummEngine_v72he::o72_getArrayDimSize() {
 	int subOp = fetchScriptByte();
 	int32 val1, val2;
-	ArrayHeader *ah;
+	ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, readVar(fetchScriptWord()));
 
 	switch (subOp) {
 	case 1:
 	case 3:
-		ah = (ArrayHeader *)getResourceAddress(rtString, readVar(fetchScriptWord()));
 		val1 = FROM_LE_32(ah->dim1end);
 		val2 = FROM_LE_32(ah->dim1start);
 		push(val1 - val2 + 1);
 		break;
 	case 2:
-		ah = (ArrayHeader *)getResourceAddress(rtString, readVar(fetchScriptWord()));
 		val1 = FROM_LE_32(ah->dim2end);
 		val2 = FROM_LE_32(ah->dim2start);
 		push(val1 - val2 + 1);
 		break;
+	case 4:
+		push(FROM_LE_32(ah->dim1start));
+		break;
+	case 5:
+		push(FROM_LE_32(ah->dim1end));
+		break;
+	case 6:
+		push(FROM_LE_32(ah->dim2start));
+		break;
+	case 7:
+		push(FROM_LE_32(ah->dim2end));
+		break;
 	default:
 		error("o72_getArrayDimSize: default case %d", subOp);
 	}
@@ -1844,8 +1854,24 @@
 			break;
 	}
 	
-	debug(1,"File %s", filename + r);
-	
+	debug(0,"Filename %s", filename + r);
+
+	// HACK: Convert paths
+	if (filename[0] == ':') {
+		int len = resStrLen(filename) + 1;
+		int i = 1, j = 0;
+		while(len--) {
+			if (filename[i] == ':')
+				filename[j] = '/';
+			else
+				filename[j] = filename[i];
+
+			i++;
+			j++;
+		}
+		debug(0,"Converted Filename %s", filename + r);
+	}
+
 	slot = -1;
 	for (l = 0; l < 17; l++) {
 		if (_hFileTable[l].isOpen() == false) {

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.59
retrieving revision 2.60
diff -u -d -r2.59 -r2.60
--- script_v90he.cpp	29 Sep 2004 11:58:28 -0000	2.59
+++ script_v90he.cpp	30 Sep 2004 09:35:02 -0000	2.60
@@ -106,8 +106,8 @@
 		OPCODE(o90_unknown2F),
 		/* 30 */
 		OPCODE(o90_mod),
-		OPCODE(o6_invalid),
-		OPCODE(o6_invalid),
+		OPCODE(o90_unknown31),
+		OPCODE(o90_unknown32),
 		OPCODE(o6_invalid),
 		/* 34 */
 		OPCODE(o90_unknown34),
@@ -748,6 +748,9 @@
 	case 52: // HE 98+
 		pop();
 		break;
+	case 63: // HE 98+
+		pop();
+		break;
 	case 64:
 		pop();
 		break;
@@ -927,6 +930,16 @@
 	debug(1,"o90_unknown2F stub (%d)", subOp);
 }
 
+void ScummEngine_v90he::o90_unknown31() {
+	int a = pop() << 2;
+	push(pop() << a);
+}
+
+void ScummEngine_v90he::o90_unknown32() {
+	int a = pop() << 2;
+	push(pop() >> a);
+}
+
 void ScummEngine_v90he::o90_mod() {
 	int a = pop();
 	if (a == 0)





More information about the Scummvm-git-logs mailing list