From 43eefa8041ee3b88e329142418fe21d8d79176c8 Mon Sep 17 00:00:00 2001 From: Silent Date: Tue, 17 Nov 2020 20:44:26 +0100 Subject: [PATCH] Improve the D3D_DestroyResource__LTCG patch EDI register is unlikely to be trashed, but use a naked function anyway Added logging, same as the non-LTCG DestroyResource --- src/core/hle/D3D8/Direct3D9/Direct3D9.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index a34f0af79..2510ec13d 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -8749,20 +8749,34 @@ void WINAPI xbox::EMUPATCH(D3D_DestroyResource)(X_D3DResource* pResource) // ****************************************************************** // * patch: D3D_DestroyResource_LTCG // ****************************************************************** -void WINAPI xbox::EMUPATCH(D3D_DestroyResource__LTCG)() +static void D3D_DestroyResource__LTCG(xbox::X_D3DResource* pResource) +{ + LOG_FUNC_ONE_ARG(pResource); +} + +__declspec(naked) void WINAPI xbox::EMUPATCH(D3D_DestroyResource__LTCG)() { X_D3DResource* pResource; __asm { - mov pResource, edi + push ebp + mov ebp, esp + sub esp, __LOCAL_SIZE + mov pResource, edi } + // Log + D3D_DestroyResource__LTCG(pResource); + // Release the host copy (if it exists!) FreeHostResource(GetHostResourceKey(pResource)); // Call the Xbox version of DestroyResource __asm { - mov edi, pResource + mov edi, pResource call XB_TRMP(D3D_DestroyResource__LTCG) + mov esp, ebp + pop ebp + ret } }