diff --git a/src/xenia/kernel/xam/xam_locale.cc b/src/xenia/kernel/xam/xam_locale.cc index a18f239e3..37445f0f7 100644 --- a/src/xenia/kernel/xam/xam_locale.cc +++ b/src/xenia/kernel/xam/xam_locale.cc @@ -332,6 +332,37 @@ dword_result_t XamGetLanguageLocaleString_entry(dword_t language_id, } DECLARE_XAM_EXPORT1(XamGetLanguageLocaleString, kLocale, kImplemented); +void XamGetOnlineLanguageAndCountry_entry(qword_t xuid, + dword_t language_result_buffer, + dword_t country_result_buffer) { + const auto user = kernel_state()->xam_state()->GetUserProfile(xuid); + if (country_result_buffer) { + uint8_t* country_buffer = + kernel_memory()->TranslateVirtual(country_result_buffer); + + const uint8_t country_id = + user ? user->GetCountry() + : kernel_state()->xconfig()->ReadSetting( + XCONFIG_USER_CATEGORY, XCONFIG_USER_COUNTRY); + + *country_buffer = country_id; + } + + if (language_result_buffer) { + uint8_t* language_buffer = + kernel_memory()->TranslateVirtual(language_result_buffer); + + const uint32_t desired_language = + user ? user->GetLanguage() + : kernel_state()->xconfig()->ReadSetting( + XCONFIG_USER_CATEGORY, + XCONFIG_USER_CATEGORY_ENTRIES::XCONFIG_USER_LANGUAGE); + + *language_buffer = static_cast(desired_language); + } +} +DECLARE_XAM_EXPORT1(XamGetOnlineLanguageAndCountry, kLocale, kImplemented); + dword_result_t XamGetOnlineLanguageAndCountryString_entry( dword_t language_id, dword_t country_id, dword_t buffer_length, lpu16string_t buffer) {