From e1c9324dce5f16eb616baa8da050622daca9d329 Mon Sep 17 00:00:00 2001 From: PatrickvL Date: Sat, 4 Nov 2023 23:27:46 +0100 Subject: [PATCH] Remove HLE API enum elements for LTCG variants, because those should push the same values to the push buffer anyway --- src/core/hle/D3D8/Direct3D9/Direct3D9.cpp | 75 ++++++++++++----------- src/core/hle/D3D8/Direct3D9/HleInNv2a.h | 54 ++++++++-------- src/devices/video/EmuNV2A_PGRAPH.cpp | 71 +++++---------------- 3 files changed, 80 insertions(+), 120 deletions(-) diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index 2cda8badd..0418a94ff 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -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 diff --git a/src/core/hle/D3D8/Direct3D9/HleInNv2a.h b/src/core/hle/D3D8/Direct3D9/HleInNv2a.h index 97dbfca76..2dbd71298 100644 --- a/src/core/hle/D3D8/Direct3D9/HleInNv2a.h +++ b/src/core/hle/D3D8/Direct3D9/HleInNv2a.h @@ -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, diff --git a/src/devices/video/EmuNV2A_PGRAPH.cpp b/src/devices/video/EmuNV2A_PGRAPH.cpp index b5da4af55..0a83e136b 100644 --- a/src/devices/video/EmuNV2A_PGRAPH.cpp +++ b/src/devices/video/EmuNV2A_PGRAPH.cpp @@ -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;