From 56cff3a09a5f0e5ed9b3ef45a47b45b32b58a264 Mon Sep 17 00:00:00 2001 From: Adrian <78108584+AdrianCassar@users.noreply.github.com> Date: Sat, 7 Feb 2026 23:46:39 +0000 Subject: [PATCH 1/2] [APP] Include title information in Win32 exception dialog --- src/xenia/ui/windowed_app_main_win.cc | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/xenia/ui/windowed_app_main_win.cc b/src/xenia/ui/windowed_app_main_win.cc index 0baf4f5f4..86e0100b5 100644 --- a/src/xenia/ui/windowed_app_main_win.cc +++ b/src/xenia/ui/windowed_app_main_win.cc @@ -13,6 +13,7 @@ #include "xenia/base/cvar.h" #include "xenia/base/main_win.h" #include "xenia/base/platform_win.h" +#include "xenia/kernel/kernel_state.cc" #include "xenia/ui/windowed_app.h" #include "xenia/ui/windowed_app_context_win.h" @@ -179,11 +180,26 @@ static bool exception_pointers_handler(HostExceptionReport* report) { #endif XE_BUILD_BRANCH "@" XE_BUILD_COMMIT_SHORT " on " XE_BUILD_DATE); + std::string title_info = "Title not started yet."; + + if (xe::kernel::kernel_state()) { + if (xe::kernel::kernel_state()->emulator()->is_title_open()) { + const uint32_t title_id = xe::kernel::kernel_state()->title_id(); + const std::string title_name = + xe::kernel::kernel_state()->emulator()->title_name(); + const std::string title_version = + xe::kernel::kernel_state()->emulator()->title_version(); + + title_info = + fmt::format("{}({:08X}) - {}", title_name, title_id, title_version); + } + } + const std::string except_message = fmt::format( - "Exception encountered!\nBuild: {}\nException address: " - "{}\nStackpointer: " - "{}\nInstruction pointer: {}\nExceptionCode: 0x{} ({})\n", - build.c_str(), report->GetFormattedAddress(exception_addr), + "Exception encountered!\nTitle Info: {}\nBuild: {}\nException address: " + "{}\nStackpointer: {}\nInstruction pointer: {}\nExceptionCode: 0x{} " + "({})\n", + title_info, build.c_str(), report->GetFormattedAddress(exception_addr), report->GetFormattedAddress(last_stackpointer), report->GetFormattedAddress(last_rip), except_code, HostExceptionReport::ChompNewlines(Ntstatus_msg(except_code))); From 8f5da619f99fc66adc01c060b6b491939abae9d0 Mon Sep 17 00:00:00 2001 From: Gliniak <153369+Gliniak@users.noreply.github.com> Date: Sat, 31 Jan 2026 21:05:05 +0100 Subject: [PATCH 2/2] [Kernel] Replaced Yield in XAudioGetVoiceCategoryVolumeChangeMask with NanoSleep - Removed Yield in XamUserGetSigninState --- src/xenia/kernel/xam/xam_user.cc | 2 -- src/xenia/kernel/xboxkrnl/xboxkrnl_audio.cc | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/xenia/kernel/xam/xam_user.cc b/src/xenia/kernel/xam/xam_user.cc index 1092b30a0..6f5ca7c15 100644 --- a/src/xenia/kernel/xam/xam_user.cc +++ b/src/xenia/kernel/xam/xam_user.cc @@ -88,8 +88,6 @@ dword_result_t XamUserGetIndexFromXUID_entry(qword_t xuid, dword_t flags, DECLARE_XAM_EXPORT1(XamUserGetIndexFromXUID, kUserProfiles, kImplemented); dword_result_t XamUserGetSigninState_entry(dword_t user_index) { - // Yield, as some games spam this. - xe::threading::MaybeYield(); uint32_t signin_state = 0; if (user_index >= XUserMaxUserCount) { return signin_state; diff --git a/src/xenia/kernel/xboxkrnl/xboxkrnl_audio.cc b/src/xenia/kernel/xboxkrnl/xboxkrnl_audio.cc index 2430ce7f3..a0c7651b2 100644 --- a/src/xenia/kernel/xboxkrnl/xboxkrnl_audio.cc +++ b/src/xenia/kernel/xboxkrnl/xboxkrnl_audio.cc @@ -30,7 +30,7 @@ dword_result_t XAudioGetVoiceCategoryVolumeChangeMask_entry( lpunknown_t driver_ptr, lpdword_t out_ptr) { assert_true((driver_ptr.guest_address() & 0xFFFF0000) == 0x41550000); - xe::threading::MaybeYield(); + xe::threading::NanoSleep(1000); // Checking these bits to see if any voice volume changed. // I think.