[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.232,2.233 script_v7he.cpp,2.65,2.66

Travis Howell kirben at users.sourceforge.net
Thu Sep 9 03:46:20 CEST 2004


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

Modified Files:
	intern.h script_v7he.cpp 
Log Message:

Add HE 70 version changes.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.232
retrieving revision 2.233
diff -u -d -r2.232 -r2.233
--- intern.h	9 Sep 2004 04:44:46 -0000	2.232
+++ intern.h	9 Sep 2004 10:44:17 -0000	2.233
@@ -617,6 +617,7 @@
 
 	byte stringLen(byte *);
 	int getCharsetOffset(int letter);
+	void arrrays_unk2(int dst, int src, int len2, int len);
 
 	/* HE version 70 script opcodes */
 	void o7_cursorCommand();

Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.65
retrieving revision 2.66
diff -u -d -r2.65 -r2.66
--- script_v7he.cpp	9 Sep 2004 10:08:39 -0000	2.65
+++ script_v7he.cpp	9 Sep 2004 10:44:17 -0000	2.66
@@ -504,6 +504,9 @@
 	case 9:
 		_heSndLoop |= 4;
 		break;
+	case 23:
+		debug(1,"o7_startSound: case 29 (%d, %d, %d)", pop(), pop(), pop());
+		break;
 	case 164:
 		_heSndLoop |= 2;
 		break;
@@ -814,46 +817,49 @@
 	push(len);
 }
 
+void ScummEngine_v7he::arrrays_unk2(int dst, int src, int len2, int len) {
+	int edi, value;
+	int i = 0;
+
+	if (len == -1) {
+		len = resStrLen(getStringAddress(src));
+		len2 = 0;
+	}
+
+	edi = resStrLen(getStringAddress(dst));
+
+	len -= len2;
+	len++;
+
+	while (i < len) {
+		writeVar(0, src);
+		value = readArray(0, 0, len2 + i);
+		writeVar(0, dst);
+		writeArray(0, 0, edi + i, value);
+		i++;
+	}
+
+	writeArray(0, 0, edi + i, 0);
+}
+
 void ScummEngine_v7he::o7_unknownEF() {
-	int value;
-	int array, array2, len, len2, len3, offset;
-	int b, size;
-	len = pop();
-	b = pop();
-	array2 = pop();
+	int dst, size;
+	int b = pop();
+	int a = pop();
+	int src = pop();
 
-	size = len - b + 2;
+	size = b - a + 2;
 
 	writeVar(0, 0);
 	defineArray(0, kStringArray, 0, size);
 	writeArray(0, 0, 0, 0);
 
-	array = readVar(0);
-
-	len2 = len;
-	if (len == -1) {
-		len2 = resStrLen(getStringAddress(array2));
-		len = 0;
-	} else {
-		len = b;
-	}
-	len3 = resStrLen(getStringAddress(array));
-
-	offset = 0;
-	len2 -= len;
-	len2++;
-	while (offset < len2) {
-		writeVar(0, array2);
-		value = readArray(0, 0, offset + len);
-		writeVar(0, array);
-		writeArray(0, 0, offset + len3, value);
-		offset++;
-	}
+	dst = readVar(0);
 
-	writeArray(0, 0, len3 + offset, 0);
+	arrrays_unk2(dst, src, a, b);
 
-	push(array);
-	debug(1,"stub o7_unknownEF (array %d, array2 %d)", array, array2);
+	push(dst);
+	debug(1,"stub o7_unknownEF");
 }
 
 void ScummEngine_v7he::o7_readINI() {
@@ -939,39 +945,39 @@
 }
 
 void ScummEngine_v7he::o7_unknownF6() {
-	int len, len2, pos, value, array;
+	int len, edi, pos, value, id;
 	value = pop();
-	len = pop();
+	edi = pop();
 	pos = pop();
-	array = pop();
+	id = pop();
 
-	if (len >= 0) {
-		len2 = resStrLen(getStringAddress(array));
-		if (len2 < len)
-			len = len2;
+	if (edi >= 0) {
+		len = resStrLen(getStringAddress(id));
+		if (len < edi)
+			edi = len;
 	} else {
-		len = 12;
+		edi = 0;
 	}
 
 	if (pos < 0)
 		pos = 0;
 
-	writeVar(0, array);
-	if (pos > len) {
-		while (pos > len) {
+	writeVar(0, id);
+	if (edi > pos) {
+		while (edi >= pos) {
 			if (readArray(0, 0, pos) == value) {
 				push(pos);
 				return;
 			}
-			pos--;
+			pos++;
 		}
 	} else {
-		while (pos < len) {
+		while (edi <= pos) {
 			if (readArray(0, 0, pos) == value) {
 				push(pos);
 				return;
 			}
-			pos++;
+			pos--;
 		}
 	}
 





More information about the Scummvm-git-logs mailing list