CRYOMNI3D: Add Japanese version of Versailles

This commit is contained in:
Le Philousophe 2019-12-26 15:56:23 +01:00
parent cb4c1a72ba
commit 39f6d8e7ed
10 changed files with 1314 additions and 2 deletions

View file

@ -55,6 +55,7 @@ DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, DE)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, EN)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ES)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, IT)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, JA)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, KO)
DEFINE_GAME_PLATFORM_LANG_FUNCS(Versailles, ALL, ZT)
@ -65,6 +66,7 @@ static Parts gamesParts[] = {
GAME_PLATFORM_LANG_PART(Versailles, ALL, EN),
GAME_PLATFORM_LANG_PART(Versailles, ALL, ES),
GAME_PLATFORM_LANG_PART(Versailles, ALL, IT),
GAME_PLATFORM_LANG_PART(Versailles, ALL, JA),
GAME_PLATFORM_LANG_PART(Versailles, ALL, KO),
GAME_PLATFORM_LANG_PART(Versailles, ALL, ZT),
};

View file

@ -44,6 +44,7 @@ size_t writeGameHeader(FILE *f, uint32 gameId, uint16 version, uint16 lang, uint
#define LANG_ES MKTAG16('e', 's')
#define LANG_FR MKTAG16('f', 'r')
#define LANG_IT MKTAG16('i', 't')
#define LANG_JA MKTAG16('j', 'a')
#define LANG_KO MKTAG16('k', 'o')
#define LANG_ZT MKTAG16('z', 't') // ZH_TWN

View file

@ -102,6 +102,10 @@ size_t writeVersaillesSubtitles16(FILE *fp, Subtitle const *subtitles, uint16 el
size += writeString16(f, versailles ## lang ## EpilMsg); \
size += writeString16(f, versailles ## lang ## EpilPwd); \
\
if ((LANG_ ## lang == LANG_JA)) { \
assert(VERSAILLES_JA_BOMB_ALPHABET_SIZE + 1 == sizeof(versaillesJABombAlphabet)); \
size += writeString16(f, versaillesJABombAlphabet); \
} \
size += writeString16(f, versailles ## lang ## BombPwd); \
\
assert(VERSAILLES_MESSAGES_COUNT_CJK == ARRAYSIZE(versailles ## lang ## messages)); \
@ -123,5 +127,6 @@ DEFINE_FUNCS(DE)
DEFINE_FUNCS(EN)
DEFINE_FUNCS(ES)
DEFINE_FUNCS(IT)
DEFINE_FUNCS_CJK(JA)
DEFINE_FUNCS_CJK(KO)
DEFINE_FUNCS_CJK(ZT)

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -127,6 +127,8 @@ uint16 DATSeekableStream::translateLanguage(Common::Language lang) {
return MKTAG16('f', 'r');
case Common::IT_ITA:
return MKTAG16('i', 't');
case Common::JA_JPN:
return MKTAG16('j', 'a');
case Common::KO_KOR:
return MKTAG16('k', 'o');
case Common::PT_BRA:

View file

@ -484,6 +484,40 @@ static const CryOmni3DGameDescription gameDescriptions[] = {
/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
},
// Versailles 1685
// Japanese Windows compressed from DVD
// From lePhilousophe
{
{
"versailles",
"",
VERSAILLES_ENTRY_DEF("PROGRAM.Z", "1944d7c30dbb25ab10f684422e196c16", 248700),
Common::JA_JPN,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUI_OPTIONS_VERSAILLES
},
GType_VERSAILLES,
/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
},
// Versailles 1685
// Japanese Windows from DVD
// From lePhilousophe
{
{
"versailles",
"",
VERSAILLES_ENTRY_DEF("VERSAILL.EXE", "b7dadaf14cc5783e235125f9d6f6adea", 358912),
Common::JA_JPN,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUI_OPTIONS_VERSAILLES
},
GType_VERSAILLES,
/* GF_VERSAILLES_FONTS_ | */ GF_VERSAILLES_AUDIOPADDING_YES,
},
{ AD_TABLE_END_MARKER, 0, 0 }
};

View file

@ -101,8 +101,14 @@ void CryOmni3DEngine_Versailles::loadStaticData() {
// epigraph settings, bomb password
_epigraphContent = data->readString16();
_epigraphPassword = data->readString16();
_bombAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ '";
_bombPassword = data->readString16();
if (getLanguage() == Common::JA_JPN) {
_bombAlphabet = data->readString16().decode(Common::kWindows932);
_bombPassword = data->readString16().decode(Common::kWindows932);
} else {
_bombAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ '";
_bombPassword = data->readString16();
}
// messages, paintings titles
data->readString16Array16(_messages);

View file

@ -292,6 +292,9 @@ void CryOmni3DEngine_Versailles::setupFonts() {
_fontManager.loadFonts(fonts, Common::kWindows950);
return;
} else if (getLanguage() == Common::JA_JPN) {
_fontManager.loadTTFList("FONTS_JP.LST", Common::kWindows932);
return;
} else if (getLanguage() == Common::KO_KOR) {
_fontManager.loadTTFList("FONTS_KR.LST", Common::kWindows949);
return;
@ -690,6 +693,22 @@ void CryOmni3DEngine_Versailles::playTransitionEndLevel(int level) {
return;
}
if (level == -2) {
if (getLanguage() == Common::JA_JPN && Common::File::exists("jvclogo.hnm")) {
// Display one more copyright
playHNM("jvclogo.hnm", Audio::Mixer::kMusicSoundType);
clearKeys();
if (shouldAbort()) {
return;
}
fadeOutPalette();
if (shouldAbort()) {
return;
}
}
}
// Display back cursor there once the palette has been zeroed
showMouse(cursorWasVisible);

View file

@ -60,6 +60,11 @@ void CryOmni3DEngine_Versailles::drawMenuTitle(Graphics::ManagedSurface *surface
titleY = 80;
subtitleX = 283;
subtitleY = 80;
} else if (getLanguage() == Common::JA_JPN) {
titleX = 144;
titleY = 125;
subtitleX = 144;
subtitleY = 145;
} else if (getLanguage() == Common::ZH_TWN) {
titleX = 130;
titleY = 160;
@ -340,6 +345,8 @@ uint CryOmni3DEngine_Versailles::displayOptions() {
} else if (getLanguage() == Common::ES_ESP ||
getLanguage() == Common::IT_ITA) {
rct = Common::Rect(250, 420, 530, 465);
} else if (getLanguage() == Common::JA_JPN) {
rct = Common::Rect(245, 420, 505, 465);
} else {
rct = Common::Rect(235, 420, 505, 465);
}