aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra
diff options
context:
space:
mode:
authorJohannes Schickel2007-11-13 15:49:21 +0000
committerJohannes Schickel2007-11-13 15:49:21 +0000
commitbe01daccdbcb14f4558b7faf7e4d91c3f52bc9a3 (patch)
treebe9f284072ac3d0d9ca80938531ccc19dc822499 /engines/kyra
parent149e87ecfbc115daafe35febecf2cd9a44b81fdd (diff)
downloadscummvm-rg350-be01daccdbcb14f4558b7faf7e4d91c3f52bc9a3.tar.gz
scummvm-rg350-be01daccdbcb14f4558b7faf7e4d91c3f52bc9a3.tar.bz2
scummvm-rg350-be01daccdbcb14f4558b7faf7e4d91c3f52bc9a3.zip
- implemented opcodes:
-> o2_setHiddenItemsEntry 147 -> o2_getHiddenItemsEntry 148 -> o2t_fadeScenePal 3 - added o2t_playSoundEffect to the temporary opcode list svn-id: r29494
Diffstat (limited to 'engines/kyra')
-rw-r--r--engines/kyra/kyra_v2.cpp10
-rw-r--r--engines/kyra/kyra_v2.h14
-rw-r--r--engines/kyra/script_v2.cpp31
3 files changed, 40 insertions, 15 deletions
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp
index 33c3ddc6c0..5b79d4b485 100644
--- a/engines/kyra/kyra_v2.cpp
+++ b/engines/kyra/kyra_v2.cpp
@@ -274,6 +274,8 @@ void KyraEngine_v2::startup() {
clearAnimObjects();
// XXX
+ memset(_hiddenItems, -1, sizeof(_hiddenItems));
+ // XXX
_sceneList = new SceneDesc[86];
memset(_sceneList, 0, sizeof(SceneDesc)*86);
@@ -1846,9 +1848,9 @@ void KyraEngine_v2::setupOpcodeTable() {
Opcode(o2_clearSpecialSceneScriptState),
Opcode(o2_querySpecialSceneScriptState),
OpcodeUnImpl(),
- OpcodeUnImpl(),
+ Opcode(o2_setHiddenItemsEntry),
// 0x94
- OpcodeUnImpl(),
+ Opcode(o2_getHiddenItemsEntry),
OpcodeUnImpl(),
Opcode(o2_wsaClose),
OpcodeUnImpl(),
@@ -1890,8 +1892,8 @@ void KyraEngine_v2::setupOpcodeTable() {
static const OpcodeV2 opcodeTemporaryTable[] = {
Opcode(o2t_defineNewShapes),
Opcode(o2t_setCurrentFrame),
- OpcodeUnImpl(),
- OpcodeUnImpl(),
+ Opcode(o2t_playSoundEffect),
+ Opcode(o2t_fadeScenePal),
Opcode(o2t_setShapeFlag),
Opcode(o2_dummy)
};
diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h
index fd2f38706e..4ff2c3061b 100644
--- a/engines/kyra/kyra_v2.h
+++ b/engines/kyra/kyra_v2.h
@@ -494,6 +494,8 @@ protected:
};
Item *_itemList;
+ uint16 _hiddenItems[20];
+
int findFreeItem();
int countAllItems();
int findItem(uint16 sceneId, uint16 id);
@@ -514,10 +516,6 @@ protected:
static const byte _itemStringMap[];
static const int _itemStringMapSize;
- // Just used in French version
- int getItemCommandStringDrop(uint16 item);
- int getItemCommandStringPickUp(uint16 item);
-
void setMouseCursor(uint16 item);
void setHandItem(uint16 item);
void removeHandItem();
@@ -545,6 +543,11 @@ protected:
void changeFileExtension(char *buffer);
+ // - Just used in French version
+ int getItemCommandStringDrop(uint16 item);
+ int getItemCommandStringPickUp(uint16 item);
+ // -
+
char _internStringBuf[200];
static const char *_languageExtension[];
static const char *_scriptLangExt[];
@@ -777,6 +780,8 @@ protected:
int o2_setSpecialSceneScriptState(ScriptState *script);
int o2_clearSpecialSceneScriptState(ScriptState *script);
int o2_querySpecialSceneScriptState(ScriptState *script);
+ int o2_setHiddenItemsEntry(ScriptState *script);
+ int o2_getHiddenItemsEntry(ScriptState *script);
int o2_customChat(ScriptState *script);
int o2_customChatFinish(ScriptState *script);
int o2_setVocHigh(ScriptState *script);
@@ -793,6 +798,7 @@ protected:
int o2t_defineNewShapes(ScriptState *script);
int o2t_setCurrentFrame(ScriptState *script);
int o2t_playSoundEffect(ScriptState *script);
+ int o2t_fadeScenePal(ScriptState *script);
int o2t_setShapeFlag(ScriptState *script);
// script
diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp
index e3bdfe198a..49e3b3db7c 100644
--- a/engines/kyra/script_v2.cpp
+++ b/engines/kyra/script_v2.cpp
@@ -658,17 +658,16 @@ int KyraEngine_v2::o2_countItemInstances(ScriptState *script) {
++count;
}
- /*XXX
- if (_unkTable3[0] == item && _newChapterFile == 1)
+ if (_hiddenItems[0] == item && _newChapterFile == 1)
++count;
- if (_unkTable3[1] == item && _newChapterFile == 1)
+ if (_hiddenItems[1] == item && _newChapterFile == 1)
++count;
- if (_unkTable3[2] == item && _newChapterFile == 2)
+ if (_hiddenItems[2] == item && _newChapterFile == 2)
++count;
- if (_unkTable3[3] == item && _newChapterFile == 2)
+ if (_hiddenItems[3] == item && _newChapterFile == 2)
+ ++count;
+ if (_hiddenItems[4] == item && _newChapterFile == 1)
++count;
- if (_unkTable3[4] == item && _newChapterFile == 1)
- ++count;*/
return count;
}
@@ -708,6 +707,18 @@ int KyraEngine_v2::o2_querySpecialSceneScriptState(ScriptState *script) {
return _specialSceneScriptState[stackPos(0)];
}
+int KyraEngine_v2::o2_setHiddenItemsEntry(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "o2_setHiddenItemsEntry(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+ int item = stackPos(1);
+ _hiddenItems[stackPos(0)] = item;
+ return item;
+}
+
+int KyraEngine_v2::o2_getHiddenItemsEntry(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "o2_getHiddenItemsEntry(%p) (%d)", (const void *)script, stackPos(0));
+ return _hiddenItems[stackPos(0)];
+}
+
int KyraEngine_v2::o2_customChat(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "o2_customChat(%p) ('%s', %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2));
strcpy((char*)_unkBuf500Bytes, stackPosString(0));
@@ -802,6 +813,12 @@ int KyraEngine_v2::o2t_playSoundEffect(ScriptState *script) {
return 0;
}
+int KyraEngine_v2::o2t_fadeScenePal(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "o2t_fadeScenePal(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+ fadeScenePal(stackPos(0), stackPos(1));
+ return 0;
+}
+
int KyraEngine_v2::o2t_setShapeFlag(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "o2t_setShapeFlag(%p) (%d)", (const void *)script, stackPos(0));
_newShapeFlag = stackPos(0);