[Scummvm-cvs-logs] CVS: scummvm/scumm script_v72he.cpp,2.143,2.144 script_v90he.cpp,2.68,2.69

Travis Howell kirben at users.sourceforge.net
Sat Oct 2 00:51:25 CEST 2004


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

Modified Files:
	script_v72he.cpp script_v90he.cpp 
Log Message:

Array corrections


Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.143
retrieving revision 2.144
diff -u -d -r2.143 -r2.144
--- script_v72he.cpp	2 Oct 2004 00:12:09 -0000	2.143
+++ script_v72he.cpp	2 Oct 2004 07:46:06 -0000	2.144
@@ -1345,13 +1345,14 @@
 void ScummEngine_v72he::o72_arrayOps() {
 	byte subOp = fetchScriptByte();
 	int array = fetchScriptWord();
-	int b, c, offs;
+	int offs, tmp, tmp2, tmp3;
 	int dim1end, dim1start, dim2end, dim2start;
-	int id, len, len2;
+	int id, len, b, c;
 	ArrayHeader *ah;
 	int list[128];
 	byte string[2048];
 
+
 	debug(1,"o72_arrayOps: case %d", subOp);
 	switch (subOp) {
 	case 7:			// SO_ASSIGN_STRING
@@ -1362,7 +1363,7 @@
 		break;
 
 	case 126:
-		len2 = getStackList(list, ARRAYSIZE(list));
+		len = getStackList(list, ARRAYSIZE(list));
 		dim1end = pop();
 		dim1start = pop();
 		dim2end = pop();
@@ -1371,10 +1372,14 @@
 		if (id == 0) {
 			defineArray(array, kDwordArray, dim2start, dim2end, dim1start, dim1end);
 		}
-		while (dim2start < dim2end) {
-			len = len2;
-			while (--len >= 0) {
-				writeArray(array, dim2start, len, list[len]);
+		tmp2 = len;
+		while (dim2start <= dim2end) {
+			tmp = dim1start;
+			while (tmp <= dim1end) {
+				writeArray(array, dim2start, tmp, list[--tmp2]);
+				if (tmp2 == 0)
+					tmp2 = len;
+				tmp++;
 			}
 			dim2start++;
 		}
@@ -1407,14 +1412,23 @@
 		if (id == 0) {
 			defineArray(array, kDwordArray, dim2start, dim2end, dim1start, dim1end);
 		}
-		len2 = ((c - b) | dim2end) - dim2end + 1;
+
+		len = c - b;
+		len |= dim2end;
+		len = len - dim2end + 1;
 		offs = (b >= c) ? 1 : -1;
-		while (dim2start < dim2end) {
-			len = len2;
-			while (--len >= 0) {
-				writeArray(array, dim2start, len, c);
+		while (dim2start <= dim2end) {
+			tmp = dim1start;
+			tmp2 = c;
+			tmp3 = len;
+			while (tmp <= dim1end) {
+				writeArray(array, dim2start, tmp, tmp2);
+				if (--tmp3 == 0)
+					tmp2 = c;
+				else
+					tmp2 += offs;
+				tmp++;
 			}
-			c += offs;
 			dim2start++;
 		}
 		break;
@@ -1854,6 +1868,12 @@
 	mode = pop();
 	copyScriptString(filename);
 
+	// HACK bb2demo uses incorrect filename
+	if (!strcmp((char *)filename,".HE9")) {
+		memset(filename, 0, sizeof(filename));
+		sprintf((char *)filename, "%s.he9", _gameName.c_str());
+	}
+
 	for (r = strlen((char*)filename); r != 0; r--) {
 		if (filename[r - 1] == '\\')
 			break;

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.68
retrieving revision 2.69
diff -u -d -r2.68 -r2.69
--- script_v90he.cpp	2 Oct 2004 01:40:34 -0000	2.68
+++ script_v90he.cpp	2 Oct 2004 07:46:06 -0000	2.69
@@ -849,6 +849,9 @@
 	case 52: // HE 98+
 		pop();
 		break;
+	case 58: // HE 99+
+		pop();
+		break;
 	case 63: // HE 98+
 		pop();
 		break;





More information about the Scummvm-git-logs mailing list