From eed4242059488c2ad9770fe7c6980594dcc9af4d Mon Sep 17 00:00:00 2001 From: The-Little-Wolf <116989599+The-Little-Wolf@users.noreply.github.com> Date: Thu, 24 Jul 2025 12:02:46 -0700 Subject: [PATCH] [XAM] - xcontent_type fixes & more - added unknown smc call - xcontent_type corrections - add transfer cable to device type - Select gamer type in gamercard --- src/xenia/kernel/smc.h | 2 ++ src/xenia/kernel/xam/ui/gamercard_ui.cc | 10 ++++++++++ src/xenia/kernel/xam/xam_content_device.h | 1 + src/xenia/kernel/xam/xam_enum.cc | 3 ++- src/xenia/xbox.h | 9 ++++++--- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/xenia/kernel/smc.h b/src/xenia/kernel/smc.h index 0fc8d6134..4820e8ee5 100644 --- a/src/xenia/kernel/smc.h +++ b/src/xenia/kernel/smc.h @@ -94,6 +94,8 @@ enum X_SMC_CMD : uint8_t { QUERY_RTC = 0x4, QUERY_TEMP_SENSOR = 0x7, QUERY_TRAY = 0xA, + QUERY_UNK_0xB = + 0xB, // called on start up after VdQueryVideoMode on dash v13599 QUERY_AV_PACK = 0xF, I2C_READ_WRITE = 0x11, QUERY_SMC_VERSION = 0x12, diff --git a/src/xenia/kernel/xam/ui/gamercard_ui.cc b/src/xenia/kernel/xam/ui/gamercard_ui.cc index d77e01d13..2fda1893c 100644 --- a/src/xenia/kernel/xam/ui/gamercard_ui.cc +++ b/src/xenia/kernel/xam/ui/gamercard_ui.cc @@ -177,6 +177,12 @@ static constexpr const char* CameraLocationOptions[] = {"Behind", "In Front", static constexpr const char* BrakeControlOptions[] = {"Trigger", "Button"}; static constexpr const char* AcceleratorControlOptions[] = {"Trigger", "Button"}; +static constexpr const char* GamerTypeOptions[] = {"None", + nullptr, + nullptr, + "Xbox 360 Launch Team", + "NXE Launch Team", + "360 + NXE Launch Team"}; constexpr std::array UserSettingsToLoad = { UserSettingId::XPROFILE_GAMER_TYPE, @@ -529,6 +535,10 @@ void GamercardUI::DrawGpdSettings(ImGuiIO& io) { "Accelerator Control", AcceleratorControlOptions, static_cast(std::size(AcceleratorControlOptions)), rightSideTextObjectAlignment); + DrawSettingComboBox(UserSettingId::XPROFILE_GAMER_TYPE, "Gamer Type", + GamerTypeOptions, + static_cast(std::size(GamerTypeOptions)), + rightSideTextObjectAlignment); } void GamercardUI::OnDraw(ImGuiIO& io) { diff --git a/src/xenia/kernel/xam/xam_content_device.h b/src/xenia/kernel/xam/xam_content_device.h index f055f74c9..28e60008f 100644 --- a/src/xenia/kernel/xam/xam_content_device.h +++ b/src/xenia/kernel/xam/xam_content_device.h @@ -23,6 +23,7 @@ enum class DeviceType : uint32_t { HDD = 1, MU = 2, // support removed in 9199 ODD = 4, + TransferCable = 8, USBMASS = 16, // Added in 8955 }; diff --git a/src/xenia/kernel/xam/xam_enum.cc b/src/xenia/kernel/xam/xam_enum.cc index 322dcee15..2ca7cfda3 100644 --- a/src/xenia/kernel/xam/xam_enum.cc +++ b/src/xenia/kernel/xam/xam_enum.cc @@ -124,7 +124,8 @@ dword_result_t XamProfileCreateEnumerator_entry(dword_t device_id, auto e = new XStaticEnumerator(kernel_state(), 1); - auto result = e->Initialize(XUserIndexAny, 0xFE, 0x23001, 0x23003, 0); + auto result = + e->Initialize(XUserIndexAny, 0xFE, 0x23001, 0x23003, 0, 0x28, nullptr); if (XFAILED(result)) { return result; diff --git a/src/xenia/xbox.h b/src/xenia/xbox.h index 3b6b6f76c..3831d5816 100644 --- a/src/xenia/xbox.h +++ b/src/xenia/xbox.h @@ -414,17 +414,18 @@ enum class XOnlineCountry : uint32_t { }; enum class XContentType : uint32_t { + kFolder = 0xffffffff, kInvalid = 0x00000000, kSavedGame = 0x00000001, kMarketplaceContent = 0x00000002, kPublisher = 0x00000003, - kXbox360Title = 0x00001000, + kIptvDvr = 0x00001000, kIptvPauseBuffer = 0x00002000, kXNACommunity = 0x00003000, kInstalledGame = 0x00004000, kXboxTitle = 0x00005000, kSocialTitle = 0x00006000, - kGamesOnDemand = 0x00007000, + kXbox360Title = 0x00007000, kSUStoragePack = 0x00008000, kAvatarItem = 0x00009000, kProfile = 0x00010000, @@ -452,16 +453,18 @@ enum class XContentType : uint32_t { }; inline const std::map XContentTypeMap = { + {XContentType::kFolder, "Folder"}, {XContentType::kSavedGame, "Saved Game"}, {XContentType::kMarketplaceContent, "Marketplace Content"}, {XContentType::kPublisher, "Publisher"}, {XContentType::kXbox360Title, "Xbox 360 Title"}, + {XContentType::kIptvDvr, "IPTV DVR"}, {XContentType::kIptvPauseBuffer, "IPTV Pause Buffer"}, {XContentType::kXNACommunity, "XNA Community"}, {XContentType::kInstalledGame, "Installed Game"}, {XContentType::kXboxTitle, "Xbox Title"}, {XContentType::kSocialTitle, "Social Title"}, - {XContentType::kGamesOnDemand, "Game on Demand"}, + {XContentType::kXbox360Title, "Xbox 360 Title"}, {XContentType::kSUStoragePack, "SU Storage Pack"}, {XContentType::kAvatarItem, "Avatar Item"}, {XContentType::kProfile, "Profile"},