aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra
diff options
context:
space:
mode:
authorJohannes Schickel2007-10-09 09:15:12 +0000
committerJohannes Schickel2007-10-09 09:15:12 +0000
commitca0161b76ad3f90e0fd340ecdfbeb75bee7db467 (patch)
tree4db7aeb3fcaa82e376c6c1c3647d4539518bdb62 /engines/kyra
parent99efa084fe26a52fbcf1b9105eef0b39afe21924 (diff)
downloadscummvm-rg350-ca0161b76ad3f90e0fd340ecdfbeb75bee7db467.tar.gz
scummvm-rg350-ca0161b76ad3f90e0fd340ecdfbeb75bee7db467.tar.bz2
scummvm-rg350-ca0161b76ad3f90e0fd340ecdfbeb75bee7db467.zip
HoF
- Implemented opcodes -> o2_switchScene 0x51 -> o2_getShapeFlag1 0x52 svn-id: r29180
Diffstat (limited to 'engines/kyra')
-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);