diff options
author | Johannes Schickel | 2007-11-13 15:49:21 +0000 |
---|---|---|
committer | Johannes Schickel | 2007-11-13 15:49:21 +0000 |
commit | be01daccdbcb14f4558b7faf7e4d91c3f52bc9a3 (patch) | |
tree | be9f284072ac3d0d9ca80938531ccc19dc822499 | |
parent | 149e87ecfbc115daafe35febecf2cd9a44b81fdd (diff) | |
download | scummvm-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
-rw-r--r-- | engines/kyra/kyra_v2.cpp | 10 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.h | 14 | ||||
-rw-r--r-- | engines/kyra/script_v2.cpp | 31 |
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); |