aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v2.cpp')
-rw-r--r--scumm/script_v2.cpp53
1 files changed, 45 insertions, 8 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index 447bfc0af0..836af315b6 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -38,7 +38,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o5_startMusic),
OPCODE(o5_getActorRoom),
/* 04 */
- OPCODE(o5_isGreaterEqual),
+ OPCODE(o2_isGreaterEqual),
OPCODE(o2_drawObject),
OPCODE(o2_getActorElevation),
OPCODE(o2_setState08),
@@ -103,7 +103,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_walkActorToObject),
OPCODE(o2_setState01),
/* 38 */
- OPCODE(o5_lessOrEqual),
+ OPCODE(o2_isLessEqual),
OPCODE(o2_doSentence),
OPCODE(o2_subtract),
OPCODE(o2_waitForActor),
@@ -118,7 +118,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_startScript),
OPCODE(o2_getActorX),
/* 44 */
- OPCODE(o5_isLess),
+ OPCODE(o2_isLess),
OPCODE(o2_drawObject),
OPCODE(o5_increment),
OPCODE(o2_clearState08),
@@ -183,7 +183,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_walkActorToObject),
OPCODE(o2_clearState01),
/* 78 */
- OPCODE(o5_isGreater),
+ OPCODE(o2_isGreater),
OPCODE(o2_doSentence),
OPCODE(o2_verbOps),
OPCODE(o2_getActorWalkBox),
@@ -198,7 +198,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o5_startMusic),
OPCODE(o5_getActorRoom),
/* 84 */
- OPCODE(o5_isGreaterEqual),
+ OPCODE(o2_isGreaterEqual),
OPCODE(o2_drawObject),
OPCODE(o2_getActorElevation),
OPCODE(o2_setState08),
@@ -263,7 +263,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_walkActorToObject),
OPCODE(o2_setState01),
/* B8 */
- OPCODE(o5_lessOrEqual),
+ OPCODE(o2_isLessEqual),
OPCODE(o2_doSentence),
OPCODE(o2_subtract),
OPCODE(o2_waitForActor),
@@ -278,7 +278,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_startScript),
OPCODE(o2_getActorX),
/* C4 */
- OPCODE(o5_isLess),
+ OPCODE(o2_isLess),
OPCODE(o2_drawObject),
OPCODE(o5_decrement),
OPCODE(o2_clearState08),
@@ -343,7 +343,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_walkActorToObject),
OPCODE(o2_clearState01),
/* F8 */
- OPCODE(o5_isGreater),
+ OPCODE(o2_isGreater),
OPCODE(o2_doSentence),
OPCODE(o2_verbOps),
OPCODE(o2_getActorWalkBox),
@@ -1142,6 +1142,43 @@ void Scumm_v2::o2_getActorY() {
setResult(getObjY(a) / 2);
}
+void Scumm_v2::o2_isGreater() {
+ uint16 a = getVar();
+ uint16 b = getVarOrDirectWord(0x80);
+ if (b > a)
+ ignoreScriptWord();
+ else
+ o5_jumpRelative();
+}
+
+void Scumm_v2::o2_isGreaterEqual() {
+ uint16 a = getVar();
+ uint16 b = getVarOrDirectWord(0x80);
+ if (b >= a)
+ ignoreScriptWord();
+ else
+ o5_jumpRelative();
+}
+
+void Scumm_v2::o2_isLess() {
+ uint16 a = getVar();
+ uint16 b = getVarOrDirectWord(0x80);
+
+ if (b < a)
+ ignoreScriptWord();
+ else
+ o5_jumpRelative();
+}
+
+void Scumm_v2::o2_isLessEqual() {
+ uint16 a = getVar();
+ uint16 b = getVarOrDirectWord(0x80);
+ if (b <= a)
+ ignoreScriptWord();
+ else
+ o5_jumpRelative();
+}
+
void Scumm_v2::o2_loadRoomWithEgo() {
Actor *a;
int obj, room, x, y;