From cf300c885407d4bcccedf2e978db2b3c4db8c671 Mon Sep 17 00:00:00 2001 From: Sajid Date: Fri, 8 Nov 2024 02:21:35 +0600 Subject: [PATCH] Make XAudio callback ABI compliant --- UnleashedRecomp/apu/driver/xaudio_driver.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/UnleashedRecomp/apu/driver/xaudio_driver.cpp b/UnleashedRecomp/apu/driver/xaudio_driver.cpp index c305bf9..d1b1d52 100644 --- a/UnleashedRecomp/apu/driver/xaudio_driver.cpp +++ b/UnleashedRecomp/apu/driver/xaudio_driver.cpp @@ -1,16 +1,16 @@ #include #include "xaudio_driver.h" #include - #include #include #include #include +#include #define XAUDIO_DRIVER_KEY (uint32_t)('XAUD') PPCFunc* g_clientCallback{}; -DWORD g_clientCallbackParam{}; +DWORD g_clientCallbackParam{}; // pointer in guest memory DWORD g_driverThread{}; // TODO: Should use a counted ptr @@ -97,8 +97,12 @@ void XAudioInitializeSystem() void XAudioRegisterClient(PPCFunc* callback, uint32_t param) { + auto* pClientParam = static_cast(g_userHeap.Alloc(sizeof(param))); + ByteSwap(param); + *pClientParam = param; + g_clientCallbackParam = g_memory.MapVirtual(pClientParam); + g_clientCallback = callback; - g_clientCallbackParam = param; } void XAudioSubmitFrame(void* samples)