diff options
author | Alyssa Milburn | 2011-08-22 20:03:05 +0200 |
---|---|---|
committer | Alyssa Milburn | 2011-08-22 20:03:05 +0200 |
commit | 84063dc9727a9f55e09d39574027beab695680e6 (patch) | |
tree | d71a9599cb550d9f7949a2d3209574064e054d85 /engines/kyra | |
parent | c6e89df3d940747a85d447f172e2323c800f5eaf (diff) | |
parent | a39a3eda46aea108a51556f001617ad28d29e520 (diff) | |
download | scummvm-rg350-84063dc9727a9f55e09d39574027beab695680e6.tar.gz scummvm-rg350-84063dc9727a9f55e09d39574027beab695680e6.tar.bz2 scummvm-rg350-84063dc9727a9f55e09d39574027beab695680e6.zip |
Merge remote-tracking branch 'origin/master' into soltys_wip2
Diffstat (limited to 'engines/kyra')
101 files changed, 271 insertions, 174 deletions
diff --git a/engines/kyra/animator_hof.cpp b/engines/kyra/animator_hof.cpp index 4cdb622501..741e358143 100644 --- a/engines/kyra/animator_hof.cpp +++ b/engines/kyra/animator_hof.cpp @@ -314,4 +314,3 @@ void KyraEngine_HoF::resetCharacterAnimDim() { } } // End of namespace Kyra - diff --git a/engines/kyra/animator_lok.cpp b/engines/kyra/animator_lok.cpp index 3e9dd7aa66..4126681bbe 100644 --- a/engines/kyra/animator_lok.cpp +++ b/engines/kyra/animator_lok.cpp @@ -649,4 +649,3 @@ void Animator_LoK::setCharactersHeight() { } } // End of namespace Kyra - diff --git a/engines/kyra/animator_lok.h b/engines/kyra/animator_lok.h index 21d24866c8..74b8305468 100644 --- a/engines/kyra/animator_lok.h +++ b/engines/kyra/animator_lok.h @@ -125,4 +125,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/animator_mr.cpp b/engines/kyra/animator_mr.cpp index 84bda3f3fd..6414b99ffd 100644 --- a/engines/kyra/animator_mr.cpp +++ b/engines/kyra/animator_mr.cpp @@ -459,4 +459,3 @@ void KyraEngine_MR::showIdleAnim() { } } // End of namespace Kyra - diff --git a/engines/kyra/animator_v2.cpp b/engines/kyra/animator_v2.cpp index ad7057f11a..334356e261 100644 --- a/engines/kyra/animator_v2.cpp +++ b/engines/kyra/animator_v2.cpp @@ -185,4 +185,3 @@ void KyraEngine_v2::deleteItemAnimEntry(int item) { } } // End of namespace Kyra - diff --git a/engines/kyra/debugger.cpp b/engines/kyra/debugger.cpp index 4a48ac0674..dfc2a9f868 100644 --- a/engines/kyra/debugger.cpp +++ b/engines/kyra/debugger.cpp @@ -461,4 +461,3 @@ Debugger_LoL::Debugger_LoL(LoLEngine *vm) : Debugger(vm), _vm(vm) { #endif // ENABLE_LOL } // End of namespace Kyra - diff --git a/engines/kyra/debugger.h b/engines/kyra/debugger.h index 70c547381e..09ddd89a7a 100644 --- a/engines/kyra/debugger.h +++ b/engines/kyra/debugger.h @@ -106,4 +106,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp index a6af584fb8..0a49483f12 100644 --- a/engines/kyra/detection.cpp +++ b/engines/kyra/detection.cpp @@ -221,4 +221,3 @@ SaveStateDescriptor KyraMetaEngine::querySaveMetaInfos(const char *target, int s #else REGISTER_PLUGIN_STATIC(KYRA, PLUGIN_TYPE_ENGINE, KyraMetaEngine); #endif - diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h index 47a3c4362a..c224c8f46d 100644 --- a/engines/kyra/detection_tables.h +++ b/engines/kyra/detection_tables.h @@ -21,38 +21,41 @@ namespace { -#define FLAGS(x, y, z, a, b, c, d, id) { Common::UNK_LANG, Common::UNK_LANG, Common::UNK_LANG, Common::kPlatformUnknown, x, y, z, a, b, c, d, id } -#define FLAGS_FAN(fanLang, repLang, x, y, z, a, b, c, d, id) { Common::UNK_LANG, fanLang, repLang, Common::kPlatformUnknown, x, y, z, a, b, c, d, id } - -#define KYRA1_FLOPPY_FLAGS FLAGS(false, false, false, false, false, false, false, Kyra::GI_KYRA1) -#define KYRA1_FLOPPY_CMP_FLAGS FLAGS(false, false, false, false, false, false, true, Kyra::GI_KYRA1) -#define KYRA1_AMIGA_FLAGS FLAGS(false, false, false, false, false, false, false, Kyra::GI_KYRA1) -#define KYRA1_TOWNS_FLAGS FLAGS(false, true, false, false, false, false, false, Kyra::GI_KYRA1) -#define KYRA1_TOWNS_SJIS_FLAGS FLAGS(false, true, false, true, false, false, false, Kyra::GI_KYRA1) -#define KYRA1_CD_FLAGS FLAGS(false, true, true, false, false, false, false, Kyra::GI_KYRA1) -#define KYRA1_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, Kyra::GI_KYRA1) -#define KYRA1_DEMO_CD_FLAGS FLAGS(true, true, true, false, false, false, false, Kyra::GI_KYRA1) - -#define KYRA2_FLOPPY_FLAGS FLAGS(false, false, false, false, false, false, false, Kyra::GI_KYRA2) -#define KYRA2_FLOPPY_CMP_FLAGS FLAGS(false, false, false, false, false, false, true, Kyra::GI_KYRA2) -#define KYRA2_CD_FLAGS FLAGS(false, false, true, false, false, false, false, Kyra::GI_KYRA2) -#define KYRA2_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, true, false, false, false, false, Kyra::GI_KYRA2) -#define KYRA2_CD_DEMO_FLAGS FLAGS(true, false, true, false, false, false, false, Kyra::GI_KYRA2) -#define KYRA2_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, Kyra::GI_KYRA2) -#define KYRA2_TOWNS_FLAGS FLAGS(false, false, false, false, false, false, false, Kyra::GI_KYRA2) -#define KYRA2_TOWNS_SJIS_FLAGS FLAGS(false, false, false, true, false, false, false, Kyra::GI_KYRA2) - -#define KYRA3_CD_FLAGS FLAGS(false, false, true, false, false, true, true, Kyra::GI_KYRA3) -#define KYRA3_CD_INS_FLAGS FLAGS(false, false, true, false, false, true, false, Kyra::GI_KYRA3) -#define KYRA3_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, true, false, false, true, false, Kyra::GI_KYRA3) - -#define LOL_CD_FLAGS FLAGS(false, false, true, false, false, false, false, Kyra::GI_LOL) -#define LOL_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, true, false, false, false, false, Kyra::GI_LOL) -#define LOL_FLOPPY_FLAGS FLAGS(false, false, false, false, false, false, false, Kyra::GI_LOL) -#define LOL_FLOPPY_CMP_FLAGS FLAGS(false, false, false, false, false, false, true, Kyra::GI_LOL) -#define LOL_PC98_SJIS_FLAGS FLAGS(false, false, false, true, true, false, false, Kyra::GI_LOL) -#define LOL_DEMO_FLAGS FLAGS(true, true, false, false, false, false, false, Kyra::GI_LOL) -#define LOL_KYRA2_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, Kyra::GI_KYRA2) +#define FLAGS(x, y, z, a, b, c, d, e, id) { Common::UNK_LANG, Common::UNK_LANG, Common::UNK_LANG, Common::kPlatformUnknown, x, y, z, a, b, c, d, e, id } +#define FLAGS_FAN(fanLang, repLang, x, y, z, a, b, c, d, e, id) { Common::UNK_LANG, fanLang, repLang, Common::kPlatformUnknown, x, y, z, a, b, c, d, e, id } + +#define KYRA1_FLOPPY_FLAGS FLAGS(false, false, false, false, false, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_FLOPPY_CMP_FLAGS FLAGS(false, false, false, false, false, false, false, true, Kyra::GI_KYRA1) +#define KYRA1_OLDFLOPPY_FLAGS FLAGS(false, false, false, true, false, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_AMIGA_FLAGS FLAGS(false, false, false, false, false, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_TOWNS_FLAGS FLAGS(false, true, false, false, false, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_TOWNS_SJIS_FLAGS FLAGS(false, true, false, false, true, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_CD_FLAGS FLAGS(false, true, true, false, false, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, false, Kyra::GI_KYRA1) +#define KYRA1_DEMO_CD_FLAGS FLAGS(true, true, true, false, false, false, false, false, Kyra::GI_KYRA1) + +#define KYRA2_FLOPPY_FLAGS FLAGS(false, false, false, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_FLOPPY_CMP_FLAGS FLAGS(false, false, false, false, false, false, false, true, Kyra::GI_KYRA2) +#define KYRA2_FLOPPY_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, false, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_CD_FLAGS FLAGS(false, false, true, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, true, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_CD_DEMO_FLAGS FLAGS(true, false, true, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_TOWNS_FLAGS FLAGS(false, false, false, false, false, false, false, false, Kyra::GI_KYRA2) +#define KYRA2_TOWNS_SJIS_FLAGS FLAGS(false, false, false, false, true, false, false, false, Kyra::GI_KYRA2) + +#define KYRA3_CD_FLAGS FLAGS(false, false, true, false, false, false, true, true, Kyra::GI_KYRA3) +#define KYRA3_CD_INS_FLAGS FLAGS(false, false, true, false, false, false, true, false, Kyra::GI_KYRA3) +#define KYRA3_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, true, false, false, false, true, false, Kyra::GI_KYRA3) + +#define LOL_CD_FLAGS FLAGS(false, false, true, false, false, false, false, false, Kyra::GI_LOL) +#define LOL_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, true, false, false, false, false, false, Kyra::GI_LOL) +#define LOL_FLOPPY_FLAGS FLAGS(false, false, false, false, false, false, false, false, Kyra::GI_LOL) +#define LOL_FLOPPY_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, false, false, false, false, false, false, false, Kyra::GI_LOL) +#define LOL_FLOPPY_CMP_FLAGS FLAGS(false, false, false, false, false, false, false, true, Kyra::GI_LOL) +#define LOL_PC98_SJIS_FLAGS FLAGS(false, false, false, false, true, true, false, false, Kyra::GI_LOL) +#define LOL_DEMO_FLAGS FLAGS(true, true, false, false, false, false, false, false, Kyra::GI_LOL) +#define LOL_KYRA2_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, false, Kyra::GI_KYRA2) const KYRAGameDescription adGameDescs[] = { /* disable these targets until they get supported @@ -95,6 +98,7 @@ const KYRAGameDescription adGameDescs[] = { }, KYRA1_FLOPPY_FLAGS }, + { { "kyra1", @@ -143,6 +147,18 @@ const KYRAGameDescription adGameDescs[] = { }, KYRA1_FLOPPY_FLAGS }, + { + { + "kyra1", + "Extracted", + AD_ENTRY1("GEMCUT.EMC", "689b62b7519215c1b2571d466c95624c"), + Common::RU_RUS, + Common::kPlatformPC, + ADGF_NO_FLAGS, + Common::GUIO_NOSPEECH | Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIPCSPK + }, + KYRA1_OLDFLOPPY_FLAGS + }, { // from VooD { "kyra1", @@ -486,6 +502,32 @@ const KYRAGameDescription adGameDescs[] = { KYRA2_FLOPPY_FLAGS }, + { // Floppy version extracted + { + "kyra2", + "Extracted", + AD_ENTRY1("CH01-S00.DLG", "54b7a5a94f6e1ec91f0fb1311eec09ab"), + Common::RU_RUS, + Common::kPlatformPC, + ADGF_NO_FLAGS, + Common::GUIO_NOSPEECH | Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + KYRA2_FLOPPY_FAN_FLAGS(Common::RU_RUS, Common::EN_ANY) + }, + + { // Floppy version extracted + { + "kyra2", + "Extracted", + AD_ENTRY1("CH01-S00.DLG", "7c36c0e63ab8c81cbb3ea58681331366"), + Common::RU_RUS, + Common::kPlatformPC, + ADGF_NO_FLAGS, + Common::GUIO_NOSPEECH | Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + KYRA2_FLOPPY_FAN_FLAGS(Common::RU_RUS, Common::EN_ANY) + }, + { // CD version { "kyra2", @@ -1057,6 +1099,59 @@ const KYRAGameDescription adGameDescs[] = { LOL_CD_FLAGS }, + // Russian fan translation + { + { + "lol", + "CD", + { + { "GENERAL.PAK", 0, "19354b0f464295c38c801d30588df062", -1 }, + { "L01.PAK", 0, "174d37f21e0336c5d91020f8c58717ef", -1 }, + { 0, 0, 0, 0 } + }, + Common::EN_ANY, + Common::kPlatformPC, + ADGF_DROPLANGUAGE | ADGF_CD, + Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + LOL_CD_FAN_FLAGS(Common::RU_RUS, Common::DE_DEU) + }, + + { + { + "lol", + "CD", + { + + { "GENERAL.PAK", 0, "19354b0f464295c38c801d30588df062", -1 }, + { "L01.PAK", 0, "174d37f21e0336c5d91020f8c58717ef", -1 }, + { 0, 0, 0, 0 } + }, + Common::FR_FRA, + Common::kPlatformPC, + ADGF_DROPLANGUAGE | ADGF_CD, + Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + LOL_CD_FAN_FLAGS(Common::RU_RUS, Common::DE_DEU) + }, + + { + { + "lol", + "CD", + { + { "GENERAL.PAK", 0, "19354b0f464295c38c801d30588df062", -1 }, + { "L01.PAK", 0, "174d37f21e0336c5d91020f8c58717ef", -1 }, + { 0, 0, 0, 0 } + }, + Common::RU_RUS, + Common::kPlatformPC, + ADGF_DROPLANGUAGE | ADGF_CD, + Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + LOL_CD_FAN_FLAGS(Common::RU_RUS, Common::DE_DEU) + }, + // Italian fan translation { { @@ -1276,6 +1371,24 @@ const KYRAGameDescription adGameDescs[] = { LOL_FLOPPY_FLAGS }, + // Russian fan translation + { + { + "lol", + "Extracted", + { + { "GENERAL.PAK", 0, "d8f4c1153aed2418f41f886c3fb27543", -1 }, + { "CHAPTER7.PAK", 0, "f0b8a2fdff951738834fadc12248ac1f", -1 }, + { 0, 0, 0, 0 } + }, + Common::RU_RUS, + Common::kPlatformPC, + ADGF_NO_FLAGS, + Common::GUIO_NOSPEECH | Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + LOL_FLOPPY_FAN_FLAGS(Common::RU_RUS, Common::EN_ANY) + }, + { { "lol", @@ -1326,7 +1439,7 @@ const KYRAGameDescription adGameDescs[] = { LOL_KYRA2_DEMO_FLAGS }, #endif // ENABLE_LOL - { AD_TABLE_END_MARKER, FLAGS(0, 0, 0, 0, 0, 0, 0, 0) } + { AD_TABLE_END_MARKER, FLAGS(0, 0, 0, 0, 0, 0, 0, 0, 0) } }; const PlainGameDescriptor gameList[] = { diff --git a/engines/kyra/gui.cpp b/engines/kyra/gui.cpp index 29cbe20b23..7fd9880dce 100644 --- a/engines/kyra/gui.cpp +++ b/engines/kyra/gui.cpp @@ -415,7 +415,7 @@ void GUI::checkTextfieldInput() { bool running = true; int keys = 0; - while (_vm->_eventMan->pollEvent(event) && running) { + while (running && _vm->_eventMan->pollEvent(event)) { switch (event.type) { case Common::EVENT_KEYDOWN: if (event.kbd.keycode == Common::KEYCODE_q && event.kbd.hasFlags(Common::KBD_CTRL)) @@ -671,4 +671,3 @@ void MainMenu::printString(const char *format, int x, int y, int col1, int col2, } } // End of namespace Kyra - diff --git a/engines/kyra/gui.h b/engines/kyra/gui.h index 6afdc431ed..1efbdde394 100644 --- a/engines/kyra/gui.h +++ b/engines/kyra/gui.h @@ -263,4 +263,3 @@ private: } // end of namesapce Kyra #endif - diff --git a/engines/kyra/gui_hof.cpp b/engines/kyra/gui_hof.cpp index 1666cdd0e4..a1e0ce66bf 100644 --- a/engines/kyra/gui_hof.cpp +++ b/engines/kyra/gui_hof.cpp @@ -1195,4 +1195,3 @@ int GUI_HoF::loadMenu(Button *caller) { } } // End of namespace Kyra - diff --git a/engines/kyra/gui_hof.h b/engines/kyra/gui_hof.h index a02d14e9f1..c228c35551 100644 --- a/engines/kyra/gui_hof.h +++ b/engines/kyra/gui_hof.h @@ -82,4 +82,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/gui_lok.cpp b/engines/kyra/gui_lok.cpp index eba2f8f279..4a2d51faa3 100644 --- a/engines/kyra/gui_lok.cpp +++ b/engines/kyra/gui_lok.cpp @@ -1137,4 +1137,3 @@ void KyraEngine_LoK::drawAmulet() { } } // End of namespace Kyra - diff --git a/engines/kyra/gui_lok.h b/engines/kyra/gui_lok.h index 4d7bfa1ada..5a8d6ab532 100644 --- a/engines/kyra/gui_lok.h +++ b/engines/kyra/gui_lok.h @@ -182,4 +182,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/gui_lol.cpp b/engines/kyra/gui_lol.cpp index c64d3e7723..3ab52b9940 100644 --- a/engines/kyra/gui_lol.cpp +++ b/engines/kyra/gui_lol.cpp @@ -395,8 +395,8 @@ void LoLEngine::gui_drawCharPortraitWithStats(int charNum) { } else { gui_drawLiveMagicBar(33, 32, _characters[charNum].magicPointsCur, 0, _characters[charNum].magicPointsMax, 5, 32, 162, 1, 0); gui_drawLiveMagicBar(39, 32, _characters[charNum].hitPointsCur, 0, _characters[charNum].hitPointsMax, 5, 32, 154, 1, 1); - _screen->printText(getLangString(0x4253), 33, 1, 160, 0); - _screen->printText(getLangString(0x4254), 39, 1, 152, 0); + _screen->printText((_flags.platform == Common::kPlatformPC && !_flags.isTalkie) ? "M" : getLangString(0x4253), 33, 1, 160, 0); + _screen->printText((_flags.platform == Common::kPlatformPC && !_flags.isTalkie) ? "H" : getLangString(0x4254), 39, 1, 152, 0); } int spellLevels = 0; @@ -3007,4 +3007,3 @@ const char *GUI_LoL::getMenuItemLabel(const MenuItem &menuItem) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/gui_lol.h b/engines/kyra/gui_lol.h index bc49b21299..0686926534 100644 --- a/engines/kyra/gui_lol.h +++ b/engines/kyra/gui_lol.h @@ -182,4 +182,3 @@ private: #endif #endif // ENABLE_LOL - diff --git a/engines/kyra/gui_mr.cpp b/engines/kyra/gui_mr.cpp index 32eb02e06d..82082961e9 100644 --- a/engines/kyra/gui_mr.cpp +++ b/engines/kyra/gui_mr.cpp @@ -1607,4 +1607,3 @@ void GUI_MR::drawSliderBar(int slider, const uint8 *shape) { } } // End of namespace Kyra - diff --git a/engines/kyra/gui_mr.h b/engines/kyra/gui_mr.h index 9c8d79b321..6303dff83f 100644 --- a/engines/kyra/gui_mr.h +++ b/engines/kyra/gui_mr.h @@ -85,4 +85,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/gui_v2.cpp b/engines/kyra/gui_v2.cpp index dcc53b7c9e..c0477f29f1 100644 --- a/engines/kyra/gui_v2.cpp +++ b/engines/kyra/gui_v2.cpp @@ -887,4 +887,3 @@ int GUI_v2::choiceNo(Button *caller) { } } // End of namespace Kyra - diff --git a/engines/kyra/gui_v2.h b/engines/kyra/gui_v2.h index 0009bf8e54..ef95c0301a 100644 --- a/engines/kyra/gui_v2.h +++ b/engines/kyra/gui_v2.h @@ -231,4 +231,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/item.h b/engines/kyra/item.h index 86b6fc7d46..4b236372a2 100644 --- a/engines/kyra/item.h +++ b/engines/kyra/item.h @@ -39,4 +39,3 @@ enum { } // End of namespace Kyra #endif - diff --git a/engines/kyra/items_hof.cpp b/engines/kyra/items_hof.cpp index 73aed2e067..711e1b8f7c 100644 --- a/engines/kyra/items_hof.cpp +++ b/engines/kyra/items_hof.cpp @@ -427,4 +427,3 @@ void KyraEngine_HoF::setMouseCursor(Item item) { } } // End of namespace Kyra - diff --git a/engines/kyra/items_lok.cpp b/engines/kyra/items_lok.cpp index d66eb553f2..d598a17cf1 100644 --- a/engines/kyra/items_lok.cpp +++ b/engines/kyra/items_lok.cpp @@ -575,7 +575,14 @@ void KyraEngine_LoK::dropItem(int unk1, int item, int x, int y, int unk2) { if (processItemDrop(_currentCharacter->sceneId, item, x, y, unk1, unk2)) return; snd_playSoundEffect(54); + + // Old floppy versions don't print warning messages and don't have the necessary string resources. + // These versions will only play the warning sound effect. + if (_flags.isOldFloppy && !_noDropList) + return; + assert(_noDropList); + if (12 == countItemsInScene(_currentCharacter->sceneId)) drawSentenceCommand(_noDropList[0], 6); else @@ -969,4 +976,3 @@ int KyraEngine_LoK::getItemListIndex(Item item) { } } // End of namespace Kyra - diff --git a/engines/kyra/items_lol.cpp b/engines/kyra/items_lol.cpp index 2cf2cb2c70..7e9ae439fc 100644 --- a/engines/kyra/items_lol.cpp +++ b/engines/kyra/items_lol.cpp @@ -551,4 +551,3 @@ int LoLEngine::checkSceneForItems(uint16 *blockDrawObjects, int color) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/items_mr.cpp b/engines/kyra/items_mr.cpp index 88c02f56c8..c731627026 100644 --- a/engines/kyra/items_mr.cpp +++ b/engines/kyra/items_mr.cpp @@ -544,4 +544,3 @@ int KyraEngine_MR::getItemCommandStringInv(uint16 item) { } } // End of namespace Kyra - diff --git a/engines/kyra/items_v2.cpp b/engines/kyra/items_v2.cpp index 29dddc6772..c191c2e62b 100644 --- a/engines/kyra/items_v2.cpp +++ b/engines/kyra/items_v2.cpp @@ -105,4 +105,3 @@ void KyraEngine_v2::removeHandItem() { } } // end of namesapce Kyra - diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp index 5c58e6e3ed..b82099f058 100644 --- a/engines/kyra/kyra_hof.cpp +++ b/engines/kyra/kyra_hof.cpp @@ -1052,8 +1052,7 @@ void KyraEngine_HoF::runStartScript(int script, int unk1) { void KyraEngine_HoF::loadNPCScript() { _emc->unload(&_npcScriptData); - char filename[12]; - strcpy(filename, "_NPC.EMC"); + char filename[] = "_NPC.EMC"; if (_flags.platform != Common::kPlatformPC || _flags.isTalkie) { switch (_lang) { @@ -1084,7 +1083,7 @@ void KyraEngine_HoF::loadNPCScript() { #pragma mark - void KyraEngine_HoF::resetScaleTable() { - Common::set_to(_scaleTable, _scaleTable + ARRAYSIZE(_scaleTable), 0x100); + Common::set_to(_scaleTable, ARRAYEND(_scaleTable), 0x100); } void KyraEngine_HoF::setScaleTableItem(int item, int data) { @@ -1674,7 +1673,7 @@ void KyraEngine_HoF::setCauldronState(uint8 state, bool paletteFade) { } void KyraEngine_HoF::clearCauldronTable() { - Common::set_to(_cauldronTable, _cauldronTable+ARRAYSIZE(_cauldronTable), -1); + Common::set_to(_cauldronTable, ARRAYEND(_cauldronTable), -1); } void KyraEngine_HoF::addFrontCauldronTable(int item) { @@ -1998,4 +1997,3 @@ void KyraEngine_HoF::readSettings() { } } // End of namespace Kyra - diff --git a/engines/kyra/kyra_hof.h b/engines/kyra/kyra_hof.h index da7486bc29..2561171598 100644 --- a/engines/kyra/kyra_hof.h +++ b/engines/kyra/kyra_hof.h @@ -925,4 +925,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp index 7f356f34c1..27d0849e5f 100644 --- a/engines/kyra/kyra_lok.cpp +++ b/engines/kyra/kyra_lok.cpp @@ -98,6 +98,8 @@ KyraEngine_LoK::KyraEngine_LoK(OSystem *system, const GameFlags &flags) _malcolmFrame = 0; _malcolmTimer1 = _malcolmTimer2 = 0; + + _soundFiles = 0; } KyraEngine_LoK::~KyraEngine_LoK() { @@ -121,6 +123,8 @@ KyraEngine_LoK::~KyraEngine_LoK() { delete _animator; delete _seq; + delete[] _soundFiles; + delete[] _characterList; delete[] _roomTable; diff --git a/engines/kyra/kyra_lok.h b/engines/kyra/kyra_lok.h index 066c27c69a..57e6bd39ab 100644 --- a/engines/kyra/kyra_lok.h +++ b/engines/kyra/kyra_lok.h @@ -826,4 +826,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp index f5bcd04ea0..5798e99a1f 100644 --- a/engines/kyra/kyra_mr.cpp +++ b/engines/kyra/kyra_mr.cpp @@ -1426,4 +1426,3 @@ void KyraEngine_MR::readSettings() { } } // End of namespace Kyra - diff --git a/engines/kyra/kyra_mr.h b/engines/kyra/kyra_mr.h index b762648d29..ec76340638 100644 --- a/engines/kyra/kyra_mr.h +++ b/engines/kyra/kyra_mr.h @@ -668,4 +668,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp index 3b2c9b67eb..c950612a42 100644 --- a/engines/kyra/kyra_v1.cpp +++ b/engines/kyra/kyra_v1.cpp @@ -650,4 +650,3 @@ void KyraEngine_v1::syncSoundSettings() { } } // End of namespace Kyra - diff --git a/engines/kyra/kyra_v1.h b/engines/kyra/kyra_v1.h index 83455f3922..584176e08c 100644 --- a/engines/kyra/kyra_v1.h +++ b/engines/kyra/kyra_v1.h @@ -109,6 +109,7 @@ struct GameFlags { bool isDemo : 1; bool useAltShapeHeader : 1; // alternative shape header (uses 2 bytes more, those are unused though) bool isTalkie : 1; + bool isOldFloppy : 1; bool useHiResOverlay : 1; bool use16ColorMode : 1; bool useDigSound : 1; @@ -422,4 +423,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index d0f8d78bd1..e8cb9b4370 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -243,4 +243,3 @@ int KyraEngine_v2::updateCharPos(int *table, int force) { } } // End of namespace Kyra - diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index f21458ab5d..56391d151a 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -398,4 +398,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp index 2cca4fd4e3..5aba264ceb 100644 --- a/engines/kyra/lol.cpp +++ b/engines/kyra/lol.cpp @@ -1038,11 +1038,14 @@ char *LoLEngine::getLangString(uint16 id) { char *string = (char *)getTableEntry(buffer, realId); char *srcBuffer = _stringBuffer[_lastUsedStringBuffer]; - if (_flags.lang != Common::JA_JPN) { - Util::decodeString1(string, srcBuffer); + if (_flags.lang == Common::JA_JPN) { + decodeSjis(string, srcBuffer); + } else if (_flags.lang == Common::RU_RUS && !_flags.isTalkie) { + decodeCyrillic(string, srcBuffer); Util::decodeString2(srcBuffer, srcBuffer); } else { - decodeSjis(string, srcBuffer); + Util::decodeString1(string, srcBuffer); + Util::decodeString2(srcBuffer, srcBuffer); } ++_lastUsedStringBuffer; @@ -1081,6 +1084,54 @@ void LoLEngine::decodeSjis(const char *src, char *dst) { *dst = 0; } +int LoLEngine::decodeCyrillic(const char *src, char *dst) { + static const uint8 decodeTable1[] = { + 0x20, 0xAE, 0xA5, 0xA0, 0xE2, 0xAD, 0xA8, 0xE0, 0xE1, 0xAB, 0xA2, + 0xA4, 0xAC, 0xAA, 0xE3, 0x2E + }; + + static const uint8 decodeTable2[] = { + 0xAD, 0xAF, 0xA2, 0xE1, 0xAC, 0xAA, 0x20, 0xA4, 0xAB, 0x20, + 0xE0, 0xE2, 0xA4, 0xA2, 0xA6, 0xAA, 0x20, 0xAD, 0xE2, 0xE0, + 0xAB, 0xAC, 0xE1, 0xA1, 0x20, 0xAC, 0xE1, 0xAA, 0xAB, 0xE0, + 0xE2, 0xAD, 0xAE, 0xEC, 0xA8, 0xA5, 0xA0, 0x20, 0xE0, 0xEB, + 0xAE, 0xA0, 0xA8, 0xA5, 0xEB, 0xEF, 0x20, 0xE3, 0xE2, 0x20, + 0xAD, 0xE7, 0xAB, 0xAC, 0xA5, 0xE0, 0xAE, 0xA0, 0xA5, 0xA8, + 0xE3, 0xEB, 0xEF, 0xAA, 0xE2, 0xEF, 0xA5, 0xEC, 0xAB, 0xAE, + 0xAA, 0xAF, 0xA8, 0xA0, 0xA5, 0xEF, 0xAE, 0xEE, 0xEC, 0xE3, + 0xA0, 0xAE, 0xA5, 0xA8, 0xEB, 0x20, 0xE0, 0xE3, 0xA0, 0xA5, + 0xAE, 0xA8, 0xE3, 0xE1, 0xAD, 0xAB, 0x20, 0xAE, 0xA5, 0xA0, + 0xA8, 0xAD, 0x2E, 0xE3, 0xAE, 0xA0, 0xA8, 0x20, 0xE0, 0xE3, + 0xAB, 0xE1, 0x20, 0xA4, 0xAD, 0xE2, 0xA1, 0xA6, 0xAC, 0xE1, + 0x0D, 0x20, 0x2E, 0x09, 0xA0, 0xA1, 0x9D, 0xA5 + }; + + int size = 0; + uint cChar = 0; + while ((cChar = *src++) != 0) { + if (cChar & 0x80) { + cChar &= 0x7F; + int index = (cChar & 0x78) >> 3; + *dst++ = decodeTable1[index]; + ++size; + assert(cChar < sizeof(decodeTable2)); + cChar = decodeTable2[cChar]; + } else if (cChar >= 0x70) { + cChar = *src++; + } else if (cChar >= 0x30) { + if (cChar < 0x60) + cChar -= 0x30; + cChar |= 0x80; + } + + *dst++ = cChar; + ++size; + } + + *dst++ = 0; + return size; +} + bool LoLEngine::addCharacter(int id) { const uint16 *cdf[] = { _charDefsMan, _charDefsMan, _charDefsMan, _charDefsWoman, _charDefsMan, _charDefsMan, _charDefsWoman, _charDefsKieran, _charDefsAkshel }; @@ -4547,4 +4598,3 @@ void LoLEngine::generateTempData() { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/lol.h b/engines/kyra/lol.h index 06a4f29f63..164f030a1d 100644 --- a/engines/kyra/lol.h +++ b/engines/kyra/lol.h @@ -363,12 +363,13 @@ private: void showIntro(); struct CharacterPrev { - const char *name; int x, y; int attrib[3]; }; static const CharacterPrev _charPreviews[]; + static const char *const _charPreviewNamesDefault[]; + static const char *const _charPreviewNamesRussianFloppy[]; // PC98 specific data static const uint16 _charPosXPC98[]; @@ -875,6 +876,7 @@ private: char *getLangString(uint16 id); uint8 *getTableEntry(uint8 *buffer, uint16 id); void decodeSjis(const char *src, char *dst); + int decodeCyrillic(const char *src, char *dst); static const char * const _languageExt[]; @@ -1525,4 +1527,3 @@ private: #endif #endif // ENABLE_LOL - diff --git a/engines/kyra/resource.cpp b/engines/kyra/resource.cpp index bc9c93f8ca..a35ec3d81b 100644 --- a/engines/kyra/resource.cpp +++ b/engines/kyra/resource.cpp @@ -366,6 +366,3 @@ void Resource::initializeLoaders() { } } // End of namespace Kyra - - - diff --git a/engines/kyra/resource.h b/engines/kyra/resource.h index 1c69362bfd..c2a697f18d 100644 --- a/engines/kyra/resource.h +++ b/engines/kyra/resource.h @@ -202,6 +202,7 @@ enum KyraResources { k1ConfigStrings, k1AudioTracks, + k1AudioTracks2, k1AudioTracksIntro, k1CreditsStrings, @@ -479,7 +480,3 @@ private: } // End of namespace Kyra #endif - - - - diff --git a/engines/kyra/saveload.cpp b/engines/kyra/saveload.cpp index 80182d949b..42c5d3e8a8 100644 --- a/engines/kyra/saveload.cpp +++ b/engines/kyra/saveload.cpp @@ -113,12 +113,7 @@ KyraEngine_v1::kReadSaveHeaderError KyraEngine_v1::readSaveHeader(Common::Seekab if (header.version >= 14) { if (loadThumbnail) { - header.thumbnail = new Graphics::Surface(); - assert(header.thumbnail); - if (!Graphics::loadThumbnail(*in, *header.thumbnail)) { - delete header.thumbnail; - header.thumbnail = 0; - } + header.thumbnail = Graphics::loadThumbnail(*in); } else { Graphics::skipThumbnail(*in); } @@ -268,4 +263,3 @@ void KyraEngine_v1::loadGameStateCheck(int slot) { } } // End of namespace Kyra - diff --git a/engines/kyra/saveload_hof.cpp b/engines/kyra/saveload_hof.cpp index 645bd2903f..1d28b6bc13 100644 --- a/engines/kyra/saveload_hof.cpp +++ b/engines/kyra/saveload_hof.cpp @@ -329,4 +329,3 @@ Common::Error KyraEngine_HoF::loadGameState(int slot) { } } // End of namespace Kyra - diff --git a/engines/kyra/saveload_lok.cpp b/engines/kyra/saveload_lok.cpp index 34762d4c92..22d412e7f6 100644 --- a/engines/kyra/saveload_lok.cpp +++ b/engines/kyra/saveload_lok.cpp @@ -317,4 +317,3 @@ Common::Error KyraEngine_LoK::saveGameStateIntern(int slot, const char *saveName return Common::kNoError; } } // End of namespace Kyra - diff --git a/engines/kyra/saveload_lol.cpp b/engines/kyra/saveload_lol.cpp index 07842ea358..1bf26477e6 100644 --- a/engines/kyra/saveload_lol.cpp +++ b/engines/kyra/saveload_lol.cpp @@ -472,4 +472,3 @@ Graphics::Surface *LoLEngine::generateSaveThumbnail() const { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/saveload_mr.cpp b/engines/kyra/saveload_mr.cpp index 139375264f..c49a528d02 100644 --- a/engines/kyra/saveload_mr.cpp +++ b/engines/kyra/saveload_mr.cpp @@ -327,4 +327,3 @@ Common::Error KyraEngine_MR::loadGameState(int slot) { } } // End of namespace Kyra - diff --git a/engines/kyra/scene_hof.cpp b/engines/kyra/scene_hof.cpp index 197ef38bf1..f6cd77ca89 100644 --- a/engines/kyra/scene_hof.cpp +++ b/engines/kyra/scene_hof.cpp @@ -95,7 +95,7 @@ void KyraEngine_HoF::enterNewScene(uint16 newScene, int facing, int unk1, int un _emc->run(&_sceneScriptState); } - Common::for_each(_wsaSlots, _wsaSlots+ARRAYSIZE(_wsaSlots), Common::mem_fun(&WSAMovie_v2::close)); + Common::for_each(_wsaSlots, ARRAYEND(_wsaSlots), Common::mem_fun(&WSAMovie_v2::close)); _specialExitCount = 0; memset(_specialExitTable, -1, sizeof(_specialExitTable)); @@ -735,4 +735,3 @@ bool KyraEngine_HoF::lineIsPassable(int x, int y) { } } // End of namespace Kyra - diff --git a/engines/kyra/scene_lok.cpp b/engines/kyra/scene_lok.cpp index 6cb3e2a98a..a926f8493f 100644 --- a/engines/kyra/scene_lok.cpp +++ b/engines/kyra/scene_lok.cpp @@ -1299,4 +1299,3 @@ void KyraEngine_LoK::setupSceneResource(int sceneId) { } } // End of namespace Kyra - diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp index 165919dff2..a5a2562448 100644 --- a/engines/kyra/scene_lol.cpp +++ b/engines/kyra/scene_lol.cpp @@ -2192,4 +2192,3 @@ void LoLEngine::drawSpecialGuiShape(int pageNum) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/scene_mr.cpp b/engines/kyra/scene_mr.cpp index 6b234d9a73..74d2e89e6e 100644 --- a/engines/kyra/scene_mr.cpp +++ b/engines/kyra/scene_mr.cpp @@ -83,7 +83,7 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 } _specialExitCount = 0; - Common::set_to(_specialExitTable, _specialExitTable+ARRAYSIZE(_specialExitTable), 0xFFFF); + Common::set_to(_specialExitTable, ARRAYEND(_specialExitTable), 0xFFFF); _mainCharacter.sceneId = sceneId; _sceneList[sceneId].flags &= ~1; @@ -388,7 +388,7 @@ void KyraEngine_MR::initSceneScript(int unk1) { strcat(filename, ".CPS"); _screen->loadBitmap(filename, 3, 3, 0); - Common::set_to(_specialSceneScriptState, _specialSceneScriptState+ARRAYSIZE(_specialSceneScriptState), false); + Common::set_to(_specialSceneScriptState, ARRAYEND(_specialSceneScriptState), false); _sceneEnterX1 = 160; _sceneEnterY1 = 0; _sceneEnterX2 = 296; diff --git a/engines/kyra/scene_v2.cpp b/engines/kyra/scene_v2.cpp index fbddb6604e..061ce4c21a 100644 --- a/engines/kyra/scene_v2.cpp +++ b/engines/kyra/scene_v2.cpp @@ -225,4 +225,3 @@ void KyraEngine_v2::pathfinderFinializePath(int *moveTable, int tableLen, int x, } } // End of namespace Kyra - diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp index 8f008a58b6..4eae89e0d4 100644 --- a/engines/kyra/screen.cpp +++ b/engines/kyra/screen.cpp @@ -3459,4 +3459,3 @@ uint8 *Palette::fetchRealPalette() const { } } // End of namespace Kyra - diff --git a/engines/kyra/screen.h b/engines/kyra/screen.h index e23f104760..51a9a7f744 100644 --- a/engines/kyra/screen.h +++ b/engines/kyra/screen.h @@ -616,4 +616,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/screen_hof.cpp b/engines/kyra/screen_hof.cpp index 1282447411..24e0751c0e 100644 --- a/engines/kyra/screen_hof.cpp +++ b/engines/kyra/screen_hof.cpp @@ -146,4 +146,3 @@ void Screen_HoF::copyRegionEx(int srcPage, int srcW, int srcH, int dstPage, int } } // End of namespace Kyra - diff --git a/engines/kyra/screen_hof.h b/engines/kyra/screen_hof.h index 08a9133809..edcb339da9 100644 --- a/engines/kyra/screen_hof.h +++ b/engines/kyra/screen_hof.h @@ -53,4 +53,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/screen_lol.cpp b/engines/kyra/screen_lol.cpp index c6874ca0ed..6d0460e0a1 100644 --- a/engines/kyra/screen_lol.cpp +++ b/engines/kyra/screen_lol.cpp @@ -959,4 +959,3 @@ void Screen_LoL::postProcessCursor(uint8 *data, int w, int h, int pitch) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/screen_lol.h b/engines/kyra/screen_lol.h index 926183225f..02b78606b9 100644 --- a/engines/kyra/screen_lol.h +++ b/engines/kyra/screen_lol.h @@ -119,4 +119,3 @@ private: #endif #endif // ENABLE_LOL - diff --git a/engines/kyra/screen_v2.cpp b/engines/kyra/screen_v2.cpp index 64fbe2b834..57581fa750 100644 --- a/engines/kyra/screen_v2.cpp +++ b/engines/kyra/screen_v2.cpp @@ -388,4 +388,3 @@ void Screen_v2::checkedPageUpdate(int srcPage, int dstPage) { } } // End of namespace Kyra - diff --git a/engines/kyra/screen_v2.h b/engines/kyra/screen_v2.h index eb8415be78..d85c762038 100644 --- a/engines/kyra/screen_v2.h +++ b/engines/kyra/screen_v2.h @@ -73,4 +73,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/script.cpp b/engines/kyra/script.cpp index b185b8ed6f..303cbb45aa 100644 --- a/engines/kyra/script.cpp +++ b/engines/kyra/script.cpp @@ -443,4 +443,3 @@ void EMCInterpreter::op_setRetAndJmp(EMCState *script) { } } } // End of namespace Kyra - diff --git a/engines/kyra/script.h b/engines/kyra/script.h index 4250732c7c..5bd75f7b80 100644 --- a/engines/kyra/script.h +++ b/engines/kyra/script.h @@ -140,4 +140,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/script_hof.cpp b/engines/kyra/script_hof.cpp index 27cfc808cc..296cd4002b 100644 --- a/engines/kyra/script_hof.cpp +++ b/engines/kyra/script_hof.cpp @@ -1730,4 +1730,3 @@ void KyraEngine_HoF::setupOpcodeTable() { } } // End of namespace Kyra - diff --git a/engines/kyra/script_lok.cpp b/engines/kyra/script_lok.cpp index 2b90d001ca..4d40971124 100644 --- a/engines/kyra/script_lok.cpp +++ b/engines/kyra/script_lok.cpp @@ -558,7 +558,10 @@ int KyraEngine_LoK::o1_setCustomPaletteRange(EMCState *script) { _screen->copyPalette(0, 12); } } else { - _screen->getPalette(1).copy(_specialPalettes[stackPos(0)], 0, stackPos(2), stackPos(1)); + if (!_specialPalettes[stackPos(0)]) + warning("KyraEngine_LoK::o1_setCustomPaletteRange(): Trying to use missing special palette %d", stackPos(0)); + else + _screen->getPalette(1).copy(_specialPalettes[stackPos(0)], 0, stackPos(2), stackPos(1)); } return 0; } @@ -1956,4 +1959,3 @@ void KyraEngine_LoK::setupOpcodeTable() { #undef Opcode } // End of namespace Kyra - diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp index 1afefcffa4..b4b8f00022 100644 --- a/engines/kyra/script_lol.cpp +++ b/engines/kyra/script_lol.cpp @@ -3071,4 +3071,3 @@ void LoLEngine::setupOpcodeTable() { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/script_tim.cpp b/engines/kyra/script_tim.cpp index 6f0f0ab083..83d03d1f63 100644 --- a/engines/kyra/script_tim.cpp +++ b/engines/kyra/script_tim.cpp @@ -1246,4 +1246,3 @@ int TIMInterpreter_LoL::cmd_dialogueBox(const uint16 *param) { #endif // ENABLE_LOL } // End of namespace Kyra - diff --git a/engines/kyra/script_tim.h b/engines/kyra/script_tim.h index 89040720c2..11b716c3a9 100644 --- a/engines/kyra/script_tim.h +++ b/engines/kyra/script_tim.h @@ -317,4 +317,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/script_v1.cpp b/engines/kyra/script_v1.cpp index b12a08a417..4cfbdf8ab8 100644 --- a/engines/kyra/script_v1.cpp +++ b/engines/kyra/script_v1.cpp @@ -123,4 +123,3 @@ int KyraEngine_v1::o1_playSoundEffect(EMCState *script) { } } // End of namespace Kyra - diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp index 2e3a3d2bc4..e42cdf9ff4 100644 --- a/engines/kyra/script_v2.cpp +++ b/engines/kyra/script_v2.cpp @@ -340,4 +340,3 @@ int KyraEngine_v2::o2a_setResetFrame(EMCState *script) { } } // End of namespace Kyra - diff --git a/engines/kyra/seqplayer.cpp b/engines/kyra/seqplayer.cpp index ce2eafcea5..531d864293 100644 --- a/engines/kyra/seqplayer.cpp +++ b/engines/kyra/seqplayer.cpp @@ -657,4 +657,3 @@ bool SeqPlayer::playSequence(const uint8 *seqData, bool skipSeq) { } // End of namespace Kyra - diff --git a/engines/kyra/seqplayer.h b/engines/kyra/seqplayer.h index 1f030cde19..12d94e3f6d 100644 --- a/engines/kyra/seqplayer.h +++ b/engines/kyra/seqplayer.h @@ -122,4 +122,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/sequences_hof.cpp b/engines/kyra/sequences_hof.cpp index e504278047..50b5db78fc 100644 --- a/engines/kyra/sequences_hof.cpp +++ b/engines/kyra/sequences_hof.cpp @@ -2920,5 +2920,3 @@ void KyraEngine_HoF::seq_makeBookAppear() { } } // End of namespace Kyra - - diff --git a/engines/kyra/sequences_lok.cpp b/engines/kyra/sequences_lok.cpp index 5f9bd86724..2de0565a74 100644 --- a/engines/kyra/sequences_lok.cpp +++ b/engines/kyra/sequences_lok.cpp @@ -250,7 +250,7 @@ bool KyraEngine_LoK::seq_introStory() { if (!textEnabled() && speechEnabled() && _flags.lang != Common::IT_ITA) return false; - if ((_flags.lang == Common::EN_ANY && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) || _flags.platform == Common::kPlatformAmiga) + if (((_flags.lang == Common::EN_ANY || _flags.lang == Common::RU_RUS) && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) || _flags.platform == Common::kPlatformAmiga) _screen->loadBitmap("TEXT.CPS", 3, 3, &_screen->getPalette(0)); else if (_flags.lang == Common::EN_ANY || _flags.lang == Common::JA_JPN) _screen->loadBitmap("TEXT_ENG.CPS", 3, 3, &_screen->getPalette(0)); @@ -2112,4 +2112,3 @@ void KyraEngine_LoK::drawJewelsFadeOutEnd(int jewel) { } } // End of namespace Kyra - diff --git a/engines/kyra/sequences_lol.cpp b/engines/kyra/sequences_lol.cpp index 27f3951faf..83d525d400 100644 --- a/engines/kyra/sequences_lol.cpp +++ b/engines/kyra/sequences_lol.cpp @@ -316,8 +316,9 @@ int LoLEngine::chooseCharacter() { _screen->printText(_tim->getCTableEntry(53), 72, 184, 0x81, 0x00); _screen->printText(_tim->getCTableEntry(55), 72, 192, 0x81, 0x00); } else { + const char *const *previewNames = (_flags.lang == Common::RU_RUS && !_flags.isTalkie) ? _charPreviewNamesRussianFloppy : _charPreviewNamesDefault; for (int i = 0; i < 4; ++i) { - _screen->fprintStringIntro("%s", _charPreviews[i].x + 16, _charPreviews[i].y + 36, 0xC0, 0x00, 0x9C, 0x120, _charPreviews[i].name); + _screen->fprintStringIntro("%s", _charPreviews[i].x + 16, _charPreviews[i].y + 36, 0xC0, 0x00, 0x9C, 0x120, previewNames[i]); _screen->fprintStringIntro("%d", _charPreviews[i].x + 21, _charPreviews[i].y + 48, 0x98, 0x00, 0x9C, 0x220, _charPreviews[i].attrib[0]); _screen->fprintStringIntro("%d", _charPreviews[i].x + 21, _charPreviews[i].y + 56, 0x98, 0x00, 0x9C, 0x220, _charPreviews[i].attrib[1]); _screen->fprintStringIntro("%d", _charPreviews[i].x + 21, _charPreviews[i].y + 64, 0x98, 0x00, 0x9C, 0x220, _charPreviews[i].attrib[2]); @@ -1518,4 +1519,3 @@ void LoLEngine::loadOutroShapes(int file, uint8 **storage) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/sequences_mr.cpp b/engines/kyra/sequences_mr.cpp index b3adc687c2..d546d9c25b 100644 --- a/engines/kyra/sequences_mr.cpp +++ b/engines/kyra/sequences_mr.cpp @@ -235,4 +235,3 @@ void KyraEngine_MR::uninitAnimationShapes(int count, uint8 *filedata) { } } // End of namespace Kyra - diff --git a/engines/kyra/sequences_v2.cpp b/engines/kyra/sequences_v2.cpp index fb61d7cddf..e431e45f10 100644 --- a/engines/kyra/sequences_v2.cpp +++ b/engines/kyra/sequences_v2.cpp @@ -128,4 +128,3 @@ void KyraEngine_v2::processAnimationScript(int allowSkip, int resetChar) { } } // End of namespace Kyra - diff --git a/engines/kyra/sound.cpp b/engines/kyra/sound.cpp index 4da35cc28b..b4fcea784e 100644 --- a/engines/kyra/sound.cpp +++ b/engines/kyra/sound.cpp @@ -276,5 +276,3 @@ const Sound::SpeechCodecs Sound::_supportedCodecs[] = { }; } // End of namespace Kyra - - diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index 75041b8161..12c980486c 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -2445,4 +2445,3 @@ void SoundAdLibPC::unk2() { } } // End of namespace Kyra - diff --git a/engines/kyra/sound_adlib.h b/engines/kyra/sound_adlib.h index 58b97e3474..962df40de8 100644 --- a/engines/kyra/sound_adlib.h +++ b/engines/kyra/sound_adlib.h @@ -108,4 +108,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/sound_amiga.cpp b/engines/kyra/sound_amiga.cpp index dc09670408..dfb0aa8bf3 100644 --- a/engines/kyra/sound_amiga.cpp +++ b/engines/kyra/sound_amiga.cpp @@ -214,4 +214,3 @@ void SoundAmiga::playSoundEffect(uint8 track) { } } // End of namespace Kyra - diff --git a/engines/kyra/sound_digital.cpp b/engines/kyra/sound_digital.cpp index 3f8eddbb0d..fe0f1fb9bc 100644 --- a/engines/kyra/sound_digital.cpp +++ b/engines/kyra/sound_digital.cpp @@ -544,4 +544,3 @@ const SoundDigital::AudioCodecs SoundDigital::_supportedCodecs[] = { } // End of namespace Kyra - diff --git a/engines/kyra/sound_lol.cpp b/engines/kyra/sound_lol.cpp index 7262635728..efa844968d 100644 --- a/engines/kyra/sound_lol.cpp +++ b/engines/kyra/sound_lol.cpp @@ -312,4 +312,3 @@ int LoLEngine::convertVolumeFromMixer(int value) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/sound_midi.cpp b/engines/kyra/sound_midi.cpp index 26b6b31d0a..1a5c2f94ac 100644 --- a/engines/kyra/sound_midi.cpp +++ b/engines/kyra/sound_midi.cpp @@ -787,4 +787,3 @@ Common::String SoundMidiPC::getFileName(const Common::String &str) { } } // End of namespace Kyra - diff --git a/engines/kyra/sound_pcspk.cpp b/engines/kyra/sound_pcspk.cpp index 051f36dd1b..8664e2a22e 100644 --- a/engines/kyra/sound_pcspk.cpp +++ b/engines/kyra/sound_pcspk.cpp @@ -364,4 +364,3 @@ const uint8 MidiDriver_PCSpeaker::_noteTable2[] = { }; } // End of namespace Kyra - diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp index 012f1f5d7d..c851842f22 100644 --- a/engines/kyra/sound_towns.cpp +++ b/engines/kyra/sound_towns.cpp @@ -673,4 +673,3 @@ void SoundTownsPC98_v2::updateVolumeSettings() { } // End of namespace Kyra #undef EUPHONY_FADEOUT_TICKS - diff --git a/engines/kyra/sprites.cpp b/engines/kyra/sprites.cpp index e0d1142905..f4cebf6470 100644 --- a/engines/kyra/sprites.cpp +++ b/engines/kyra/sprites.cpp @@ -573,4 +573,3 @@ int Sprites::getDrawLayer(int y) { return returnValue; } } // End of namespace Kyra - diff --git a/engines/kyra/sprites.h b/engines/kyra/sprites.h index 6a4241f13e..93cdcdbbcb 100644 --- a/engines/kyra/sprites.h +++ b/engines/kyra/sprites.h @@ -97,4 +97,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/sprites_lol.cpp b/engines/kyra/sprites_lol.cpp index a77fda043c..fbf4c7c5c2 100644 --- a/engines/kyra/sprites_lol.cpp +++ b/engines/kyra/sprites_lol.cpp @@ -1632,4 +1632,3 @@ void LoLEngine::killMonster(MonsterInPlay *monster) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index d56abc5d47..f6d59922b1 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -38,7 +38,7 @@ namespace Kyra { -#define RESFILE_VERSION 74 +#define RESFILE_VERSION 78 namespace { bool checkKyraDat(Common::SeekableReadStream *file) { @@ -80,7 +80,7 @@ const IndexTable iGameTable[] = { }; byte getGameID(const GameFlags &flags) { - return Common::find(iGameTable, iGameTable + ARRAYSIZE(iGameTable) - 1, flags.gameID)->value; + return Common::find(iGameTable, ARRAYEND(iGameTable) - 1, flags.gameID)->value; } const IndexTable iLanguageTable[] = { @@ -90,11 +90,12 @@ const IndexTable iLanguageTable[] = { { Common::ES_ESP, 4 }, { Common::IT_ITA, 5 }, { Common::JA_JPN, 6 }, + { Common::RU_RUS, 7 }, { -1, -1 } }; byte getLanguageID(const GameFlags &flags) { - return Common::find(iLanguageTable, iLanguageTable + ARRAYSIZE(iLanguageTable) - 1, flags.lang)->value; + return Common::find(iLanguageTable, ARRAYEND(iLanguageTable) - 1, flags.lang)->value; } const IndexTable iPlatformTable[] = { @@ -107,11 +108,13 @@ const IndexTable iPlatformTable[] = { }; byte getPlatformID(const GameFlags &flags) { - return Common::find(iPlatformTable, iPlatformTable + ARRAYSIZE(iPlatformTable) - 1, flags.platform)->value; + return Common::find(iPlatformTable, ARRAYEND(iPlatformTable) - 1, flags.platform)->value; } byte getSpecialID(const GameFlags &flags) { - if (flags.isDemo && flags.isTalkie) + if (flags.isOldFloppy) + return 4; + else if (flags.isDemo && flags.isTalkie) return 3; else if (flags.isDemo) return 2; @@ -748,7 +751,17 @@ void KyraEngine_LoK::initStaticResource() { _storyStrings = _staticres->loadStrings(k1PC98StoryStrings, _storyStringsSize); - _soundFiles = _staticres->loadStrings(k1AudioTracks, _soundFilesSize); + int size1, size2; + const char *const *soundfiles1 = _staticres->loadStrings(k1AudioTracks, size1); + const char *const *soundfiles2 = _staticres->loadStrings(k1AudioTracks2, size2); + _soundFilesSize = size1 + size2; + if (_soundFilesSize) { + delete[] _soundFiles; + const char **soundfiles = new const char*[_soundFilesSize]; + for (int i = 0; i < _soundFilesSize; i++) + soundfiles[i] = (i < size1) ? soundfiles1[i] : soundfiles2[i - size1]; + _soundFiles = soundfiles; + } _soundFilesIntro = _staticres->loadStrings(k1AudioTracksIntro, _soundFilesIntroSize); _cdaTrackTable = (const int32 *)_staticres->loadRawData(k1TownsCDATable, _cdaTrackTableSize); @@ -926,7 +939,7 @@ void KyraEngine_LoK::loadButtonShapes() { void KyraEngine_LoK::loadMainScreen(int page) { _screen->clearPage(page); - if ((_flags.lang == Common::EN_ANY && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) || _flags.platform == Common::kPlatformAmiga) + if (((_flags.lang == Common::EN_ANY || _flags.lang == Common::RU_RUS) && !_flags.isTalkie && _flags.platform == Common::kPlatformPC) || _flags.platform == Common::kPlatformAmiga) _screen->loadBitmap("MAIN15.CPS", page, page, &_screen->getPalette(0)); else if (_flags.lang == Common::EN_ANY || _flags.lang == Common::JA_JPN || (_flags.isTalkie && _flags.lang == Common::IT_ITA)) _screen->loadBitmap("MAIN_ENG.CPS", page, page, 0); @@ -2129,4 +2142,3 @@ const int8 KyraEngine_MR::_albumWSAY[] = { }; } // End of namespace Kyra - diff --git a/engines/kyra/staticres_lol.cpp b/engines/kyra/staticres_lol.cpp index cf75a317e1..ca35569afa 100644 --- a/engines/kyra/staticres_lol.cpp +++ b/engines/kyra/staticres_lol.cpp @@ -687,11 +687,25 @@ const char * const LoLEngine::_languageExt[] = { "GER" }; +const char *const LoLEngine::_charPreviewNamesDefault[] = { + "Ak\'shel", + "Michael", + "Kieran", + "Conrad" +}; + +const char *const LoLEngine::_charPreviewNamesRussianFloppy[] = { + "\x80\xAA\xE8\xA5\xAB\0", + "\x8C\xA0\xA9\xAA\xAB\0", + "\x8A\xA8\xE0\xA0\xAD\0", + "\x8A\xAE\xAD\xE0\xA0\xA4\0" +}; + const LoLEngine::CharacterPrev LoLEngine::_charPreviews[] = { - { "Ak\'shel", 0x060, 0x7F, { 0x0F, 0x08, 0x05 } }, - { "Michael", 0x09A, 0x7F, { 0x06, 0x0A, 0x0F } }, - { "Kieran", 0x0D4, 0x7F, { 0x08, 0x06, 0x08 } }, - { "Conrad", 0x10F, 0x7F, { 0x0A, 0x0C, 0x0A } } + { 0x060, 0x7F, { 0x0F, 0x08, 0x05 } }, + { 0x09A, 0x7F, { 0x06, 0x0A, 0x0F } }, + { 0x0D4, 0x7F, { 0x08, 0x06, 0x08 } }, + { 0x10F, 0x7F, { 0x0A, 0x0C, 0x0A } } }; const uint16 LoLEngine::_charPosXPC98[] = { @@ -877,4 +891,3 @@ const int LoLEngine::_outroMonsterScaleTableY[] = { } // End of namespace Kyra #endif - diff --git a/engines/kyra/text.h b/engines/kyra/text.h index a95c2c4abc..199029469e 100644 --- a/engines/kyra/text.h +++ b/engines/kyra/text.h @@ -79,4 +79,3 @@ protected: } // End of namespace Kyra #endif - diff --git a/engines/kyra/text_hof.h b/engines/kyra/text_hof.h index f371fb1898..414d02fe4b 100644 --- a/engines/kyra/text_hof.h +++ b/engines/kyra/text_hof.h @@ -50,4 +50,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/text_lol.cpp b/engines/kyra/text_lol.cpp index 346d5100b8..1c2167b892 100644 --- a/engines/kyra/text_lol.cpp +++ b/engines/kyra/text_lol.cpp @@ -830,4 +830,3 @@ void TextDisplayer_LoL::clearCurDim() { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/text_lol.h b/engines/kyra/text_lol.h index 020d4b5e89..3e59bc90fe 100644 --- a/engines/kyra/text_lol.h +++ b/engines/kyra/text_lol.h @@ -97,4 +97,3 @@ private: #endif #endif // ENABLE_LOL - diff --git a/engines/kyra/text_mr.cpp b/engines/kyra/text_mr.cpp index d690b70266..fd4a00b73c 100644 --- a/engines/kyra/text_mr.cpp +++ b/engines/kyra/text_mr.cpp @@ -898,4 +898,3 @@ void KyraEngine_MR::doDialog(int dlgIndex, int funcNum) { } } // End of namespace Kyra - diff --git a/engines/kyra/timer.h b/engines/kyra/timer.h index e9cb8b2b0c..205be5957d 100644 --- a/engines/kyra/timer.h +++ b/engines/kyra/timer.h @@ -104,4 +104,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/timer_lok.cpp b/engines/kyra/timer_lok.cpp index e1825d027d..555b3680e2 100644 --- a/engines/kyra/timer_lok.cpp +++ b/engines/kyra/timer_lok.cpp @@ -190,4 +190,3 @@ void KyraEngine_LoK::setWalkspeed(uint8 newSpeed) { } } // End of namespace Kyra - diff --git a/engines/kyra/timer_lol.cpp b/engines/kyra/timer_lol.cpp index 4f450f570f..3221556e6d 100644 --- a/engines/kyra/timer_lol.cpp +++ b/engines/kyra/timer_lol.cpp @@ -255,4 +255,3 @@ void LoLEngine::timerFadeMessageText(int timerNum) { } // End of namespace Kyra #endif // ENABLE_LOL - diff --git a/engines/kyra/util.cpp b/engines/kyra/util.cpp index 3776bdc705..f71978d03e 100644 --- a/engines/kyra/util.cpp +++ b/engines/kyra/util.cpp @@ -146,4 +146,3 @@ const uint8 Util::_charMapISOToDOS[128] = { }; } // End of namespace Kyra - diff --git a/engines/kyra/util.h b/engines/kyra/util.h index 042da74cd9..b91f84ad36 100644 --- a/engines/kyra/util.h +++ b/engines/kyra/util.h @@ -46,4 +46,3 @@ private: } // End of namespace Kyra #endif - diff --git a/engines/kyra/wsamovie.cpp b/engines/kyra/wsamovie.cpp index 37102744a8..21ff80f033 100644 --- a/engines/kyra/wsamovie.cpp +++ b/engines/kyra/wsamovie.cpp @@ -459,5 +459,3 @@ int WSAMovie_v2::open(const char *filename, int unk1, Palette *palBuf) { } } // End of namespace Kyra - - diff --git a/engines/kyra/wsamovie.h b/engines/kyra/wsamovie.h index 0d8bfdc869..7dadc9319b 100644 --- a/engines/kyra/wsamovie.h +++ b/engines/kyra/wsamovie.h @@ -132,5 +132,3 @@ protected: } // End of namespace Kyra #endif - - |