d3d8ltcg: add D3DDevice_UpdateOverlay_16__LTCG_eax2 patch
This commit is contained in:
parent
b446452feb
commit
da8d26af40
|
@ -6487,25 +6487,16 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_EnableOverlay_0__LTCG)()
|
|||
CxbxrImpl_EnableOverlay();
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3DDevice_UpdateOverlay
|
||||
// ******************************************************************
|
||||
xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_UpdateOverlay)
|
||||
static void CxbxrImpl_UpdateOverlay
|
||||
(
|
||||
X_D3DSurface *pSurface,
|
||||
CONST RECT *SrcRect,
|
||||
CONST RECT *DstRect,
|
||||
bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
xbox::X_D3DSurface *pSurface,
|
||||
CONST RECT *SrcRect,
|
||||
CONST RECT *DstRect,
|
||||
xbox::bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(pSurface)
|
||||
LOG_FUNC_ARG(SrcRect)
|
||||
LOG_FUNC_ARG(DstRect)
|
||||
LOG_FUNC_ARG(EnableColorKey)
|
||||
LOG_FUNC_ARG(ColorKey)
|
||||
LOG_FUNC_END;
|
||||
using namespace xbox;
|
||||
|
||||
// Reset and remember the overlay arguments, so our D3DDevice_Swap patch
|
||||
// can correctly show this overlay surface data.
|
||||
|
@ -6530,6 +6521,76 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_UpdateOverlay)
|
|||
}
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3DDevice_UpdateOverlay
|
||||
// ******************************************************************
|
||||
xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_UpdateOverlay)
|
||||
(
|
||||
X_D3DSurface *pSurface,
|
||||
CONST RECT *SrcRect,
|
||||
CONST RECT *DstRect,
|
||||
bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(pSurface)
|
||||
LOG_FUNC_ARG(SrcRect)
|
||||
LOG_FUNC_ARG(DstRect)
|
||||
LOG_FUNC_ARG(EnableColorKey)
|
||||
LOG_FUNC_ARG(ColorKey)
|
||||
LOG_FUNC_END;
|
||||
|
||||
CxbxrImpl_UpdateOverlay(pSurface, SrcRect, DstRect, EnableColorKey, ColorKey);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3DDevice_UpdateOverlay_16__LTCG_eax2
|
||||
// ******************************************************************
|
||||
static void D3DDevice_UpdateOverlay_16__LTCG_eax2
|
||||
(
|
||||
xbox::X_D3DSurface *pSurface,
|
||||
CONST RECT *SrcRect,
|
||||
CONST RECT *DstRect,
|
||||
xbox::bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(pSurface)
|
||||
LOG_FUNC_ARG(SrcRect)
|
||||
LOG_FUNC_ARG(DstRect)
|
||||
LOG_FUNC_ARG(EnableColorKey)
|
||||
LOG_FUNC_ARG(ColorKey)
|
||||
LOG_FUNC_END;
|
||||
}
|
||||
|
||||
// This uses a custom calling convention where parameter is passed in EAX
|
||||
__declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_UpdateOverlay_16__LTCG_eax2)
|
||||
(
|
||||
X_D3DSurface *pSurface,
|
||||
CONST RECT *DstRect,
|
||||
bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
)
|
||||
{
|
||||
RECT* SrcRect;
|
||||
__asm {
|
||||
LTCG_PROLOGUE
|
||||
mov SrcRect, eax
|
||||
}
|
||||
|
||||
// Log
|
||||
D3DDevice_UpdateOverlay_16__LTCG_eax2(pSurface, SrcRect, DstRect, EnableColorKey, ColorKey);
|
||||
|
||||
CxbxrImpl_UpdateOverlay(pSurface, SrcRect, DstRect, EnableColorKey, ColorKey);
|
||||
|
||||
__asm {
|
||||
LTCG_EPILOGUE
|
||||
ret 16
|
||||
}
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3DDevice_GetOverlayUpdateStatus
|
||||
// ******************************************************************
|
||||
|
|
|
@ -999,7 +999,18 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_UpdateOverlay)
|
|||
X_D3DSurface *pSurface,
|
||||
CONST RECT *SrcRect,
|
||||
CONST RECT *DstRect,
|
||||
bool_xt EnableColorKey,
|
||||
bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * patch: D3DDevice_UpdateOverlay
|
||||
// ******************************************************************
|
||||
xbox::void_xt WINAPI EMUPATCH(D3DDevice_UpdateOverlay_16__LTCG_eax2)
|
||||
(
|
||||
X_D3DSurface *pSurface,
|
||||
CONST RECT *DstRect,
|
||||
bool_xt EnableColorKey,
|
||||
D3DCOLOR ColorKey
|
||||
);
|
||||
|
||||
|
|
|
@ -194,6 +194,7 @@ std::map<const std::string, const xbox_patch_t> g_PatchTable = {
|
|||
PATCH_ENTRY("D3DDevice_Swap_0__LTCG_eax1", xbox::EMUPATCH(D3DDevice_Swap_0__LTCG_eax1), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SwitchTexture", xbox::EMUPATCH(D3DDevice_SwitchTexture), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_UpdateOverlay", xbox::EMUPATCH(D3DDevice_UpdateOverlay), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_UpdateOverlay_16__LTCG_eax2", xbox::EMUPATCH(D3DDevice_UpdateOverlay_16__LTCG_eax2), 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__LTCG_eax1", xbox::EMUPATCH(D3D_BlockOnTime_4__LTCG_eax1), PATCH_HLE_D3D),
|
||||
|
|
Loading…
Reference in New Issue