From 4d44856b2bc83d8d305ad9a5143ce4d66c34e194 Mon Sep 17 00:00:00 2001 From: Adrian <78108584+AdrianCassar@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:18:14 +0000 Subject: [PATCH] [XAM] Implemented XamProfileFindAccount --- src/xenia/kernel/xam/xam_user.cc | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/xenia/kernel/xam/xam_user.cc b/src/xenia/kernel/xam/xam_user.cc index ffd91080c..b6a330a89 100644 --- a/src/xenia/kernel/xam/xam_user.cc +++ b/src/xenia/kernel/xam/xam_user.cc @@ -784,6 +784,35 @@ dword_result_t XamUserCreateStatsEnumerator_entry( } DECLARE_XAM_EXPORT1(XamUserCreateStatsEnumerator, kUserProfiles, kSketchy); +dword_result_t XamProfileFindAccount_entry(qword_t offline_xuid, + pointer_t account, + lpdword_t device_id) { + if (!account) { + return X_ERROR_INVALID_PARAMETER; + } + + account.Zero(); + + const auto& profiles = + kernel_state()->xam_state()->profile_manager()->GetProfiles(); + + if (!profiles->count(offline_xuid)) { + return X_ERROR_NO_SUCH_USER; + } + + memcpy(account, &profiles->at(offline_xuid), sizeof(X_XAMACCOUNTINFO)); + + xe::string_util::copy_and_swap_truncating( + account->gamertag, account->gamertag, sizeof(account->gamertag)); + + if (device_id) { + *device_id = 1; + } + + return X_ERROR_SUCCESS; +} +DECLARE_XAM_EXPORT1(XamProfileFindAccount, kUserProfiles, kImplemented); + } // namespace xam } // namespace kernel } // namespace xe