diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp.unused-patches b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp.unused-patches index 58693992a..979cb4a96 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp.unused-patches +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp.unused-patches @@ -1,4 +1,102 @@ -// ensure a given width/height are powers of 2 +// convert from pc to xbox color formats +//extern +xbox::X_D3DFORMAT EmuPC2XB_D3DFormat(CXBXFORMAT Format, bool bPreferLinear = true); +{ + xbox::X_D3DFORMAT result; + switch(Format) + { + case CXBXFMT_YUY2: + result = xbox::X_D3DFMT_YUY2; + break; +#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE + case CXBXFMT_UYVY: + result = xbox::X_D3DFMT_UYVY; + break; +#endif + case CXBXFMT_R5G6B5: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_R5G6B5 : xbox::X_D3DFMT_R5G6B5; + break; + case CXBXFMT_D24S8: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_D24S8 : xbox::X_D3DFMT_D24S8; + break; + case CXBXFMT_DXT5: + result = xbox::X_D3DFMT_DXT5; // Compressed + break; +#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE + case CXBXFMT_DXT4: + result = xbox::X_D3DFMT_DXT4; // Compressed // Same as xbox::X_D3DFMT_DXT5 + break; +#endif + case CXBXFMT_DXT3: + result = xbox::X_D3DFMT_DXT3; // Compressed + break; +#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE + case CXBXFMT_DXT2: + result = xbox::X_D3DFMT_DXT2; // Compressed // Same as xbox::X_D3DFMT_DXT3 + break; +#endif + case CXBXFMT_DXT1: + result = xbox::X_D3DFMT_DXT1; // Compressed + break; + case CXBXFMT_A1R5G5B5: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_A1R5G5B5 : xbox::X_D3DFMT_A1R5G5B5; + break; + case CXBXFMT_X8R8G8B8: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_X8R8G8B8 : xbox::X_D3DFMT_X8R8G8B8; + break; + case CXBXFMT_A8R8G8B8: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8R8G8B8 : xbox::X_D3DFMT_A8R8G8B8; + break; + case CXBXFMT_A4R4G4B4: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_A4R4G4B4 : xbox::X_D3DFMT_A4R4G4B4; + break; +#ifndef CXBX_USE_D3D11 // Note : CXBXFMT_A1R5G5B5 maps to same DXGI_FORMAT_B5G5R5A1_UNORM + case CXBXFMT_X1R5G5B5: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_X1R5G5B5 : xbox::X_D3DFMT_X1R5G5B5; + break; +#endif + case CXBXFMT_A8: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8 : xbox::X_D3DFMT_A8; + break; + case CXBXFMT_L8: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_L8 : xbox::X_D3DFMT_L8; + break; + case CXBXFMT_D16: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_D16 : xbox::X_D3DFMT_D16; + break; +#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE + case CXBXFMT_D16_LOCKABLE: + result = xbox::X_D3DFMT_D16_LOCKABLE; + break; +#endif + case CXBXFMT_UNKNOWN: + result = ((xbox::X_D3DFORMAT)0xffffffff); // TODO : return xbox::X_D3DFMT_UNKNOWN ? + break; + // Dxbx additions : +#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE + case CXBXFMT_L6V5U5: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_L6V5U5 : xbox::X_D3DFMT_L6V5U5; + break; +#endif + case CXBXFMT_V8U8: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_V8U8 : xbox::X_D3DFMT_V8U8; + break; + case CXBXFMT_V16U16: + result = bPreferLinear ? xbox::X_D3DFMT_LIN_V16U16 : xbox::X_D3DFMT_V16U16; + break; +#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE + case CXBXFMT_VERTEXDATA: + result = xbox::X_D3DFMT_VERTEXDATA; + break; +#endif + default: + CxbxrAbort("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format); + } + + return result; +} + +// ensure a given width/height are powers of 2 static void EmuAdjustPower2(UINT *dwWidth, UINT *dwHeight) { UINT NewWidth=0, NewHeight=0; diff --git a/src/core/hle/D3D8/XbConvert.cpp b/src/core/hle/D3D8/XbConvert.cpp index 80e1f3f5c..97be25563 100644 --- a/src/core/hle/D3D8/XbConvert.cpp +++ b/src/core/hle/D3D8/XbConvert.cpp @@ -1058,102 +1058,6 @@ CXBXFORMAT EmuXB2PC_D3DFormat(xbox::X_D3DFORMAT Format) return CXBXFMT_UNKNOWN; } -xbox::X_D3DFORMAT EmuPC2XB_D3DFormat(CXBXFORMAT Format, bool bPreferLinear) -{ - xbox::X_D3DFORMAT result; - switch(Format) - { - case CXBXFMT_YUY2: - result = xbox::X_D3DFMT_YUY2; - break; -#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE - case CXBXFMT_UYVY: - result = xbox::X_D3DFMT_UYVY; - break; -#endif - case CXBXFMT_R5G6B5: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_R5G6B5 : xbox::X_D3DFMT_R5G6B5; - break; - case CXBXFMT_D24S8: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_D24S8 : xbox::X_D3DFMT_D24S8; - break; - case CXBXFMT_DXT5: - result = xbox::X_D3DFMT_DXT5; // Compressed - break; -#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE - case CXBXFMT_DXT4: - result = xbox::X_D3DFMT_DXT4; // Compressed // Same as xbox::X_D3DFMT_DXT5 - break; -#endif - case CXBXFMT_DXT3: - result = xbox::X_D3DFMT_DXT3; // Compressed - break; -#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE - case CXBXFMT_DXT2: - result = xbox::X_D3DFMT_DXT2; // Compressed // Same as xbox::X_D3DFMT_DXT3 - break; -#endif - case CXBXFMT_DXT1: - result = xbox::X_D3DFMT_DXT1; // Compressed - break; - case CXBXFMT_A1R5G5B5: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_A1R5G5B5 : xbox::X_D3DFMT_A1R5G5B5; - break; - case CXBXFMT_X8R8G8B8: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_X8R8G8B8 : xbox::X_D3DFMT_X8R8G8B8; - break; - case CXBXFMT_A8R8G8B8: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8R8G8B8 : xbox::X_D3DFMT_A8R8G8B8; - break; - case CXBXFMT_A4R4G4B4: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_A4R4G4B4 : xbox::X_D3DFMT_A4R4G4B4; - break; -#ifndef CXBX_USE_D3D11 // Note : CXBXFMT_A1R5G5B5 maps to same DXGI_FORMAT_B5G5R5A1_UNORM - case CXBXFMT_X1R5G5B5: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_X1R5G5B5 : xbox::X_D3DFMT_X1R5G5B5; - break; -#endif - case CXBXFMT_A8: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8 : xbox::X_D3DFMT_A8; - break; - case CXBXFMT_L8: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_L8 : xbox::X_D3DFMT_L8; - break; - case CXBXFMT_D16: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_D16 : xbox::X_D3DFMT_D16; - break; -#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE - case CXBXFMT_D16_LOCKABLE: - result = xbox::X_D3DFMT_D16_LOCKABLE; - break; -#endif - case CXBXFMT_UNKNOWN: - result = ((xbox::X_D3DFORMAT)0xffffffff); // TODO : return xbox::X_D3DFMT_UNKNOWN ? - break; - // Dxbx additions : -#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE - case CXBXFMT_L6V5U5: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_L6V5U5 : xbox::X_D3DFMT_L6V5U5; - break; -#endif - case CXBXFMT_V8U8: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_V8U8 : xbox::X_D3DFMT_V8U8; - break; - case CXBXFMT_V16U16: - result = bPreferLinear ? xbox::X_D3DFMT_LIN_V16U16 : xbox::X_D3DFMT_V16U16; - break; -#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE - case CXBXFMT_VERTEXDATA: - result = xbox::X_D3DFMT_VERTEXDATA; - break; -#endif - default: - CxbxrAbort("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format); - } - - return result; -} - DWORD EmuXB2PC_D3DLock(DWORD Flags) { DWORD NewFlags = 0; diff --git a/src/core/hle/D3D8/XbConvert.h b/src/core/hle/D3D8/XbConvert.h index ba0086ee3..1c946cf06 100644 --- a/src/core/hle/D3D8/XbConvert.h +++ b/src/core/hle/D3D8/XbConvert.h @@ -73,9 +73,6 @@ extern BOOL EmuXBFormatIsDepthBuffer(xbox::X_D3DFORMAT Format); // convert from xbox to pc color formats extern CXBXFORMAT EmuXB2PC_D3DFormat(xbox::X_D3DFORMAT Format); -// convert from pc to xbox color formats -extern xbox::X_D3DFORMAT EmuPC2XB_D3DFormat(CXBXFORMAT Format, bool bPreferLinear = true); - // convert from xbox to pc d3d lock flags extern DWORD EmuXB2PC_D3DLock(DWORD Flags); diff --git a/src/gui/WndMain.cpp b/src/gui/WndMain.cpp index 38bc6cbac..885008d5e 100644 --- a/src/gui/WndMain.cpp +++ b/src/gui/WndMain.cpp @@ -43,7 +43,6 @@ #include "common\xbe\XbePrinter.h" // For DumpInformation #include "EmuShared.h" #include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For CxbxSetPixelContainerHeader -#include "core\hle\D3D8\XbConvert.h" // For EmuPC2XB_D3DFormat #include "common\Settings.hpp" #include "common/util/cliConfig.hpp" #include "common/win32/WineEnv.h" @@ -1502,19 +1501,19 @@ void WndMain::LoadGameLogo() switch (*(DWORD*)pSection) { case MAKEFOURCC('D', 'D', 'S', ' '): { DDS_HEADER *pDDSHeader = (DDS_HEADER *)(pSection + sizeof(DWORD)); - CXBXFORMAT Format = CXBXFMT_UNKNOWN; + xbox::X_D3DFORMAT XbFormat = xbox::X_D3DFMT_UNKNOWN; if (pDDSHeader->ddspf.dwFlags & DDPF_FOURCC) { switch (pDDSHeader->ddspf.dwFourCC) { - case MAKEFOURCC('D', 'X', 'T', '1'): Format = CXBXFMT_DXT1; break; - case MAKEFOURCC('D', 'X', 'T', '3'): Format = CXBXFMT_DXT3; break; - case MAKEFOURCC('D', 'X', 'T', '5'): Format = CXBXFMT_DXT5; break; + case MAKEFOURCC('D', 'X', 'T', '1'): XbFormat = xbox::X_D3DFMT_DXT1; break; + case MAKEFOURCC('D', 'X', 'T', '3'): XbFormat = xbox::X_D3DFMT_DXT3; break; + case MAKEFOURCC('D', 'X', 'T', '5'): XbFormat = xbox::X_D3DFMT_DXT5; break; } } else { // TODO : Determine D3D format based on pDDSHeader->ddspf.dwABitMask, .dwRBitMask, .dwGBitMask and .dwBBitMask } - if (Format == CXBXFMT_UNKNOWN) + if (XbFormat == xbox::X_D3DFMT_UNKNOWN) return; ImageData = (uint8_t *)(pSection + sizeof(DWORD) + pDDSHeader->dwSize); @@ -1527,7 +1526,7 @@ void WndMain::LoadGameLogo() (UINT)pDDSHeader->dwWidth, (UINT)pDDSHeader->dwHeight, 1, - EmuPC2XB_D3DFormat(Format), + XbFormat, 2, (UINT)pDDSHeader->dwPitchOrLinearSize); break;