Add missing code for opcode.

svn-id: r15386
This commit is contained in:
Travis Howell 2004-10-03 05:29:31 +00:00
parent b1bf9f94d8
commit ac58d5c307
2 changed files with 21 additions and 9 deletions

View file

@ -879,7 +879,7 @@ protected:
void o90_mod(); void o90_mod();
void o90_unknown31(); void o90_unknown31();
void o90_unknown32(); void o90_unknown32();
void o90_unknown34(); void o90_findAllObjectsWithClassOf();
void o90_unknown35(); void o90_unknown35();
void o90_unknown36(); void o90_unknown36();
void o90_unknown37(); void o90_unknown37();

View file

@ -109,7 +109,7 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(o90_unknown32), OPCODE(o90_unknown32),
OPCODE(o6_invalid), OPCODE(o6_invalid),
/* 34 */ /* 34 */
OPCODE(o90_unknown34), OPCODE(o90_findAllObjectsWithClassOf),
OPCODE(o90_unknown35), OPCODE(o90_unknown35),
OPCODE(o90_unknown36), OPCODE(o90_unknown36),
OPCODE(o90_unknown37), OPCODE(o90_unknown37),
@ -1065,24 +1065,36 @@ void ScummEngine_v90he::o90_mod() {
push(pop() % a); push(pop() % a);
} }
void ScummEngine_v90he::o90_unknown34() { void ScummEngine_v90he::o90_findAllObjectsWithClassOf() {
// Incomplete
int args[16]; 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 room = pop();
int i = 1; int i = 1;
if (room != _currentRoom) if (room != _currentRoom)
warning("o72_findAllObjects: current room is not %d", room); warning("o90_findAllObjectsWithClassOf: current room is not %d", room);
writeVar(0, 0); writeVar(0, 0);
defineArray(0, kDwordArray, 0, 0, 0, _numLocalObjects + 1); defineArray(0, kDwordArray, 0, 0, 0, _numLocalObjects + 1);
writeArray(0, 0, 0, _numLocalObjects);
while (i < _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++; i++;
} }
writeArray(0, 0, 0, i);
push(readVar(0)); push(readVar(0));
} }