aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/kyra/kyra_v2.cpp4
-rw-r--r--engines/kyra/kyra_v2.h2
-rw-r--r--engines/kyra/script_v2.cpp16
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);