[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.283,2.284 script_v90he.cpp,2.69,2.70

Travis Howell kirben at users.sourceforge.net
Sat Oct 2 22:42:46 CEST 2004


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

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

Add missing code for opcode.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.283
retrieving revision 2.284
diff -u -d -r2.283 -r2.284
--- intern.h	2 Oct 2004 22:26:34 -0000	2.283
+++ intern.h	3 Oct 2004 05:29:31 -0000	2.284
@@ -879,7 +879,7 @@
 	void o90_mod();
 	void o90_unknown31();
 	void o90_unknown32();
-	void o90_unknown34();
+	void o90_findAllObjectsWithClassOf();
 	void o90_unknown35();
 	void o90_unknown36();
 	void o90_unknown37();

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.69
retrieving revision 2.70
diff -u -d -r2.69 -r2.70
--- script_v90he.cpp	2 Oct 2004 07:46:06 -0000	2.69
+++ script_v90he.cpp	3 Oct 2004 05:29:31 -0000	2.70
@@ -109,7 +109,7 @@
 		OPCODE(o90_unknown32),
 		OPCODE(o6_invalid),
 		/* 34 */
-		OPCODE(o90_unknown34),
+		OPCODE(o90_findAllObjectsWithClassOf),
 		OPCODE(o90_unknown35),
 		OPCODE(o90_unknown36),
 		OPCODE(o90_unknown37),
@@ -1065,24 +1065,36 @@
 	push(pop() % a);
 }
 
-void ScummEngine_v90he::o90_unknown34() {
-	// Incomplete
+void ScummEngine_v90he::o90_findAllObjectsWithClassOf() {
 	int args[16];
+	int num, cls, tmp;
+	bool b;
+	int cond = 1;
 
-	getStackList(args, ARRAYSIZE(args));
+	num = getStackList(args, ARRAYSIZE(args));
 	int room = pop();
 	int i = 1;
 
 	if (room != _currentRoom)
-		warning("o72_findAllObjects: current room is not %d", room);
+		warning("o90_findAllObjectsWithClassOf: 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);
+		cond = 1;
+		tmp = num;
+		while (--tmp >= 0) {
+			cls = args[tmp];
+			b = getClass(i, cls);
+			if ((cls & 0x80 && !b) || (!(cls & 0x80) && b))
+				cond = 0;
+		}
+
+		if (cond)
+			writeArray(0, 0, i, _objs[i].obj_nr);
 		i++;
 	}
+	writeArray(0, 0, 0, i);
 	
 	push(readVar(0));
 }





More information about the Scummvm-git-logs mailing list