aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
Diffstat (limited to 'scumm')
-rw-r--r--scumm/script_v100he.cpp137
-rw-r--r--scumm/script_v90he.cpp8
2 files changed, 138 insertions, 7 deletions
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index 311eba31b3..cf2a74e05f 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -809,7 +809,8 @@ void ScummEngine_v100he::o100_drawObject() {
}
void ScummEngine_v100he::o100_unknown28() {
- // Incomplete
+ byte string[260];
+
byte subOp = fetchScriptByte();
switch (subOp) {
@@ -826,8 +827,61 @@ void ScummEngine_v100he::o100_unknown28() {
pop();
pop();
break;
+ case 38:
+ switch (pop()) {
+ case 1:
+ pop();
+ pop();
+ break;
+ case 2:
+ pop();
+ break;
+ case 3:
+ pop();
+ break;
+ case 4:
+ pop();
+ break;
+ case 5:
+ break;
+ case 6:
+ pop();
+ break;
+ case 7:
+ pop();
+ break;
+ case 8:
+ pop();
+ break;
+ default:
+ error("o100_unknown28 subOp 38: Unknown case %d", subOp);
+ }
+ break;
+ case 40:
+ pop();
+ break;
+ case 49:
+ pop();
+ pop();
+ break;
+ case 52:
+ copyScriptString(string);
+ break;
case 53:
break;
+ case 54:
+ pop();
+ pop();
+ break;
+ case 59:
+ pop();
+ break;
+ case 60:
+ pop();
+ pop();
+ break;
+ case 89:
+ break;
default:
error("o100_unknown28: Unknown case %d", subOp);
}
@@ -1336,27 +1390,98 @@ void ScummEngine_v100he::o100_wait() {
}
void ScummEngine_v100he::o100_unknown25() {
- // Incomplete
int args[16];
byte subOp = fetchScriptByte();
- subOp -= 3;
switch (subOp) {
+ case 3:
+ pop();
+ break;
+ case 4:
+ pop();
+ break;
+ case 7:
+ pop();
+ break;
+ case 16:
+ getStackList(args, ARRAYSIZE(args));
+ pop();
+ break;
+ case 26:
+ pop();
+ break;
case 30:
+ pop();
+ break;
+ case 31:
+ pop();
+ break;
+ case 32:
+ pop();
+ break;
+ case 33:
getStackList(args, ARRAYSIZE(args));
pop();
pop();
pop();
pop();
break;
- case 36:
+ case 38:
pop();
break;
- case 37:
+ case 39:
pop();
break;
- case 81:
+ case 40:
+ pop();
+ break;
+ case 48:
+ pop();
+ break;
+ case 54:
+ pop();
+ pop();
+ break;
+ case 57:
+ pop();
+ break;
+ case 59:
+ pop();
+ break;
+ case 60:
+ pop();
+ pop();
+ break;
+ case 65:
+ pop();
+ break;
+ case 70:
+ pop();
+ break;
+ case 73:
+ pop();
+ break;
+ case 75:
+ pop();
+ break;
+ case 76:
+ pop();
+ break;
+ case 82:
+ pop();
+ break;
+ case 83:
+ pop();
+ pop();
+ break;
+ case 84:
+ pop();
+ break;
+ case 85:
+ pop();
+ break;
+ case 86:
pop();
break;
default:
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index 1abbddeacd..16150f8b6b 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -1512,11 +1512,17 @@ void ScummEngine_v90he::o90_paletteOps() {
void ScummEngine_v90he::o90_unknownA5() {
+ byte string[80];
+ int a;
+
int subOp = fetchScriptByte();
switch (subOp) {
case 42:
- if (pop() - 1 == 0)
+ a = pop();
+ if (a == 2)
+ copyScriptString(string);
+ else if (a == 1)
pop();
break;
case 57: