KYRA: Extract Korean strings, preliminary work

This commit is contained in:
eientei 2022-06-04 03:34:37 +12:00 committed by athrxx
parent c081f1c2e8
commit 7c0659d859
9 changed files with 377 additions and 8 deletions

View File

@ -38,7 +38,7 @@
enum {
kKyraDatVersion = 116
kKyraDatVersion = 117
};
const ExtractFilename extractFilenames[] = {
@ -1203,6 +1203,7 @@ const TypeTable languageTable[] = {
{ HE_ISR, 8 },
{ ZH_CHN, 9 },
{ ZH_TWN, 10 },
{ KO_KOR, 11 },
{ -1, -1 }
};

View File

@ -43,6 +43,7 @@ const Game kyra1Games[] = {
{ kKyra1, kPlatformDOS, kNoSpecial, IT_ITA },
{ kKyra1, kPlatformDOS, kNoSpecial, ES_ESP },
{ kKyra1, kPlatformDOS, kOldFloppy, RU_RUS },
{ kKyra1, kPlatformDOS, kNoSpecial, KO_KOR },
{ kKyra1, kPlatformDOS, kNoSpecial, ZH_TWN },
{ kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY },

View File

@ -38,6 +38,7 @@
#include "resources/lok_dos_oldfloppy.h"
#include "resources/lok_dos_oldfloppy_russian.h"
#include "resources/lok_dos_spanish.h"
#include "resources/lok_dos_korean.h"
#include "resources/lok_dos_chinese_trad.h"
#include "resources/lok_dos_cd.h"
@ -438,6 +439,30 @@ static const ResourceProvider resourceProviders[] = {
{ k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ConfigStringsDOSSpanishProvider },
{ k1TwoByteFontLookupTable, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1TwoByteFontLookupTableDOSProvider },
{ k1CreditsStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1k1CreditsStringsDummyDOSProvider },
{ k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1IntroStringsDOSKoreanProvider },
{ k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1ItemNamesDOSKoreanProvider },
{ k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1TakenStringsDOSKoreanProvider },
{ k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1PlacedStringsDOSKoreanProvider },
{ k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1DroppedStringsDOSKoreanProvider },
{ k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1NoDropStringsDOSKoreanProvider },
{ k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1PutDownStringDOSKoreanProvider },
{ k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1WaitAmuletStringDOSKoreanProvider },
{ k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1BlackJewelStringDOSKoreanProvider },
{ k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1HealingTipStringDOSKoreanProvider },
{ k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1PoisonGoneStringDOSKoreanProvider },
{ k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1ThePoisonStringsDOSKoreanProvider },
{ k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1FluteStringsDOSKoreanProvider },
{ k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1WispJewelStringsDOSKoreanProvider },
{ k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1MagicJewelStringsDOSKoreanProvider },
{ k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1FlaskFullStringDOSKoreanProvider },
{ k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1FullFlaskStringDOSKoreanProvider },
{ k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1OutroHomeStringDOSKoreanProvider },
{ k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1VeryCleverStringDOSKoreanProvider },
{ k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1GUIStringsDOSKoreanProvider },
{ k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1NewGameStringDOSKoreanProvider },
{ k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1ConfigStringsDOSKoreanProvider },
{ k1TwoByteFontLookupTable, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1TwoByteFontLookupTableDOSProvider },
{ k1CreditsStrings, kKyra1, kPlatformDOS, kNoSpecial, KO_KOR, &k1k1CreditsStringsDummyDOSProvider },
{ k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, ZH_TWN, &k1IntroStringsDOSChineseTradProvider },
{ k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, ZH_TWN, &k1ItemNamesDOSChineseTradProvider },
{ k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, ZH_TWN, &k1TakenStringsDOSChineseTradProvider },

View File

@ -0,0 +1,335 @@
static const char *const k1IntroStringsDOSKorean[51] = {
"This is a text test - 1",
"This is a text test - 2",
"\xb5\xa1\x9c\x85\xa0\x65\xb7\xa1\xb4\xa1! \xc4i\x9c\x62...",
"...\xc1\xa5\xaf\x61\x9c\xe5 \xb5\xb5\xc0\x61\x9f\xb1\xb7\x65 \xb5\x61\xb8\xe5\xd0\x61\x8a\x85!",
"\x90\x61 \xa1\xa9\x9c\x61?, \x90\x81 \xb7\xa1\x9fq \xb4i\xbb\xa1? \xc7\xa9\xc7\xa9\xc7\xa9...",
"\xa0i\xc5\xb1! \x99\xa1 \x90\xe1\x90\xa1?",
"\x91\x41\x88\x61 \xc8i\xb5\xa2\xd0\x65\x88\xe5 \xb7\xa1\xa3\xa1 \x97i\xb4\xf6\x94\x61.",
"\xb7\xa1\x9c\xfd\x89\x41 \x90\x61\xc8\x61\x90\x61\x9f\xa1\x9c\x61\x89\xa1 \xb5\x81\xacw\xb7\x65 \xd0\x96\xbb\xa1\xa0\x65...",
"\xc6\x81\xc6\x82...\xbb\xa5\xb8\xf7\xd0\x81 \xc4i\x9c\x62, \xc3\xb1\xc0\x62\xd0\x61\x9c\x61\x8a\x81.",
"\xb7\xa1\xb9\x41\xa6\x81\xc8\xe1 \xb7\xa1\x98w\xb5\x41\xac\xe5 \x90\x81\x88\x61 \xa4\xf3\xb7\xa1\xb4\xa1!",
"\x91\x41 \xa5\xa1\xb8i\x88\xf5 \xb4\xf4\x93\x65 \xa0\x61\xa4\xf3\x98\x61\xb6\xe5 \xaf\xa5\x89w\x95\xa1 \xb4\x65\xb3\x61\xbb\xa1.",
"\x8b\x61\x9c\xfd\x94\x61\xa1\x65 \x9bu\x94\x81\x9d\xa1 \xd0\x81\xa5\xa1\xaf\xa1\xbb\xa1!",
"\x90\xe1\xb5\x41\x89\x41 \xb3i \xa0\x61\xa4\xf3\xb7\x65 \x90q\xb4\x61\xb7\xb6\x94\x61.",
"\xd3w! \x8b\x61\x89\x41 \xad\xa1\xb6\xa5\xb7\xa1\x9c\x61\xa1\x65 \x97i\xb4\xe1\xba\x89\x8d\x41... \x90\x65 \xc0\x62\xd0\x61\x93\xa1\x8c\x61!",
"...\xb7\xa1\xb9\x41 \x90\xe1\x93\x65 \x95\xa9\xb7\xa1\xb4\xa1, \x95\xa9... \x95\xa9 \xb4i\xbb\xa1?!",
"\x90\x65 \xb7\xa1\xb9\x41 \x88\x61\x89V\xb4\xe1. \xb8i\xb7\xb6\x89\x41\x90\x61 \xc4i\x9c\x62...",
"\xb7\xa1 \x90\x61\x9c\x61\x93\x65 \x94\xe1\xb6\x82 \xb9\xbd\xb4\x61\xbb\xa9\x8c\xe1\xb4\xa1!",
"\xc7\xa1\x9c\x65\x97\xa1\xb4\x61\x93\x65 \x90\x81 \xad\xa5\xb4\x65\xb5\x41 \xb7\xb6\xb4\xe1! \xd0\x61\xd0\x61\xd0\x61~",
"\xb4\xe1\x9f\xb5\x89\xd7\x94\x81 \xa0i\xc5\xb1\xb7\xa1 \xc8i\xc2\x89\xd0\x96\x94\x61!",
"\x8b\x61\x93\x65 \xbb\xa1\x8bq \xc4\x61\xb7\xa1\x9c\x61\xb9Q\xb7i \xc9\xb7\xb9\x41\xd0\x61\x89\xa1 \xb7\xb6\x94\x61...",
"...\xc7\xa1\x9c\x65\x97\xa1\xb4\x61\xb7\x81 \xa1\xa1\x97\x65 \xa0\x61\xa4\xf3\xb7\x81 \x8b\x65\xb6\xa5!",
"",
"\x90\x81 \xa4i\xb7i \x88\xe9\x94\x61\x93\xa1, \xa2\x81\xb4\xf1\xd0\x61\x8a\x85!",
"\x8b\x61\x9c\xfd\xbb\xa1, \x91\x41\x89\x41 \xcb\x62\xa5i\xd3\xa1 \xb4i\x9d\x61 \xba\x89 \x88\xf5\xb7\xa1 \xb7\xb6\x94\x61...",
"\xa4\x61\x9d\xa1, \xb6\x95\x8b\xa1\x93\x65 \xa0\x61\xa4\xf3\xb7\xa1\xbb\xa1!",
"\x90\x65 \x90\xe1\xb5\x41\x89\x41 \xb8\xf7\xbb\xa2\xd0\x61\x89\x41 \x89w\x89\xa1\x9fi \xd0\x81\xba\x81\xa0\x61.",
"\x8b\x61 \x90\x61\xa2\x81\xb5\x45 \xb5\xa1\x9f\x61\xbb\xa1 \xa0i\xb4\x61\x9c\x61, \x8a\xe1\xb5\x61\xb6\x85 \x94\x61\x9cq\xba\xe1\xb4\xa1!",
"\x8b\x61 \x90\x61\xa2\x81\xb6\xe1\x9d\xa1 \xb5\xa1\x9f\x61\xbb\xa1 \xa0\x61\x9c\x61, \xb5\x81\xab\x65 \x94\x61\x9cq\xba\xe1\xb4\xa1!",
"\xb5\x41\xa7\xa1~!",
"\x8b\x61\x88\xf5\xb7\xa1 \xb8\xf7\x94s\xb7\xa1\x91\x41...",
"...\xb4\x65 \x8b\x61\x9c\xe5\x88\x61?",
"\xd0\x61 \xd0\x61 \xd0\x61...",
"\x90\x81 \xad\xa5\x88\x61\x9c\x62\xb7\xa1...",
"\x90\x81\x88\x61 \xaci\xb4\x61\xb7\xb6\x94\x61\x93\xa1...!",
"\xa7\x61\x9c\x85\x97\x65!",
"\xd0i\xb4\x61\xa4\xe1\xbb\xa1! \xb6\x81\x9f\xa1\x88\x61 \x97\x61\x97\xa1\xb4\xe1 \xd0\x81\x90\x96\xb4\xe1\xb6\x61!",
"\xb4\x61\x93\xa1\x94\x61! \x91\x41\x88\x61 \xd0\x81\x90\x85 \x88\xe1\xb4\xa1!",
"\xa7\x61\x9c\x85\x97\x65 \x94\x81\xb5\xd7 \xa0\x65\xad\x41!!!",
"\xc7\xa1\x9c\x65\x97\xa1\xb4\x61\xb7\x81 \xb5w\x89\xd7\xb7i \xb6\xe1\xd0\x61\xb5\x61!!",
"\xb7\xa1\xb9\x45 \xb5\x81\xb8\xe5\xb7\x81 \xc7\xa1\x9c\x65\x97\xa1\xb4\x61\x9fi \x94\x61\xaf\xa1 \x96\x41\xc0x\xb4\x61\xb4\xa1\x89V\x94\x61.",
"\xb9\xbd\xb7\x65 \xac\x97\x88\x62\xb7\xa1\xb5\x81\xb6\x61, \xd0i\xb4\x61\xa4\xe1\xbb\xa1.",
"\x90\x61\xb7\x81 \xc0\xf5\xa4\xe5\xbc\x81 \xb5\xd7\xa1w\xb7\x61\x9d\xa1\xb0\xe1...",
"\xb7\xa1 \xcb\x65\xcb\x65\xd0\x65 \xac\x85\x97i\xb7i \xc7\xa1\x9c\x65\x97\xa1\xb4\x61\xb7\x81 \x89\xb7\xaf\xa2 \xaf\xa5\xa4i\x9d\xa1 \xb8\xf7\xd0\x65\x94\x61!",
"\xa7\x61\x9c\x85\x97\x65, \xb8i \xd0\x61\xadv\xafs\x93\xa1\x94\x61.",
"\xb8\x61\xb5\x65\xb7\x65 \x94\xe1 \xb7\xa1\xacw \xafi\xcfq\xb5\x41 \xb8q\x89\x61\xb7\xb6\xbb\xa1 \xb4g\x89\xa1...",
"\x94w\xaf\xa5\xb7\x81 \xc3\xa5\x8a\x81\x97i\x95\xa1 \xb8\xf7\xacw\xb7\x61\x9d\xa1 \x95\xa9\xb4\x61\xb5\xd6\xafs\x93\xa1\x94\x61!",
"\xa7\x61\x9f\xa5...",
"\xa0i\xc5\xb1\xb7\xa1 \xc8i\xc2\x89\xd0\x96\xad\xa1!",
"\xb9\xa1\xa0\x65\x88\x65 \x90\x81\x89\x41\x9d\xa1 \xb5\xa9 \x88\xf5\xb7\xa1\xb5\xa1.",
"\xa7\x61\x9c\x85\x97\x65\xb7i \x95\xa1\xb5\xc1\xba\x81\xaf\xa1\xb5\xa1...",
""
};
static const StringListProvider k1IntroStringsDOSKoreanProvider = { ARRAYSIZE(k1IntroStringsDOSKorean), k1IntroStringsDOSKorean };
static const char *const k1ItemNamesDOSKorean[107] = {
"\xac\xe2\x9f\x41\xac\xe2",
"\xb8\x61\xae\x81\xb8\xf7",
"\x90q\xb5\xa2",
"\x94\x61\xb7\xa1\xb4\x61\xa1\xa5\x97\x61",
"\xb5\x41\xa0\xe1\x9ci\x97\x61",
"\xbb\xa5\xba\x81",
"\x9e\x81\xa7\xa1",
"\x88q\x9cq\xac\xe2",
"\xac\x61\xcc\x61\xb7\xa1\xb4\xe1",
"\xb5\xa1\xcci",
"\xc9\xa1\xcc\x61\xbb\x61",
"\xb4\xe9\x9e\x82\xa0\x61\x91\xa1",
"\xc8\x65\xac\x97\xac\xe2",
"\xb6\xa9\xb8w\xac\xe2",
"\xa2\x81\xbb\xa1\x88\x81\xac\xe2",
"\xc0\xe5\xb5\x65\xb8\x61\xac\xe2",
"\xb8w\xa3\xa1",
"\xcbI\x9f\xb3",
"\x90\x65\xc1\xa1",
"\xb7\x65\xb8w\xa3\xa1",
"\xb8\x62\xb7\x65 \xb7\x65\xb9\xa1\x88\x62\xacw",
"\xb7\x65\xd1\xc1",
"\x8bq\xd1\xc1",
"\x8bq\xa4\x65\xbb\xa1",
"\xb5\xd7\xb7\x81 \xb8\x65",
"\xad\xa9\xa4w\xb6\x89",
"\x95\xa1\xc9\xa1\x9f\xa1",
"\xd1\xa1\x96\x81",
"\xd0w\xacw \xa7\xb9\x90\x61\x93\x65 \"\xa6\x89\x98i\x8b\xa1",
"\xa6\x89\x98i\x8b\xa1",
"\xa6\x89\x98i\x8b\xa1",
"\xa6\x89\x98i\x8b\xa1",
"\xa6\x89\x98i\x8b\xa1",
"\xa6\x89\x98i\x8b\xa1",
"\xa2\x89\x89\xa1\x8b\xa1",
"\xa2\x89\x89\xa1\x8b\xa1 \xa9\x61",
"\xb4\xb7\x89\xa1\x8b\xa1 \x94\x61\x9f\xa1",
"\xa9\x61",
"\xac\x61\x89\xc1",
"\xac\x61\x89\xc1\xa9\x61",
"\xa7i\x9e\x81\xa5\x41\x9f\xa1",
"\xa4\xe1\xac\xf5",
"\xa1\x41\xa1\xa1",
"\x94\x81\x9f\xa1\xac\xe2",
"\xc9\xb3",
"\xac\x97\xa1w\x89\xa1\x9f\xa1",
"\x8b\xb5\xc8\xe9",
"\x89\x81\x9c\x65",
"\xb7\xbc\xac\x61\x8a\xe1",
"\xc9\xa1\x8f\xa1\xce\x89",
"\xa5i\x99\xb7\xa5i",
"\xae\x81\xb8\xf7\x8a\x81\xafi",
"\x92\x85\xa2\x89",
"\x88\xe1\xb6\x89",
"\xb4\xe9\xb7q \xb9\xa1\x88\x62",
"\xcfi\x9e\x95",
"\xa1\xa1\x9c\x81\xaf\xa1\x89\x81",
"\xae\x41 \xb5i\xae\x41",
"\xb5\xa2 \xb5i\xae\x41",
"\xd3\x62\xb6\x61\xac\xe2 \xb5i\xae\x41",
"\xa8i\x88\x65\xac\x82 \xb4\xa2",
"\xa8i\x88\x65\xac\x82 \xb4\xa2",
"\xce\x81\x9f\x65\xac\x82 \xb4\xa2",
"\xce\x81\x9f\x65\xac\x82 \xb4\xa2",
"\x91\xa1\x9c\x65\xac\x82 \xb4\xa2",
"\x91\xa1\x9c\x65\xac\x82 \xb4\xa2",
"\xc1\xa1\x9d\xa2\xac\x82 \xb4\xa2",
"\xb5\xa1\x9d\x45\xbb\xa1\xac\x82 \xb4\xa2",
"\xa5\xa1\x9c\x61\xac\x82 \xb4\xa2",
"\xa2\x81\xbb\xa1\x88\x81\xac\x82 \xb4\xa2",
"\xa0j\xb7\x65\xa2\x89",
"\xa0j\xb7\x65\xa2\x89",
"\xad\xa1\x8bq\xa2\x89",
"\xad\xa1\x8bq\xa2\x89",
"\x89\xd7\xc0\xe5\xae\x81",
"\x89\xd7\xc0\xe5\xae\x81",
"\xa0\x61\xa4\xf3\xae\x81",
"\xa0\x61\xa4\xf3\xae\x81",
"\xa7\xa5 \xcfi\x9c\x61\xaf\x61\xc7\x61",
"\xa7\xa5 \xcfi\x9c\x61\xaf\x61\xc7\x61",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\x96\x81\x9e\x81\xa0\x61\x8b\xa1",
"\xb4\xb7\xcf\xa1\xbb\xa1 \xb9\xa1\x88\x62",
"\xb4\xb7\xcf\xa1\xbb\xa1 \xb9\xa1\x88\x62",
"\xb4\xb7\xcf\xa1\xbb\xa1 \xb9\xa1\x88\x62",
"\xb4\xb7\xcf\xa1\xbb\xa1 \xb9\xa1\x88\x62",
"\xb4\xb7\xcf\xa1\xbb\xa1 \xb9\xa1\x88\x62",
"\xa8i\x88\x65\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\xb5\xa1\x9d\x45\xbb\xa1\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\x91\xa1\x9c\x65\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\xc1\xa1\x9d\xa2\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\xc0\xf7\x9d\xa2\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\xce\x81\x9f\x65\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\xa5\xa1\x9c\x61\xac\x82\xb7\x81 \xa0\x61\xa4\xf3\xb7\x81 \x95\xa9",
"\xa2\x81\x88\xe1\xb6\x85 \x95\xa9",
"\xb5\xd7\x89\xc5",
"\xbb\xa1\xd2\xe1\xa5\xb7",
"\x8bq \xb5i\xae\x41",
"\xb4i\xae\x81\xb4\xf4\x93\x65 \xa2\x89\x88\xe5"
};
static const StringListProvider k1ItemNamesDOSKoreanProvider = { ARRAYSIZE(k1ItemNamesDOSKorean), k1ItemNamesDOSKorean };
static const char *const k1TakenStringsDOSKorean[2] = {
" \xbb\xb3\xb4\xf6\xb7q",
" \xbb\xb3\xb4\xf6\xb7q"
};
static const StringListProvider k1TakenStringsDOSKoreanProvider = { ARRAYSIZE(k1TakenStringsDOSKorean), k1TakenStringsDOSKorean };
static const char *const k1PlacedStringsDOSKorean[1] = {
" \x91\xbd\xb4v\xb7q"
};
static const StringListProvider k1PlacedStringsDOSKoreanProvider = { ARRAYSIZE(k1PlacedStringsDOSKorean), k1PlacedStringsDOSKorean };
static const char *const k1DroppedStringsDOSKorean[1] = {
" \x91\xbd\xb4v\xb7q"
};
static const StringListProvider k1DroppedStringsDOSKoreanProvider = { ARRAYSIZE(k1DroppedStringsDOSKorean), k1DroppedStringsDOSKorean };
static const char *const k1NoDropStringsDOSKorean[2] = {
"\xb5\x61\x8b\xa5 \x94\xe1\xb7\xa1\xacw\xb7\x81 \xa2\x89\x88\xe5\xb7i \x91\xbd\xbb\xa1 \xa1\xb5\xd0\x81.",
"\x8b\x61\x89\xb5\xb5\x45 \x91\xbd\xb7i \xae\x81 \xb4\xf4\xb4\xe1."
};
static const StringListProvider k1NoDropStringsDOSKoreanProvider = { ARRAYSIZE(k1NoDropStringsDOSKorean), k1NoDropStringsDOSKorean };
static const char *const k1PutDownStringDOSKorean[1] = {
"\xb7\xa1\x88\xe9 \xa0\xe5\xb8\xe1 \x90\x81\x9d\x61 \x91\xbd\x93\x65\x89\x41 \xb9\xbd\x89V\xb4\xe1."
};
static const StringListProvider k1PutDownStringDOSKoreanProvider = { ARRAYSIZE(k1PutDownStringDOSKorean), k1PutDownStringDOSKorean };
static const char *const k1WaitAmuletStringDOSKorean[1] = {
"\x90\x81 \xa6\x81\xb8\xe2\xb7\x81 \xd3\xb1\xb7\xa1 \xd2\x41\xa5\xa2\x96I \x98\x81 \x8c\x61\xbb\xa1 \x8b\xa1\x94\x61\x9d\x61\xb4\xa1 \xd0i \x88\xf5 \x88{\xb4\x61."
};
static const StringListProvider k1WaitAmuletStringDOSKoreanProvider = { ARRAYSIZE(k1WaitAmuletStringDOSKorean), k1WaitAmuletStringDOSKorean };
static const char *const k1BlackJewelStringDOSKorean[1] = {
"\xb7\xa1\x88\xe5 \xa5\xa1\xac\xe2\xb7\xa1\xb8g\xb4\x61, \x8b\x61\x9c\xe5\x95\x41 \xb5\xe1 \x88\xf1\xb7\x65 \xac\x82\xb7\xa1\xbb\xa1?"
};
static const StringListProvider k1BlackJewelStringDOSKoreanProvider = { ARRAYSIZE(k1BlackJewelStringDOSKorean), k1BlackJewelStringDOSKorean };
static const char *const k1HealingTipStringDOSKorean[1] = {
"\xd3\x61\xb7q, \xb7\xa1\x88\xe5 \x90\x81\x88\x61 \x94\x61\xc1v\xb7i \x98\x81 \xac\x61\xb6w\xd0\x61\xa1\x65 \xb9\xbd\x89V\x93\x65\x88\xe9."
};
static const StringListProvider k1HealingTipStringDOSKoreanProvider = { ARRAYSIZE(k1HealingTipStringDOSKorean), k1HealingTipStringDOSKorean };
static const char *const k1PoisonGoneStringDOSKorean[2] = {
"\xb5\xc1!~, \x8f{\x90\x81\xba\x81\x93\x65\x95\x41!",
"\x95\xa2\x8b\xa1\xb6\x85\xb7\xa1 \xac\x61\x9c\x61\xb9v\xb4\xe1!"
};
static const StringListProvider k1PoisonGoneStringDOSKoreanProvider = { ARRAYSIZE(k1PoisonGoneStringDOSKorean), k1PoisonGoneStringDOSKorean };
static const char *const k1ThePoisonStringsDOSKorean[4] = {
"\x95\xa2...",
"\xb7\x61\xb7\x61... \xae\x91\xb7\xa1 \xa0\x62\xd1\x61...",
"\x8b\xa1\xb6\x85\xb7\xa1 \xb4\xf4\xb4\xe1...",
"\x8b\x61 \xa4\x91\xb7\x65 \xa6\x85\xa1w\xd3\xa1\r...\x95\xa2\xa4\x91\xb7\xa1\xb4\xa1!"
};
static const StringListProvider k1ThePoisonStringsDOSKoreanProvider = { ARRAYSIZE(k1ThePoisonStringsDOSKorean), k1ThePoisonStringsDOSKorean };
static const char *const k1FluteStringsDOSKorean[2] = {
"\xb6\x97\xb8w\xd0\x65 \xad\xa1\x9f\xa1\x93\x65 \xb4\x61\x93\xa1\x8a\x85.",
"\x89\x41\x94\x61\x88\x61 \xa0\x61\xbb\xa1\xa0\x62 \xb7q\xb7\xa1 \x90\xe1\xa2\x81 \x91\xbc\xb4\x61!"
};
static const StringListProvider k1FluteStringsDOSKoreanProvider = { ARRAYSIZE(k1FluteStringsDOSKorean), k1FluteStringsDOSKorean };
static const char *const k1WispJewelStringsDOSKorean[3] = {
"\x8b\x61\x88\xe9 \xd0\x61\x89\xa1\xcf\x65 \x8b\xa1\xa6\x85\xb7\xa1 \xb4\x61\x90\xa1.",
"\xa0\xe5\xb8\xe1 \x90\x81",
", \x90\x81\x9d\x61\x91\xc1\xb4\xa1 \x89V\x93\x65\x88\xe9."
};
static const StringListProvider k1WispJewelStringsDOSKoreanProvider = { ARRAYSIZE(k1WispJewelStringsDOSKorean), k1WispJewelStringsDOSKorean };
static const char *const k1MagicJewelStringsDOSKorean[1] = {
"\xb7\xa1\xacw\xd0\x65 \x93\x61\x8f\xb1\xb7\xa1 \xb5\xa1\x93\x65\x88\xe9"
};
static const StringListProvider k1MagicJewelStringsDOSKoreanProvider = { ARRAYSIZE(k1MagicJewelStringsDOSKorean), k1MagicJewelStringsDOSKorean };
static const char *const k1FlaskFullStringDOSKorean[1] = {
"\xcfi\x9c\x61\xaf\x61\xc7\x61\x93\x65 \xb7\xa1\xa3\xa1 \x8d\xc2 \xc0\x61 \xb7\xb6\xafs\x93\xa1\x94\x61."
};
static const StringListProvider k1FlaskFullStringDOSKoreanProvider = { ARRAYSIZE(k1FlaskFullStringDOSKorean), k1FlaskFullStringDOSKorean };
static const char *const k1FullFlaskStringDOSKorean[4] = {
"\xcfi\x9c\x61\xaf\x61\xc7\x61\x93\x65 \xbb\xa1\x8bq \xa0j\xb7\x65\r\xa2\x89\x9d\xa1 \xc0\x81\xb6\xa1\xb9v\xafs\x93\xa1\x94\x61.",
"\xcfi\x9c\x61\xaf\x61\xc7\x61\x93\x65 \xbb\xa1\x8bq \xad\xa1\x8bq\xa2\x89\x9d\xa1\r\xc0\x81\xb6\xa1\xb9v\xafs\x93\xa1\x94\x61.",
"\xcfi\x9c\x61\xaf\x61\xc7\x61\x93\x65 \xbb\xa1\x8bq \x89\xd7\xc0\xe5\xae\x81\x9d\xa1\r\xc0\x81\xb6\xa1\xb9v\xafs\x93\xa1\x94\x61.",
"\xa0\x61\xa4\xf3\xb7\x81 \xa2\x89."
};
static const StringListProvider k1FullFlaskStringDOSKoreanProvider = { ARRAYSIZE(k1FullFlaskStringDOSKorean), k1FullFlaskStringDOSKorean };
static const char *const k1OutroHomeStringDOSKorean[1] = {
"\xbb\xb3"
};
static const StringListProvider k1OutroHomeStringDOSKoreanProvider = { ARRAYSIZE(k1OutroHomeStringDOSKorean), k1OutroHomeStringDOSKorean };
static const char *const k1VeryCleverStringDOSKorean[1] = {
"\xb4\x61\xba\x81 \xb5w\x9f\xa1\xd0\x61\x8a\x85! \x8b\x61\x9c\xe1\x90\x61 \xb4\x61\xa2\x81\x9f\xa1 \xb4\x81\xb0\xe1\x95\xa1 \xad\xa1\xb6w\xb4\xf4\xb4\xe1!"
};
static const StringListProvider k1VeryCleverStringDOSKoreanProvider = { ARRAYSIZE(k1VeryCleverStringDOSKorean), k1VeryCleverStringDOSKorean };
static const char *const k1GUIStringsDOSKorean[28] = {
"\xc7\xa1\x9c\x65\x97\xa1\xb4\x61\xb7\x81 \xb8\xe5\xac\xe9",
"\xb8\xe1\xb8w\x96\x45 \x89\x41\xb7\xb1\xb7i \xa6\x89\x9c\xe1\xb5\xb3\x93\xa1\x94\x61",
"\x89\x41\xb7\xb1\xb7i \xb8\xe1\xb8w\xd0s\x93\xa1\x94\x61",
"\xac\xe5\xc8\x82\xac\x61\xd0w",
"\xc7\xa1\x9c\x65\x97\xa1\xb4\x61\x9fi \x98\xe1\x90s\x93\xa1\x94\x61",
"\x89\x41\xb7\xb1\xb7i \x89\x81\xad\xa2\xd0s\x93\xa1\x94\x61",
"\xac\xe5\xc8\x82\xac\x61\xd0w",
"\xb4\xe1\x98\xe5 \xcc\x61\xb7\xa9\xb7i \xa6\x89\x9c\xe1\xb5\xa9\x8c\x61\xb6\x61?",
"\xb8\xe1\xb8w\xd0i \xb6\xe1\xc3\xa1\x9fi \xac\xe5\xc8\x82\xd0\x61\xad\x41\xb6\x61",
"[ \xa7\xa5 \x89\xb7\x88\x65 ]",
"\xc2\xe1\xad\xa1",
"\xb8\xe1\xb8w\xd0i \x89\x41\xb7\xb1\xb7\x81 \xac\xe9\xa1w\xb7i \xb7\xb3\x9d\x62\xd0\x61\xad\x41\xb6\x61",
"\xb8\xe1\xb8w",
"\xcd\x65\xd3\xa1 \xae\xe1\x88\xe1\x9c\x61, \xa7\x61\x9c\x85\x97\x65.",
"\xc7\xa1\x9c\x65\x97\xa1\xb4\x61\x9fi \x98\xe1\x90\x61\xaf\xa1\x89V\xafs\x93\xa1\x8c\x61?",
"XXX",
"XXX",
"XXXXXXX",
"XXXXXXXXX",
"\xba\x81 \xa1\x41\x93\x41",
"\xc5q",
"\x8fq",
"\xb5\x81",
"\xb4\x61\x93\xa1\xb5\xa1",
"R\xd1,\\\xd1,a\xd1,f\xd1,k\xd1,u\xd1,\xd1,\x84\xd1,\x89\xd1,\x88\xe8\x93\x65 \xad\xa2\x95\xa1 ",
"\xa2\x85\xb8w \xad\xa2\x95\xa1 ",
"\xb7q\xb4\x62",
"\xad\xa1\x9f\xa1"
};
static const StringListProvider k1GUIStringsDOSKoreanProvider = { ARRAYSIZE(k1GUIStringsDOSKorean), k1GUIStringsDOSKorean };
static const char *const k1NewGameStringDOSKorean[1] = {
"[ \x89\x41\xb7\xb1\xb7i \xac\x81\x9d\xa1 \xaf\xa1\xb8\x62\xd0s\x93\xa1\x94\x61 ]"
};
static const StringListProvider k1NewGameStringDOSKoreanProvider = { ARRAYSIZE(k1NewGameStringDOSKorean), k1NewGameStringDOSKorean };
static const char *const k1ConfigStringsDOSKorean[9] = {
"\x88\x61\xb8w \x93\x61\x9f\xb1",
"\x93\x61\x9f\xb1",
"\xa5\xa1\xc9\xb7",
"\xa8\x61\x9fq",
"\x88\x61\xb8w \xa8\x61\x9fq",
"\x88\x61\xb8w \x93\x61\x9f\xb1",
"\xa5\xa1\xc9\xb7",
"\xa8\x61\x9fq",
"\xae\x81\x95\xb7"
};
static const StringListProvider k1ConfigStringsDOSKoreanProvider = { ARRAYSIZE(k1ConfigStringsDOSKorean), k1ConfigStringsDOSKorean };

View File

@ -259,11 +259,11 @@ const KYRAGameDescription adGameDescs[] = {
{ // from trembyle
{
"kyra1",
msg_missingLangResources, // Reason for being unsupported
"Extracted",
AD_ENTRY1("GEMCUT.EMC", "57907d931675dbd16386c1d81d18fee4"),
Common::KO_KOR,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
ADGF_NO_FLAGS,
GUIO5(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA)
},
KYRA1_FLOPPY_FLAGS

View File

@ -95,7 +95,7 @@ KyraEngine_LoK::KyraEngine_LoK(OSystem *system, const GameFlags &flags)
_malcolmFrame = 0;
_malcolmTimer1 = _malcolmTimer2 = 0;
_defaultFont = (_flags.lang == Common::ZH_TWN) ? Screen::FID_CHINESE_FNT : ((_flags.lang == Common::JA_JPN) ? Screen::FID_SJIS_FNT : Screen::FID_8_FNT);
_defaultFont = (_flags.lang == Common::ZH_TWN) ? Screen::FID_CHINESE_FNT : ((_flags.lang == Common::JA_JPN) ? Screen::FID_SJIS_FNT : ((_flags.lang == Common::KO_KOR) ? Screen::FID_KOREAN_FNT : Screen::FID_8_FNT));
_defaultLineSpacing = (_flags.lang == Common::ZH_TWN) ? 2 : 0;
}
@ -309,6 +309,9 @@ Common::Error KyraEngine_LoK::go() {
_screen->setTextMarginRight(312);
}
if (_flags.lang == Common::KO_KOR)
_screen->loadFont(Screen::FID_KOREAN_FNT, "MK15.BIT");
_screen->setFont(_defaultFont);
_screen->_lineSpacing = _defaultLineSpacing;

View File

@ -38,7 +38,7 @@
namespace Kyra {
#define RESFILE_VERSION 116
#define RESFILE_VERSION 117
namespace {
bool checkKyraDat(Common::SeekableReadStream *file) {
@ -96,6 +96,7 @@ const IndexTable iLanguageTable[] = {
{ Common::HE_ISR, 8 },
{ Common::ZH_CHN, 9 },
{ Common::ZH_TWN, 10 },
{ Common::KO_KOR, 11 },
{ -1, -1 }
};
@ -987,7 +988,7 @@ void KyraEngine_LoK::loadMainScreen(int page) {
_screen->clearPage(page);
bool success = false;
static const char *pattern[] = { "15", "_ENG", "_FRE", "_GER", "_SPA", "_ITA", "_HEB", "" };
static const char *pattern[] = { "15", "_ENG", "_FRE", "_GER", "_SPA", "_ITA", "_HEB", "_HAN", "" };
for (int i = 0; i < ARRAYSIZE(pattern) && !success; ++i) {
Common::String tryFile = Common::String::format("MAIN%s.CPS", pattern[i]);
if ((success = _res->exists(tryFile.c_str())))

View File

@ -1036,7 +1036,10 @@ int KyraEngine_LoK::o1_specialEventDisplayBrynnsNote(EMCState *script) {
else if (_flags.lang == Common::RU_RUS)
_screen->loadBitmap("NOTEENG.CPS", 3, 3, nullptr);
} else {
_screen->loadBitmap("NOTE.CPS", 3, 3, nullptr);
if (_flags.lang == Common::KO_KOR)
_screen->loadBitmap("HAN_NOTE.CPS", 3, 3, nullptr);
else
_screen->loadBitmap("NOTE.CPS", 3, 3, nullptr);
}
_screen->copyRegion(63, 8, 63, 8, 194, 128, 2, 0);
_screen->updateScreen();

View File

@ -252,7 +252,7 @@ bool KyraEngine_LoK::seq_introStory() {
return false;
bool success = false;
static const char *pattern[] = { "", "_ENG", "_FRE", "_GER", "_SPA", "_ITA", "_HEB" };
static const char *pattern[] = { "", "_ENG", "_FRE", "_GER", "_SPA", "_ITA", "_HEB", "_HAN" };
for (int i = 0; i < ARRAYSIZE(pattern) && !success; ++i) {
Common::String tryFile = Common::String::format("TEXT%s.CPS", pattern[i]);
if ((success = _res->exists(tryFile.c_str())))