From 28f1a57c56c42ab6d3e0f29a9767c30cee529a43 Mon Sep 17 00:00:00 2001 From: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com> Date: Sat, 28 Dec 2024 20:03:49 +0300 Subject: [PATCH] Avoid calling function wrappers when loading append ARs. For some reason they cause issues. Should investigate later. --- UnleashedRecomp/mod/mod_loader.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/UnleashedRecomp/mod/mod_loader.cpp b/UnleashedRecomp/mod/mod_loader.cpp index 61250148..db8387c1 100644 --- a/UnleashedRecomp/mod/mod_loader.cpp +++ b/UnleashedRecomp/mod/mod_loader.cpp @@ -285,24 +285,27 @@ PPC_FUNC(sub_82E0B500) stream.seekg(0, std::ios::end); size_t arFileSize = stream.tellg(); - void* arFileData = __HH_ALLOC(arFileSize); - guest_stack_var, be>> arFileDataHolder; - arFileDataHolder->first = g_memory.MapVirtual(arFileData); - GuestToHostFunction(sub_8241F200, &arFileDataHolder->second, arFileData); - + void* arFileData = g_userHeap.Alloc(arFileSize); stream.seekg(0, std::ios::beg); stream.read(reinterpret_cast(arFileData), arFileSize); stream.close(); + auto arFileDataHolder = reinterpret_cast*>(g_userHeap.Alloc(sizeof(uint32_t) * 2)); + arFileDataHolder[0] = g_memory.MapVirtual(arFileData); + arFileDataHolder[1] = NULL; + ctx.r3 = r3; ctx.r4 = r4; ctx.r5 = r5; - ctx.r6.u32 = g_memory.MapVirtual(arFileDataHolder.get()); + ctx.r6.u32 = g_memory.MapVirtual(arFileDataHolder); ctx.r7.u32 = uint32_t(arFileSize); ctx.r8 = r8; __imp__sub_82E0B500(ctx, base); + g_userHeap.Free(arFileDataHolder); + g_userHeap.Free(arFileData); + return true; }