From c20aadac60f24e133c28120ea15117bab8b693a4 Mon Sep 17 00:00:00 2001 From: Sajid Date: Mon, 30 Sep 2024 14:28:00 +0600 Subject: [PATCH] Stub audio functions --- UnleashedRecomp/CMakeLists.txt | 5 +++ UnleashedRecomp/apu/audio.cpp | 21 +++++++++++ UnleashedRecomp/apu/audio.h | 5 +++ UnleashedRecomp/apu/driver/xaudio_driver.h | 1 + UnleashedRecomp/cpu/code_cache.cpp | 5 +++ UnleashedRecomp/cpu/code_cache.h | 4 +- UnleashedRecomp/kernel/imports.cpp | 43 +++++++++++----------- 7 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 UnleashedRecomp/apu/audio.cpp create mode 100644 UnleashedRecomp/apu/audio.h create mode 100644 UnleashedRecomp/apu/driver/xaudio_driver.h diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 87e872e..bcac320 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -32,6 +32,10 @@ set(SWA_GPU_CXX_SOURCES "gpu/window.cpp" ) +set(SWA_APU_CXX_SOURCES + "apu/audio.cpp" +) + set(SWA_HID_CXX_SOURCES "hid/hid.cpp" ) @@ -42,6 +46,7 @@ set(SWA_CXX_SOURCES ${SWA_KERNEL_CXX_SOURCES} ${SWA_CPU_CXX_SOURCES} ${SWA_GPU_CXX_SOURCES} + ${SWA_APU_CXX_SOURCES} ${SWA_HID_CXX_SOURCES} ) diff --git a/UnleashedRecomp/apu/audio.cpp b/UnleashedRecomp/apu/audio.cpp new file mode 100644 index 0000000..e0f6cc2 --- /dev/null +++ b/UnleashedRecomp/apu/audio.cpp @@ -0,0 +1,21 @@ +#include +#include "audio.h" +#include "cpu/code_cache.h" + +#define AUDIO_DRIVER_KEY (uint32_t)('DAUD') + +uint32_t XAudioRegisterRenderDriverClient(XLPDWORD callback, XLPDWORD driver) +{ + *driver = AUDIO_DRIVER_KEY; + return 0; +} + +uint32_t XAudioUnregisterRenderDriverClient(DWORD driver) +{ + return 0; +} + +uint32_t XAudioSubmitRenderDriverFrame(XLPDWORD callback, XLPDWORD driver) +{ + return 0; +} diff --git a/UnleashedRecomp/apu/audio.h b/UnleashedRecomp/apu/audio.h new file mode 100644 index 0000000..fdf2a2a --- /dev/null +++ b/UnleashedRecomp/apu/audio.h @@ -0,0 +1,5 @@ +#pragma once + +SWA_API uint32_t XAudioRegisterRenderDriverClient(XLPDWORD callback, XLPDWORD driver); +SWA_API uint32_t XAudioUnregisterRenderDriverClient(DWORD driver); +SWA_API uint32_t XAudioSubmitRenderDriverFrame(XLPDWORD callback, XLPDWORD driver); diff --git a/UnleashedRecomp/apu/driver/xaudio_driver.h b/UnleashedRecomp/apu/driver/xaudio_driver.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/UnleashedRecomp/apu/driver/xaudio_driver.h @@ -0,0 +1 @@ +#pragma once diff --git a/UnleashedRecomp/cpu/code_cache.cpp b/UnleashedRecomp/cpu/code_cache.cpp index 630872b..39fa2e6 100644 --- a/UnleashedRecomp/cpu/code_cache.cpp +++ b/UnleashedRecomp/cpu/code_cache.cpp @@ -35,3 +35,8 @@ void* CodeCache::Find(uint32_t guest) const { return *reinterpret_cast(bucket + static_cast(guest) * 2); } + +PPCFunc* KeFindHostFunction(uint32_t guest) +{ + return static_cast(gCodeCache.Find(guest)); +} diff --git a/UnleashedRecomp/cpu/code_cache.h b/UnleashedRecomp/cpu/code_cache.h index 443cb6d..55a6da9 100644 --- a/UnleashedRecomp/cpu/code_cache.h +++ b/UnleashedRecomp/cpu/code_cache.h @@ -13,4 +13,6 @@ struct CodeCache void* Find(uint32_t guest) const; }; -extern CodeCache gCodeCache; \ No newline at end of file +PPCFunc* KeFindHostFunction(uint32_t guest); + +extern CodeCache gCodeCache; diff --git a/UnleashedRecomp/kernel/imports.cpp b/UnleashedRecomp/kernel/imports.cpp index dc826e2..e26c077 100644 --- a/UnleashedRecomp/kernel/imports.cpp +++ b/UnleashedRecomp/kernel/imports.cpp @@ -1,12 +1,13 @@ #include #include #include +#include +#include #include "function.h" #include "xex.h" #include "xbox.h" #include "heap.h" #include "memory.h" -// #include "audio.h" #include #include "xam.h" #include "xdm.h" @@ -1507,26 +1508,26 @@ void XMACreateContext() printf("!!! STUB !!! XMACreateContext\n"); } -uint32_t XAudioRegisterRenderDriverClient(XLPDWORD callback, XLPDWORD driver) -{ - //printf("XAudioRegisterRenderDriverClient(): %x %x\n"); - - // *driver = apu::RegisterClient(callback[0], callback[1]); - return 0; -} - -void XAudioUnregisterRenderDriverClient() -{ - printf("!!! STUB !!! XAudioUnregisterRenderDriverClient\n"); -} - -uint32_t XAudioSubmitRenderDriverFrame(uint32_t driver, void* samples) -{ - // printf("!!! STUB !!! XAudioSubmitRenderDriverFrame\n"); - // apu::SubmitFrames(samples); - - return 0; -} +//uint32_t XAudioRegisterRenderDriverClient(XLPDWORD callback, XLPDWORD driver) +//{ +// //printf("XAudioRegisterRenderDriverClient(): %x %x\n"); +// +// *driver = apu::RegisterClient(callback[0], callback[1]); +// return 0; +//} +// +//void XAudioUnregisterRenderDriverClient() +//{ +// printf("!!! STUB !!! XAudioUnregisterRenderDriverClient\n"); +//} +// +//uint32_t XAudioSubmitRenderDriverFrame(uint32_t driver, void* samples) +//{ +// // printf("!!! STUB !!! XAudioSubmitRenderDriverFrame\n"); +// apu::SubmitFrames(samples); +// +// return 0; +//} GUEST_FUNCTION_HOOK(__imp__XGetVideoMode, VdQueryVideoMode); // XGetVideoMode GUEST_FUNCTION_HOOK(__imp__XNotifyGetNext, XNotifyGetNext);