[XAM/INFO] - Implement XamGetDashBackstackData

- Implement XamGetDashBackstackData
This commit is contained in:
The-Little-Wolf
2025-07-27 15:35:28 -07:00
committed by Radosław Gliński
parent e27b1d1cb5
commit 2de1b0b2dd
3 changed files with 23 additions and 0 deletions

View File

@@ -199,6 +199,11 @@ struct X_DASH_APP_INFO {
};
static_assert_size(X_DASH_APP_INFO, 0xC);
struct X_DASH_BACKSTACK_DATA {
uint8_t unk1[0x314];
};
static_assert_size(X_DASH_BACKSTACK_DATA, 0x314);
struct X_GUID {
xe::be<uint32_t> Data1;
xe::be<uint16_t> Data2;

View File

@@ -788,6 +788,22 @@ void XamGetActiveDashAppInfo_entry(pointer_t<X_DASH_APP_INFO> dash_app) {
}
DECLARE_XAM_EXPORT1(XamGetActiveDashAppInfo, kNone, kImplemented);
dword_result_t XamGetDashBackstackData_entry(
pointer_t<X_DASH_BACKSTACK_DATA> backstack_data, lpdword_t count) {
auto xam_state_ = kernel_state()->xam_state();
uint32_t total = xam_state_->dash_backstack_nodes_count_;
if (total) {
if (*count <= total) {
total = *count;
}
std::memcpy(backstack_data, &xam_state_->dash_backstack_data_,
sizeof(X_DASH_BACKSTACK_DATA) * total);
xam_state_->dash_backstack_nodes_count_ = 0;
}
return X_ERROR_SUCCESS;
}
DECLARE_XAM_EXPORT1(XamGetDashBackstackData, kNone, kImplemented);
void XampWebInstrumentationSetProfileCounts_entry(dword_t live_profiles,
dword_t local_profiles,
dword_t adult_profiles,

View File

@@ -58,6 +58,8 @@ class XamState {
void LoadSpaInfo(const SpaInfo* info);
X_DASH_APP_INFO dash_app_info_ = {};
uint32_t dash_backstack_nodes_count_ = 0;
X_DASH_BACKSTACK_DATA dash_backstack_data_[2] = {};
std::atomic<int32_t> xam_dialogs_shown_ = {0};
std::atomic<int32_t> xam_nui_dialogs_shown_ = {0};