diff options
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v100he.cpp | 2 | ||||
-rw-r--r-- | scumm/script_v90he.cpp | 9 |
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); } |