Add a new LTCG variation of D3DDevice_SetStreamSource
Found in Juiced.
This commit is contained in:
parent
1034185a62
commit
1e92046b0b
|
@ -1 +1 @@
|
|||
Subproject commit 5b8d3feb15c2edae309c1613ca0bc26e54f0c23e
|
||||
Subproject commit c2fe7365adae51ffabd9fe318ecdfaeac2cbe097
|
|
@ -322,6 +322,7 @@ g_EmuCDPD;
|
|||
XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_SetRenderTarget, (xbox::X_D3DSurface*, xbox::X_D3DSurface*) ); \
|
||||
XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_SetRenderTarget_0, () ); \
|
||||
XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_SetStreamSource, (xbox::uint_xt, xbox::X_D3DVertexBuffer*, xbox::uint_xt) ); \
|
||||
XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride, () ); \
|
||||
XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_SetStreamSource_4, (xbox::uint_xt) ); \
|
||||
XB_MACRO(xbox::void_xt, WINAPI, D3DDevice_SetStreamSource_8, (xbox::X_D3DVertexBuffer*, xbox::uint_xt) ); \
|
||||
XB_MACRO(xbox::void_xt, __fastcall, D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber, (void*, xbox::uint_xt, xbox::X_D3DVertexBuffer*, xbox::uint_xt) ); \
|
||||
|
@ -6879,6 +6880,52 @@ xbox::void_xt WINAPI xbox::EMUPATCH(Lock3DSurface)
|
|||
ForceResourceRehash(pPixelContainer);
|
||||
}
|
||||
|
||||
// Overload for logging
|
||||
static void D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride
|
||||
(
|
||||
xbox::uint_xt StreamNumber,
|
||||
xbox::X_D3DVertexBuffer *pStreamData,
|
||||
xbox::uint_xt Stride
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(StreamNumber)
|
||||
LOG_FUNC_ARG(pStreamData)
|
||||
LOG_FUNC_ARG(Stride)
|
||||
LOG_FUNC_END;
|
||||
}
|
||||
|
||||
// LTCG specific D3DDevice_SetStreamSource function...
|
||||
// This uses a custom calling convention where parameters are passed in EAX, EDI, EBX
|
||||
// Test-case: Juiced
|
||||
__declspec(naked) xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride)()
|
||||
{
|
||||
uint_xt StreamNumber;
|
||||
X_D3DVertexBuffer *pStreamData;
|
||||
uint_xt Stride;
|
||||
__asm {
|
||||
LTCG_PROLOGUE
|
||||
mov StreamNumber, eax
|
||||
mov pStreamData, edi
|
||||
mov Stride, ebx
|
||||
}
|
||||
|
||||
// Log
|
||||
D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride(StreamNumber, pStreamData, Stride);
|
||||
|
||||
CxbxImpl_SetStreamSource(StreamNumber, pStreamData, Stride);
|
||||
|
||||
__asm {
|
||||
mov eax, StreamNumber
|
||||
mov edi, pStreamData
|
||||
mov ebx, Stride
|
||||
call XB_TRMP(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride)
|
||||
|
||||
LTCG_EPILOGUE
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
// Overload for logging
|
||||
static void D3DDevice_SetStreamSource_4
|
||||
(
|
||||
|
|
|
@ -1370,6 +1370,8 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource)
|
|||
uint_xt Stride
|
||||
);
|
||||
|
||||
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride)();
|
||||
|
||||
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetStreamSource_4)
|
||||
(
|
||||
uint_xt Stride
|
||||
|
|
|
@ -148,6 +148,7 @@ std::map<const std::string, const xbox_patch_t> g_PatchTable = {
|
|||
PATCH_ENTRY("D3DDevice_SetStateVB", xbox::EMUPATCH(D3DDevice_SetStateVB), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SetStipple", xbox::EMUPATCH(D3DDevice_SetStipple), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SetStreamSource", xbox::EMUPATCH(D3DDevice_SetStreamSource), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride", xbox::EMUPATCH(D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SetStreamSource_4", xbox::EMUPATCH(D3DDevice_SetStreamSource_4), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SetStreamSource_8", xbox::EMUPATCH(D3DDevice_SetStreamSource_8), PATCH_HLE_D3D),
|
||||
PATCH_ENTRY("D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber", xbox::EMUPATCH(D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber), PATCH_HLE_D3D),
|
||||
|
|
Loading…
Reference in New Issue