diff options
Diffstat (limited to 'scumm/script_v2.cpp')
-rw-r--r-- | scumm/script_v2.cpp | 53 |
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; |