diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index 838fb0dff6c..df5c0cb286c 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -302,8 +302,8 @@ void Scumm::setupOpcodes2() /* D4 */ &Scumm::o6_invalid, &Scumm::o6_jumpToScript, - &Scumm::o6_land, - &Scumm::o6_lor, + &Scumm::o6_band, + &Scumm::o6_bor, /* D8 */ &Scumm::o6_isRoomScriptRunning, &Scumm::o6_invalid, @@ -625,8 +625,8 @@ void Scumm::setupOpcodes2() /* D4 */ "o6_invalid", "o6_jumpToScript", - "o6_land", - "o6_lor", + "o6_band", + "o6_bor", /* D8 */ "o6_isRoomScriptRunning", "o6_invalid", @@ -889,18 +889,30 @@ void Scumm::o6_div() push(pop() / a); } -void Scumm::o6_land() +void Scumm::o6_land() // Logical And { int a = pop(); push(pop() && a); } -void Scumm::o6_lor() +void Scumm::o6_lor() // Logical Or { int a = pop(); push(pop() || a); } +void Scumm::o6_bor() // Bitwise Or +{ + int a = pop(); + push(pop() | a); +} + +void Scumm::o6_band() // Bitwise And +{ + int a = pop(); + push(pop() | a); +} + void Scumm::o6_kill() { pop(); diff --git a/scumm/scumm.h b/scumm/scumm.h index 9117c44d7ab..f800ceb2b7d 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -541,6 +541,7 @@ public: void runAllScripts(); void setupOpcodes(); void setupOpcodes2(); + //void setupOpcodes3(); void cutscene(int16 *args); void endCutscene(); void exitCutscene(); @@ -1224,6 +1225,9 @@ public: void o6_drawBlastObject(); void o6_getActorPriority(); void o6_unknownCD(); + void o6_bor(); + void o6_band(); + // void o7_userfaceOps(); /* Scumm Vars */ byte VAR_EGO;