diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index ffd1c8daa..3562e4a5d 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -4189,26 +4189,23 @@ xbox::hresult_xt WINAPI xbox::EMUPATCH(D3DDevice_CreateVertexShader) } // LTCG specific D3DDevice_SetVertexShaderConstant function... -// This uses a custom calling convention where parameter is passed in EDX +// This uses a custom calling convention where ConstantCount parameter is passed in EDX // Test-case: Murakumo -xbox::void_xt __stdcall xbox::EMUPATCH(D3DDevice_SetVertexShaderConstant_8) +xbox::void_xt __fastcall xbox::EMUPATCH(D3DDevice_SetVertexShaderConstant_8) ( + void*, + dword_xt ConstantCount, + int_xt Register, + CONST PVOID pConstantData ) { - static uint32_t returnAddr; + LOG_FUNC_BEGIN + LOG_FUNC_ARG(Register) + LOG_FUNC_ARG(pConstantData) + LOG_FUNC_ARG(ConstantCount) + LOG_FUNC_END; -#ifdef _DEBUG_TRACE - __asm add esp, 4 -#endif - - __asm { - pop returnAddr - push edx - call EmuPatch_D3DDevice_SetVertexShaderConstant - mov eax, 0 - push returnAddr - ret - } + CxbxImpl_SetVertexShaderConstant(Register, pConstantData, ConstantCount); } // ****************************************************************** diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.h b/src/core/hle/D3D8/Direct3D9/Direct3D9.h index 4ccf40436..f2ec5c764 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.h +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.h @@ -444,7 +444,14 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexShaderConstant) dword_xt ConstantCount ); -xbox::void_xt __stdcall EMUPATCH(D3DDevice_SetVertexShaderConstant_8)(); +xbox::void_xt __fastcall EMUPATCH(D3DDevice_SetVertexShaderConstant_8) +( + void*, + dword_xt ConstantCount, + int_xt Register, + CONST PVOID pConstantData +); + // ****************************************************************** // * patch: D3DDevice_SetVertexShaderConstant1