[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.239,2.240 script_v72he.cpp,2.79,2.80 script_v90he.cpp,2.25,2.26

Travis Howell kirben at users.sourceforge.net
Sun Sep 12 03:24:00 CEST 2004


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

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

More HE opcodes.
Can get a bit further in pj2 now.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.239
retrieving revision 2.240
diff -u -d -r2.239 -r2.240
--- intern.h	12 Sep 2004 00:48:16 -0000	2.239
+++ intern.h	12 Sep 2004 10:23:19 -0000	2.240
@@ -824,8 +824,10 @@
 	void o90_unknown28();
 	void o90_unknown29();
 	void o90_unknown2F();
-	void o90_unknown30();
+	void o90_mod();
+	void o90_unknown34();
 	void o90_unknown37();
+	void o90_unknown9E();
 };
 
 class ScummEngine_v7 : public ScummEngine_v6 {

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.79
retrieving revision 2.80
diff -u -d -r2.79 -r2.80
--- script_v72he.cpp	12 Sep 2004 02:25:12 -0000	2.79
+++ script_v72he.cpp	12 Sep 2004 10:23:19 -0000	2.80
@@ -567,7 +567,7 @@
 			if (chr == 0x64)
 				dst += snprintf((char *)dst, 5, "%d", args[val++]);
 			else if (chr == 0x73)
-				dst += addStringToStack(dst, 100, args[val++]);
+				dst += addStringToStack(dst, 256, args[val++]);
 			continue;
 		}
 		*dst++ = chr;

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.25
retrieving revision 2.26
diff -u -d -r2.25 -r2.26
--- script_v90he.cpp	12 Sep 2004 02:25:12 -0000	2.25
+++ script_v90he.cpp	12 Sep 2004 10:23:20 -0000	2.26
@@ -105,12 +105,12 @@
 		OPCODE(o6_invalid),
 		OPCODE(o90_unknown2F),
 		/* 30 */
-		OPCODE(o90_unknown30),
+		OPCODE(o90_mod),
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
 		/* 34 */
-		OPCODE(o72_findAllObjects),
+		OPCODE(o90_unknown34),
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
 		OPCODE(o90_unknown37),
@@ -242,7 +242,7 @@
 		/* 9C */
 		OPCODE(o6_roomOps),
 		OPCODE(o72_actorOps),
-		OPCODE(o72_verbOps),
+		OPCODE(o90_unknown9E),
 		OPCODE(o6_getActorFromXY),
 		/* A0 */
 		OPCODE(o6_findObject),
@@ -804,9 +804,33 @@
 	debug(1,"o90_unknown2F stub (%d)", subOp);
 }
 
-void ScummEngine_v90he::o90_unknown30() {
+void ScummEngine_v90he::o90_mod() {
 	int a = pop();
-	debug(1,"o90_unknown30 stub (%d)", a);
+	if (a == 0)
+		error("modulus by zero");
+	push(pop() % a);
+}
+
+void ScummEngine_v90he::o90_unknown34() {
+	// Incomplete
+	int args[16];
+
+	getStackList(args, ARRAYSIZE(args));
+	int room = pop();
+	int i = 1;
+
+	if (room != _currentRoom)
+		warning("o72_findAllObjects: current room is not %d", room);
+	writeVar(0, 0);
+	defineArray(0, kDwordArray, 0, 0, 0, _numLocalObjects + 1);
+	writeArray(0, 0, 0, _numLocalObjects);
+	
+	while (i < _numLocalObjects) {
+		writeArray(0, 0, i, _objs[i].obj_nr);
+		i++;
+	}
+	
+	push(readVar(0));
 }
 
 void ScummEngine_v90he::o90_unknown37() {
@@ -853,4 +877,45 @@
 	debug(1,"o90_unknown37 stub");
 }
 
+void ScummEngine_v90he::o90_unknown9E() {
+	int subOp = fetchScriptByte();
+	subOp -= 57;
+
+	switch (subOp) {
+		case 0:
+			pop();
+			break;
+		case 6:
+			pop();
+			pop();
+			break;
+		case 9:
+			pop();
+			pop();
+			pop();
+			pop();
+			pop();
+			break;
+		case 13:
+			pop();
+			pop();
+			pop();
+			break;
+		case 29:
+			pop();
+			break;
+		case 118:
+			pop();
+			pop();
+			break;
+		case 160:
+			break;
+		case 198:
+			break;
+		default:
+			error("o90_unknown9E: Unknown case %d", subOp);
+	}
+	debug(1,"o90_unknown9E stub (%d)", subOp);
+}
+
 } // End of namespace Scumm





More information about the Scummvm-git-logs mailing list