Merge pull request #2118 from CookiePLMonster/load-vertex-shader-ltcg
Split D3DDevice_LoadVertexShader_0 into two OOVPAs
This commit is contained in:
commit
aa3c09c430
|
@ -1 +1 @@
|
||||||
Subproject commit b671576370e044d5b3533ab4e35a296ed9a86021
|
Subproject commit a477ce6ad6278e1c7358a446cdd8d995a8c45d12
|
|
@ -272,7 +272,6 @@ g_EmuCDPD;
|
||||||
XB_MACRO(xbox::hresult_xt, WINAPI, D3DDevice_LightEnable, (xbox::dword_xt, xbox::bool_xt) ); \
|
XB_MACRO(xbox::hresult_xt, WINAPI, D3DDevice_LightEnable, (xbox::dword_xt, xbox::bool_xt) ); \
|
||||||
/*XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_LoadVertexShader, (xbox::dword_xt, xbox::dword_xt) );*/\
|
/*XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_LoadVertexShader, (xbox::dword_xt, xbox::dword_xt) );*/\
|
||||||
/*XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_LoadVertexShaderProgram, (CONST xbox::dword_xt*, xbox::dword_xt) );*/\
|
/*XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_LoadVertexShaderProgram, (CONST xbox::dword_xt*, xbox::dword_xt) );*/\
|
||||||
/*XB_MACRO(xbox::void_xt, __stdcall, D3DDevice_LoadVertexShader_0, () );*/\
|
|
||||||
/*XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_LoadVertexShader_4, (xbox::dword_xt) );*/\
|
/*XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_LoadVertexShader_4, (xbox::dword_xt) );*/\
|
||||||
XB_MACRO(xbox::hresult_xt, WINAPI, D3DDevice_PersistDisplay, (xbox::void_xt) ); \
|
XB_MACRO(xbox::hresult_xt, WINAPI, D3DDevice_PersistDisplay, (xbox::void_xt) ); \
|
||||||
XB_MACRO(xbox::hresult_xt, WINAPI, D3DDevice_Reset, (xbox::X_D3DPRESENT_PARAMETERS*) ); \
|
XB_MACRO(xbox::hresult_xt, WINAPI, D3DDevice_Reset, (xbox::X_D3DPRESENT_PARAMETERS*) ); \
|
||||||
|
@ -3603,7 +3602,7 @@ xbox::hresult_xt WINAPI xbox::EMUPATCH(D3DDevice_GetVisibilityTestResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overload for logging
|
// Overload for logging
|
||||||
static void D3DDevice_LoadVertexShader_0
|
static void D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle
|
||||||
(
|
(
|
||||||
xbox::dword_xt Handle,
|
xbox::dword_xt Handle,
|
||||||
xbox::dword_xt Address
|
xbox::dword_xt Address
|
||||||
|
@ -3618,7 +3617,7 @@ static void D3DDevice_LoadVertexShader_0
|
||||||
// LTCG specific D3DDevice_LoadVertexShader function...
|
// LTCG specific D3DDevice_LoadVertexShader function...
|
||||||
// This uses a custom calling convention where parameter is passed in EAX, ECX
|
// This uses a custom calling convention where parameter is passed in EAX, ECX
|
||||||
// Test-case: Aggressive Inline
|
// Test-case: Aggressive Inline
|
||||||
__declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader_0)
|
__declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle)
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -3631,7 +3630,46 @@ __declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log
|
// Log
|
||||||
D3DDevice_LoadVertexShader_0(Handle, Address);
|
D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle(Handle, Address);
|
||||||
|
|
||||||
|
CxbxImpl_LoadVertexShader(Handle, Address);
|
||||||
|
|
||||||
|
__asm {
|
||||||
|
LTCG_EPILOGUE
|
||||||
|
ret
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Overload for logging
|
||||||
|
static void D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle
|
||||||
|
(
|
||||||
|
xbox::dword_xt Handle,
|
||||||
|
xbox::dword_xt Address
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOG_FUNC_BEGIN
|
||||||
|
LOG_FUNC_ARG(Handle)
|
||||||
|
LOG_FUNC_ARG(Address)
|
||||||
|
LOG_FUNC_END;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LTCG specific D3DDevice_LoadVertexShader function...
|
||||||
|
// This uses a custom calling convention where parameter is passed in EAX, EDX
|
||||||
|
// Test-case: World Racing 2, Project Zero 2 (PAL)
|
||||||
|
__declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle)
|
||||||
|
(
|
||||||
|
)
|
||||||
|
{
|
||||||
|
dword_xt Handle;
|
||||||
|
dword_xt Address;
|
||||||
|
__asm {
|
||||||
|
LTCG_PROLOGUE
|
||||||
|
mov Address, eax
|
||||||
|
mov Handle, edx
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log
|
||||||
|
D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle(Handle, Address);
|
||||||
|
|
||||||
CxbxImpl_LoadVertexShader(Handle, Address);
|
CxbxImpl_LoadVertexShader(Handle, Address);
|
||||||
|
|
||||||
|
|
|
@ -216,7 +216,8 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader)
|
||||||
dword_xt Address
|
dword_xt Address
|
||||||
);
|
);
|
||||||
|
|
||||||
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0)();
|
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle)();
|
||||||
|
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle)();
|
||||||
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_4)
|
xbox::void_xt WINAPI EMUPATCH(D3DDevice_LoadVertexShader_4)
|
||||||
(
|
(
|
||||||
dword_xt Address
|
dword_xt Address
|
||||||
|
|
|
@ -107,7 +107,8 @@ std::map<const std::string, const xbox_patch_t> g_PatchTable = {
|
||||||
PATCH_ENTRY("D3DDevice_LightEnable", xbox::EMUPATCH(D3DDevice_LightEnable), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_LightEnable", xbox::EMUPATCH(D3DDevice_LightEnable), PATCH_HLE_D3D),
|
||||||
PATCH_ENTRY("D3DDevice_LoadVertexShader", xbox::EMUPATCH(D3DDevice_LoadVertexShader), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_LoadVertexShader", xbox::EMUPATCH(D3DDevice_LoadVertexShader), PATCH_HLE_D3D),
|
||||||
PATCH_ENTRY("D3DDevice_LoadVertexShaderProgram", xbox::EMUPATCH(D3DDevice_LoadVertexShaderProgram), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_LoadVertexShaderProgram", xbox::EMUPATCH(D3DDevice_LoadVertexShaderProgram), PATCH_HLE_D3D),
|
||||||
PATCH_ENTRY("D3DDevice_LoadVertexShader_0", xbox::EMUPATCH(D3DDevice_LoadVertexShader_0), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle", xbox::EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle), PATCH_HLE_D3D),
|
||||||
|
PATCH_ENTRY("D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle", xbox::EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle), PATCH_HLE_D3D),
|
||||||
PATCH_ENTRY("D3DDevice_LoadVertexShader_4", xbox::EMUPATCH(D3DDevice_LoadVertexShader_4), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_LoadVertexShader_4", xbox::EMUPATCH(D3DDevice_LoadVertexShader_4), PATCH_HLE_D3D),
|
||||||
PATCH_ENTRY("D3DDevice_MultiplyTransform", xbox::EMUPATCH(D3DDevice_MultiplyTransform), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_MultiplyTransform", xbox::EMUPATCH(D3DDevice_MultiplyTransform), PATCH_HLE_D3D),
|
||||||
PATCH_ENTRY("D3DDevice_PersistDisplay", xbox::EMUPATCH(D3DDevice_PersistDisplay), PATCH_HLE_D3D),
|
PATCH_ENTRY("D3DDevice_PersistDisplay", xbox::EMUPATCH(D3DDevice_PersistDisplay), PATCH_HLE_D3D),
|
||||||
|
|
Loading…
Reference in New Issue