From 9ce91e55fe21013ac5a1b06486100881ead88cfd Mon Sep 17 00:00:00 2001 From: Gliniak <153369+Gliniak@users.noreply.github.com> Date: Tue, 19 May 2026 22:03:54 +0200 Subject: [PATCH] [UI] Listed extended languages --- src/xenia/app/console_settings_dialog.cc | 6 ++++-- src/xenia/kernel/xam/xam_locale.cc | 11 ++++++----- src/xenia/xbox.h | 9 +++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/xenia/app/console_settings_dialog.cc b/src/xenia/app/console_settings_dialog.cc index 9bdd5f19b..03c9b5b01 100644 --- a/src/xenia/app/console_settings_dialog.cc +++ b/src/xenia/app/console_settings_dialog.cc @@ -26,8 +26,10 @@ static const std::map kLanguageMap = { {3, "German"}, {4, "French"}, {5, "Spanish"}, {6, "Italian"}, {7, "Korean"}, {8, "Traditional Chinese"}, - {9, "Portuguese"}, {10, "Simplified Chinese"}, - {11, "Polish"}, {12, "Russian"}}; + {9, "Portuguese"}, {11, "Polish"}, + {12, "Russian"}, {13, "Swedish"}, + {14, "Turkish"}, {15, "Norwegian"}, + {16, "Dutch"}, {17, "Simplified Chinese"}}; static const std::map kCountryMap = { {1, "AE"}, {2, "AL"}, {3, "AM"}, {4, "AR"}, {5, "AT"}, diff --git a/src/xenia/kernel/xam/xam_locale.cc b/src/xenia/kernel/xam/xam_locale.cc index 0212f8006..a18f239e3 100644 --- a/src/xenia/kernel/xam/xam_locale.cc +++ b/src/xenia/kernel/xam/xam_locale.cc @@ -540,8 +540,9 @@ XLanguage xeGetLanguage(bool extended_languages_support) { XCONFIG_USER_CATEGORY_ENTRIES::XCONFIG_USER_LANGUAGE)); uint32_t region = xeXGetGameRegion(); - auto max_languages = extended_languages_support ? XLanguage::kMaxLanguages - : XLanguage::kSChinese; + auto max_languages = extended_languages_support + ? XLanguage::kMaxLanguages + : XLanguage::kMaxBaseLanguages; if (desired_language < max_languages) { return desired_language; } @@ -570,7 +571,7 @@ dword_result_t XamGetLanguage_entry() { DECLARE_XAM_EXPORT1(XamGetLanguage, kNone, kImplemented); pointer_result_t XamGetLanguageLocaleFallbackString_entry(dword_t language) { - assert_false(language > 17); + assert_false(language >= static_cast(XLanguage::kMaxLanguages)); return kernel_state()->xam_state()->GetLanguageFallbackAddress(language); } DECLARE_XAM_EXPORT1(XamGetLanguageLocaleFallbackString, kNone, kImplemented); @@ -580,9 +581,9 @@ dword_result_t XamGetLanguageTypeface_entry(dword_t language, dword_t buffer) { std::u16string path{}; - if (language == 0x11) { + if (language == static_cast(XLanguage::kSChinese)) { path = u"file://media:/XenonSCLatin.xtt"; - } else if (language == 8) { + } else if (language == static_cast(XLanguage::kTChinese)) { path = u"file://media:/XenonCLatin.xtt"; } else { path = u"file://media:/XenonJKLatin.xtt"; diff --git a/src/xenia/xbox.h b/src/xenia/xbox.h index 334578599..99c1f84e9 100644 --- a/src/xenia/xbox.h +++ b/src/xenia/xbox.h @@ -311,11 +311,16 @@ enum class XLanguage : uint32_t { kKorean = 7, kTChinese = 8, kPortuguese = 9, - kSChinese = 10, + kMaxBaseLanguages = 10, kPolish = 11, kRussian = 12, + kSwedish = 13, + kTurkish = 14, + kNorwegian = 15, + kDutch = 16, + kSChinese = 17, // STFS headers can't support any more languages than these - kMaxLanguages = 13 + kMaxLanguages = 18 }; enum class XOnlineCountry : uint32_t {