diff options
-rw-r--r-- | engines/kyra/kyra_v2.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.h | 2 | ||||
-rw-r--r-- | engines/kyra/script_v2.cpp | 16 |
3 files changed, 20 insertions, 2 deletions
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index e39267f962..b67ac94a04 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -1460,8 +1460,8 @@ void KyraEngine_v2::setupOpcodeTable() { Opcode(o2_dummy), // 0x50 Opcode(o2_enterNewSceneEx), - OpcodeUnImpl(), - OpcodeUnImpl(), + Opcode(o2_switchScene), + Opcode(o2_getShapeFlag1), OpcodeUnImpl(), // 0x54 OpcodeUnImpl(), diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index e7d3f6c2d0..221c0b89c5 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -529,6 +529,8 @@ protected: int o2_update(ScriptState *script); int o2_fadeScenePal(ScriptState *script); int o2_enterNewSceneEx(ScriptState *script); + int o2_switchScene(ScriptState *script); + int o2_getShapeFlag1(ScriptState *script); int o2_setLayerFlag(ScriptState *script); int o2_setZanthiaPos(ScriptState *script); int o2_getRand(ScriptState *script); diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp index 9794844cc8..13b7b6ae6d 100644 --- a/engines/kyra/script_v2.cpp +++ b/engines/kyra/script_v2.cpp @@ -403,6 +403,22 @@ int KyraEngine_v2::o2_enterNewSceneEx(ScriptState *script) { return 0; } +int KyraEngine_v2::o2_switchScene(ScriptState *script) { + debugC(3, kDebugLevelScriptFuncs, "o2_switchScene(%p) (%d)", (const void *)script, stackPos(0)); + setGameFlag(0x1EF); + _mainCharX = _mainCharacter.x1; + _mainCharY = _mainCharacter.y1; + _noScriptEnter = 0; + enterNewScene(stackPos(0), _mainCharacter.facing, 0, 0, 0); + _noScriptEnter = 1; + return 0; +} + +int KyraEngine_v2::o2_getShapeFlag1(ScriptState *script) { + debugC(3, kDebugLevelScriptFuncs, "o2_getShapeFlag1(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1)); + return _screen->getShapeFlag1(stackPos(0), stackPos(1)); +} + int KyraEngine_v2::o2_setLayerFlag(ScriptState *script) { debugC(3, kDebugLevelScriptFuncs, "o2_setLayerFlag(%p) (%d)", (const void *)script, stackPos(0)); int layer = stackPos(0); |