[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.269,2.270 script.cpp,1.197,1.198 script_v72he.cpp,2.124,2.125 script_v90he.cpp,2.55,2.56

Travis Howell kirben at users.sourceforge.net
Thu Sep 23 02:13:00 CEST 2004


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

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

nukeArrays seems fine now.
Fix dog regression


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.269
retrieving revision 2.270
diff -u -d -r2.269 -r2.270
--- intern.h	23 Sep 2004 05:02:15 -0000	2.269
+++ intern.h	23 Sep 2004 09:11:51 -0000	2.270
@@ -834,6 +834,7 @@
 	virtual const char *getOpcodeDesc(byte i);
 	
 	/* HE version 90 script opcodes */
+	void o90_dup();
 	void o90_getLT();
 	void o90_getGT();
 	void o90_startLocalScript();

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.197
retrieving revision 1.198
diff -u -d -r1.197 -r1.198
--- script.cpp	23 Sep 2004 05:02:15 -0000	1.197
+++ script.cpp	23 Sep 2004 09:11:51 -0000	1.198
@@ -354,10 +354,6 @@
 	if (_heversion < 60 || script == 0)
 		return;
 
-	//FIXME Nukes wrong arrays
-	if (_gameId == GID_FBEAR)
-		return;
-
 	for (i = 1; i < _numArray; i++) {
 		if (_arraySlot[i] == script) {
 			nukeResource(rtString, i);
@@ -705,9 +701,9 @@
 			ss->cutsceneOverride = 0;
 		}
 	}
+	nukeArrays(ss->number);
 	ss->number = 0;
 	ss->status = ssDead;
-	nukeArrays(_currentScript);
 	_currentScript = 0xFF;
 }
 

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.124
retrieving revision 2.125
diff -u -d -r2.124 -r2.125
--- script_v72he.cpp	22 Sep 2004 12:13:15 -0000	2.124
+++ script_v72he.cpp	23 Sep 2004 09:11:52 -0000	2.125
@@ -2109,6 +2109,7 @@
 
 void ScummEngine_v72he::o72_unknownF1() {
 	byte *addr, *addr2;
+	int i = 0;
 
 	int id = pop();
 	int id2 = pop();
@@ -2122,16 +2123,17 @@
 		error("o72_stringLen: Reference to zeroed array pointer (%d)", id);
 
 	while (*addr == *addr2) {
-		if (addr == 0) {
+		if (*addr == 0) {
 			push(0);
 			return;
 		}
 		addr++;
 		addr2++;
+		i++;
 	}
 
-	push (1);
-	debug(1,"o70_unknownF1 stub (%d, %d)", id, id2);
+	push (i);
+	debug(1,"o70_unknownF1 stub (%d, %d, %d)", id, id2, i);
 }
 
 void ScummEngine_v72he::o72_checkGlobQueue() {

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.55
retrieving revision 2.56
diff -u -d -r2.55 -r2.56
--- script_v90he.cpp	22 Sep 2004 09:48:40 -0000	2.55
+++ script_v90he.cpp	23 Sep 2004 09:11:52 -0000	2.56
@@ -57,7 +57,7 @@
 		/* 08 */
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
-		OPCODE(o6_invalid),
+		OPCODE(o90_dup),
 		OPCODE(o6_wordArrayIndexedRead),
 		/* 0C */
 		OPCODE(o6_dup),
@@ -378,6 +378,17 @@
 	return _opcodesV90he[i].desc;
 }
 
+void ScummEngine_v90he::o90_dup() {
+	int a, num;
+
+	num = fetchScriptWord();
+	for (int i = 0; i < num; i++) {
+		a = pop();
+		push(a);
+		push(a);
+	}
+}
+
 void ScummEngine_v90he::o90_getLT() {
 	int a = pop();
 	int b = pop();





More information about the Scummvm-git-logs mailing list