[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.280,2.281 script_v90he.cpp,2.67,2.68

Travis Howell kirben at users.sourceforge.net
Fri Oct 1 18:46:19 CEST 2004


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

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

Add/correct opcode


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.280
retrieving revision 2.281
diff -u -d -r2.280 -r2.281
--- intern.h	2 Oct 2004 01:08:31 -0000	2.280
+++ intern.h	2 Oct 2004 01:40:34 -0000	2.281
@@ -834,6 +834,8 @@
 		const char *desc;
 	};
 
+	int _heObject, _heObjectNum;
+
 	struct WizParameters {
 		byte filename[260];
 		Common::Rect box;
@@ -896,6 +898,7 @@
 	void o90_unknown36();
 	void o90_unknown37();
 	void o90_unknown3A();
+	void o90_unknown44();
 	void o90_unknown94();
 	void o90_unknown9E();
 	void o90_unknownA5();

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.67
retrieving revision 2.68
diff -u -d -r2.67 -r2.68
--- script_v90he.cpp	2 Oct 2004 01:08:31 -0000	2.67
+++ script_v90he.cpp	2 Oct 2004 01:40:34 -0000	2.68
@@ -129,7 +129,7 @@
 		OPCODE(o6_invalid),
 		OPCODE(o6_writeWordVar),
 		/* 44 */
-		OPCODE(o6_invalid),
+		OPCODE(o90_unknown44),
 		OPCODE(o80_unknown45),
 		OPCODE(o6_invalid),
 		OPCODE(o6_wordArrayWrite),
@@ -473,7 +473,7 @@
 
 	}
 
-	eax = tableUnk[eax * 4];
+	eax = tableUnk[eax];
 
 	if (ecx)
 		push(eax);
@@ -505,7 +505,7 @@
 
 	}
 
-	eax = tableUnk[eax * 4];
+	eax = tableUnk[eax];
 
 	if (ecx)
 		push(eax);
@@ -1183,6 +1183,57 @@
 	debug(1,"o90_unknown3A stub (%d)", subOp);
 }
 
+void ScummEngine_v90he::o90_unknown44() {
+	// Object releated
+	int subOp = fetchScriptByte();
+	subOp -= 32;
+
+	switch (subOp) {
+	case 0:
+		if (_heObjectNum == -1)
+			push(0);
+		else
+			push(_objs[_heObjectNum].width);
+		break;
+	case 1:
+		if (_heObjectNum == -1)
+			push(0);
+		else
+			push(_objs[_heObjectNum].height);
+		break;
+	case 4:
+		push(0);
+		break;
+	case 6:
+		if (_heObjectNum == -1)
+			push(0);
+		else
+			push(_objs[_heObjectNum].x_pos);
+		break;
+	case 7:
+		if (_heObjectNum == -1)
+			push(0);
+		else
+			push(_objs[_heObjectNum].y_pos);
+		break;
+	case 20:
+		push(getState(_heObject));
+		break;
+	case 25:
+		_heObject = pop();
+		_heObjectNum = getObjectIndex(_heObject);
+		break;
+	case 107:
+		// Dummy case
+		pop();
+		push(0);
+		break;
+	default:
+		error("o90_unknown44: Unknown case %d", subOp);
+	}
+	debug(1,"o90_unknown44 stub (%d)", subOp);
+}
+
 void ScummEngine_v90he::o90_unknown94() {
 	int subOp = fetchScriptByte();
 	subOp -= 45;





More information about the Scummvm-git-logs mailing list