[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.238,2.239 script_v72he.cpp,2.75,2.76 script_v90he.cpp,2.23,2.24

Travis Howell kirben at users.sourceforge.net
Sat Sep 11 17:50:10 CEST 2004


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

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

Add some HE90+ opcodes


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.238
retrieving revision 2.239
diff -u -d -r2.238 -r2.239
--- intern.h	11 Sep 2004 00:49:22 -0000	2.238
+++ intern.h	12 Sep 2004 00:48:16 -0000	2.239
@@ -814,6 +814,9 @@
 	virtual const char *getOpcodeDesc(byte i);
 	
 	/* HE version 90 script opcodes */
+	void o90_getLT();
+	void o90_getGT();
+	void o90_startLocalScript();
 	void o90_unknown1C();
 	void o90_unknown25();
 	void o90_unknown26();

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.75
retrieving revision 2.76
diff -u -d -r2.75 -r2.76
--- script_v72he.cpp	11 Sep 2004 14:14:07 -0000	2.75
+++ script_v72he.cpp	12 Sep 2004 00:48:16 -0000	2.76
@@ -860,7 +860,7 @@
 		debug(1,"o72_actorOps: case 24 (%d)", k);
 		break;
 	case 43:
-		// HE 80+
+		// HE 90+
 		k = pop();
 		debug(1,"o72_actorOps: case 43 (%d)", k);
 		break;
@@ -870,6 +870,11 @@
 		_actorClipOverride.top = pop();
 		_actorClipOverride.left = pop();
 		break;
+	case 68:
+		// HE 90+
+		k = pop();
+		debug(1,"o72_actorOps: case 65 (%d)", k);
+		break;
 	case 76:		// SO_COSTUME
 		a->setActorCostume(pop());
 		break;

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.23
retrieving revision 2.24
diff -u -d -r2.23 -r2.24
--- script_v90he.cpp	11 Sep 2004 00:49:22 -0000	2.23
+++ script_v90he.cpp	12 Sep 2004 00:48:16 -0000	2.24
@@ -81,8 +81,8 @@
 		OPCODE(o72_compareStackList),
 		/* 1C */
 		OPCODE(o90_unknown1C),
-		OPCODE(o6_invalid),
-		OPCODE(o6_invalid),
+		OPCODE(o90_getLT),
+		OPCODE(o90_getGT),
 		OPCODE(o6_invalid),
 		/* 20 */
 		OPCODE(o6_invalid),
@@ -98,7 +98,7 @@
 		OPCODE(o90_unknown28),
 		OPCODE(o90_unknown29),
 		OPCODE(o6_invalid),
-		OPCODE(o6_invalid),
+		OPCODE(o90_startLocalScript),
 		/* 2C */
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
@@ -378,6 +378,39 @@
 	return _opcodesV90he[i].desc;
 }
 
+void ScummEngine_v90he::o90_getLT() {
+	int a = pop();
+	int b = pop();
+
+	if (b < a) {
+		push(b);
+	} else {
+		push(a);
+	}
+}
+
+void ScummEngine_v90he::o90_getGT() {
+	int a = pop();
+	int b = pop();
+
+	if (b > a) {
+		push(b);
+	} else {
+		push(a);
+	}
+}
+
+void ScummEngine_v90he::o90_startLocalScript() {
+	int args[16];
+	int script, entryp;
+	int flags;
+	getStackList(args, ARRAYSIZE(args));
+	entryp = pop();
+	script = pop();
+	flags = fetchScriptByte();
+	runScript(script, (flags == 199 || flags == 200), (flags == 195 || flags == 200), args);
+}
+
 void ScummEngine_v90he::o90_unknown1C() {
 	// For Pajame Sam 2 demo
 	// Incomplete
@@ -459,48 +492,98 @@
 void ScummEngine_v90he::o90_unknown25() {
 	int args[16];
 	int subOp = fetchScriptByte();
+	subOp -= 30;
+
+	debug(1,"o90_unknown25 stub (%d)", subOp);
 	switch (subOp) {
-		case 30:
-		case 31:
-		case 32:
+		case 0:
+			pop();
+			break;
+		case 1:
+			pop();
+			break;
+		case 2:
+			pop();
+			break;
+		case 3:
+			pop();
+			break;
+		case 4:
+			pop();
+			break;
+		case 5:
+			pop();
+			break;
+		case 6:
+			pop();
+			break;
+		case 7:
+			pop();
+			break;
+		case 8:
+			pop();
+			break;
+		case 9:
+			pop();
+			break;
+		case 12:
+			pop();
+			pop();
+			break;
+		case 13:
+			pop();
+			break;
+		case 15:
+			if (_heversion >= 99) {
+				getStackList(args, ARRAYSIZE(args));
+				pop();
+				pop();
+				pop();
+				pop();
+			} else {
+				pop();
+				pop();
+				pop();
+			}
+			break;
+		case 22:
+			pop();
+			break;
 		case 33:
-		case 34:
-		case 35:
-		case 36:
-		case 37:
+			pop();
+			break;
 		case 38:
-		case 39:
-		case 43:
-		case 52:
-		case 63:
-		case 68:
-		case 82:
-		case 92:
-		case 97:
-		case 98:
-		case 124:
 			pop();
 			break;
-		case 42:
-		case 198:
+		case 52:
 			pop();
+			break;
+		case 62:
 			pop();
 			break;
-		case 45:
+		case 67:
 			pop();
+			break;
+		case 68:
 			pop();
+			break;
+		case 94:
 			pop();
 			break;
-		case 125:
+		case 95:
 			getStackList(args, ARRAYSIZE(args));
 			pop();
 			break;
+		case 168:
+			pop();
+			pop();
+			break;
 		default:
 			error("o90_unknown25: Unknown case %d", subOp);
 	}
 	push(0);
 
-	debug(1,"o90_unknown25 stub (%d)", subOp);
+
 }
 
 void ScummEngine_v90he::o90_unknown26() {





More information about the Scummvm-git-logs mailing list