[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.210,2.211 script_v72he.cpp,2.38,2.39 script_v7he.cpp,2.58,2.59

Travis Howell kirben at users.sourceforge.net
Tue Aug 31 21:08:06 CEST 2004


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

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

Add HE 72 versions, still not working right yet.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.210
retrieving revision 2.211
diff -u -d -r2.210 -r2.211
--- intern.h	31 Aug 2004 07:47:34 -0000	2.210
+++ intern.h	1 Sep 2004 03:58:04 -0000	2.211
@@ -723,10 +723,12 @@
 	void o72_getPixel();
 	void o72_pickVarRandom();
 	void o72_redimArray();
+	void o72_unknownED();
 	void o72_unknownEF();
 	void o72_unknownF1();
 	void o72_readINI();
 	void o72_unknownF4();
+	void o72_unknownF6();
 	void o72_unknownF8();
 	void o72_unknownF9();
 	void o72_unknownFA();

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.38
retrieving revision 2.39
diff -u -d -r2.38 -r2.39
--- script_v72he.cpp	31 Aug 2004 08:35:10 -0000	2.38
+++ script_v72he.cpp	1 Sep 2004 03:58:04 -0000	2.39
@@ -342,7 +342,7 @@
 		OPCODE(o6_readFilePos),
 		/* EC */
 		OPCODE(o6_invalid),
-		OPCODE(o6_invalid),
+		OPCODE(o72_unknownED),
 		OPCODE(o7_stringLen),
 		OPCODE(o72_unknownEF),
 		/* F0 */
@@ -353,7 +353,7 @@
 		/* F4 */
 		OPCODE(o72_unknownF4),
 		OPCODE(o6_invalid),
-		OPCODE(o6_invalid),
+		OPCODE(o72_unknownF6),
 		OPCODE(o6_invalid),
 		/* F8 */
 		OPCODE(o72_unknownF8),
@@ -1213,6 +1213,31 @@
 }
 
 
+void ScummEngine_v72he::o72_unknownED() {
+	int array, pos, len;
+	int letter = 0, result = 0;
+
+	len = pop();
+	pos = pop();
+	array = pop();
+
+	if (len == -1) {
+		pos = 0;
+		len = resStrLen(getStringAddress(array));
+	}
+
+	writeVar(0, array);
+	while (len >= pos) {
+		letter = readArray(0, 0, pos);
+		if (letter)
+			result += getCharsetOffset(letter);
+		pos++;
+	}
+
+	push(result);
+	debug(1,"stub o72_unknownED");
+}
+
 void ScummEngine_v72he::o72_unknownEF() {
 	int value;
 	int array, array2, len, len2, len3, offset;
@@ -1305,6 +1330,47 @@
 	}
 }
 
+void ScummEngine_v72he::o72_unknownF6() {
+	int len, len2, pos, value, array;
+	value = pop();
+	len = pop();
+	pos = pop();
+	array = pop();
+
+	if (len >= 0) {
+		len2 = resStrLen(getStringAddress(array));
+		if (len2 < len)
+			len = len2;
+	} else {
+		len = 12;
+	}
+
+	if (pos < 0)
+		pos = 0;
+
+	writeVar(0, array);
+	if (pos > len) {
+		while (pos > len) {
+			if (readArray(0, 0, pos) == value) {
+				push(pos);
+				return;
+			}
+			pos--;
+		}
+	} else {
+		while (pos < len) {
+			if (readArray(0, 0, pos) == value) {
+				push(pos);
+				return;
+			}
+			pos++;
+		}
+	}
+
+	push(-1);
+	debug(1,"stub o72_unknownF6");
+}
+
 void ScummEngine_v72he::o72_unknownF8() {
 	int a = fetchScriptByte();
 	push(1);

Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.58
retrieving revision 2.59
diff -u -d -r2.58 -r2.59
--- script_v7he.cpp	31 Aug 2004 07:47:34 -0000	2.58
+++ script_v7he.cpp	1 Sep 2004 03:58:04 -0000	2.59
@@ -415,7 +415,7 @@
 	if (!ptr)
 		error("getCharsetOffset: charset %d not found!", id);
 
-	offset = READ_LE_UINT32(ptr + 29 + letter);
+	offset = READ_LE_UINT32(ptr + 29 + letter + 4);
 	if (offset == 0)
 		return 0;
 
@@ -673,6 +673,7 @@
 	case 122:
 	case 123:
 	case 203:
+	case 239:
 		debug(5,"stub queueload (%d) resource %d", op, pop());
 		break;
 	case 159:
@@ -924,7 +925,7 @@
 	len = resStrLen(getStringAddress(array));
 	writeVar(0, array);
 
-	while (len <= pos) {
+	while (len < pos) {
 		letter = readArray(0, 0, pos);
 		result += getCharsetOffset(letter);
 		if (result >= ebx)
@@ -933,25 +934,30 @@
 	}
 
 	push(result);
-	debug(1,"stub o7_unknownF5");
+	debug(1,"stub o7_unknownF5 (%d)", result);
 }
 
 void ScummEngine_v7he::o7_unknownF6() {
-	int len, pos, value, array;
+	int len, len2, pos, value, array;
 	value = pop();
 	len = pop();
 	pos = pop();
 	array = pop();
 
-	if (len < 0)
-		len = resStrLen(getStringAddress(array));
+	if (len >= 0) {
+		len2 = resStrLen(getStringAddress(array));
+		if (len2 < len)
+			len = len2;
+	} else {
+		len = 12;
+	}
 
 	if (pos < 0)
 		pos = 0;
 
 	writeVar(0, array);
-	if (len < pos) {
-		while (len < pos) {
+	if (pos > len) {
+		while (pos > len) {
 			if (readArray(0, 0, pos) == value) {
 				push(pos);
 				return;
@@ -959,7 +965,7 @@
 			pos--;
 		}
 	} else {
-		while (len >= pos) {
+		while (pos < len) {
 			if (readArray(0, 0, pos) == value) {
 				push(pos);
 				return;





More information about the Scummvm-git-logs mailing list