[Scummvm-git-logs] scummvm master -> 07df840bd9fe50202d6c80caeb9ce8a78e0677b5
athrxx
athrxx at scummvm.org
Tue Oct 26 15:59:02 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ece7e26b41 KYRA: (MR/Traditional Chinese) - add support
07df840bd9 NEWS: mention KYRA 3 Traditional Chinese support
Commit: ece7e26b414e4e9169e3d85e34da8edd89bb0633
https://github.com/scummvm/scummvm/commit/ece7e26b414e4e9169e3d85e34da8edd89bb0633
Author: athrxx (athrxx at scummvm.org)
Date: 2021-10-26T17:57:01+02:00
Commit Message:
KYRA: (MR/Traditional Chinese) - add support
Changed paths:
A devtools/create_kyradat/resources/mr_dos_cd_chinese_trad.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/engine/kyra_mr.cpp
engines/kyra/engine/kyra_v2.cpp
engines/kyra/engine/kyra_v2.h
engines/kyra/gui/gui_v1.cpp
engines/kyra/resource/staticres.cpp
diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index 80d7e5c87f..7cd8a3a51a 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -39,7 +39,7 @@
enum {
- kKyraDatVersion = 110
+ kKyraDatVersion = 111
};
const ExtractFilename extractFilenames[] = {
@@ -1191,15 +1191,16 @@ byte getGameID(int game) {
const TypeTable languageTable[] = {
{ UNK_LANG, 0 },
- { EN_ANY, 1 },
- { FR_FRA, 2 },
- { DE_DEU, 3 },
- { ES_ESP, 4 },
- { IT_ITA, 5 },
- { JA_JPN, 6 },
- { RU_RUS, 7 },
- { HE_ISR, 8 },
- { ZH_CNA, 9 },
+ { EN_ANY, 1 },
+ { FR_FRA, 2 },
+ { DE_DEU, 3 },
+ { ES_ESP, 4 },
+ { IT_ITA, 5 },
+ { JA_JPN, 6 },
+ { RU_RUS, 7 },
+ { HE_ISR, 8 },
+ { ZH_CNA, 9 },
+ { ZH_TWN, 10 },
{ -1, -1 }
};
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index d38680af8c..0432520fbd 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -100,6 +100,7 @@ const Game kyra3Games[] = {
{ kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP },
{ kKyra3, kPlatformDOS, kTalkieVersion, RU_RUS },
{ kKyra3, kPlatformDOS, kTalkieVersion, ZH_CNA },
+ { kKyra3, kPlatformDOS, kTalkieVersion, ZH_TWN },
GAME_DUMMY_ENTRY
};
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
index fff8620d43..145a8b4ee7 100644
--- a/devtools/create_kyradat/resources.cpp
+++ b/devtools/create_kyradat/resources.cpp
@@ -100,6 +100,7 @@
#include "resources/mr_dos_cd_spanish.h"
#include "resources/mr_dos_cd_russian.h"
#include "resources/mr_dos_cd_chinese_simplified.h"
+#include "resources/mr_dos_cd_chinese_trad.h"
// Eye of the Beholder
#include "resources/eob1_dos.h"
@@ -1022,6 +1023,7 @@ static const ResourceProvider resourceProviders[] = {
{ k3MainMenuStrings, kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP, &k3MainMenuStringsDOSCDSpanishProvider },
{ k3MainMenuStrings, kKyra3, kPlatformDOS, kTalkieVersion, RU_RUS, &k3MainMenuStringsDOSCDRussianProvider },
{ k3MainMenuStrings, kKyra3, kPlatformDOS, kTalkieVersion, ZH_CNA, &k3MainMenuStringsDOSCDChineseSmplProvider },
+ { k3MainMenuStrings, kKyra3, kPlatformDOS, kTalkieVersion, ZH_TWN, &k3MainMenuStringsDOSCDChineseTradProvider },
{ k3MusicFiles, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3MusicFilesDOSCDProvider },
{ k3ScoreTable, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ScoreTableDOSCDProvider },
{ k3SfxFiles, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3SfxFilesDOSCDProvider },
@@ -1036,6 +1038,7 @@ static const ResourceProvider resourceProviders[] = {
{ k3FontData, kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP, &k3DummyDataDOSCDProvider },
{ k3FontData, kKyra3, kPlatformDOS, kTalkieVersion, RU_RUS, &k3DummyDataDOSCDProvider },
{ k3FontData, kKyra3, kPlatformDOS, kTalkieVersion, ZH_CNA, &k3FontDataDOSCDChineseSmplProvider },
+ { k3FontData, kKyra3, kPlatformDOS, kTalkieVersion, ZH_TWN, &k3FontDataDOSCDChineseTradProvider },
{ k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, EN_ANY, &k3VqaSubtitlesIntroDOSCDEnglishProvider },
{ k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, FR_FRA, &k3VqaSubtitlesIntroDOSCDFrenchProvider },
{ k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, DE_DEU, &k3VqaSubtitlesIntroDOSCDGermanProvider },
@@ -1043,6 +1046,7 @@ static const ResourceProvider resourceProviders[] = {
{ k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP, &k3VqaSubtitlesIntroDOSCDSpanishProvider },
{ k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, RU_RUS, &k3VqaSubtitlesIntroDOSCDRussianProvider },
{ k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, ZH_CNA, &k3VqaSubtitlesIntroDOSCDChineseSmplProvider },
+ { k3VqaSubtitlesIntro, kKyra3, kPlatformDOS, kTalkieVersion, ZH_TWN, &k3VqaSubtitlesIntroDOSCDChineseTradProvider },
{ k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, EN_ANY, &k3VqaSubtitlesBoatDOSCDEnglishProvider },
{ k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, FR_FRA, &k3VqaSubtitlesBoatDOSCDFrenchProvider },
{ k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, DE_DEU, &k3VqaSubtitlesBoatDOSCDGermanProvider },
@@ -1050,6 +1054,7 @@ static const ResourceProvider resourceProviders[] = {
{ k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP, &k3VqaSubtitlesBoatDOSCDSpanishProvider },
{ k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, RU_RUS, &k3VqaSubtitlesBoatDOSCDRussianProvider },
{ k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, ZH_CNA, &k3VqaSubtitlesBoatDOSCDChineseSmplProvider },
+ { k3VqaSubtitlesBoat, kKyra3, kPlatformDOS, kTalkieVersion, ZH_TWN, &k3VqaSubtitlesBoatDOSCDChineseTradProvider },
{ kEoBBaseNpcPresetsNames, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1NpcPresetsNamesDOSEnglishProvider },
{ kEoBBaseChargenStrings1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStrings1DOSEnglishProvider },
{ kEoBBaseChargenStrings2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStrings2DOSEnglishProvider },
diff --git a/devtools/create_kyradat/resources/mr_dos_cd_chinese_trad.h b/devtools/create_kyradat/resources/mr_dos_cd_chinese_trad.h
new file mode 100644
index 0000000000..ce09d3ab15
--- /dev/null
+++ b/devtools/create_kyradat/resources/mr_dos_cd_chinese_trad.h
@@ -0,0 +1,251 @@
+static const char *const k3MainMenuStringsDOSCDChineseTrad[4] = {
+ "\x86\xa3\x87\xa3\x88\xa3\x89\xa3\x8a\xa3",
+ "\x8b\xa3"" ""\x8c\xa3"" ""\x8d\xa3"" ""\x8e\xa3",
+ "\x8f\xa3\x90\xa3\x89\xa3\x8a\xa3\x91\xa3\x92\xa3",
+ "\x93\xa3"" ""\x94\xa3"" ""\x89\xa3"" ""\x8a\xa3"
+};
+
+static const StringListProvider k3MainMenuStringsDOSCDChineseTradProvider = { ARRAYSIZE(k3MainMenuStringsDOSCDChineseTrad), k3MainMenuStringsDOSCDChineseTrad };
+
+static const char *const k3VqaSubtitlesIntroDOSCDChineseTrad[] = {
+ ""// TODO
+};
+
+static const StringListProvider k3VqaSubtitlesIntroDOSCDChineseTradProvider = { ARRAYSIZE(k3VqaSubtitlesIntroDOSCDChineseTrad), k3VqaSubtitlesIntroDOSCDChineseTrad };
+
+static const char *const k3VqaSubtitlesBoatDOSCDChineseTrad[] = {
+ ""// TODO
+};
+
+static const StringListProvider k3VqaSubtitlesBoatDOSCDChineseTradProvider = { ARRAYSIZE(k3VqaSubtitlesBoatDOSCDChineseTrad), k3VqaSubtitlesBoatDOSCDChineseTrad };
+
+static const byte k3FontDataDOSCDChineseTrad[1806] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3e, 0x41, 0x55, 0x55, 0x41, 0x63, 0x5d, 0x41,
+ 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7f,
+ 0x6b, 0x6b, 0x7f, 0x5d, 0x63, 0x7f, 0x3e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x22, 0x77, 0x7f, 0x7f,
+ 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x3e, 0x7f, 0x3e,
+ 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x3e, 0x1c, 0x2a, 0x7f, 0x7f, 0x2a, 0x08,
+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c,
+ 0x3e, 0x3e, 0x7f, 0x7f, 0x7f, 0x2a, 0x1c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3,
+ 0xc3, 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x24, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0xff, 0xe7, 0xdb, 0xdb, 0xdb, 0xe7, 0xff, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x05, 0x09, 0x10,
+ 0x20, 0x3c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1c, 0x22, 0x22, 0x1c, 0x08, 0x08,
+ 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x14, 0x14, 0x12, 0x10, 0x10, 0x10, 0x30,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x12,
+ 0x19, 0x15, 0x13, 0x31, 0x71, 0x63, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5d, 0x22,
+ 0x63, 0x22, 0x5d, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x38, 0x3c, 0x3e, 0x3f, 0x3e,
+ 0x3c, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x0e, 0x1e, 0x3e, 0x7e, 0x3e, 0x1e, 0x0e,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3e,
+ 0x7f, 0x1c, 0x1c, 0x1c, 0x7f, 0x3e, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x24, 0x24,
+ 0x24, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1f, 0x49, 0x49, 0x59, 0x29, 0x09,
+ 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1c, 0x20, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x02,
+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x3e, 0x1c, 0x1c,
+ 0x1c, 0x3e, 0x1c, 0x08, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x3e, 0x7f, 0x1c, 0x1c, 0x1c,
+ 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x7f, 0x3e,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x0c, 0x06, 0x7f, 0x06, 0x0c, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x30,
+ 0x7f, 0x30, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x22, 0x63, 0x7f, 0x63, 0x22, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c,
+ 0x1c, 0x1c, 0x3e, 0x3e, 0x3e, 0x7f, 0x7f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3e, 0x3e,
+ 0x3e, 0x1c, 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66,
+ 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x7e, 0x24,
+ 0x24, 0x24, 0x7e, 0x24, 0x24, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x3e, 0x41, 0x40, 0x3e, 0x01,
+ 0x41, 0x3e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x31, 0x4a, 0x4c, 0x34, 0x08, 0x16, 0x19, 0x29,
+ 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44,
+ 0x28, 0x10, 0x28, 0x48, 0x45, 0x42, 0x3d, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x20, 0x10,
+ 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x08, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x22,
+ 0x14, 0x08, 0x7f, 0x08, 0x14, 0x22, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08,
+ 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x30, 0x30, 0x10, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04,
+ 0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xce, 0xd6, 0xe6,
+ 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x38, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
+ 0xc6, 0x06, 0x1c, 0x70, 0xc0, 0xc0, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06,
+ 0x3c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0xcc, 0xcc, 0xcc,
+ 0xcc, 0xfe, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0xc6, 0xc6,
+ 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
+ 0xc6, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0x0c,
+ 0x18, 0x18, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6,
+ 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xc6, 0xc6,
+ 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
+ 0x00, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x20, 0x10,
+ 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x06, 0x0c,
+ 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1c, 0x42, 0x4e, 0x52, 0x52, 0x52,
+ 0x4c, 0x40, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6,
+ 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6,
+ 0xc6, 0xc6, 0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0,
+ 0xc0, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
+ 0xc6, 0xc6, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7e, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0,
+ 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0,
+ 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0,
+ 0xce, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6,
+ 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0xc6, 0xc6, 0x7c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xcc, 0xd8,
+ 0xf8, 0xd8, 0xcc, 0xc6, 0xc6, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+ 0xc0, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc6, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6,
+ 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6,
+ 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6,
+ 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0xc0,
+ 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xcc,
+ 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6,
+ 0xc6, 0xc6, 0xfc, 0xcc, 0xcc, 0xc6, 0xc6, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0,
+ 0x7c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
+ 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6,
+ 0xc6, 0x6c, 0x6c, 0x6c, 0x38, 0x38, 0x38, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6,
+ 0xd6, 0xfe, 0xee, 0xc6, 0xc6, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x6c,
+ 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x30, 0x30,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06,
+ 0x0c, 0x58, 0x38, 0x34, 0x60, 0xc0, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0e, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08,
+ 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x22,
+ 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0xc6,
+ 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
+ 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+ 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x06, 0x06, 0x7e, 0xc6, 0xc6,
+ 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc0,
+ 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x36,
+ 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+ 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xc6, 0x7c, 0x00,
+ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6,
+ 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+ 0x0c, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc,
+ 0x78, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc6, 0xcc,
+ 0xd8, 0xf0, 0xd8, 0xcc, 0xc6, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xd6, 0xc6,
+ 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+ 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6, 0xc6,
+ 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7e, 0xc6, 0xc6, 0xc6, 0x7e,
+ 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x6c, 0x76, 0x66, 0x60, 0x60, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+ 0xc6, 0x70, 0x1c, 0xc6, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0x30, 0x30, 0xfc, 0x30, 0x30,
+ 0x30, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
+ 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6,
+ 0xc6, 0xd6, 0xfe, 0xee, 0xc6, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x30,
+ 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3e,
+ 0x06, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xfe, 0x06, 0x1c, 0x70, 0xc0, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x04, 0x04,
+ 0x04, 0x08, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x20, 0x20,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x14,
+ 0x22, 0x22, 0x41, 0x41, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0,
+ 0xc0, 0xc6, 0x7c, 0x08, 0x38, 0x00
+};
+
+static const ByteProvider k3FontDataDOSCDChineseTradProvider = { ARRAYSIZE(k3FontDataDOSCDChineseTrad), k3FontDataDOSCDChineseTrad };
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 2edda26877..cba2622671 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 f3385ae884..5abe72a00b 100644
--- a/engines/kyra/detection_tables.h
+++ b/engines/kyra/detection_tables.h
@@ -992,20 +992,6 @@ const KYRAGameDescription adGameDescs[] = {
KYRA3_CD_FLAGS
},
- { // Provided by AquariumTroop. Bugreport #11935
- {
- "kyra3",
- _s("Missing game code"), // Reason for being unsupported
- AD_ENTRY2s("ONETIME.PAK", "4fe8ff05002f3a4d645f11cd326fcef2", 485328,
- "WESTWOOD.001", "99d4b13576ced18a072a7590eac3cc37", 10419012),
- Common::ZH_TWN,
- Common::kPlatformDOS,
- ADGF_DROPLANGUAGE | ADGF_UNSUPPORTED,
- GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM)
- },
- KYRA3_CD_FLAGS
- },
-
// installed version
{
{
@@ -1210,6 +1196,20 @@ const KYRAGameDescription adGameDescs[] = {
KYRA3_CD_4LANG_FLAGS
},
+ { // non installed version
+ {
+ "kyra3",
+ 0,
+ AD_ENTRY2s("ONETIME.PAK", "4fe8ff05002f3a4d645f11cd326fcef2", -1,
+ "WESTWOOD.001", "99d4b13576ced18a072a7590eac3cc37", -1),
+ Common::ZH_TWN,
+ Common::kPlatformDOS,
+ ADGF_DROPLANGUAGE,
+ GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM)
+ },
+ KYRA3_CD_4LANG_FLAGS
+ },
+
{
{
"kyra3",
@@ -1270,6 +1270,24 @@ const KYRAGameDescription adGameDescs[] = {
KYRA3_CD_INS_4LANG_FLAGS
},
+ { // installed version
+ {
+ "kyra3",
+ 0,
+ {
+ { "ONETIME.PAK", 0, "4fe8ff05002f3a4d645f11cd326fcef2", -1 },
+ { "MALCOLM.PAK", 0, "c01eaf3b5568b207b22ea1c0637fe193", -1 },
+ { "AUD.PAK", 0, 0, -1 },
+ AD_LISTEND
+ },
+ Common::ZH_TWN,
+ Common::kPlatformDOS,
+ ADGF_DROPLANGUAGE,
+ GUIO5(GUIO_NOMIDI, GUIO_RENDERVGA, GAMEOPTION_KYRA3_AUDIENCE, GAMEOPTION_KYRA3_SKIP, GAMEOPTION_KYRA3_HELIUM)
+ },
+ KYRA3_CD_INS_4LANG_FLAGS
+ },
+
{
{
"kyra3",
diff --git a/engines/kyra/engine/kyra_mr.cpp b/engines/kyra/engine/kyra_mr.cpp
index 2487dc0a28..f4ef5f2025 100644
--- a/engines/kyra/engine/kyra_mr.cpp
+++ b/engines/kyra/engine/kyra_mr.cpp
@@ -486,7 +486,7 @@ void KyraEngine_MR::playStudioSFX(const char *str) {
return;
const int strSize = strlen(str) - 1;
- if (_flags.lang == Common::ZH_CNA) {
+ if (_flags.lang == Common::ZH_CNA || _flags.lang == Common::ZH_TWN) {
// WORKAROUND: The studio sfx is broken in the original, since it still has the
// check for '!' and '?' even if the language is set to Chinese. I have fixed this here...
if (str[strSize] != '\x80' || !(str[strSize - 1] == '\x81' || str[strSize - 1] == '\x91'))
@@ -1416,10 +1416,9 @@ void KyraEngine_MR::writeSettings() {
break;
case 3:
- _flags.lang = Common::ZH_CNA;
+ _flags.lang = _langIntern ? Common::ZH_TWN : Common::ZH_CNA;
break;
- case 0:
default:
_flags.lang = Common::EN_ANY;
}
diff --git a/engines/kyra/engine/kyra_v2.cpp b/engines/kyra/engine/kyra_v2.cpp
index ed21a66b8a..abf1dc3ebf 100644
--- a/engines/kyra/engine/kyra_v2.cpp
+++ b/engines/kyra/engine/kyra_v2.cpp
@@ -29,7 +29,7 @@
namespace Kyra {
-KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags, const EngineDesc &desc) : KyraEngine_v1(system, flags), _desc(desc), _numLang(flags.hasExtraLanguage ? 4 : 3) {
+KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags, const EngineDesc &desc) : KyraEngine_v1(system, flags), _desc(desc), _langIntern(0), _numLang(flags.hasExtraLanguage ? 4 : 3) {
memset(&_sceneAnims, 0, sizeof(_sceneAnims));
memset(&_sceneAnimMovie, 0, sizeof(_sceneAnimMovie));
@@ -97,6 +97,9 @@ KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags, const Engi
_lang = 2;
break;
+ case Common::ZH_TWN:
+ _langIntern = 1;
+ // fall through
case Common::JA_JPN:
case Common::ZH_CNA:
_lang = 3;
diff --git a/engines/kyra/engine/kyra_v2.h b/engines/kyra/engine/kyra_v2.h
index 36c2b6b963..df467537e7 100644
--- a/engines/kyra/engine/kyra_v2.h
+++ b/engines/kyra/engine/kyra_v2.h
@@ -94,6 +94,7 @@ protected:
// detection
int _lang;
const int _numLang;
+ int _langIntern;
// Input
virtual int inputSceneChange(int x, int y, int unk1, int unk2) = 0;
diff --git a/engines/kyra/gui/gui_v1.cpp b/engines/kyra/gui/gui_v1.cpp
index c53444085d..cabfa62e15 100644
--- a/engines/kyra/gui/gui_v1.cpp
+++ b/engines/kyra/gui/gui_v1.cpp
@@ -139,7 +139,7 @@ void GUI_v1::initMenu(Menu &menu) {
} else {
Screen::FontId of = _screen->_currentFont;
if (menu.item[i].saveSlot > 0)
- _screen->setFont(_vm->gameFlags().lang == Common::ZH_CNA ? Screen::FID_CHINESE_FNT : Screen::FID_8_FNT);
+ _screen->setFont((_vm->gameFlags().lang == Common::ZH_CNA || _vm->gameFlags().lang == Common::ZH_TWN) ? Screen::FID_CHINESE_FNT : Screen::FID_8_FNT);
if (_vm->gameFlags().platform != Common::kPlatformAmiga)
printMenuText(getMenuItemTitle(menu.item[i]), textX - 1, textY + 1, defaultColor1(), 0, 0);
@@ -259,7 +259,7 @@ void GUI_v1::redrawText(const Menu &menu) {
} else {
Screen::FontId of = _screen->_currentFont;
if (menu.item[i].saveSlot > 0)
- _screen->setFont(_vm->gameFlags().lang == Common::ZH_CNA ? Screen::FID_CHINESE_FNT : Screen::FID_8_FNT);
+ _screen->setFont((_vm->gameFlags().lang == Common::ZH_CNA || _vm->gameFlags().lang == Common::ZH_TWN) ? Screen::FID_CHINESE_FNT : Screen::FID_8_FNT);
if (_vm->gameFlags().platform != Common::kPlatformAmiga)
printMenuText(getMenuItemTitle(menu.item[i]), textX - 1, textY + 1, defaultColor1(), 0, 0);
printMenuText(getMenuItemTitle(menu.item[i]), textX, textY, menu.item[i].textColor, 0, 0);
@@ -289,7 +289,7 @@ void GUI_v1::redrawHighlight(const Menu &menu) {
} else {
Screen::FontId of = _screen->_currentFont;
if (menu.item[i].saveSlot > 0)
- _screen->setFont(_vm->gameFlags().lang == Common::ZH_CNA ? Screen::FID_CHINESE_FNT : Screen::FID_8_FNT);
+ _screen->setFont((_vm->gameFlags().lang == Common::ZH_CNA || _vm->gameFlags().lang == Common::ZH_TWN) ? Screen::FID_CHINESE_FNT : Screen::FID_8_FNT);
if (_vm->gameFlags().platform != Common::kPlatformAmiga)
printMenuText(getMenuItemTitle(menu.item[i]), textX - 1, textY + 1, defaultColor1(), 0, 0);
printMenuText(getMenuItemTitle(menu.item[i]), textX, textY, menu.item[i].highlightColor, 0, 0);
@@ -511,7 +511,7 @@ int MainMenu::handle(int dim) {
int fh = _screen->getFontHeight();
if (_vm->gameFlags().lang == Common::JA_JPN)
fh++;
- else if (_vm->gameFlags().lang == Common::ZH_CNA)
+ else if (_vm->gameFlags().lang == Common::ZH_CNA || _vm->gameFlags().lang == Common::ZH_TWN)
fh--;
int textPos = ((_screen->_curDim->w >> 1) + _screen->_curDim->sx) << 3;
@@ -565,7 +565,7 @@ void MainMenu::draw(int select) {
int fh = _screen->getFontHeight();
if (_vm->gameFlags().lang == Common::JA_JPN)
fh++;
- else if (_vm->gameFlags().lang == Common::ZH_CNA)
+ else if (_vm->gameFlags().lang == Common::ZH_CNA || _vm->gameFlags().lang == Common::ZH_TWN)
fh--;
for (int i = 0; i < _static.menuTable[3]; ++i) {
diff --git a/engines/kyra/resource/staticres.cpp b/engines/kyra/resource/staticres.cpp
index 35f242babf..756bb20d59 100644
--- a/engines/kyra/resource/staticres.cpp
+++ b/engines/kyra/resource/staticres.cpp
@@ -39,7 +39,7 @@
namespace Kyra {
-#define RESFILE_VERSION 110
+#define RESFILE_VERSION 111
namespace {
bool checkKyraDat(Common::SeekableReadStream *file) {
@@ -87,15 +87,16 @@ byte getGameID(const GameFlags &flags) {
}
const IndexTable iLanguageTable[] = {
- { Common::EN_ANY, 1 },
- { Common::FR_FRA, 2 },
- { Common::DE_DEU, 3 },
- { Common::ES_ESP, 4 },
- { Common::IT_ITA, 5 },
- { Common::JA_JPN, 6 },
- { Common::RU_RUS, 7 },
- { Common::HE_ISR, 8 },
- { Common::ZH_CNA, 9 },
+ { Common::EN_ANY, 1 },
+ { Common::FR_FRA, 2 },
+ { Common::DE_DEU, 3 },
+ { Common::ES_ESP, 4 },
+ { Common::IT_ITA, 5 },
+ { Common::JA_JPN, 6 },
+ { Common::RU_RUS, 7 },
+ { Common::HE_ISR, 8 },
+ { Common::ZH_CNA, 9 },
+ { Common::ZH_TWN, 10 },
{ -1, -1 }
};
Commit: 07df840bd9fe50202d6c80caeb9ce8a78e0677b5
https://github.com/scummvm/scummvm/commit/07df840bd9fe50202d6c80caeb9ce8a78e0677b5
Author: athrxx (athrxx at scummvm.org)
Date: 2021-10-26T17:57:37+02:00
Commit Message:
NEWS: mention KYRA 3 Traditional Chinese support
Changed paths:
NEWS.md
diff --git a/NEWS.md b/NEWS.md
index 04d18664cb..27f9578aca 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -6,6 +6,9 @@ For a more comprehensive changelog of the latest experimental code, see:
Dreamweb:
- Added text to speech for dialogs and object descriptions.
+ Kyra:
+ - Added support for the Traditional Chinese version of Legend of Kyrandia 3.
+
Supernova:
- Added text to speech for dialogs and object descriptions.
More information about the Scummvm-git-logs
mailing list