Introduced Xbox version of X_D3DCOLOR

This commit is contained in:
PatrickvL 2022-12-21 10:09:15 +01:00
parent 6eb6665a42
commit 5a3e54fadd
6 changed files with 32 additions and 26 deletions

View File

@ -5052,7 +5052,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData4s)
xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexDataColor)
(
int_xt Register,
D3DCOLOR Color
X_D3DCOLOR Color
)
{
LOG_FUNC_BEGIN
@ -5100,8 +5100,8 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_Clear)
dword_xt Count,
CONST X_D3DRECT *pRects,
dword_xt Flags,
D3DCOLOR Color,
float Z,
X_D3DCOLOR Color,
float Z,
dword_xt Stencil
)
{
@ -6855,7 +6855,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_UpdateOverlay)
CONST X_RECT *SrcRect,
CONST X_RECT *DstRect,
bool_xt EnableColorKey,
D3DCOLOR ColorKey
X_D3DCOLOR ColorKey
)
{
LOG_FUNC_BEGIN

View File

@ -3874,7 +3874,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_GetLight)
VOID WINAPI XTL::EMUPATCH(D3DPalette_Lock)
(
X_D3DPalette *pThis,
D3DCOLOR **ppColors,
X_D3DCOLOR **ppColors,
DWORD Flags
)
{
@ -3884,7 +3884,7 @@ VOID WINAPI XTL::EMUPATCH(D3DPalette_Lock)
LOG_FUNC_ARG(Flags)
LOG_FUNC_END;
XB_trampoline(VOID, WINAPI, D3DPalette_Lock, (X_D3DPalette*, D3DCOLOR**, DWORD));
XB_trampoline(VOID, WINAPI, D3DPalette_Lock, (X_D3DPalette*, X_D3DCOLOR**, DWORD));
XB_D3DPalette_Lock(pThis, ppColors, Flags);
// Check if this palette is in use by a texture stage, and force it to be re-converted if yes
@ -3898,7 +3898,7 @@ VOID WINAPI XTL::EMUPATCH(D3DPalette_Lock)
// ******************************************************************
// * patch: IDirect3DPalette8_Lock2
// ******************************************************************
D3DCOLOR * WINAPI XTL::EMUPATCH(D3DPalette_Lock2)
xbox::X_D3DCOLOR * WINAPI XTL::EMUPATCH(D3DPalette_Lock2)
(
X_D3DPalette *pThis,
DWORD Flags
@ -3910,7 +3910,7 @@ D3DCOLOR * WINAPI XTL::EMUPATCH(D3DPalette_Lock2)
LOG_FUNC_END;
XB_trampoline(D3DCOLOR*, WINAPI, D3DPalette_Lock2, (X_D3DPalette*, DWORD));
D3DCOLOR* pData = XB_D3DPalette_Lock2(pThis, Flags);
X_D3DCOLOR* pData = XB_D3DPalette_Lock2(pThis, Flags);
// Check if this palette is in use by a texture stage, and force it to be re-converted if yes
for (int i = 0; i < XTL::X_D3DTS_STAGECOUNT; i++) {

View File

@ -721,7 +721,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexData4s)
xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetVertexDataColor)
(
int_xt Register,
D3DCOLOR Color
X_D3DCOLOR Color
);
// ******************************************************************
@ -746,8 +746,8 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_Clear)
dword_xt Count,
CONST X_D3DRECT *pRects,
dword_xt Flags,
D3DCOLOR Color,
float Z,
X_D3DCOLOR Color,
float Z,
dword_xt Stencil
);
@ -975,7 +975,7 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_UpdateOverlay)
CONST X_RECT *SrcRect,
CONST X_RECT *DstRect,
bool_xt EnableColorKey,
D3DCOLOR ColorKey
X_D3DCOLOR ColorKey
);
// ******************************************************************
@ -1576,15 +1576,15 @@ xbox::void_xt WINAPI EMUPATCH(D3DDevice_SetSoftDisplayFilter)
// ******************************************************************
xbox::void_xt WINAPI EMUPATCH(D3DPalette_Lock)
(
X_D3DPalette *pThis,
D3DCOLOR **ppColors,
X_D3DPalette *pThis,
X_D3DCOLOR **ppColors,
dword_xt Flags
);
// ******************************************************************
// * patch: IDirect3DPalette8_Lock2
// ******************************************************************
D3DCOLOR * WINAPI EMUPATCH(D3DPalette_Lock2)
xbox::X_D3DCOLOR * WINAPI EMUPATCH(D3DPalette_Lock2)
(
X_D3DPalette *pThis,
dword_xt Flags

View File

@ -306,16 +306,16 @@ void XboxTextureStateConverter::Apply()
static D3D11_SAMPLER_DESC g_GlobalSamplerDesc = {}; // TODO : Move to globals section
switch (State) {
case xbox::X_D3DTSS_ADDRESSU: g_GlobalSamplerDesc.AddressU = pcValue; break;
case xbox::X_D3DTSS_ADDRESSV: g_GlobalSamplerDesc.AddressV = pcValue; break;
case xbox::X_D3DTSS_ADDRESSW: g_GlobalSamplerDesc.AddressW = pcValue; break;
case xbox::X_D3DTSS_MAGFILTER: g_GlobalSamplerDesc.Filter = pcValue; break; // TODO : Which Filter??
case xbox::X_D3DTSS_MINFILTER: g_GlobalSamplerDesc.Filter = pcValue; break; // TODO : Which Filter??
case xbox::X_D3DTSS_MIPFILTER: g_GlobalSamplerDesc.Filter = pcValue; break; // TODO : Which Filter??
case xbox::X_D3DTSS_MIPMAPLODBIAS: g_GlobalSamplerDesc.MipLODBias = pcValue; break;
case xbox::X_D3DTSS_MAXMIPLEVEL: g_GlobalSamplerDesc.MaxLOD = pcValue; break; // TODO : What about MinLOD?
case xbox::X_D3DTSS_MAXANISOTROPY: g_GlobalSamplerDesc.MaxAnisotropy = pcValue; break;
case xbox::X_D3DTSS_BORDERCOLOR: g_GlobalSamplerDesc.BorderColor = D3DCOLOR(pcValue); break;
case xbox::X_D3DTSS_ADDRESSU: g_GlobalSamplerDesc.AddressU = static_cast<D3D11_TEXTURE_ADDRESS_MODE>(pcValue); break;
case xbox::X_D3DTSS_ADDRESSV: g_GlobalSamplerDesc.AddressV = static_cast<D3D11_TEXTURE_ADDRESS_MODE>(pcValue); break;
case xbox::X_D3DTSS_ADDRESSW: g_GlobalSamplerDesc.AddressW = static_cast<D3D11_TEXTURE_ADDRESS_MODE>(pcValue); break;
case xbox::X_D3DTSS_MAGFILTER: g_GlobalSamplerDesc.Filter = static_cast<D3D11_FILTER>(pcValue); break; // TODO : There's only 1, not 3 Filter members?
case xbox::X_D3DTSS_MINFILTER: g_GlobalSamplerDesc.Filter = static_cast<D3D11_FILTER>(pcValue); break; // TODO : There's only 1, not 3 Filter members?
case xbox::X_D3DTSS_MIPFILTER: g_GlobalSamplerDesc.Filter = static_cast<D3D11_FILTER>(pcValue); break; // TODO : There's only 1, not 3 Filter members?
case xbox::X_D3DTSS_MIPMAPLODBIAS: g_GlobalSamplerDesc.MipLODBias = /*TODO:FLOAT*/(pcValue); break;
case xbox::X_D3DTSS_MAXMIPLEVEL: g_GlobalSamplerDesc.MaxLOD = /*TODO:FLOAT*/(pcValue); break; // TODO : What about MinLOD?
case xbox::X_D3DTSS_MAXANISOTROPY: g_GlobalSamplerDesc.MaxAnisotropy = pcValue; break; // Note : MaxAnisotropy type is UINT
case xbox::X_D3DTSS_BORDERCOLOR: g_GlobalSamplerDesc.BorderColor = D3DXCOLOR(pcValue); break; // Note : BorderColor type is float[4]
}
ID3D11SamplerState *pSamplerState = nullptr;

View File

@ -1443,7 +1443,7 @@ const RenderStateInfo DxbxRenderStateInfo[1+xbox::X_D3DRS_DONOTCULLUNCOMPRESSED]
{ "D3DRS_STENCILWRITEMASK" /*= 73*/, 3424, xtBYTE, NV2A_STENCIL_MASK, D3DRS_STENCILWRITEMASK, "BYTE write mask applied to values written to stencil buffer" },
{ "D3DRS_BLENDOP" /*= 74*/, 3424, xtD3DBLENDOP, NV2A_BLEND_EQUATION, D3DRS_BLENDOP },
{ "D3DRS_BLENDCOLOR" /*= 75*/, 3424, xtD3DCOLOR, NV2A_BLEND_COLOR, D3DRS_BLENDFACTOR, "D3DCOLOR for D3DBLEND_CONSTANTCOLOR" },
// D3D9 D3DRS_BLENDFACTOR : D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR
// D3D9 D3DRS_BLENDFACTOR : X_D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR
{ "D3DRS_SWATHWIDTH" /*= 76*/, 3424, xtD3DSWATH, NV2A_SWATH_WIDTH },
{ "D3DRS_POLYGONOFFSETZSLOPESCALE" /*= 77*/, 3424, xtFloat, NV2A_POLYGON_OFFSET_FACTOR, D3DRS_UNSUPPORTED, "float Z factor for shadow maps" },
{ "D3DRS_POLYGONOFFSETZOFFSET" /*= 78*/, 3424, xtFloat, NV2A_POLYGON_OFFSET_UNITS },

View File

@ -128,6 +128,12 @@ typedef enum _X_D3DBASISTYPE { // Based on Direct3D 9 TODO : verify on Xbox
D3DBASIS_FORCE_DWORD = 0x7fffffff
} X_D3DBASISTYPE, *LPX_D3DBASISTYPE;
#ifdef CXBX_USE_D3D11
typedef DWORD X_D3DCOLOR;
#else
typedef D3DCOLOR X_D3DCOLOR;
#endif
/* CubeMap Face identifiers */
typedef enum _X_D3DCUBEMAP_FACES
{