From c71649161ee7127d3e05bc2fba57f49173f65fcf Mon Sep 17 00:00:00 2001 From: The-Little-Wolf <116989599+The-Little-Wolf@users.noreply.github.com> Date: Thu, 28 Nov 2024 09:52:58 -0800 Subject: [PATCH] [XAM] Implemented XamUserGetIndexFromXUID Implement XamUserGetIndexFromXUID --- src/xenia/kernel/xam/xam_user.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/xenia/kernel/xam/xam_user.cc b/src/xenia/kernel/xam/xam_user.cc index d52ce361c..d1b8b6923 100644 --- a/src/xenia/kernel/xam/xam_user.cc +++ b/src/xenia/kernel/xam/xam_user.cc @@ -65,6 +65,24 @@ X_HRESULT_result_t XamUserGetXUID_entry(dword_t user_index, dword_t type_mask, } DECLARE_XAM_EXPORT1(XamUserGetXUID, kUserProfiles, kImplemented); +dword_result_t XamUserGetIndexFromXUID_entry(qword_t xuid, dword_t flags, + pointer_t index) { + if (!index) { + return X_E_INVALIDARG; + } + + auto profile_manager = kernel_state()->xam_state()->profile_manager(); + const uint8_t user_index = + profile_manager->GetUserIndexAssignedToProfile(xuid); + if (user_index == XUserIndexAny) { + return X_E_NO_SUCH_USER; + } + + *index = user_index; + return X_E_SUCCESS; +} +DECLARE_XAM_EXPORT1(XamUserGetIndexFromXUID, kUserProfiles, kImplemented); + dword_result_t XamUserGetSigninState_entry(dword_t user_index) { // Yield, as some games spam this. xe::threading::MaybeYield();