Remove HLE API enum elements for LTCG variants, because those should push the same values to the push buffer anyway

This commit is contained in:
PatrickvL 2023-11-04 23:27:46 +01:00
parent c72ea57085
commit e1c9324dce
3 changed files with 80 additions and 120 deletions

View File

@ -3769,7 +3769,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetIndices_4)
// Cache the base vertex index
// g_Xbox_BaseVertexIndex = BaseVertexIndex;
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetIndices_4,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetIndices,
(DWORD)pIndexData,
(DWORD)BaseVertexIndex);
@ -3972,7 +3972,7 @@ LTCG_DECL xbox::hresult_xt WINAPI xbox::EMUPATCH(D3DDevice_Reset_0__LTCG_edi1)()
// Log
D3DDevice_Reset_0__LTCG_edi1(pPresentationParameters);
EmuKickOffWait(X_D3DDevice_Reset_0__LTCG_edi1);
EmuKickOffWait(X_D3DDevice_Reset);
CxbxrImpl_Reset(pPresentationParameters);
@ -4006,7 +4006,7 @@ LTCG_DECL xbox::hresult_xt WINAPI xbox::EMUPATCH(D3DDevice_Reset_0__LTCG_ebx1)()
// Log
D3DDevice_Reset_0__LTCG_ebx1(pPresentationParameters);
EmuKickOffWait(X_D3DDevice_Reset_0__LTCG_ebx1);
EmuKickOffWait(X_D3DDevice_Reset);
CxbxrImpl_Reset(pPresentationParameters);
@ -4325,7 +4325,7 @@ LTCG_DECL xbox::hresult_xt WINAPI xbox::EMUPATCH(D3DDevice_EndVisibilityTest_0)
xbox::hresult_xt result;
EmuKickOffWait(X_D3DDevice_EndVisibilityTest_0);
EmuKickOffWait(X_D3DDevice_EndVisibilityTest);
result = CxbxrImpl_EndVisibilityTest(Index);//EMUPATCH(D3DDevice_EndVisibilityTest)(Index);
__asm {
@ -4462,7 +4462,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG
//CxbxrImpl_LoadVertexShader(Handle, Address);
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_LoadVertexShader,
(DWORD)Handle,
(DWORD)Address);
@ -4506,7 +4506,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader_0__LTCG
//CxbxrImpl_LoadVertexShader(Handle, Address);
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_LoadVertexShader,
(DWORD)Handle,
(DWORD)Address);
@ -4549,7 +4549,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_LoadVertexShader_4)
//CxbxrImpl_LoadVertexShader(Handle, Address);
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_LoadVertexShader_4,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_LoadVertexShader,
(DWORD)Handle,
(DWORD)Address);
@ -4622,7 +4622,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SelectVertexShader_0__LT
#if !USEPGRAPH_SelectVertexShader
CxbxrImpl_SelectVertexShader(Handle, Address);
#else
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SelectVertexShader_0__LTCG_eax1_ebx2,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SelectVertexShader,
(DWORD)Handle,
(DWORD)Address);
#endif
@ -4666,7 +4666,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SelectVertexShader_4__LT
#if !USEPGRAPH_SelectVertexShader
CxbxrImpl_SelectVertexShader(Handle, Address);
#else
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SelectVertexShader_4__LTCG_eax1,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SelectVertexShader,
(DWORD)Handle,
(DWORD)Address);
#endif
@ -4937,7 +4937,6 @@ LTCG_DECL xbox::X_D3DSurface* WINAPI xbox::EMUPATCH(D3DDevice_GetBackBuffer2_0__
(
)
{
int_xt BackBuffer; // = 0 initialized auto or register variable not allowed at function scope in 'naked' function
__asm {
LTCG_PROLOGUE
@ -5980,7 +5979,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData2f)
else {
CxbxrImpl_SetVertexData4f(Register, a, b, 0.0f, 1.0f);
/*
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4fm
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4f,
(DWORD)Register,
FtoDW(a),
FtoDW(b),
@ -6022,7 +6021,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData2s)
CxbxrImpl_SetVertexData4f(Register, a, b, 0.0f, 1.0f);
/*
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4fm
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4f,
(DWORD)Register,
FtoDW(fa),
FtoDW(fb),
@ -6053,15 +6052,6 @@ static void D3DDevice_SetVertexData4f_16
LOG_FUNC_ARG(c)
LOG_FUNC_ARG(d)
LOG_FUNC_END;
/*
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4f,
(DWORD)Register,
FtoDW(a),
FtoDW(b),
FtoDW(c),
FtoDW(d));
*/
}
// ******************************************************************
@ -6090,6 +6080,15 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData4f_16)
D3DDevice_SetVertexData4f_16(Register, a, b, c, d);
CxbxrImpl_SetVertexData4f(Register, a, b, c, d);
/*
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4f,
(DWORD)Register,
FtoDW(a),
FtoDW(b),
FtoDW(c),
FtoDW(d));
*/
}
_asm {
LTCG_EPILOGUE
@ -6209,7 +6208,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData4s)
CxbxrImpl_SetVertexData4f(Register, fa, fb, fc, fd);
/*
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4fm
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexData4f,
(DWORD)Register,
FtoDW(fa),
FtoDW(fb),
@ -6306,7 +6305,6 @@ void CxbxrImpl_Clear
xbox::dword_xt Stencil
)
{
DWORD HostFlags = 0;
// Clear requires the Xbox viewport to be applied
@ -6382,7 +6380,6 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_Clear)
dword_xt Stencil
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Count)
LOG_FUNC_ARG(pRects)
@ -6412,6 +6409,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_Clear)
}
#endif
}
// ******************************************************************
// * patch: D3DDevice_CopyRects
// ******************************************************************
@ -6748,7 +6746,7 @@ void CxbxrUpdateHostXboxBackBufferSurface(xbox::X_D3DSurface *pXboxSurface)
{
LOG_INIT
IDirect3DSurface* pHostXboxSurface = GetHostSurface(g_pXbox_BackBufferSurface, D3DUSAGE_RENDERTARGET);
IDirect3DSurface* pHostXboxSurface = GetHostSurface(g_pXbox_BackBufferSurface, D3DUSAGE_RENDERTARGET);
IDirect3DSurface* pTmpHostSurface = nullptr;
IDirect3DTexture* pTmpHostTexture = nullptr;
D3DSURFACE_DESC HostXboxSurfaceDesc;
@ -7204,6 +7202,7 @@ DWORD CxbxrImpl_Swap
return result;
}
// ******************************************************************
// * patch: D3DDevice_Swap
// ******************************************************************
@ -8122,6 +8121,7 @@ D3DXVECTOR4 toVector(D3DCOLORVALUE val) {
extern bool is_pgraph_DirectModelView(void);
extern bool is_pgraph_using_NV2A_Kelvin();// tmp glue
extern xbox::X_D3DLIGHT8* CxbxrGetLight8Ptr(int lightNum);
D3DMATRIX g_xbox_transform_ModelView;
D3DMATRIX g_xbox_transform_InverseModelView;
D3DMATRIX g_xbox_transform_Composite;
@ -8137,7 +8137,8 @@ D3DMATRIX g_xbox_transform_ProjectionViewportTransform;
extern inline bool is_pgraph_using_NV2A_Kelvin(void);
static D3DMATRIX * g_xbox_ProjectionViewportTransform = nullptr;
void UpdateFixedFunctionShaderLight(int d3dLightIndex, Light* pShaderLight, D3DXVECTOR4* pLightAmbient) {
void UpdateFixedFunctionShaderLight(int d3dLightIndex, Light* pShaderLight, D3DXVECTOR4* pLightAmbient)
{
if (d3dLightIndex == -1) {
pShaderLight->Type = 0; // Disable the light
return;
@ -8728,6 +8729,7 @@ void CxbxrImpl_GetTransform
*pMatrix = *(g_xbox_transform_matrix + State);
}
}
// sets xbox d3d transform matrix directly without applying any d3d transforms.
void CxbxrImpl_SetTransformFast
(
@ -8792,7 +8794,7 @@ static void D3DDevice_SetTransform_0__LTCG_eax1_edx2
// Allocate 32 DWORDS, ie. 128 bytes in pushbuffer because we're storing the whole transform matrix into the pushbuffer and point pMatrix to it.
const int dword_count = 32; // Note : 2 + 1 + 1 + 16 would be enough
DWORD* pPush_local = HLE_PushPrepare(X_D3DAPI_ENUM::X_D3DDevice_SetTransform_0__LTCG_eax1_edx2, dword_count);
DWORD* pPush_local = HLE_PushPrepare(X_D3DAPI_ENUM::X_D3DDevice_SetTransform, dword_count);
pPush_local[2] = (DWORD)State;
//point the pMatrix for CxbxrImpl_SetTransform() to the matrix in pPush_local[4]
pPush_local[3] = (DWORD)&pPush_local[4];
@ -9947,6 +9949,7 @@ CONST DWORD g_TilePitches[] =
0xC000 , // D3DTILE_PITCH_C000
0xE000 , // D3DTILE_PITCH_E000
};
//using fixed size array to cache the textures.
//todo: check if 32 is enough or not.
xbox::X_D3DSurface g_XGSetSurface[32] = {0};
@ -10436,7 +10439,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexShader)
CxbxrImpl_SetVertexShader(Handle);
#else
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexShader,
(DWORD)Handle);
Handle);
#endif
#endif
}
@ -10479,7 +10482,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexShader_0)()
}
#if 0
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetVertexShader,
(DWORD)Handle);
Handle);
#endif
#if !USEPGRAPH_SetVertexShader
//CxbxrImpl_SetVertexShader(Handle);
@ -11823,7 +11826,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetPixelShader_0__LTCG_e
//CxbxrImpl_SetPixelShader(Handle);
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetPixelShader_0__LTCG_eax_handle,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetPixelShader,
(DWORD)Handle);
__asm {
@ -12003,7 +12006,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_DrawVertices_4__LTCG_ecx
if (g_pXbox_BeginPush_Buffer != nullptr){
XB_TRMP(D3DDevice_DrawVertices_4__LTCG_ecx2_eax3)(PrimitiveType);
}else{
EmuKickOffWait(X_D3DDevice_DrawVertices_4__LTCG_ecx2_eax3);
EmuKickOffWait(X_D3DDevice_DrawVertices);
// Dxbx Note : In DrawVertices and DrawIndexedVertices, PrimitiveType may not be D3DPT_POLYGON
// Move original implementation code to CxbxrImpl_DrawVertices(PrimitiveType, StartVertex, VertexCount); for duplicate usage with D3DDevice_DrawVertices_4
// CxbxrImpl_DrawVertices(PrimitiveType, StartVertex, VertexCount);
@ -12036,7 +12039,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_DrawVertices_8__LTCG_eax
XB_TRMP(D3DDevice_DrawVertices_8__LTCG_eax3)(PrimitiveType, StartVertex);
}
else {
EmuKickOffWait(X_D3DDevice_DrawVertices_8__LTCG_eax3);
EmuKickOffWait(X_D3DDevice_DrawVertices);
// Dxbx Note : In DrawVertices and DrawIndexedVertices, PrimitiveType may not be D3DPT_POLYGON
// Move original implementation code to CxbxrImpl_DrawVertices(PrimitiveType, StartVertex, VertexCount); for duplicate usage with D3DDevice_DrawVertices_4
// CxbxrImpl_DrawVertices(PrimitiveType, StartVertex, VertexCount);
@ -12163,7 +12166,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_DrawVerticesUP_12__LTCG_
XB_TRMP(D3DDevice_DrawVerticesUP_12__LTCG_ebx3)(PrimitiveType, VertexCount, VertexStreamZeroStride);
}
else {
EmuKickOffWait(X_D3DDevice_DrawVerticesUP_12__LTCG_ebx3);
EmuKickOffWait(X_D3DDevice_DrawVerticesUP);
// We can't call emupatch() here because the target function calls trampoline which might not be available in guest code.
//EMUPATCH(D3DDevice_DrawVerticesUP)(PrimitiveType, VertexCount, pVertexStreamZeroData, VertexStreamZeroStride);
//CxbxrImpl_DrawVerticesUP(PrimitiveType, VertexCount, pVertexStreamZeroData, VertexStreamZeroStride);
@ -12973,7 +12976,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetRenderTarget_0)
if (pNewZStencil)
CxbxrImpl_Resource_AddRef(pNewZStencil);
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetRenderTarget_0,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetRenderTarget,
(DWORD)pRenderTarget,
(DWORD)pNewZStencil);
}
@ -13094,7 +13097,7 @@ LTCG_DECL xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetPalette_4)
//CxbxrImpl_SetPalette(Stage, pPalette);
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetPalette_4,
HLE_PushApi(X_D3DAPI_ENUM::X_D3DDevice_SetPalette,
(DWORD)Stage,
(DWORD)pPalette);
@ -14544,7 +14547,7 @@ LTCG_DECL void WINAPI xbox::EMUPATCH(D3D_DestroyResource__LTCG)()
FreeHostResource(GetHostResourceKey(pResource));
//do not sync D3D_DestroyResource() with pgraph, might introduce memory corruption
#if 0
HLE_PushApi(X_D3DAPI_ENUM::X_D3D_DestroyResource__LTCG,
HLE_PushApi(X_D3DAPI_ENUM::X_D3D_DestroyResource,
(DWORD)pResource);
#endif
// Call the Xbox version of DestroyResource

View File

@ -1,4 +1,5 @@
#include "..\XbD3D8Types.h"
// enum for xbox D3DDevice APIs
typedef enum _X_D3DAPI_ENUM {
@ -43,7 +44,7 @@ typedef enum _X_D3DAPI_ENUM {
X_D3DDevice_DeletePatch,
X_D3DDevice_DeletePixelShader,
X_D3DDevice_DeleteStateBlock,
X_D3DDevice_DeleteVertexShader, X_D3DDevice_DeleteVertexShader_0,
X_D3DDevice_DeleteVertexShader,
X_D3DDevice_DrawIndexedPrimitive,
X_D3DDevice_DrawIndexedPrimitiveUP,
X_D3DDevice_DrawIndexedVertices,
@ -52,8 +53,8 @@ typedef enum _X_D3DAPI_ENUM {
X_D3DDevice_DrawPrimitiveUP,
X_D3DDevice_DrawRectPatch,
X_D3DDevice_DrawTriPatch,
X_D3DDevice_DrawVertices, X_D3DDevice_DrawVertices_4__LTCG_ecx2_eax3, X_D3DDevice_DrawVertices_8__LTCG_eax3,
X_D3DDevice_DrawVerticesUP, X_D3DDevice_DrawVerticesUP_12__LTCG_ebx3,
X_D3DDevice_DrawVertices,
X_D3DDevice_DrawVerticesUP,
X_D3DDevice_EnableOverlay,
X_D3DDevice_End,
X_D3DDevice_EndPush,
@ -61,9 +62,9 @@ typedef enum _X_D3DAPI_ENUM {
X_D3DDevice_EndScene,
X_D3DDevice_EndState,
X_D3DDevice_EndStateBlock,
X_D3DDevice_EndVisibilityTest, X_D3DDevice_EndVisibilityTest_0,
X_D3DDevice_EndVisibilityTest,
X_D3DDevice_FlushVertexCache,
X_D3DDevice_GetBackBuffer, X_D3DDevice_GetBackBuffer2, X_D3DDevice_GetBackBuffer2_0__LTCG_eax1,
X_D3DDevice_GetBackBuffer, X_D3DDevice_GetBackBuffer2,
X_D3DDevice_GetBackBufferScale,
X_D3DDevice_GetBackMaterial,
X_D3DDevice_GetCopyRectsState,
@ -121,51 +122,51 @@ typedef enum _X_D3DAPI_ENUM {
X_D3DDevice_IsFencePending,
X_D3DDevice_KickPushBuffer,
X_D3DDevice_LightEnable,
X_D3DDevice_LoadVertexShader, X_D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle, X_D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle, X_D3DDevice_LoadVertexShader_4,
X_D3DDevice_LoadVertexShader,
X_D3DDevice_LoadVertexShaderProgram,
X_D3DDevice_MultiplyTransform,
X_D3DDevice_Nop,
X_D3DDevice_PersistDisplay,
X_D3DDevice_Present,
X_D3DDevice_PrimeVertexCache,
X_D3DDevice_Reset, X_D3DDevice_Reset_0__LTCG_edi1, X_D3DDevice_Reset_0__LTCG_ebx1,
X_D3DDevice_Reset,
X_D3DDevice_RunPushBuffer,
X_D3DDevice_RunVertexStateShader,
X_D3DDevice_SelectVertexShader, X_D3DDevice_SelectVertexShader_0__LTCG_eax1_ebx2, X_D3DDevice_SelectVertexShader_4__LTCG_eax1,
X_D3DDevice_SelectVertexShader,
X_D3DDevice_SelectVertexShaderDirect,
X_D3DDevice_SetBackBufferScale,
X_D3DDevice_SetBackMaterial,
X_D3DDevice_SetCopyRectsState,
X_D3DDevice_SetDebugMarker,
X_D3DDevice_SetDepthClipPlanes,
X_D3DDevice_SetFlickerFilter, X_D3DDevice_SetFlickerFilter_0,
X_D3DDevice_SetFlickerFilter,
X_D3DDevice_SetGammaRamp,
X_D3DDevice_SetIndices, X_D3DDevice_SetIndices_4,
X_D3DDevice_SetIndices,
X_D3DDevice_SetLight,
X_D3DDevice_SetMaterial,
X_D3DDevice_SetModelView,
X_D3DDevice_SetOverscanColor,
X_D3DDevice_SetPalette, X_D3DDevice_SetPalette_4,
X_D3DDevice_SetPixelShader, X_D3DDevice_SetPixelShader_0__LTCG_eax_handle,
X_D3DDevice_SetPixelShaderConstant, X_D3DDevice_SetPixelShaderConstant_4,
X_D3DDevice_SetPalette,
X_D3DDevice_SetPixelShader,
X_D3DDevice_SetPixelShaderConstant,
X_D3DDevice_SetPixelShaderProgram,
X_D3DDevice_SetRenderState, X_D3DDevice_SetRenderState_Simple,
X_D3DDevice_SetRenderState,
X_D3DDevice_SetRenderState_Simple,
X_D3DDevice_SetRenderStateNotInline,
X_D3DDevice_SetRenderTarget, X_D3DDevice_SetRenderTarget_0,
X_D3DDevice_SetRenderTargetFast,
X_D3DDevice_SetRenderTarget,
X_D3DDevice_SetScissors,
X_D3DDevice_SetScreenSpaceOffset,
X_D3DDevice_SetShaderConstantMode, X_D3DDevice_SetShaderConstantMode_0__LTCG_eax1,
X_D3DDevice_SetShaderConstantMode,
X_D3DDevice_SetSoftDisplayFilter,
X_D3DDevice_SetStipple,
X_D3DDevice_SetStreamSource, X_D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride, X_D3DDevice_SetStreamSource_4, X_D3DDevice_SetStreamSource_8, X_D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber,
X_D3DDevice_SetStreamSource,
X_D3DDevice_SetSwapCallback,
X_D3DDevice_SetTexture, X_D3DDevice_SetTexture_4__LTCG_eax_pTexture, X_D3DDevice_SetTexture_4__LTCG_eax_Stage,
X_D3DDevice_SetTexture,
X_D3DDevice_SetTextureStageState,
X_D3DDevice_SetTextureStageStateNotInline,
X_D3DDevice_SetTile,
X_D3DDevice_SetTimerCallback,
X_D3DDevice_SetTransform, X_D3DDevice_SetTransform_0__LTCG_eax1_edx2,
X_D3DDevice_SetTransform,
X_D3DDevice_SetVertexBlendModelView,
X_D3DDevice_SetVertexData2f,
X_D3DDevice_SetVertexData2s,
@ -173,24 +174,23 @@ typedef enum _X_D3DAPI_ENUM {
X_D3DDevice_SetVertexData4s,
X_D3DDevice_SetVertexData4ub,
X_D3DDevice_SetVertexDataColor,
X_D3DDevice_SetVertexShader, X_D3DDevice_SetVertexShader_0,
X_D3DDevice_SetVertexShaderConstant, X_D3DDevice_SetVertexShaderConstant_8, X_D3DDevice_SetVertexShaderConstant1, X_D3DDevice_SetVertexShaderConstant4,
X_D3DDevice_SetVertexShaderConstantFast, X_D3DDevice_SetVertexShaderConstant1Fast, X_D3DDevice_SetVertexShaderConstantNotInline, X_D3DDevice_SetVertexShaderConstantNotInlineFast,
X_D3DDevice_SetVertexShader,
X_D3DDevice_SetVertexShaderConstant,
X_D3DDevice_SetVertexShaderInput,
X_D3DDevice_SetVertexShaderInputDirect,
X_D3DDevice_SetVerticalBlankCallback,
X_D3DDevice_SetViewport,
X_D3DDevice_SetWaitCallback,
X_D3DDevice_Swap, X_D3DDevice_Swap_0,
X_D3DDevice_Swap,
X_D3DDevice_SwitchTexture,
X_D3DDevice_UpdateOverlay,
X_D3DResource_BlockUntilNotBusy,
X_D3D_BlockOnTime, X_D3D_BlockOnTime_4,
X_D3D_BlockOnTime,
X_D3D_CommonSetRenderTarget,
X_D3D_DestroyResource, X_D3D_DestroyResource__LTCG,
X_D3D_DestroyResource,
X_D3D_LazySetPointParams,
X_D3D_SetCommonDebugRegisters,
X_Direct3D_CreateDevice, X_Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ebx_ppReturnedDeviceInterface, X_Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface, X_Direct3D_CreateDevice_4,
X_Direct3D_CreateDevice,
X_Lock2DSurface,
X_Lock3DSurface,
X_EmuKickOffWait,

View File

@ -1906,7 +1906,6 @@ int pgraph_handle_method(
case X_D3DDevice_DeletePixelShader: break;
case X_D3DDevice_DeleteStateBlock: break;
case X_D3DDevice_DeleteVertexShader: break;
case X_D3DDevice_DeleteVertexShader_0: break;
case X_D3DDevice_DrawIndexedPrimitive: //break; //fall through
case X_D3DDevice_DrawIndexedPrimitiveUP: //break; //fall through
case X_D3DDevice_DrawIndexedVertices: //break; //fall through
@ -1916,10 +1915,7 @@ int pgraph_handle_method(
case X_D3DDevice_DrawRectPatch: //break; //fall through
case X_D3DDevice_DrawTriPatch: //break; //fall through
case X_D3DDevice_DrawVertices: //break; //fall through
case X_D3DDevice_DrawVertices_4__LTCG_ecx2_eax3: //break; //fall through
case X_D3DDevice_DrawVertices_8__LTCG_eax3: //break; //fall through
case X_D3DDevice_DrawVerticesUP: //break; //fall through
case X_D3DDevice_DrawVerticesUP_12__LTCG_ebx3: {
extern void CxbxUpdateNativeD3DResources();
CxbxUpdateNativeD3DResources();
*(bool*)argv[1] = false;
@ -1933,14 +1929,12 @@ int pgraph_handle_method(
case X_D3DDevice_EndScene: break;
case X_D3DDevice_EndState: break;
case X_D3DDevice_EndStateBlock: break;
case X_D3DDevice_EndVisibilityTest: //break; //fall through
case X_D3DDevice_EndVisibilityTest_0:
case X_D3DDevice_EndVisibilityTest:
*(bool*)argv[1] = false;
break;
case X_D3DDevice_FlushVertexCache: break;
case X_D3DDevice_GetBackBuffer: break;
case X_D3DDevice_GetBackBuffer2: break;
case X_D3DDevice_GetBackBuffer2_0__LTCG_eax1: break;
case X_D3DDevice_GetBackBufferScale: break;
case X_D3DDevice_GetBackMaterial: break;
case X_D3DDevice_GetCopyRectsState: break;
@ -2006,10 +2000,7 @@ int pgraph_handle_method(
case X_D3DDevice_LightEnable:
CxbxrImpl_LightEnable((xbox::dword_xt) /* Index */ argv[1], (xbox::bool_xt) /* bEnable */ argv[2]);
break;
case X_D3DDevice_LoadVertexShader: // break;
case X_D3DDevice_LoadVertexShader_0__LTCG_eax_Address_ecx_Handle: // break; //fall through
case X_D3DDevice_LoadVertexShader_0__LTCG_eax_Address_edx_Handle: // break; //fall through
case X_D3DDevice_LoadVertexShader_4: // break; //fall through
case X_D3DDevice_LoadVertexShader:
CxbxrImpl_LoadVertexShader(argv[1], argv[2]);
break;
case X_D3DDevice_LoadVertexShaderProgram:
@ -2027,9 +2018,7 @@ int pgraph_handle_method(
* (bool*)argv[1] = false;
break;
case X_D3DDevice_PrimeVertexCache: break;
case X_D3DDevice_Reset: //break; //fall through
case X_D3DDevice_Reset_0__LTCG_edi1: //break; //fall through
case X_D3DDevice_Reset_0__LTCG_ebx1:
case X_D3DDevice_Reset:
*(bool*)argv[1] = false;
break;
case X_D3DDevice_RunPushBuffer:
@ -2050,9 +2039,7 @@ int pgraph_handle_method(
case X_D3DDevice_RunVertexStateShader:
CxbxrImpl_RunVertexStateShader(argv[1], (xbox::float_xt*)argv[2]);
break;
case X_D3DDevice_SelectVertexShader: // break;
case X_D3DDevice_SelectVertexShader_0__LTCG_eax1_ebx2: // break;
case X_D3DDevice_SelectVertexShader_4__LTCG_eax1:
case X_D3DDevice_SelectVertexShader:
CxbxrImpl_SelectVertexShader(argv[1], argv[2]);
break;
case X_D3DDevice_SelectVertexShaderDirect: break;
@ -2064,13 +2051,11 @@ int pgraph_handle_method(
case X_D3DDevice_SetDebugMarker: break;
case X_D3DDevice_SetDepthClipPlanes: break;
case X_D3DDevice_SetFlickerFilter: break;
case X_D3DDevice_SetFlickerFilter_0: break;
case X_D3DDevice_SetGammaRamp:
CxbxrImpl__SetGammaRamp((xbox::dword_xt)/* dwFlags*/argv[1], (D3DGAMMARAMP*)/* pRamp*/argv[2]);
*(bool*)argv[3] = false;
break;
case X_D3DDevice_SetIndices: //break; //fall through
case X_D3DDevice_SetIndices_4:
case X_D3DDevice_SetIndices:
CxbxrImpl_SetIndices((xbox::X_D3DIndexBuffer *)/* pIndexData */argv[1], (xbox::uint_xt) /* BaseVertexIndex */ argv[2]);
break;
case X_D3DDevice_SetLight:
@ -2083,23 +2068,18 @@ int pgraph_handle_method(
CxbxrImpl_SetModelView((CONST D3DMATRIX *)/*pModelView*/argv[1], (CONST D3DMATRIX *)/*pInverseModelView*/argv[2], (CONST D3DMATRIX *) /*pComposite*/argv[3]);
break;
case X_D3DDevice_SetOverscanColor: break;
case X_D3DDevice_SetPalette: //break; //fall through
case X_D3DDevice_SetPalette_4:
case X_D3DDevice_SetPalette:
CxbxrImpl_SetPalette((xbox::dword_xt)/* Stage */argv[1], (xbox::X_D3DPalette *)/* pPalette */argv[2]);
break;
case X_D3DDevice_SetPixelShader: //break; //fall through
case X_D3DDevice_SetPixelShader_0__LTCG_eax_handle:
case X_D3DDevice_SetPixelShader:
CxbxrImpl_SetPixelShader((xbox::dword_xt)/*Handle*/argv[1]);
break;
case X_D3DDevice_SetPixelShaderConstant: break;
case X_D3DDevice_SetPixelShaderConstant_4: break;
case X_D3DDevice_SetPixelShaderProgram: break;
case X_D3DDevice_SetRenderState: break;
case X_D3DDevice_SetRenderState_Simple: break;
case X_D3DDevice_SetRenderStateNotInline: break;
case X_D3DDevice_SetRenderTarget: //break; //fall through
case X_D3DDevice_SetRenderTarget_0: //break; //fall through
case X_D3DDevice_SetRenderTargetFast:
case X_D3DDevice_SetRenderTarget:
CxbxrImpl_SetRenderTarget((xbox::X_D3DSurface*)argv[1], (xbox::X_D3DSurface*)argv[2]);
// release reference to the surfaces since we add extra references to them in the patched SetRenderTarget()
CxbxrImpl_ReleaseRenderTarget((xbox::X_D3DSurface*)argv[1], (xbox::X_D3DSurface*)argv[2]);
@ -2108,25 +2088,18 @@ int pgraph_handle_method(
case X_D3DDevice_SetScreenSpaceOffset:
CxbxrImpl_SetScreenSpaceOffset(DWtoF(argv[1]), DWtoF(argv[2]));
break;
case X_D3DDevice_SetShaderConstantMode: //break;
case X_D3DDevice_SetShaderConstantMode_0__LTCG_eax1:
case X_D3DDevice_SetShaderConstantMode:
CxbxrImpl_SetShaderConstantMode((xbox::X_VERTEXSHADERCONSTANTMODE )argv[1]);
break;
case X_D3DDevice_SetSoftDisplayFilter: break;
case X_D3DDevice_SetStipple: break;
case X_D3DDevice_SetStreamSource: //break;
case X_D3DDevice_SetStreamSource_0__LTCG_eax_StreamNumber_edi_pStreamData_ebx_Stride: //break;
case X_D3DDevice_SetStreamSource_4: //break;
case X_D3DDevice_SetStreamSource_8: //break;
case X_D3DDevice_SetStreamSource_8__LTCG_edx_StreamNumber:
case X_D3DDevice_SetStreamSource:
CxbxrImpl_SetStreamSource((UINT) argv[1], (xbox::X_D3DVertexBuffer *)argv[2], (UINT)argv[3]);
break;
case X_D3DDevice_SetSwapCallback: break;
case X_D3DDevice_SetTexture:
CxbxrImpl_SetTexture((xbox::dword_xt) argv[1], (xbox::X_D3DBaseTexture *) argv[2]);
break;
case X_D3DDevice_SetTexture_4__LTCG_eax_pTexture: break;
case X_D3DDevice_SetTexture_4__LTCG_eax_Stage: break;
case X_D3DDevice_SetTextureStageState: break;
case X_D3DDevice_SetTextureStageStateNotInline: break;
case X_D3DDevice_SetTile:
@ -2134,8 +2107,7 @@ int pgraph_handle_method(
*(bool*)argv[3] = false;
break;
case X_D3DDevice_SetTimerCallback: break;
case X_D3DDevice_SetTransform: //break;//fall throught
case X_D3DDevice_SetTransform_0__LTCG_eax1_edx2:
case X_D3DDevice_SetTransform:
CxbxrImpl_SetTransform((xbox::X_D3DTRANSFORMSTATETYPE) argv[1], (CONST D3DMATRIX * )argv[2]);
break;
case X_D3DDevice_SetVertexBlendModelView: break;
@ -2148,18 +2120,10 @@ int pgraph_handle_method(
case X_D3DDevice_SetVertexData4s: break;
case X_D3DDevice_SetVertexData4ub: break;
case X_D3DDevice_SetVertexDataColor: break;
case X_D3DDevice_SetVertexShader: // break;
case X_D3DDevice_SetVertexShader_0:
case X_D3DDevice_SetVertexShader:
CxbxrImpl_SetVertexShader((DWORD)argv[1]);
break;
case X_D3DDevice_SetVertexShaderConstant: break;
case X_D3DDevice_SetVertexShaderConstant_8: break;
case X_D3DDevice_SetVertexShaderConstant1: break;
case X_D3DDevice_SetVertexShaderConstant4: break;
case X_D3DDevice_SetVertexShaderConstantFast: break;
case X_D3DDevice_SetVertexShaderConstant1Fast: break;
case X_D3DDevice_SetVertexShaderConstantNotInline: break;
case X_D3DDevice_SetVertexShaderConstantNotInlineFast: break;
case X_D3DDevice_SetVertexShaderInput: break;
case X_D3DDevice_SetVertexShaderInputDirect: break;
case X_D3DDevice_SetVerticalBlankCallback: break;
@ -2174,9 +2138,6 @@ int pgraph_handle_method(
break;
case X_D3DDevice_SetWaitCallback: break;
case X_D3DDevice_Swap:
//CxbxrImpl_Swap(argv[1]);
//break; //fall through
case X_D3DDevice_Swap_0:
//CxbxrImpl_Swap(argv[1]);
*(bool*)argv[1] = false;
break;
@ -2185,23 +2146,19 @@ int pgraph_handle_method(
break;
case X_D3DDevice_UpdateOverlay: break;
case X_D3DResource_BlockUntilNotBusy: break;
case X_D3D_BlockOnTime: break; case X_D3D_BlockOnTime_4: break;
case X_D3D_BlockOnTime: break;
case X_D3D_CommonSetRenderTarget:
//todo:this might be redundant because the HLE implementation of this api never set the call level, so this patch will always calls CxbxrImpl_SetRenderTarget(). we might use the fall through directly.
CxbxrImpl_D3D_CommonSetRenderTarget((xbox::X_D3DSurface*)/* pRenderTarget*/argv[1], (xbox::X_D3DSurface*)/* pNewZStencil*/argv[2], (void*)/* unknown*/argv[3]);
// release reference to the surfaces since we add extra references to them in the patched SetRenderTarget()
CxbxrImpl_ReleaseRenderTarget((xbox::X_D3DSurface*)argv[1], (xbox::X_D3DSurface*)argv[2]);
break;
case X_D3D_DestroyResource: //break;
case X_D3D_DestroyResource__LTCG:
case X_D3D_DestroyResource:
CxbxrImpl_DestroyResource((xbox::X_D3DResource *) argv[1]);
break;
case X_D3D_LazySetPointParams: break;
case X_D3D_SetCommonDebugRegisters: break;
case X_Direct3D_CreateDevice: break;
case X_Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ebx_ppReturnedDeviceInterface: break;
case X_Direct3D_CreateDevice_16__LTCG_eax_BehaviorFlags_ecx_ppReturnedDeviceInterface: break;
case X_Direct3D_CreateDevice_4: break;
case X_Lock2DSurface:
//CxbxrImpl_Lock2DSurface((xbox::X_D3DPixelContainer *) /*pPixelContainer*/argv[1], (D3DCUBEMAP_FACES)/* FaceType*/argv[2], (xbox::uint_xt)/* Level*/argv[3], (D3DLOCKED_RECT *)/* pLockedRect*/argv[3], (RECT *)/* pRect*/argv[5], (xbox::dword_xt)/* Flags*/argv[6]);
*(bool*)argv[1] = false;