aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v100he.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v100he.cpp')
-rw-r--r--scumm/script_v100he.cpp143
1 files changed, 137 insertions, 6 deletions
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index cf2a74e05f..79b6e617c9 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -221,8 +221,8 @@ void ScummEngine_v100he::setupOpcodes() {
/* 8C */
OPCODE(o6_invalid),
OPCODE(o100_wait),
- OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o6_walkActorToObj),
+ OPCODE(o6_walkActorTo),
/* 90 */
OPCODE(o60_writeFile),
OPCODE(o72_writeINI),
@@ -274,7 +274,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o72_checkGlobQueue),
OPCODE(o72_getResourceSize),
/* B8 */
- OPCODE(o6_invalid),
+ OPCODE(o100_unknown27),
OPCODE(o6_invalid),
OPCODE(o6_invalid),
OPCODE(o6_isActorInBox),
@@ -294,7 +294,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o6_invalid),
OPCODE(o6_getOwner),
/* C8 */
- OPCODE(o90_getPaletteData),
+ OPCODE(o100_getPaletteData),
OPCODE(o6_pickOneOf),
OPCODE(o6_pickOneOfDefault),
OPCODE(o80_pickVarRandom),
@@ -980,6 +980,15 @@ void ScummEngine_v100he::o100_wizImageOps() {
_wizParams.processFlags |= 0x10000;
pop();
break;
+ case 138:
+ _wizParams.processFlags |= 0x60000;
+ _wizParams.processMode = 9;
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ break;
default:
error("o100_wizImageOps: Unknown case %d", subOp);
}
@@ -1174,7 +1183,6 @@ void ScummEngine_v100he::o100_startSound() {
byte op;
op = fetchScriptByte();
- debug(0, "o100_startSound invalid case %d", op);
switch (op) {
case 6:
_heSndLoop |= 16;
@@ -1220,8 +1228,9 @@ void ScummEngine_v100he::o100_startSound() {
}
void ScummEngine_v100he::o100_unknown26() {
- // Incomplete
int args[16];
+ byte string[80];
+
byte subOp = fetchScriptByte();
switch (subOp) {
@@ -1229,24 +1238,50 @@ void ScummEngine_v100he::o100_unknown26() {
pop();
pop();
break;
+ case 2:
+ pop();
+ break;
case 3:
pop();
break;
+ case 4:
+ pop();
+ break;
case 6:
pop();
pop();
break;
+ case 7:
+ pop();
+ break;
case 16:
getStackList(args, ARRAYSIZE(args));
break;
+ case 32:
+ pop();
+ break;
case 38:
pop();
break;
case 40:
pop();
break;
+ case 48:
+ pop();
+ break;
+ case 49:
+ pop();
+ pop();
+ break;
+ case 52:
+ copyScriptString(string);
+ break;
case 53:
break;
+ case 54:
+ pop();
+ pop();
+ break;
case 57:
pop();
break;
@@ -1259,12 +1294,37 @@ void ScummEngine_v100he::o100_unknown26() {
break;
case 61:
break;
+ case 65:
+ pop();
+ break;
+ case 70:
+ pop();
+ break;
case 73:
pop();
break;
+ case 74:
+ pop();
+ pop();
+ break;
+ case 75:
+ pop();
+ break;
+ case 76:
+ pop();
+ break;
case 82:
pop();
break;
+ case 83:
+ pop();
+ pop();
+ break;
+ case 88:
+ pop();
+ break;
+ case 89:
+ break;
default:
error("o100_unknown26: Unknown case %d", subOp);
}
@@ -1389,6 +1449,77 @@ void ScummEngine_v100he::o100_wait() {
o6_breakHere();
}
+void ScummEngine_v100he::o100_unknown27() {
+ byte subOp = fetchScriptByte();
+ switch (subOp) {
+ case 5:
+ pop();
+ break;
+ case 48:
+ pop();
+ break;
+ case 54:
+ pop();
+ pop();
+ break;
+ case 59:
+ pop();
+ break;
+ case 60:
+ pop();
+ pop();
+ break;
+ case 85:
+ pop();
+ break;
+ case 86:
+ pop();
+ break;
+ default:
+ error("o100_unknown27: Unknown case %d", subOp);
+ }
+ push(0);
+
+ debug(1,"o100_unknown27 stub (%d)", subOp);
+}
+
+void ScummEngine_v100he::o100_getPaletteData() {
+ byte subOp = fetchScriptByte();
+
+ switch (subOp) {
+ case 13:
+ pop();
+ pop();
+ break;
+ case 20:
+ pop();
+ pop();
+ break;
+ case 33:
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ break;
+ case 53:
+ pop();
+ pop();
+ pop();
+ break;
+ case 73:
+ pop();
+ pop();
+ pop();
+ break;
+ default:
+ error("o100_getPaletteData: Unknown case %d", subOp);
+ }
+ push(0);
+ debug(1,"o100_getPaletteData stub (%d)", subOp);
+}
+
void ScummEngine_v100he::o100_unknown25() {
int args[16];