[Scummvm-git-logs] scummvm master -> 11368b7d9040c97e0b161cacfb6131a94a649615

athrxx athrxx at scummvm.org
Sun Oct 18 21:24:15 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
11368b7d90 KYRA: Support Russian LoK translation by Siberian GRemlin (#2544)


Commit: 11368b7d9040c97e0b161cacfb6131a94a649615
    https://github.com/scummvm/scummvm/commit/11368b7d9040c97e0b161cacfb6131a94a649615
Author: Dmitry Gladkov (dmitry.gladkov at gmail.com)
Date: 2020-10-18T23:24:11+02:00

Commit Message:
KYRA: Support Russian LoK translation by Siberian GRemlin (#2544)

* KYRA: Support Russian LoK translation by Siberian Gremlin

* Mention source of engine data translation

* Mark Russian CD as fan translation to force subtitles

Changed paths:
  A devtools/create_kyradat/resources/lok_dos_cd_russian.h
    devtools/create_kyradat/create_kyradat.cpp
    devtools/create_kyradat/games.cpp
    devtools/create_kyradat/resources.cpp
    dists/engine-data/kyra.dat
    engines/kyra/detection_tables.h
    engines/kyra/resource/staticres.cpp
    engines/kyra/script/script_lok.cpp
    engines/kyra/sequence/sequences_lok.cpp


diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index c5f7f597c3..d621911836 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -45,7 +45,7 @@
 
 
 enum {
-	kKyraDatVersion = 103
+	kKyraDatVersion = 104
 };
 
 const ExtractFilename extractFilenames[] = {
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index 6d0eca29e6..5a970c7089 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -50,6 +50,7 @@ const Game kyra1Games[] = {
 	{ kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA },
 	{ kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA },
 	{ kKyra1, kPlatformDOS, kTalkieVersion, ES_ESP },
+	{ kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS },
 
 	{ kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY },
 	{ kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN },
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
index 38201ec899..70b8996f9e 100644
--- a/devtools/create_kyradat/resources.cpp
+++ b/devtools/create_kyradat/resources.cpp
@@ -46,6 +46,7 @@
 #include "resources/lok_dos_cd_german.h"
 #include "resources/lok_dos_cd_italian.h"
 #include "resources/lok_dos_cd_spanish.h"
+#include "resources/lok_dos_cd_russian.h"
 
 #include "resources/lok_dos_cddemo.h"
 #include "resources/lok_dos_cddemo_english.h"
@@ -667,6 +668,30 @@ static const ResourceProvider resourceProviders[] = {
 	{ k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, ES_ESP, &k1GUIStringsDOSCDSpanishProvider },
 	{ k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, ES_ESP, &k1NewGameStringDOSCDSpanishProvider },
 	{ k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, ES_ESP, &k1ConfigStringsDOSCDSpanishProvider },
+
+	{ k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1IntroStringsDOSCDRussianProvider },
+	{ k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1ItemNamesDOSCDRussianProvider },
+	{ k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1TakenStringsDOSCDRussianProvider },
+	{ k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1PlacedStringsDOSCDRussianProvider },
+	{ k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1DroppedStringsDOSCDRussianProvider },
+	{ k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1NoDropStringsDOSCDRussianProvider },
+	{ k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1PutDownStringDOSCDRussianProvider },
+	{ k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1WaitAmuletStringDOSCDRussianProvider },
+	{ k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1BlackJewelStringDOSCDRussianProvider },
+	{ k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1HealingTipStringDOSCDRussianProvider },
+	{ k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1PoisonGoneStringDOSCDRussianProvider },
+	{ k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1ThePoisonStringsDOSCDRussianProvider },
+	{ k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1FluteStringsDOSCDRussianProvider },
+	{ k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1WispJewelStringsDOSCDRussianProvider },
+	{ k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1MagicJewelStringsDOSCDRussianProvider },
+	{ k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1FlaskFullStringDOSCDRussianProvider },
+	{ k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1FullFlaskStringDOSCDRussianProvider },
+	{ k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1OutroHomeStringDOSCDRussianProvider },
+	{ k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1VeryCleverStringDOSCDRussianProvider },
+	{ k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1GUIStringsDOSCDRussianProvider },
+	{ k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1NewGameStringDOSCDRussianProvider },
+	{ k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1ConfigStringsDOSCDRussianProvider },
+
 	{ k1KallakWritingSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KallakWritingSeqFMTownsProvider },
 	{ k1MalcolmTreeSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqFMTownsProvider },
 	{ k1WestwoodLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqFMTownsProvider },
diff --git a/devtools/create_kyradat/resources/lok_dos_cd_russian.h b/devtools/create_kyradat/resources/lok_dos_cd_russian.h
new file mode 100644
index 0000000000..da248ae2d3
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd_russian.h
@@ -0,0 +1,340 @@
+// Includes engine data originally translated by Siberian GRemlin.
+
+static const char *const k1IntroStringsDOSCDRussian[51] = {
+	"This is a text test - 1",
+	"This is a text test - 2",
+	"\xC7\xE4\xF0\xE0\xE2\xF1\xF2\xE2\xF3\xE9\x2C\x20\xCA\xE0\xEB\xEB\xE0\xEA\x21",
+	"\xC2\xE5\xEB\xE8\xEA\xE8\xE9\x20\xEF\xF0\xE5\xE4\xE2\xEE\xE4\xE8\xF2\xE5\xEB\xFC\x20\xEA\xEE\xF0\xEE\xEB\xE5\xE2\xF1\xEA\xE8\xF5\x20\xEC\xE0\xE3\xEE\xE2\x21",
+	"\xDF\x20\xF2\xE5\xE1\xFF\x20\xED\xE0\xEF\xF3\xE3\xE0\xEB\x3F",
+	"\xCC\xE0\xEB\xEA\xEE\xEB\xFC\xEC\x21",
+	"\xDF\x20\xF1\xEB\xFB\xF8\xE0\xEB\x20\xE2\xF7\xE5\xF0\xE0\x20\xEE\x20\xF2\xE2\xEE\xB8\xEC\x20\xEF\xEE\xE1\xE5\xE3\xE5\x2E",
+	"\xC8\x20\xEE\xE6\xE8\xE4\xE0\xEB\x2C\x20\xF7\xF2\xEE\x20\xF2\xFB\x20\xEF\xF0\xE8\xE4\xB8\xF8\xFC\x20\xF0\xE0\xED\xFC\xF8\xE5\x2E",
+	"\xCA\xF3\xE4\xE0\x20\xEC\xED\xE5\x20\xF1\xEF\xE5\xF8\xE8\xF2\xFC\x3F",
+	"\xDF\x20\xEF\xF0\xE0\xE2\xEB\xFE\x20\xFD\xF2\xEE\xE9\x20\xF1\xF2\xF0\xE0\xED\xEE\xE9\x21",
+	"\xD2\xE2\xEE\xB8\x20\xF5\xE8\xEB\xEE\xE5\x20\xE7\xE0\xEA\xEB\xE8\xED\xE0\xED\xE8\xE5\x20\xED\xE5\x20\xF1\xEC\xEE\xE3\xEB\xEE\x20\xEC\xE5\xED\xFF\x20\xF3\xE4\xE5\xF0\xE6\xE0\xF2\xFC\x2E",
+	"\xD2\xE0\xEA\x20\xF3\xE1\xE5\xE9\x20\xEC\xE5\xED\xFF\x21",
+	"\xCC\xEE\xE8\x20\xEC\xE0\xE3\xE8\xF7\xE5\xF1\xEA\xE8\xE5\x20\xF1\xE8\xEB\xFB\x20\xED\xE0\x20\xE8\xF1\xF5\xEE\xE4\xE5\x2E",
+	"\xCB\xE5\xE3\xEA\xEE\x20\xF2\xFB\x20\xED\xE5\x20\xEE\xF2\xE4\xE5\xEB\xE0\xE5\xF8\xFC\xF1\xFF\x2C\x20\xEC\xEE\xE6\xE5\xF8\xFC\x20\xED\xE5\x20\xF1\xEE\xEC\xED\xE5\xE2\xE0\xF2\xFC\xF1\xFF\x21",
+	"\xD2\xE5\xEF\xE5\xF0\xFC\x20\xF2\xFB\x20\xEA\xE0\xEC\xE5\xED\xFC\x2E\x2E\x2E",
+	"\xCD\xEE\x20\xE3\xEB\xE0\xE7\xE0\x20\xFF\x20\xF2\xE5\xE1\xE5\x20\xEE\xF1\xF2\xE0\xE2\xEB\xFE\x2E",
+	"\xDF\x20\xED\xE5\x20\xEB\xFC\xFE\x20\xF1\xEB\xB8\xE7\xFB\x20\xEF\xEE\x20\xCA\xE8\xF0\xE0\xED\xE4\xE8\xE8\x2E\x2E\x2E",
+	"\xCD\xEE\x20\xF2\xE5\xE1\xFF\x20\xFD\xF2\xEE\xE9\x20\xE2\xEE\xE7\xEC\xEE\xE6\xED\xEE\xF1\xF2\xE8\x20\xEB\xE8\xF8\xE0\xF2\xFC\x20\xED\xE5\x20\xF1\xF2\xE0\xED\xF3\x2E",
+	"\xD8\xF3\xF2\x20\xCC\xE0\xEB\xEA\xEE\xEB\xFC\xEC\x20\xF1\xE1\xE5\xE6\xE0\xEB\x2E",
+	"\xD2\xE5\xEF\xE5\xF0\xFC\x20\xEE\xED\x20\xF3\xEF\xF0\xE0\xE2\xEB\xFF\xE5\xF2\x20\xCA\xE8\xF0\xE0\xF6\xE2\xE5\xF2\xEE\xEC\x2C\x2E\x2E",
+	"\xC8\xF1\xF2\xEE\xF7\xED\xE8\xEA\xEE\xEC\x20\xE2\xF1\xE5\xE9\x20\xEC\xE0\xE3\xE8\xE8\x20\xE2\x20\xCA\xE8\xF0\xE0\xED\xE4\xE8\xE8\x2E",
+	"",
+	"\xC4\xE0\x20\xEA\xE0\xEA\x20\xF2\xFB\x20\xF1\xEC\xE5\xE5\xF8\xFC\x20\xEC\xE5\xF8\xE0\xF2\xFC\x20\xEC\xED\xE5\x21",
+	"\xD5\xEE\xF2\xFF\x20\xED\xE5\xF2\x2C\x20\xE4\xEB\xFF\x20\xF2\xE5\xE1\xFF\x20\xF3\x20\xEC\xE5\xED\xFF\x20\xE5\xF1\xF2\xFC\x20\xEA\xEE\xE5\x2D\xF7\xF2\xEE\x20\xEE\xF1\xEE\xE1\xE5\xED\xED\xEE\xE5\x2E\x2E\x2E",
+	"\xC7\xE0\xE1\xE0\xE2\xED\xEE\xE5\x20\xEF\xF0\xEE\xEA\xEB\xFF\xF2\xFC\xE5\x21",
+	"\xC8\x20\xE4\xE0\xFE\x20\xF7\xE5\xF1\xF2\xED\xEE\xE5\x20\xEF\xF0\xE5\xE4\xF3\xEF\xF0\xE5\xE6\xE4\xE5\xED\xE8\xE5\x2E",
+	"\xCD\xE5\x20\xEF\xF0\xFB\xE3\xE0\xE9\x20\xED\xE0\x20\xFD\xF2\xEE\x20\xE4\xE5\xF0\xE5\xE2\xEE\x21",
+	"",
+	"\xC1\xF3\xF5\x21",
+	"\xD2\xE0\xEA\x20\xED\xE0\xEC\xED\xEE\xE3\xEE\x20\xF1\xEC\xE5\xF8\xED\xE5\xE5\x2E",
+	"\xD0\xE0\xE7\xE2\xE5\x20\xED\xE5\xF2\x3F",
+	"\xD5\xE0\x2D\xF5\xE0\x2D\xF5\xE0\x21",
+	"\xC4\xEE\x20\xF7\xE5\xE3\xEE\x20\xE6\xE5\x20\xEF\xF0\xE8\xFF\xF2\xED\xEE\x20\xF1\xED\xEE\xE2\xE0\x20\xF0\xE0\xE7\xEC\xFF\xF2\xFC\x20\xEF\xE0\xEB\xFC\xF6\xFB\x21",
+	"\xC7\xE4\xEE\xF0\xEE\xE2\xEE\x20\xE1\xFB\xF2\xFC\x20\xE6\xE8\xE2\xFB\xEC\x21",
+	"\xC1\xF0\xFD\xED\xE4\xEE\xED\x21",
+	"\xC4\xE5\xE4\xF3\xF8\xEA\xE0\x21\x20\xCC\xFB\x20\xF1\xE4\xE5\xEB\xE0\xEB\xE8\x20\xFD\xF2\xEE\x21",
+	"\xCD\xE5\xF2\x21\x20\xD2\xFB\x20\xF1\xE4\xE5\xEB\xE0\xEB\x20\xFD\xF2\xEE\x21",
+	"\xC4\xE0\x20\xE7\xE4\xF0\xE0\xE2\xF1\xF2\xE2\xF3\xE5\xF2\x20\xEA\xEE\xF0\xEE\xEB\xFC\x20\xC1\xF0\xFD\xED\xE4\xEE\xED\x21",
+	"\xC4\xE0\x20\xE7\xE4\xF0\xE0\xE2\xF1\xF2\xE2\xF3\xFE\xF2\x20\xEA\xEE\xF0\xEE\xEB\xE5\xE2\xF1\xEA\xE8\xE5\x20\xEC\xE0\xE3\xE8\x21",
+	"\xC0\x20\xF2\xE5\xEF\xE5\xF0\xFC\x20\xED\xE0\xEC\x20\xEF\xEE\xF0\xE0\x20\xE2\xEE\xF1\xF1\xF2\xE0\xED\xEE\xE2\xE8\xF2\xFC\x20\xE2\xE5\xEB\xE8\xF7\xE8\xE5\x20\xCA\xE8\xF0\xE0\xED\xE4\xE8\xE8\x21",
+	"\xCF\xF0\xE5\xEA\xF0\xE0\xF1\xED\xE0\xFF\x20\xEC\xFB\xF1\xEB\xFC\x21",
+	"\xC0\x20\xE2\x20\xEA\xE0\xF7\xE5\xF1\xF2\xE2\xE5\x20\xEF\xE5\xF0\xE2\xEE\xE3\xEE\x20\xEA\xEE\xF0\xEE\xEB\xE5\xE2\xF1\xEA\xEE\xE3\xEE\x20\xF3\xEA\xE0\xE7\xE0\x2E\x2E\x2E",
+	"\xDF\x20\xEE\xE1\xFA\xFF\xE2\xEB\xFF\xFE\x20\xF1\xE0\xED\xE4\xE0\xEB\xE8\xE8\x20\xEE\xF4\xE8\xF6\xE8\xE0\xEB\xFC\xED\xEE\xE9\x20\xEE\xE1\xF3\xE2\xFC\xFE\x20\xCA\xE8\xF0\xE0\xED\xE4\xE8\xE8\x21",
+	"\xCE\xF2\xEB\xE8\xF7\xED\xEE\x2C\x20\xC1\xF0\xFD\xED\xE4\xEE\xED\x21",
+	"\xC7\xE5\xEC\xEB\xFF\x20\xE1\xEE\xEB\xE5\xE5\x20\xED\xE5\x20\xF1\xF2\xF0\xE0\xE4\xE0\xE5\xF2\x2E\x2E\x2E",
+	"\xC8\x20\xF2\xE2\xEE\xE8\x20\xE4\xF0\xF3\xE7\xFC\xFF\x20\xE2\xE5\xF0\xED\xF3\xEB\xE8\xF1\xFC\x20\xEA\x20\xE6\xE8\xE7\xED\xE8\x21",
+	"\xC4\xEE\xF0\xEE\xE3\xE0\xFF\x20\xC1\xF0\xE8\xED\xED\x2E\x2E\x2E",
+	"\xCC\xE0\xEB\xEA\xEE\xEB\xFC\xEC\x20\xF1\xE1\xE5\xE6\xE0\xEB\x2E",
+	"\xD1\xEA\xEE\xF0\xEE\x20\xEE\xED\x20\xEF\xF0\xE8\xE4\xB8\xF2\x20\xE7\xE0\x20\xEC\xED\xEE\xE9\x2E",
+	"\xCF\xEE\xE6\xE0\xEB\xF3\xE9\xF1\xF2\xE0\x2C\x20\xEF\xEE\xEC\xEE\xE3\xE8\x20\xC1\xF0\xFD\xED\xE4\xEE\xED\xF3\x2E\x2E\x2E",
+	""
+};
+
+static const StringListProvider k1IntroStringsDOSCDRussianProvider = { ARRAYSIZE(k1IntroStringsDOSCDRussian), k1IntroStringsDOSCDRussian };
+
+static const char *const k1ItemNamesDOSCDRussian[107] = {
+	"\xC3\xF0\xE0\xED\xE0\xF2",
+	"\xC0\xEC\xE5\xF2\xE8\xF1\xF2",
+	"\xC0\xEA\xE2\xE0\xEC\xE0\xF0\xE8\xED",
+	"\xC0\xEB\xEC\xE0\xE7",
+	"\xC8\xE7\xF3\xEC\xF0\xF3\xE4",
+	"\xC6\xE5\xEC\xF7\xF3\xE6\xE8\xED\xE0",
+	"\xD0\xF3\xE1\xE8\xED",
+	"\xCE\xEB\xE8\xE2\xE8\xED",
+	"\xD1\xE0\xEF\xF4\xE8\xF0",
+	"\xCE\xEF\xE0\xEB",
+	"\xD2\xEE\xEF\xE0\xE7",
+	"\xCE\xED\xE8\xEA\xF1",
+	"\xD1\xEE\xEB\xED\xE5\xF7\xED\xFB\xE9\x20\xEA\xE0\xEC\xE5\xED\xFC",
+	"\xCB\xF3\xED\xED\xFB\xE9\x20\xEA\xE0\xEC\xE5\xED\xFC",
+	"\xD0\xE0\xE4\xF3\xE6\xED\xFB\xE9\x20\xEA\xE0\xEC\xE5\xED\xFC",
+	"\xCA\xEE\xEC\xEF\xE0\xF1",
+	"\xD0\xEE\xE7\xE0",
+	"\xD2\xFE\xEB\xFC\xEF\xE0\xED",
+	"\xCE\xF0\xF5\xE8\xE4\xE5\xFF",
+	"\xD1\xE5\xF0\xE5\xE1\xF0\xFF\xED\xE0\xFF\x20\xF0\xEE\xE7\xE0",
+	"\xD1\xE5\xF0\xE5\xE1\xF0\xFF\xED\xE0\xFF\x20\xF1\xF2\xE0\xF2\xF3\xFD\xF2\xEA\xE0",
+	"\xD1\xE5\xF0\xE5\xE1\xF0\xFF\xED\xE0\xFF\x20\xEC\xEE\xED\xE5\xF2\xE0",
+	"\xC7\xEE\xEB\xEE\xF2\xE0\xFF\x20\xEC\xEE\xED\xE5\xF2\xE0",
+	"\xC7\xEE\xEB\xEE\xF2\xEE\xE5\x20\xEA\xEE\xEB\xFC\xF6\xEE",
+	"\xCA\xEE\xF0\xEE\xEB\xE5\xE2\xF1\xEA\xE0\xFF\x20\xF7\xE0\xF8\xE0",
+	"\xD1\xEE\xF1\xED\xEE\xE2\xE0\xFF\x20\xF8\xE8\xF8\xEA\xE0",
+	"\xC6\xB8\xEB\xF3\xE4\xFC",
+	"\xD6\xE0\xF0\xF1\xEA\xE8\xE9\x20\xEE\xF0\xE5\xF5",
+	"\xC2\xE5\xF7\xED\xEE\xE3\xEE\xF0\xFF\xF9\xE0\xFF\x20\xEF\xEB\xE0\xEC\xE5\xED\xE8\xEA\xE0",
+	"\xCF\xEB\xE0\xEC\xE5\xED\xE8\xEA\xE0",
+	"\xCF\xEB\xE0\xEC\xE5\xED\xE8\xEA\xE0",
+	"\xCF\xEB\xE0\xEC\xE5\xED\xE8\xEA\xE0",
+	"\xCF\xEB\xE0\xEC\xE5\xED\xE8\xEA\xE0",
+	"\xCF\xEB\xE0\xEC\xE5\xED\xE8\xEA\xE0",
+	"\xD0\xFB\xE1\xE0",
+	"\xD0\xFB\xE1\xED\xFB\xE5\x20\xEA\xEE\xF1\xF2\xE8",
+	"\xC1\xE0\xF0\xE0\xED\xFC\xFF\x20\xED\xEE\xE3\xE0",
+	"\xCA\xEE\xF1\xF2\xFC",
+	"\xDF\xE1\xEB\xEE\xEA\xEE",
+	"\xDF\xE1\xEB\xEE\xF7\xED\xFB\xE9\x20\xEE\xE3\xF0\xFB\xE7\xEE\xEA",
+	"\xC3\xEE\xEB\xF3\xE1\xE8\xEA\xE0",
+	"\xC3\xF0\xE8\xE1",
+	"\xC7\xE0\xEF\xE8\xF1\xEA\xE0",
+	"\xD8\xE0\xF0\xE8\xEA",
+	"\xCF\xE8\xEB\xE0",
+	"\xC0\xED\xF5",
+	"\xCF\xE5\xF0\xEE",
+	"\xDF\xE9\xF6\xEE",
+	"\xCB\xE8\xF1\xF2",
+	"\xCA\xEB\xE5\xE2\xE5\xF0",
+	"\xD3\xEF\xE0\xE2\xF8\xE0\xFF\x20\xE7\xE2\xE5\xE7\xE4\xE0",
+	"\xD5\xF0\xF3\xF1\xF2\xE0\xEB\xFC\xED\xFB\xE9\x20\xF8\xE0\xF0",
+	"\xD1\xEB\xE5\xE7\xE0",
+	"\xC7\xE5\xF0\xEA\xE0\xEB\xEE",
+	"\xCB\xFC\xE4\xE8\xED\xEA\xE0",
+	"\xD4\xEB\xE5\xE9\xF2\xE0",
+	"\xCF\xE5\xF1\xEE\xF7\xED\xFB\xE5\x20\xF7\xE0\xF1\xFB",
+	"\xC6\xE5\xEB\xE5\xE7\xED\xFB\xE9\x20\xEA\xEB\xFE\xF7",
+	"\xCD\xE5\xF4\xF0\xE8\xF2\xEE\xE2\xFB\xE9\x20\xEA\xEB\xFE\xF7",
+	"\xCE\xE1\xF1\xE8\xE4\xE8\xE0\xED\xEE\xE2\xFB\xE9\x20\xEA\xEB\xFE\xF7",
+	"\xCA\xF0\xE0\xF1\xED\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xCA\xF0\xE0\xF1\xED\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xD1\xE8\xED\xE5\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xD1\xE8\xED\xE5\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xC6\xB8\xEB\xF2\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xC6\xB8\xEB\xF2\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xC7\xE5\xEB\xB8\xED\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xCE\xF0\xE0\xED\xE6\xE5\xE2\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xD4\xE8\xEE\xEB\xE5\xF2\xEE\xE2\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xD0\xE0\xE4\xF3\xE6\xED\xEE\xE5\x20\xE7\xE5\xEB\xFC\xE5",
+	"\xD1\xE2\xE5\xE6\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xD1\xE2\xE5\xE6\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xD1\xEE\xEB\xB8\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xD1\xEE\xEB\xB8\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xCC\xE8\xED\xE5\xF0\xE0\xEB\xFC\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xCC\xE8\xED\xE5\xF0\xE0\xEB\xFC\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xC2\xEE\xEB\xF8\xE5\xE1\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xC2\xEE\xEB\xF8\xE5\xE1\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0",
+	"\xCF\xF3\xF1\xF2\xE0\xFF\x20\xF1\xEA\xEB\xFF\xED\xEA\xE0",
+	"\xCF\xF3\xF1\xF2\xE0\xFF\x20\xF1\xEA\xEB\xFF\xED\xEA\xE0",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xD1\xE2\xE8\xF2\xEE\xEA",
+	"\xCA\xF3\xF1\xEE\xEA\x20\xEF\xE5\xF0\xE3\xE0\xEC\xE5\xED\xF2\xE0",
+	"\xCA\xF3\xF1\xEE\xEA\x20\xEF\xE5\xF0\xE3\xE0\xEC\xE5\xED\xF2\xE0",
+	"\xCA\xF3\xF1\xEE\xEA\x20\xEF\xE5\xF0\xE3\xE0\xEC\xE5\xED\xF2\xE0",
+	"\xCA\xF3\xF1\xEE\xEA\x20\xEF\xE5\xF0\xE3\xE0\xEC\xE5\xED\xF2\xE0",
+	"\xCA\xF3\xF1\xEE\xEA\x20\xEF\xE5\xF0\xE3\xE0\xEC\xE5\xED\xF2\xE0",
+	"\xCA\xF0\xE0\xF1\xED\xFB\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xCE\xF0\xE0\xED\xE6\xE5\xE2\xFB\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xC6\xB8\xEB\xF2\xFB\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xC7\xE5\xEB\xB8\xED\xFB\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xD1\xE8\xED\xE5\xE7\xE5\xEB\xB8\xED\xFB\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xD1\xE8\xED\xE8\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xD4\xE8\xEE\xEB\xE5\xF2\xEE\xE2\xFB\xE9\x20\xEC\xE0\xE3\xED\xE8\xF2",
+	"\xD2\xFF\xE6\xB8\xEB\xFB\xE9\x20\xEA\xE0\xEC\xE5\xED\xFC",
+	"\xCA\xEE\xF0\xEE\xEB\xE5\xE2\xF1\xEA\xE0\xFF\x20\xEA\xEE\xF0\xEE\xED\xE0",
+	"\xCA\xEE\xF0\xEE\xEB\xE5\xE2\xF1\xEA\xE8\xE9\x20\xF1\xEA\xE8\xEF\xE5\xF2\xF0",
+	"\xC7\xEE\xEB\xEE\xF2\xEE\xE9\x20\xEA\xEB\xFE\xF7",
+	"\xCD\xE5\xE8\xE7\xE2\xE5\xF1\xF2\xED\xFB\xE9\x20\xEF\xF0\xE5\xE4\xEC\xE5\xF2"
+};
+
+static const StringListProvider k1ItemNamesDOSCDRussianProvider = { ARRAYSIZE(k1ItemNamesDOSCDRussian), k1ItemNamesDOSCDRussian };
+
+static const char *const k1TakenStringsDOSCDRussian[2] = {
+	"\x20\xE2\x20\xF0\xF3\xEA\xE0\xF5\x2E",
+	"\x20\xE2\x20\xF0\xF3\xEA\xE0\xF5\x2E"
+};
+
+static const StringListProvider k1TakenStringsDOSCDRussianProvider = { ARRAYSIZE(k1TakenStringsDOSCDRussian), k1TakenStringsDOSCDRussian };
+
+static const char *const k1PlacedStringsDOSCDRussian[1] = {
+	"\x20\xE2\x20\xEA\xE0\xF0\xEC\xE0\xED\xE5\x2E"
+};
+
+static const StringListProvider k1PlacedStringsDOSCDRussianProvider = { ARRAYSIZE(k1PlacedStringsDOSCDRussian), k1PlacedStringsDOSCDRussian };
+
+static const char *const k1DroppedStringsDOSCDRussian[1] = {
+	"\x20\xED\xE0\x20\xE7\xE5\xEC\xEB\xE5\x2E"
+};
+
+static const StringListProvider k1DroppedStringsDOSCDRussianProvider = { ARRAYSIZE(k1DroppedStringsDOSCDRussian), k1DroppedStringsDOSCDRussian };
+
+static const char *const k1NoDropStringsDOSCDRussian[2] = {
+	"\xC7\xE4\xE5\xF1\xFC\x20\xED\xE5\xE2\xEE\xE7\xEC\xEE\xE6\xED\xEE\x20\xE1\xEE\xEB\xFC\xF8\xE5\x20\xED\xE8\xF7\xE5\xE3\xEE\x20\xE1\xF0\xEE\xF1\xE8\xF2\xFC\x2E",
+	"\xD1\xFE\xE4\xE0\x20\xED\xE5\xEB\xFC\xE7\xFF\x20\xED\xE8\xF7\xE5\xE3\xEE\x20\xE1\xF0\xEE\xF1\xE8\xF2\xFC\x2E"
+};
+
+static const StringListProvider k1NoDropStringsDOSCDRussianProvider = { ARRAYSIZE(k1NoDropStringsDOSCDRussian), k1NoDropStringsDOSCDRussian };
+
+static const char *const k1PutDownStringDOSCDRussian[1] = {
+	"\xCF\xEE\xF5\xEE\xE6\xE5\x2C\x20\xF1\xEF\xE5\xF0\xE2\xE0\x20\xF1\xF2\xEE\xE8\xF2\x20\xFD\xF2\xEE\x20\xEF\xEE\xEB\xEE\xE6\xE8\xF2\xFC\x2E"
+};
+
+static const StringListProvider k1PutDownStringDOSCDRussianProvider = { ARRAYSIZE(k1PutDownStringDOSCDRussian), k1PutDownStringDOSCDRussian };
+
+static const char *const k1WaitAmuletStringDOSCDRussian[1] = {
+	"\xCF\xEE\xF5\xEE\xE6\xE5\x2C\x20\xEF\xF0\xE8\xE4\xB8\xF2\xF1\xFF\x20\xEF\xEE\xE4\xEE\xE6\xE4\xE0\xF2\xFC\x2C\x20\xEF\xEE\xEA\xE0\x20\xE0\xEC\xF3\xEB\xE5\xF2\x20\xE2\xEE\xF1\xF1\xF2\xE0\xED\xEE\xE2\xE8\xF2\x20\xF1\xE2\xEE\xFE\x20\xF1\xE8\xEB\xF3\x2E"
+};
+
+static const StringListProvider k1WaitAmuletStringDOSCDRussianProvider = { ARRAYSIZE(k1WaitAmuletStringDOSCDRussian), k1WaitAmuletStringDOSCDRussian };
+
+static const char *const k1BlackJewelStringDOSCDRussian[1] = {
+	"\xDD\xF2\xEE\x20\xF1\xE0\xEC\xEE\xF6\xE2\xE5\xF2\x2C\x20\xED\xEE\x20\xEF\xEE\xF7\xE5\xEC\xF3\x20\xEE\xED\x20\xF7\xB8\xF0\xED\xFB\xE9\x3F"
+};
+
+static const StringListProvider k1BlackJewelStringDOSCDRussianProvider = { ARRAYSIZE(k1BlackJewelStringDOSCDRussian), k1BlackJewelStringDOSCDRussian };
+
+static const char *const k1HealingTipStringDOSCDRussian[1] = {
+	"\xD3\xF5\x20\xF2\xFB\x21\x20\xDD\xF2\xEE\x20\xEC\xEE\xE6\xE5\xF2\x20\xEF\xEE\xEC\xEE\xF7\xFC\x2C\x20\xE5\xF1\xEB\xE8\x20\xFF\x20\xEF\xEE\xF0\xE0\xED\xFE\xF1\xFC\x2E"
+};
+
+static const StringListProvider k1HealingTipStringDOSCDRussianProvider = { ARRAYSIZE(k1HealingTipStringDOSCDRussian), k1HealingTipStringDOSCDRussian };
+
+static const char *const k1PoisonGoneStringDOSCDRussian[2] = {
+	"\xCD\xE5\xE2\xE5\xF0\xEE\xFF\xF2\xED\xEE\x21",
+	"\xC4\xE5\xE9\xF1\xF2\xE2\xE8\xE5\x20\xFF\xE4\xE0\x20\xEF\xF0\xEE\xF8\xEB\xEE\x21"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSCDRussianProvider = { ARRAYSIZE(k1PoisonGoneStringDOSCDRussian), k1PoisonGoneStringDOSCDRussian };
+
+static const char *const k1ThePoisonStringsDOSCDRussian[4] = {
+	"\xDF\xE4\x2E\x2E\x2E",
+	"\xDF\x20\xED\xE5\x20\xEC\xEE\xE3\xF3\x20\xE4\xFB\xF8\xE0\xF2\xFC\x2E\x2E\x2E",
+	"\xDF\x20\xF7\xF3\xE2\xF1\xF2\xE2\xF3\xFE\x20\xF1\xE5\xE1\xFF\x20\xEF\xEB\xEE\xF5\xEE\x2E\x2E\x2E",
+	"\xC4\xEE\xEB\xE6\xED\xEE\x20\xE1\xFB\xF2\xFC\x2C\x0D\xFD\xF2\xE0\x20\xE7\xEC\xE5\xFF\x20\xFF\xE4\xEE\xE2\xE8\xF2\xE0\xFF\x21"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSCDRussianProvider = { ARRAYSIZE(k1ThePoisonStringsDOSCDRussian), k1ThePoisonStringsDOSCDRussian };
+
+static const char *const k1FluteStringsDOSCDRussian[2] = {
+	"\xC0\x20\xE7\xE2\xF3\xEA\x20\xF3\x20\xED\xE5\xB8\x20\xF2\xE0\xEA\x20\xF1\xE5\xE1\xE5\x2E",
+	"\xCE\xF2\x20\xEF\xEE\xF1\xEB\xE5\xE4\xED\xE5\xE9\x20\xED\xEE\xF2\xFB\x20\xE0\xE6\x20\xF3\xF8\xE8\x20\xE7\xE0\xEB\xEE\xE6\xE8\xEB\xEE\x21"
+};
+
+static const StringListProvider k1FluteStringsDOSCDRussianProvider = { ARRAYSIZE(k1FluteStringsDOSCDRussian), k1FluteStringsDOSCDRussian };
+
+static const char *const k1WispJewelStringsDOSCDRussian[2] = {
+	"\xCD\xE5\x20\xE4\xF3\xEC\xE0\xFE\x2C\x20\xF7\xF2\xEE\x20\xF1\xE5\xE9\xF7\xE0\xF1\x20\xFD\xF2\xEE\x20\xEC\xEE\xE6\xE5\xF2\x20\xEF\xEE\xED\xE0\xE4\xEE\xE1\xE8\xF2\xFC\xF1\xFF\x2E",
+	"\xCF\xEE\xF5\xEE\xE6\xE5\x2C\x20\xF1\xEF\xE5\xF0\xE2\xE0\x20\xF1\xF2\xEE\xE8\xF2\x20\xFD\xF2\xEE\x20\xEF\xEE\xEB\xEE\xE6\xE8\xF2\xFC\x2E"
+};
+
+static const StringListProvider k1WispJewelStringsDOSCDRussianProvider = { ARRAYSIZE(k1WispJewelStringsDOSCDRussian), k1WispJewelStringsDOSCDRussian };
+
+static const char *const k1MagicJewelStringsDOSCDRussian[1] = {
+	"\xD1\xF2\xF0\xE0\xED\xED\xEE\xE5\x20\xEE\xF9\xF3\xF9\xE5\xED\xE8\xE5\x2E",
+};
+
+static const StringListProvider k1MagicJewelStringsDOSCDRussianProvider = { ARRAYSIZE(k1MagicJewelStringsDOSCDRussian), k1MagicJewelStringsDOSCDRussian };
+
+static const char *const k1FlaskFullStringDOSCDRussian[1] = {
+	"\xDD\xF2\xE0\x20\xF1\xEA\xEB\xFF\xED\xEA\xE0\x20\xF3\xE6\xE5\x20\xED\xE0\xEF\xEE\xEB\xED\xE5\xED\xE0\x2E"
+};
+
+static const StringListProvider k1FlaskFullStringDOSCDRussianProvider = { ARRAYSIZE(k1FlaskFullStringDOSCDRussian), k1FlaskFullStringDOSCDRussian };
+
+static const char *const k1FullFlaskStringDOSCDRussian[4] = {
+	"\xC2\x20\xF1\xEA\xEB\xFF\xED\xEA\xE5\x20\xF2\xE5\xEF\xE5\xF0\xFC\x20\xF1\xE2\xE5\xE6\xE0\xFF\x20\xF1\xE2\xE5\xF0\xEA\xE0\xFE\xF9\xE0\xFF\x20\xE2\xEE\xE4\xE0\x2E",
+	"\xC2\x20\xF1\xEA\xEB\xFF\xED\xEA\xE5\x20\xF2\xE5\xEF\xE5\xF0\xFC\x20\xF1\xEE\xEB\xB8\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0\x2E",
+	"\xC2\x20\xF1\xEA\xEB\xFF\xED\xEA\xE5\x20\xF2\xE5\xEF\xE5\xF0\xFC\x20\xEC\xE8\xED\xE5\xF0\xE0\xEB\xFC\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0\x2E",
+	"\xC2\xEE\xEB\xF8\xE5\xE1\xED\xE0\xFF\x20\xE2\xEE\xE4\xE0\x2E"
+};
+
+static const StringListProvider k1FullFlaskStringDOSCDRussianProvider = { ARRAYSIZE(k1FullFlaskStringDOSCDRussian), k1FullFlaskStringDOSCDRussian };
+
+static const char *const k1OutroHomeStringDOSCDRussian[1] = {
+	"\xC4\xEE\xEC"
+};
+
+static const StringListProvider k1OutroHomeStringDOSCDRussianProvider = { ARRAYSIZE(k1OutroHomeStringDOSCDRussian), k1OutroHomeStringDOSCDRussian };
+
+static const char *const k1VeryCleverStringDOSCDRussian[1] = {
+	"\xD5\xE8\xF2\xF0\xE5\xF6\x21\x20\xCE\xE4\xED\xE0\xEA\x20\xF3\xF1\xE8\xEB\xE8\xFF\x20\xF2\xE2\xEE\xE8\x20\xED\xE0\xEF\xF0\xE0\xF1\xED\xFB\x2E"
+};
+
+static const StringListProvider k1VeryCleverStringDOSCDRussianProvider = { ARRAYSIZE(k1VeryCleverStringDOSCDRussian), k1VeryCleverStringDOSCDRussian };
+
+static const char *const k1GUIStringsDOSCDRussian[29] = {
+	"\xCB\xE5\xE3\xE5\xED\xE4\xE0\x20\xCA\xE8\xF0\xE0\xED\xE4\xE8\xE8",
+	"\xC7\xE0\xE3\xF0\xF3\xE7\xE8\xF2\xFC\x20\xE8\xE3\xF0\xF3",
+	"\xD1\xEE\xF5\xF0\xE0\xED\xE8\xF2\xFC\x20\xE8\xE3\xF0\xF3",
+	"\xCD\xE0\xF1\xF2\xF0\xEE\xE9\xEA\xE8",
+	"\xC2\xFB\xE9\xF2\xE8\x20\xE8\xE7\x20\xE8\xE3\xF0\xFB",
+	"\xCF\xF0\xEE\xE4\xEE\xEB\xE6\xE8\xF2\xFC",
+	"\xCD\xE0\xF1\xF2\xF0\xEE\xE9\xEA\xE8",
+	"\xCA\xE0\xEA\xF3\xFE\x20\xE8\xE3\xF0\xF3\x20\xC2\xFB\x20\xE1\xFB\x20\xF5\xEE\xF2\xE5\xEB\xE8\x20\xE7\xE0\xE3\xF0\xF3\xE7\xE8\xF2\xFC\x3F",
+	"\xC2\xFB\xE1\xE5\xF0\xE8\xF2\xE5\x20\xEF\xEE\xE7\xE8\xF6\xE8\xFE\x20\xE4\xEB\xFF\x20\xF1\xEE\xF5\xF0\xE0\xED\xE5\xED\xE8\xFF\x3A",
+	"\x5B\x20\xCF\xD3\xD1\xD2\xCE\x20\x5D",
+	"\xCE\xF2\xEC\xE5\xED\xE0",
+	"\xC2\xE2\xE5\xE4\xE8\xF2\xE5\x20\xEE\xEF\xE8\xF1\xE0\xED\xE8\xE5\x20\xF1\xEE\xF5\xF0\xE0\xED\xFF\xE5\xEC\xEE\xE9\x20\xE8\xE3\xF0\xFB\x3A",
+	"\xD1\xEE\xF5\xF0\xE0\xED\xE8\xF2\xFC",
+	"\xCF\xEE\xEA\xEE\xE9\xF1\xFF\x20\xF1\x20\xEC\xE8\xF0\xEE\xEC\x2C\x20\xC1\xF0\xFD\xED\xE4\xEE\xED\x2E",
+	"\xC2\xFB\x20\xF3\xE2\xE5\xF0\xE5\xED\xFB\x2C\x20\xF7\xF2\xEE\x20\xF5\xEE\xF2\xE8\xF2\xE5\x20\xEF\xEE\xEA\xE8\xED\xF3\xF2\xFC\x20\xE8\xE3\xF0\xF3\x3F",
+	"XXXXXXXXXXXXXXXXX",
+	"XXXXXXXXXXXXXXXXX",
+	"XXXXXXXXXXXXXXXXX",
+	"XXXXXXXXXXXXXXXXX",
+	"\xC3\xEB\xE0\xE2\xED\xEE\xE5\x20\xEC\xE5\xED\xFE",
+	"\xE2\xEA\xEB\x2E",
+	"\xE2\xFB\xEA\xEB\x2E",
+	"\xC4\xE0",
+	"\xCD\xE5\xF2",
+	"\xCD\x0E\x17""+""\xD5\x0E\x17""+""\xDA\x0E\x17""+""\xE1\x0E\x17""+""\xE6\x0E\x17""+""\xEE\x0E\x17""+""\xF8\x0E\x17""+""\x03\x0F\x17""+""\x10\x0F\x17""+""\x18\x0F\x17""+""\x1F\x0F\x17""+$""\x0F\x17""+""\xD1\xEA\xEE\xF0\xEE\xF1\xF2\xFC\x20\xEF\xE5\xF0\xE5\xEC\xE5\xF9\xE5\xED\xE8\xFF",
+	"\xD1\xEA\xEE\xF0\xEE\xF1\xF2\xFC\x20\xF2\xE5\xEA\xF1\xF2\xE0",
+	"\xCC\xF3\xE7\xFB\xEA\xE0",
+	"\xC7\xE2\xF3\xEA\xE8",
+	"\xCE\xE7\xE2\xF3\xF7\xEA\xE0\x20\x2F\x20\xD2\xE5\xEA\xF1\xF2"
+};
+
+static const StringListProvider k1GUIStringsDOSCDRussianProvider = { ARRAYSIZE(k1GUIStringsDOSCDRussian), k1GUIStringsDOSCDRussian };
+
+static const char *const k1NewGameStringDOSCDRussian[1] = {
+	"\x5B\x20\xCD\xCE\xC2\xC0\xDF\x20\xC8\xC3\xD0\xC0\x20\x5D"
+};
+
+static const StringListProvider k1NewGameStringDOSCDRussianProvider = { ARRAYSIZE(k1NewGameStringDOSCDRussian), k1NewGameStringDOSCDRussian };
+
+static const char *const k1ConfigStringsDOSCDRussian[12] = {
+	"\xEE\xF7\xE5\xED\xFC\x20\xEC\xE5\xE4\xEB\xE5\xED\xED\xE0\xFF",
+	"\xEC\xE5\xE4\xEB\xE5\xED\xED\xE0\xFF",
+	"\xED\xEE\xF0\xEC\xE0\xEB\xFC\xED\xE0\xFF",
+	"\xE1\xFB\xF1\xF2\xF0\xE0\xFF",
+	"\xEE\xF7\xE5\xED\xFC\x20\xE1\xFB\xF1\xF2\xF0\xE0\xFF",
+	"\xD2\xEE\xEB\xFC\xEA\xEE\x20\xF2\xE5\xEA\xF1\xF2",
+	"\xD2\xEE\xEB\xFC\xEA\xEE\x20\xEE\xE7\xE2\xF3\xF7\xEA\xE0",
+	"\xCE\xE7\xE2\xF3\xF7\xEA\xE0\x20\xE8\x20\xF2\xE5\xEA\xF1\xF2",
+	"\xEC\xE5\xE4\xEB\xE5\xED\xED\xE0\xFF",
+	"\xED\xEE\xF0\xEC\xE0\xEB\xFC\xED\xE0\xFF",
+	"\xE1\xFB\xF1\xF2\xF0\xE0\xFF",
+	"\xEF\xEE\x20\xEA\xEB\xE8\xEA\xF3"
+};
+
+static const StringListProvider k1ConfigStringsDOSCDRussianProvider = { ARRAYSIZE(k1ConfigStringsDOSCDRussian), k1ConfigStringsDOSCDRussian };
+
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 1c5ddbbc28..68dd8d40ab 100644
Binary files a/dists/engine-data/kyra.dat and b/dists/engine-data/kyra.dat differ
diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h
index 6057291efc..e64e73a489 100644
--- a/engines/kyra/detection_tables.h
+++ b/engines/kyra/detection_tables.h
@@ -32,6 +32,7 @@ namespace {
 #define KYRA1_TOWNS_FLAGS FLAGS(false, true, false, false, false, false, false, false, false, Kyra::GI_KYRA1)
 #define KYRA1_TOWNS_SJIS_FLAGS FLAGS(false, true, false, false, true, false, false, false, false, Kyra::GI_KYRA1)
 #define KYRA1_CD_FLAGS FLAGS(false, true, true, false, false, false, false, false, false, Kyra::GI_KYRA1)
+#define KYRA1_CD_FAN_FLAGS(x, y) FLAGS_FAN(x, y, false, true, true, false, false, false, false, false, false, Kyra::GI_KYRA1)
 #define KYRA1_DEMO_FLAGS FLAGS(true, false, false, false, false, false, false, false, false, Kyra::GI_KYRA1)
 #define KYRA1_DEMO_CD_FLAGS FLAGS(true, true, true, false, false, false, false, false, false, Kyra::GI_KYRA1)
 
@@ -458,7 +459,18 @@ const KYRAGameDescription adGameDescs[] = {
 		},
 		KYRA1_DEMO_FLAGS
 	},
-
+	{ // Modern fan-made Russian translation by Siberian GRemlin
+		{
+			"kyra1",
+			"CD",
+			AD_ENTRY1("MAIN_ENG.CPS", "535765395e3594bfd9b727834028e288"),
+			Common::RU_RUS,
+			Common::kPlatformDOS,
+			ADGF_CD,
+			GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA)
+		},
+		KYRA1_CD_FAN_FLAGS(Common::RU_RUS, Common::EN_ANY)
+	},
 	{	// Special Kyrandia 1 CD demo
 		{
 			"kyra1",
diff --git a/engines/kyra/resource/staticres.cpp b/engines/kyra/resource/staticres.cpp
index 6fe7f917ff..15418407db 100644
--- a/engines/kyra/resource/staticres.cpp
+++ b/engines/kyra/resource/staticres.cpp
@@ -39,7 +39,7 @@
 
 namespace Kyra {
 
-#define RESFILE_VERSION 103
+#define RESFILE_VERSION 104
 
 namespace {
 bool checkKyraDat(Common::SeekableReadStream *file) {
@@ -211,6 +211,7 @@ bool StaticResource::tryKyraDatLoad() {
 	if (!found)
 		return false;
 
+
 	// load the ID map for our game
 	const Common::String filenamePattern = Common::String::format("0%01X%01X%01X000%01X", game, platform, special, lang);
 	Common::SeekableReadStream *idMap = _vm->resource()->createReadStream(filenamePattern);
@@ -961,6 +962,8 @@ void KyraEngine_LoK::loadMainScreen(int page) {
 		_screen->loadBitmap("MAIN_SPA.CPS", page, page, 0);
 	else if (_flags.lang == Common::IT_ITA)
 		_screen->loadBitmap("MAIN_ITA.CPS", page, page, 0);
+	else if (_flags.lang == Common::RU_RUS)
+		_screen->loadBitmap("MAIN_ENG.CPS", page, page, 0);
 	else
 		warning("no main graphics file found");
 
diff --git a/engines/kyra/script/script_lok.cpp b/engines/kyra/script/script_lok.cpp
index 2efa159f0b..da90c48fcc 100644
--- a/engines/kyra/script/script_lok.cpp
+++ b/engines/kyra/script/script_lok.cpp
@@ -1034,6 +1034,8 @@ int KyraEngine_LoK::o1_specialEventDisplayBrynnsNote(EMCState *script) {
 			_screen->loadBitmap("NOTEFRE.CPS", 3, 3, 0);
 		else if (_flags.lang == Common::DE_DEU)
 			_screen->loadBitmap("NOTEGER.CPS", 3, 3, 0);
+		else if (_flags.lang == Common::RU_RUS)
+			_screen->loadBitmap("NOTEENG.CPS", 3, 3, 0);
 	} else {
 		_screen->loadBitmap("NOTE.CPS", 3, 3, 0);
 	}
diff --git a/engines/kyra/sequence/sequences_lok.cpp b/engines/kyra/sequence/sequences_lok.cpp
index 2da6a50c81..97e5c4c7a9 100644
--- a/engines/kyra/sequence/sequences_lok.cpp
+++ b/engines/kyra/sequence/sequences_lok.cpp
@@ -264,6 +264,8 @@ bool KyraEngine_LoK::seq_introStory() {
 		_screen->loadBitmap("TEXT_ITA.CPS", 3, 3, &_screen->getPalette(0));
 	else if (_flags.lang == Common::IT_ITA && _flags.isTalkie)
 		_screen->loadBitmap("TEXT_ENG.CPS", 3, 3, &_screen->getPalette(0));
+	else if (_flags.lang == Common::RU_RUS && _flags.isTalkie)
+		_screen->loadBitmap("TEXT_ENG.CPS", 3, 3, &_screen->getPalette(0));
 	else
 		warning("no story graphics file found");
 




More information about the Scummvm-git-logs mailing list