aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v90he.cpp121
2 files changed, 121 insertions, 1 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 0b8efbb0c4..6878bf2432 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -807,6 +807,7 @@ protected:
void o90_unknown26();
void o90_unknown27();
void o90_unknown28();
+ void o90_unknown29();
};
class ScummEngine_v7 : public ScummEngine_v6 {
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index f3e14874a5..0699940c6f 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -96,7 +96,7 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(o90_unknown27),
/* 28 */
OPCODE(o90_unknown28),
- OPCODE(o6_invalid),
+ OPCODE(o90_unknown29),
OPCODE(o6_invalid),
OPCODE(o6_invalid),
/* 2C */
@@ -509,18 +509,67 @@ void ScummEngine_v90he::o90_unknown26() {
subOp -= 34;
switch (subOp) {
+ case 0:
+ pop();
+ break;
+ case 1:
+ pop();
+ break;
+ case 3:
+ pop();
+ break;
+ case 8:
+ pop();
+ pop();
+ break;
+ case 9:
+ pop();
+ break;
case 10:
pop();
pop();
break;
+ case 18:
+ pop();
+ break;
+ case 19:
+ pop();
+ break;
case 23:
pop();
break;
+ case 29:
+ pop();
+ break;
+ case 31:
+ pop();
+ pop();
+ break;
+ case 34:
+ pop();
+ break;
+ case 43:
+ pop();
+ pop();
+ break;
+ case 48:
+ pop();
+ break;
+ case 90:
+ pop();
+ break;
case 124:
break;
+ case 164:
+ pop();
+ pop();
+ break;
+ case 183:
+ break;
default:
error("o90_unknown26: Unknown case %d", subOp);
}
+ debug(1,"o90_unknown26 stub (%d)", subOp);
}
void ScummEngine_v90he::o90_unknown27() {
@@ -549,12 +598,82 @@ void ScummEngine_v90he::o90_unknown28() {
subOp -= 37;
switch (subOp) {
+ case 6:
+ pop();
+ break;
+ case 7:
+ pop();
+ pop();
+ break;
case 20:
pop();
break;
+ case 28:
+ pop();
+ pop();
+ break;
+ case 30:
+ pop();
+ pop();
+ pop();
+ pop();
+ break;
default:
error("o90_unknown28: Unknown case %d", subOp);
}
+ debug(1,"o90_unknown28 stub (%d)", subOp);
+}
+
+void ScummEngine_v90he::o90_unknown29() {
+ int subOp = fetchScriptByte();
+ subOp -= 30;
+
+ switch (subOp) {
+ case 0:
+ pop();
+ pop();
+ break;
+ case 1:
+ pop();
+ pop();
+ break;
+ case 2:
+ pop();
+ pop();
+ break;
+ case 3:
+ pop();
+ pop();
+ break;
+ case 6:
+ pop();
+ break;
+ case 15:
+ pop();
+ pop();
+ pop();
+ pop();
+ break;
+ case 36:
+ pop();
+ pop();
+ pop();
+ pop();
+ break;
+ case 100:
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ pop();
+ break;
+ default:
+ error("o90_unknown29: Unknown case %d", subOp);
+ }
+ push(0);
+
+ debug(1,"o90_unknown29 stub (%d)", subOp);
}
} // End of namespace Scumm