[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