aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v100he.cpp2
-rw-r--r--scumm/script_v90he.cpp9
3 files changed, 9 insertions, 3 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index f68e1eb8d3..4b63c2d9f5 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -1079,6 +1079,7 @@ protected:
void o90_mod();
void o90_shl();
void o90_shr();
+ void o90_xor();
void o90_findAllObjectsWithClassOf();
void o90_getPolygonOverlap();
void o90_cond();
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index eabe2f8eca..19f893c22a 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -54,7 +54,7 @@ void ScummEngine_v100he::setupOpcodes() {
OPCODE(o6_delayFrames),
OPCODE(o90_shl),
OPCODE(o90_shr),
- OPCODE(o6_invalid),
+ OPCODE(o90_xor),
/* 0C */
OPCODE(o6_setCameraAt),
OPCODE(o6_actorFollowCamera),
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index 5f6bbea38d..ec9bb82ab9 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -104,7 +104,7 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(o90_mod),
OPCODE(o90_shl),
OPCODE(o90_shr),
- OPCODE(o6_invalid),
+ OPCODE(o90_xor),
/* 34 */
OPCODE(o90_findAllObjectsWithClassOf),
OPCODE(o90_getPolygonOverlap),
@@ -1684,6 +1684,11 @@ void ScummEngine_v90he::o90_shr() {
push(pop() >> a);
}
+void ScummEngine_v90he::o90_xor() {
+ int a = pop();
+ push(pop() ^ a);
+}
+
void ScummEngine_v90he::o90_mod() {
int a = pop();
if (a == 0)
@@ -1976,7 +1981,7 @@ void ScummEngine_v90he::o90_unknown39() {
int a1_dim2end = pop();
int a1_dim2start = pop();
- push(0);
+ push(1);
debug(1,"o90_unknown39 stub array1 %d (%d, %d, %d, %d) array2 %d (%d, %d, %d, %d)", array1, a2_dim2start, a2_dim2end, a2_dim1start, a2_dim1end, array2, a1_dim2start, a1_dim2end, a1_dim1start, a1_dim1end);
}