aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2008-03-15 09:57:41 +0000
committerJohannes Schickel2008-03-15 09:57:41 +0000
commit91adba9842b516cbe02966f0d140aa2d7f5dc79c (patch)
tree09f7d2497ecf0e68fc3ae13a8196148edcf8aed3
parent8e3681dbe9fcc08ff3b74190bc8bf1d48d236564 (diff)
downloadscummvm-rg350-91adba9842b516cbe02966f0d140aa2d7f5dc79c.tar.gz
scummvm-rg350-91adba9842b516cbe02966f0d140aa2d7f5dc79c.tar.bz2
scummvm-rg350-91adba9842b516cbe02966f0d140aa2d7f5dc79c.zip
Implement opcodes:
- 7: o2_getCharacterScene - 54: o2_delaySecs - 103: o2_fillRect svn-id: r31125
-rw-r--r--engines/kyra/kyra_v2.cpp6
-rw-r--r--engines/kyra/kyra_v2.h3
-rw-r--r--engines/kyra/script_v2.cpp17
3 files changed, 23 insertions, 3 deletions
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp
index 69375a36f4..a0a68a5819 100644
--- a/engines/kyra/kyra_v2.cpp
+++ b/engines/kyra/kyra_v2.cpp
@@ -2074,7 +2074,7 @@ void KyraEngine_v2::setupOpcodeTable() {
Opcode(o2_getCharacterX),
Opcode(o2_getCharacterY),
Opcode(o2_getCharacterFacing),
- OpcodeUnImpl(),
+ Opcode(o2_getCharacterScene),
// 0x08
Opcode(o2_setSceneComment),
OpcodeUnImpl(),
@@ -2133,7 +2133,7 @@ void KyraEngine_v2::setupOpcodeTable() {
// 0x34
OpcodeUnImpl(),
Opcode(o2_playSoundEffect),
- OpcodeUnImpl(),
+ Opcode(o2_delaySecs),
Opcode(o2_delay),
// 0x38
Opcode(o2_dummy),
@@ -2194,7 +2194,7 @@ void KyraEngine_v2::setupOpcodeTable() {
OpcodeUnImpl(),
OpcodeUnImpl(),
OpcodeUnImpl(),
- OpcodeUnImpl(),
+ Opcode(o2_fillRect),
// 0x68
OpcodeUnImpl(),
OpcodeUnImpl(),
diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h
index 243f0bd830..c145c79727 100644
--- a/engines/kyra/kyra_v2.h
+++ b/engines/kyra/kyra_v2.h
@@ -935,6 +935,7 @@ protected:
int o2_getCharacterX(ScriptState *script);
int o2_getCharacterY(ScriptState *script);
int o2_getCharacterFacing(ScriptState *script);
+ int o2_getCharacterScene(ScriptState *script);
int o2_setSceneComment(ScriptState *script);
int o2_setCharacterAnimFrame(ScriptState *script);
int o2_trySceneChange(ScriptState *script);
@@ -957,6 +958,7 @@ protected:
int o2_setMousePos(ScriptState *script);
int o2_showMouse(ScriptState *script);
//int o2_playSoundEffect(ScriptState *script);
+ int o2_delaySecs(ScriptState *script);
int o2_delay(ScriptState *script);
int o2_setScaleTableItem(ScriptState *script);
int o2_setDrawLayerTableItem(ScriptState *script);
@@ -975,6 +977,7 @@ protected:
int o2_playWanderScoreViaMap(ScriptState *script);
int o2_playSoundEffect(ScriptState *script);
int o2_getRand(ScriptState *script);
+ int o2_fillRect(ScriptState *script);
int o2_encodeShape(ScriptState *script);
int o2_defineRoomEntrance(ScriptState *script);
int o2_runTemporaryScript(ScriptState *script);
diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp
index 923abd7133..6f8f2962e8 100644
--- a/engines/kyra/script_v2.cpp
+++ b/engines/kyra/script_v2.cpp
@@ -100,6 +100,11 @@ int KyraEngine_v2::o2_getCharacterFacing(ScriptState *script) {
return _mainCharacter.facing;
}
+int KyraEngine_v2::o2_getCharacterScene(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "o2_getCharacterScene(%p) ()", (const void *)script);
+ return _mainCharacter.sceneId;
+}
+
int KyraEngine_v2::o2_setSceneComment(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "o2_setSceneComment(%p) ('%s')", (const void *)script, stackPosString(0));
_sceneCommentString = stackPosString(0);
@@ -348,6 +353,12 @@ int KyraEngine_v2::o2_showMouse(ScriptState *script) {
return 0;
}
+int KyraEngine_v2::o2_delaySecs(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "o2_delaySecs(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+ delay(stackPos(0) * 1000, true);
+ return 0;
+}
+
int KyraEngine_v2::o2_delay(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "o2_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
//if (stackPos(1))
@@ -532,6 +543,12 @@ int KyraEngine_v2::o2_getRand(ScriptState *script) {
return _rnd.getRandomNumberRng(stackPos(0), stackPos(1));
}
+int KyraEngine_v2::o2_fillRect(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "o2_fillRect(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
+ _screen->fillRect(stackPos(1), stackPos(2), stackPos(1)+stackPos(3), stackPos(2)+stackPos(4), stackPos(5), stackPos(0));
+ return 0;
+}
+
int KyraEngine_v2::o2_encodeShape(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "o2_encodeShape(%p) (%d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1),
stackPos(2), stackPos(3), stackPos(4));