[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.136,2.137 script_v6he.cpp,2.12,2.13

Eugene Sandulenko sev at users.sourceforge.net
Tue Feb 10 19:26:03 CET 2004


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

Modified Files:
	intern.h script_v6he.cpp 
Log Message:
Implementation of ScummEngine_v6he::unknownEA_func


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.136
retrieving revision 2.137
diff -u -d -r2.136 -r2.137
--- intern.h	9 Feb 2004 15:22:31 -0000	2.136
+++ intern.h	11 Feb 2004 03:21:50 -0000	2.137
@@ -558,7 +558,7 @@
 
 	virtual void decodeParseString(int a, int b);
 
-	void unknownEA_func(int a, int b, int c, int d, int e);
+	void unknownEA_func(int arrayId, int newX, int newY, int d);
 	int readFileToArray(int slot, int32 size);
 	void writeFileFromArray(int slot, int resID);
 

Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.12
retrieving revision 2.13
diff -u -d -r2.12 -r2.13
--- script_v6he.cpp	10 Feb 2004 12:15:45 -0000	2.12
+++ script_v6he.cpp	11 Feb 2004 03:21:50 -0000	2.13
@@ -1124,19 +1124,47 @@
 	eax = fetchScriptByte();
 	switch (eax) {
 	case 199:
-		unknownEA_func(5, esi, edi, fetchScriptWord(), eax);
+		unknownEA_func(fetchScriptWord(), esi, edi, 5);
 		break;
 	case 202:
-		unknownEA_func(3, esi, edi, fetchScriptWord(), eax);
+		unknownEA_func(fetchScriptWord(), esi, edi, 3);
 		break;
 	default:
 		break;
 	}
 }
 
-void ScummEngine_v6he::unknownEA_func(int a, int b, int c, int d, int e) {
+void ScummEngine_v6he::unknownEA_func(int arrayId, int newX, int newY, int d) {
 	// Used in mini game at Cosmic Dust Diner in puttmoon
-	warning("unknownEA_func(%d, %d, %d, %d, %d) stub", a, b, c, d, e);
+	int var_2, var_4, ax, cx;
+
+	if (readVar(arrayId) == 0)
+		error("unknownEA_func: Reference to zeroed array pointer");
+
+	byte *ptr = getResourceAddress(rtString, readVar(arrayId));
+
+	if (!ptr)
+		error("unknownEA_func: Invalid array (%d) reference", readVar(arrayId));
+
+	if (d == 5)
+		var_2 = 2;
+	else
+		var_2 = 1;
+
+	if (READ_LE_UINT16(ptr) == 5)
+		var_4 = 2;
+	else
+		var_4 = 1;
+
+	cx = var_2 * (newX + 1) * (newY + 1);
+	ax = var_4 * READ_LE_UINT16(ptr + 2) * READ_LE_UINT16(ptr + 4);
+
+	if (ax == cx)
+		error("unknownEA_func: array %d redim mismatch", readVar(arrayId));
+
+	WRITE_LE_UINT16(ptr, d);
+	WRITE_LE_UINT16(ptr + 2, newX + 1);
+	WRITE_LE_UINT16(ptr + 4, newY + 1);
 }
 
 void ScummEngine_v6he::o6_unknownEE() {





More information about the Scummvm-git-logs mailing list