Implement D3D_BlockOnTime_4
This commit is contained in:
parent
9a773ef7ac
commit
5592f81c02
|
@ -8608,6 +8608,33 @@ void WINAPI xbox::EMUPATCH(D3D_BlockOnTime)( dword_xt Unknown1, int Unknown2 )
|
|||
LOG_UNIMPLEMENTED();
|
||||
}
|
||||
|
||||
// LTCG specific D3D_BlockOnTime function
|
||||
// This uses a custom calling convention where parameter is passed in EAX
|
||||
// Test case: Burnout 3
|
||||
__declspec(naked) void WINAPI xbox::EMUPATCH(D3D_BlockOnTime_4)( dword_xt Unknown1 )
|
||||
{
|
||||
int Unknown2;
|
||||
|
||||
// prologue
|
||||
__asm {
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
sub esp, __LOCAL_SIZE
|
||||
mov Unknown2, eax // get parameter from eax
|
||||
}
|
||||
|
||||
// LOG_FORWARD requires unwinding, so carry on without it
|
||||
EMUPATCH(D3D_BlockOnTime)(Unknown1, Unknown2);
|
||||
|
||||
// epilogue
|
||||
__asm {
|
||||
mov esp, ebp
|
||||
pop ebp
|
||||
ret 4
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool DestroyResource_Common(xbox::X_D3DResource* pResource)
|
||||
{
|
||||
if (pResource == g_pXbox_RenderTarget) {
|
||||
|
|
|
@ -2068,6 +2068,12 @@ void WINAPI EMUPATCH(D3D_SetCommonDebugRegisters)();
|
|||
// ******************************************************************
|
||||
void WINAPI EMUPATCH(D3D_BlockOnTime)( dword_xt Unknown1, int Unknown2 );
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3D_BlockOnTime_4
|
||||
// One of the parameters (unknown which) passed in EAX
|
||||
// ******************************************************************
|
||||
void WINAPI EMUPATCH(D3D_BlockOnTime_4)( dword_xt Unknown1 );
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3D_BlockOnResource
|
||||
// ******************************************************************
|
||||
|
|
|
@ -181,6 +181,7 @@ std::map<const std::string, const xbox_patch_t> g_PatchTable = {
|
|||
PATCH_ENTRY("D3DDevice_UpdateOverlay", xbox::EMUPATCH(D3DDevice_UpdateOverlay), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DResource_BlockUntilNotBusy", xbox::EMUPATCH(D3DResource_BlockUntilNotBusy), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3D_BlockOnTime", xbox::EMUPATCH(D3D_BlockOnTime), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3D_BlockOnTime_4", xbox::EMUPATCH(D3D_BlockOnTime_4), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3D_DestroyResource", xbox::EMUPATCH(D3D_DestroyResource), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3D_DestroyResource__LTCG", xbox::EMUPATCH(D3D_DestroyResource__LTCG), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3D_LazySetPointParams", xbox::EMUPATCH(D3D_LazySetPointParams), PATCH_HLE_D3D),
|
||||
|
|
Loading…
Reference in New Issue