d3d8ltcg: add D3DDevice_RunPushBuffer_4__LTCG_eax2 patch

This commit is contained in:
RadWolfie 2025-07-22 21:28:40 -05:00
parent 5241cd58ce
commit d02afcd668
3 changed files with 48 additions and 0 deletions

View File

@ -4822,6 +4822,45 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_RunPushBuffer)
EmuExecutePushBuffer(pPushBuffer, pFixup);
}
// ******************************************************************
// * patch: D3DDevice_RunPushBuffer_4__LTCG_eax2
// ******************************************************************
// Overload for logging
static void D3DDevice_RunPushBuffer_4__LTCG_eax2
(
xbox::X_D3DPushBuffer *pPushBuffer,
xbox::X_D3DFixup *pFixup
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pPushBuffer)
LOG_FUNC_ARG(pFixup)
LOG_FUNC_END;
}
// This uses a custom calling convention where parameter is passed in EAX
__declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_RunPushBuffer_4__LTCG_eax2)
(
X_D3DPushBuffer *pPushBuffer
)
{
X_D3DFixup* pFixup;
__asm {
LTCG_PROLOGUE
mov pFixup, eax
}
// Log
D3DDevice_RunPushBuffer_4__LTCG_eax2(pPushBuffer, pFixup);
EmuExecutePushBuffer(pPushBuffer, pFixup);
__asm {
LTCG_EPILOGUE
ret 4
}
}
// ******************************************************************
// * patch: D3DDevice_Clear
// ******************************************************************

View File

@ -736,6 +736,14 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_RunPushBuffer)
X_D3DFixup *pFixup
);
// ******************************************************************
// * patch: D3DDevice_RunPushBuffer_4__LTCG_eax2
// ******************************************************************
xbox::void_xt WINAPI EMUPATCH(D3DDevice_RunPushBuffer_4__LTCG_eax2)
(
X_D3DPushBuffer *pPushBuffer
);
// ******************************************************************
// * patch: D3DDevice_Clear
// ******************************************************************

View File

@ -128,6 +128,7 @@ std::map<const std::string, const xbox_patch_t> g_PatchTable = {
PATCH_ENTRY("D3DDevice_Reset_0__LTCG_edi1", xbox::EMUPATCH(D3DDevice_Reset_0__LTCG_edi1), PATCH_HLE_D3D),
PATCH_ENTRY("D3DDevice_Reset_0__LTCG_ebx1", xbox::EMUPATCH(D3DDevice_Reset_0__LTCG_ebx1), PATCH_HLE_D3D),
PATCH_ENTRY("D3DDevice_RunPushBuffer", xbox::EMUPATCH(D3DDevice_RunPushBuffer), PATCH_HLE_D3D),
PATCH_ENTRY("D3DDevice_RunPushBuffer_4__LTCG_eax2", xbox::EMUPATCH(D3DDevice_RunPushBuffer_4__LTCG_eax2), PATCH_HLE_D3D),
PATCH_ENTRY("D3DDevice_RunVertexStateShader", xbox::EMUPATCH(D3DDevice_RunVertexStateShader), PATCH_HLE_D3D),
PATCH_ENTRY("D3DDevice_RunVertexStateShader_4__LTCG_esi2", xbox::EMUPATCH(D3DDevice_RunVertexStateShader_4__LTCG_esi2), PATCH_HLE_D3D),
PATCH_ENTRY("D3DDevice_SelectVertexShader", xbox::EMUPATCH(D3DDevice_SelectVertexShader), PATCH_HLE_D3D),