diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d9838aff..df1af9514 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,7 +162,6 @@ file (GLOB CXBXR_HEADER_EMU "${CXBXR_ROOT_DIR}/src/core/kernel/support/EmuFile.h" "${CXBXR_ROOT_DIR}/src/core/kernel/support/EmuFS.h" "${CXBXR_ROOT_DIR}/src/core/kernel/support/EmuNtDll.h" - "${CXBXR_ROOT_DIR}/src/core/kernel/support/EmuXTL.h" "${CXBXR_ROOT_DIR}/src/devices/ADM1032Device.h" "${CXBXR_ROOT_DIR}/src/devices/EEPROMDevice.h" "${CXBXR_ROOT_DIR}/src/devices/EmuNVNet.h" @@ -275,7 +274,6 @@ file (GLOB CXBXR_SOURCE_EMU "${CXBXR_ROOT_DIR}/src/core/hle/XACTENG/XactEng.cpp" "${CXBXR_ROOT_DIR}/src/core/hle/XAPI/Xapi.cpp" "${CXBXR_ROOT_DIR}/src/core/hle/XGRAPHIC/XGraphic.cpp" - "${CXBXR_ROOT_DIR}/src/core/hle/XONLINE/XOnline.cpp" "${CXBXR_ROOT_DIR}/src/core/kernel/exports/EmuKrnl.cpp" "${CXBXR_ROOT_DIR}/src/core/kernel/exports/EmuKrnlAv.cpp" "${CXBXR_ROOT_DIR}/src/core/kernel/exports/EmuKrnlDbg.cpp" diff --git a/import/OpenXDK/include/xboxkrnl/xboxkrnl.h b/import/OpenXDK/include/xboxkrnl/xboxkrnl.h index b1d152548..e98e2b298 100644 --- a/import/OpenXDK/include/xboxkrnl/xboxkrnl.h +++ b/import/OpenXDK/include/xboxkrnl/xboxkrnl.h @@ -175,6 +175,7 @@ typedef long NTSTATUS; // * Registry value types // ****************************************************************** // Used in ExQueryNonVolatileSetting and ExSaveNonVolatileSetting +#ifndef _WIN32 // Avoid "warning C4005: 'REG_NONE': macro redefinition" (conflicting with winnt.h) #define REG_NONE ( 0 ) // No defined value type. #define REG_SZ ( 1 ) // A null - terminated string. This will be either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI functions. #define REG_EXPAND_SZ ( 2 ) // A null - terminated string that contains unexpanded references to environment variables (for example, "%PATH%"). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function. @@ -187,6 +188,7 @@ typedef long NTSTATUS; #define REG_RESOURCE_LIST ( 8 ) // Resource list in the resource map #define REG_FULL_RESOURCE_DESCRIPTOR ( 9 ) // Resource list in the hardware description #define REG_RESOURCE_REQUIREMENTS_LIST ( 10 ) +#endif // ****************************************************************** // * calling conventions @@ -1831,11 +1833,9 @@ EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION; // ****************************************************************** // * EXCEPTION_REGISTRATION_RECORD // ****************************************************************** -typedef struct _EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD; // forward - typedef struct _EXCEPTION_REGISTRATION_RECORD { - PEXCEPTION_REGISTRATION_RECORD Next; + struct _EXCEPTION_REGISTRATION_RECORD *Next; // Don't forward declare PEXCEPTION_REGISTRATION_RECORD to avoid conflict with winnt.h PEXCEPTION_DISPOSITION Handler; } EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; diff --git a/src/Cxbx.h b/src/Cxbx.h index e89005b0d..8d15a1da6 100644 --- a/src/Cxbx.h +++ b/src/Cxbx.h @@ -88,10 +88,6 @@ extern bool g_SaveOnExit; /*! runtime logging toggle boolean */ extern volatile bool g_bPrintfOn; -#ifdef _MSC_VER -#pragma warning(disable : 4477) -#endif - #if WIN32 #include "Win32\Threads.h" #define CxbxSetThreadName(Name) SetCurrentThreadName(Name) diff --git a/src/common/EmuEEPROM.h b/src/common/EmuEEPROM.h index 41d575afd..aea9d06c8 100644 --- a/src/common/EmuEEPROM.h +++ b/src/common/EmuEEPROM.h @@ -28,11 +28,18 @@ #define EMU_EEPROM_H #if defined(__cplusplus) -#pragma once extern "C" { #endif +// prevent name collisions +namespace xboxkrnl +{ +#undef _WIN32 // Compile-in REG_DWORD and friends, since we lack a include here +#include // For XC_VALUE_INDEX and XBOX_EEPROM +#define _WIN32 +}; + #define EEPROM_SIZE sizeof(xboxkrnl::XBOX_EEPROM) typedef struct EEPROMInfo { diff --git a/src/common/Logging.h b/src/common/Logging.h index 8b2ac0476..a21a46498 100644 --- a/src/common/Logging.h +++ b/src/common/Logging.h @@ -26,8 +26,6 @@ #ifndef _LOGGING_H #define _LOGGING_H -#pragma once - #include // For DWORD #include // For std::stringstream #include // For std::cout @@ -392,15 +390,6 @@ extern thread_local std::string _logThreadPrefix; } \ } while(0) -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4477) -#endif - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - // // Short hand function logging defines : // diff --git a/src/common/ReservedMemory.h b/src/common/ReservedMemory.h index d0e98c4b2..4d5f0287b 100644 --- a/src/common/ReservedMemory.h +++ b/src/common/ReservedMemory.h @@ -26,7 +26,6 @@ #define RESERVEDMEMORY_H #if defined(__cplusplus) -#pragma once extern "C" { #endif diff --git a/src/common/input/InputManager.cpp b/src/common/input/InputManager.cpp index 7e2a8a748..7a228d68a 100644 --- a/src/common/input/InputManager.cpp +++ b/src/common/input/InputManager.cpp @@ -51,13 +51,10 @@ namespace xboxkrnl #include "devices\usb\OHCI.h" // hle input specific -namespace XTL -{ #include "core\hle\XAPI\Xapi.h" -} #include "core\hle\XAPI\XapiCxbxr.h" -extern X_CONTROLLER_HOST_BRIDGE g_XboxControllerHostBridge[4]; // hle xinput +extern CXBX_CONTROLLER_HOST_BRIDGE g_XboxControllerHostBridge[4]; // hle xinput InputDeviceManager g_InputDeviceManager; diff --git a/src/common/util/CPUID.h b/src/common/util/CPUID.h index 874925853..b8dbd97e4 100644 --- a/src/common/util/CPUID.h +++ b/src/common/util/CPUID.h @@ -29,10 +29,10 @@ public: #endif } - const std::bitset<32> &EAX() const { return regs[0]; } - const std::bitset<32> &EBX() const { return regs[1]; } - const std::bitset<32> &ECX() const { return regs[2]; } - const std::bitset<32> &EDX() const { return regs[3]; } + const std::bitset<32> &EAX() const { return (std::bitset<32> &)regs[0]; } + const std::bitset<32> &EBX() const { return (std::bitset<32> &)regs[1]; } + const std::bitset<32> &ECX() const { return (std::bitset<32> &)regs[2]; } + const std::bitset<32> &EDX() const { return (std::bitset<32> &)regs[3]; } }; class SimdCaps { diff --git a/src/common/util/CxbxUtil.cpp b/src/common/util/CxbxUtil.cpp index 555bb33f5..238a0b97f 100644 --- a/src/common/util/CxbxUtil.cpp +++ b/src/common/util/CxbxUtil.cpp @@ -60,9 +60,7 @@ // Disable a compiler warning relative to uint64_t -> uint32_t conversions in Muldiv64. This function is taken from // QEMU so it should be safe regardless -#pragma warning(push) -#pragma warning(disable: 4244) - +#pragma warning(suppress: 4244) // Compute (a*b)/c with a 96 bit intermediate result uint64_t Muldiv64(uint64_t a, uint32_t b, uint32_t c) { @@ -83,8 +81,6 @@ uint64_t Muldiv64(uint64_t a, uint32_t b, uint32_t c) return res.ll; } -#pragma warning(pop) - void IoVecReset(IOVector* qiov) { assert(qiov->AllocNumber != -1); diff --git a/src/common/win32/Threads.cpp b/src/common/win32/Threads.cpp index 158ecd861..7f52f43ce 100644 --- a/src/common/win32/Threads.cpp +++ b/src/common/win32/Threads.cpp @@ -51,14 +51,15 @@ void SetThreadName(DWORD dwThreadID, const char* szThreadName) info.szName = szThreadName; info.dwThreadID = dwThreadID; info.dwFlags = 0; -#pragma warning(push) -#pragma warning(disable: 6320 6322) __try { RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR*)&info); } +#pragma warning(suppress : 6320) // silence /analyze: Exception-filter expression is the constant + // EXCEPTION_EXECUTE_HANDLER. This might mask exceptions that were + // not intended to be handled +#pragma warning(suppress : 6322) // silence /analyze: Empty _except block __except (EXCEPTION_EXECUTE_HANDLER) { } -#pragma warning(pop) } void SetCurrentThreadName(const char* szThreadName) diff --git a/src/common/xbe/Xbe.cpp b/src/common/xbe/Xbe.cpp index 04dbb189d..7f39a44ac 100644 --- a/src/common/xbe/Xbe.cpp +++ b/src/common/xbe/Xbe.cpp @@ -40,7 +40,8 @@ namespace xboxkrnl #include "core\kernel\init\CxbxKrnl.h" // For CxbxKrnlPrintUEM #include "common\crypto\EmuSha.h" // For the SHA functions #include "common\crypto\EmuRsa.h" // For the RSA functions -#include "core\kernel\support\EmuXTL.h" // For LDT_FROM_DASHBOARD and CxbxInitWindow +#include "core\hle\XAPI\Xapi.h" // For LDT_FROM_DASHBOARD +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For CxbxInitWindow namespace fs = std::experimental::filesystem; @@ -72,7 +73,7 @@ Xbe::Xbe(const char *x_szFilename, bool bFromGUI) // The dashboard could not be found on partition2. This is a fatal error on the Xbox so we display the UEM. The // error code is different if we have a launch data page - XTL::CxbxInitWindow(false); + CxbxInitWindow(false); ULONG FatalErrorCode = FATAL_ERROR_XBE_DASH_GENERIC; diff --git a/src/common/xdvdfs-tools/xdvdfs.h b/src/common/xdvdfs-tools/xdvdfs.h index b0eca57fb..e3062375f 100644 --- a/src/common/xdvdfs-tools/xdvdfs.h +++ b/src/common/xdvdfs-tools/xdvdfs.h @@ -4,8 +4,6 @@ #define __XDVDFS_H__ #ifdef __cplusplus -#pragma once - extern "C" { #endif @@ -163,4 +161,4 @@ extern DWORD XDVDFS_FileSeek( } #endif -#endif // __XDVDFS_H__ \ No newline at end of file +#endif // __XDVDFS_H__ diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index 2c107f797..90a634965 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -39,17 +39,17 @@ namespace xboxkrnl #include "CxbxVersion.h" #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" #include "EmuShared.h" #include "gui\DbgConsole.h" #include "core\hle\D3D8\ResourceTracker.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For LPDIRECTDRAWSURFACE7 #include "core\hle\D3D8\XbVertexBuffer.h" #include "core\hle\D3D8\XbVertexShader.h" #include "core\hle\D3D8\XbPixelShader.h" // For DxbxUpdateActivePixelShader #include "core\hle\D3D8\XbPushBuffer.h" #include "core\hle\D3D8\XbState.h" // For EmuUpdateDeferredStates #include "core\kernel\memory-manager\VMManager.h" // for g_VMManager -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\XAPI\Xapi.h" // For EMUPATCH #include "core\hle\D3D8\XbConvert.h" #include "Logging.h" #include "..\XbD3D8Logging.h" @@ -71,14 +71,14 @@ using namespace std::literals::chrono_literals; // Global(s) HWND g_hEmuWindow = NULL; // rendering window -XTL::IDirect3DDevice *g_pD3DDevice = nullptr; // Direct3D Device -XTL::LPDIRECTDRAWSURFACE7 g_pDDSPrimary = NULL; // DirectDraw7 Primary Surface -XTL::LPDIRECTDRAWCLIPPER g_pDDClipper = nullptr; // DirectDraw7 Clipper -DWORD g_CurrentXboxVertexShaderHandle = 0; +IDirect3DDevice *g_pD3DDevice = nullptr; // Direct3D Device +LPDIRECTDRAWSURFACE7 g_pDDSPrimary = NULL; // DirectDraw7 Primary Surface +LPDIRECTDRAWCLIPPER g_pDDClipper = nullptr; // DirectDraw7 Clipper +DWORD g_Xbox_VertexShader_Handle = 0; XTL::X_PixelShader* g_D3DActivePixelShader = nullptr; BOOL g_bIsFauxFullscreen = FALSE; DWORD g_OverlaySwap = 0; -DWORD g_CurrentFillMode = XTL::D3DFILL_SOLID; // Used to backup/restore the fill mode when WireFrame is enabled +DWORD g_CurrentFillMode = D3DFILL_SOLID; // Used to backup/restore the fill mode when WireFrame is enabled // Static Function(s) static BOOL WINAPI EmuEnumDisplayDevices(GUID FAR *lpGUID, LPSTR lpDriverDescription, LPSTR lpDriverName, LPVOID lpContext, HMONITOR hm); @@ -99,16 +99,16 @@ static bool g_bSupportsFormatTextureRenderTarget[XTL::X_ static bool g_bSupportsFormatTextureDepthStencil[XTL::X_D3DFMT_LIN_R8G8B8A8 + 1] = { false };// Does device support texture format? static bool g_bSupportsFormatVolumeTexture[XTL::X_D3DFMT_LIN_R8G8B8A8 + 1] = { false }; // Does device support surface format? static bool g_bSupportsFormatCubeTexture[XTL::X_D3DFMT_LIN_R8G8B8A8 + 1] = { false }; // Does device support surface format? -static XTL::LPDIRECTDRAW7 g_pDD7 = NULL; // DirectDraw7 -static XTL::DDCAPS g_DriverCaps = { 0 }; +static LPDIRECTDRAW7 g_pDD7 = NULL; // DirectDraw7 +static DDCAPS g_DriverCaps = { 0 }; static HBRUSH g_hBgBrush = NULL; // Background Brush static volatile bool g_bRenderWindowActive = false; static Settings::s_video g_XBVideo; -static XTL::D3DVBLANKCALLBACK g_pVBCallback = NULL; // Vertical-Blank callback routine +static XTL::X_D3DVBLANKCALLBACK g_pVBCallback = NULL; // Vertical-Blank callback routine static std::condition_variable g_VBConditionVariable; // Used in BlockUntilVerticalBlank static std::mutex g_VBConditionMutex; // Used in BlockUntilVerticalBlank -static XTL::D3DSWAPCALLBACK g_pSwapCallback = NULL; // Swap/Present callback routine -static XTL::D3DCALLBACK g_pCallback = NULL; // D3DDevice::InsertCallback routine +static XTL::X_D3DSWAPCALLBACK g_pSwapCallback = NULL; // Swap/Present callback routine +static XTL::X_D3DCALLBACK g_pCallback = NULL; // D3DDevice::InsertCallback routine static XTL::X_D3DCALLBACKTYPE g_CallbackType; // Callback type static DWORD g_CallbackParam; // Callback param static bool g_bHasDepth = false; // Does device have a Depth Buffer? @@ -123,13 +123,13 @@ struct { RECT SrcRect; RECT DstRect; BOOL EnableColorKey; - XTL::D3DCOLOR ColorKey; + D3DCOLOR ColorKey; } g_OverlayProxy; // D3D based variables static GUID g_ddguid; // DirectDraw driver GUID -static XTL::IDirect3D *g_pDirect3D = nullptr; -XTL::D3DCAPS g_D3DCaps = {}; // Direct3D Caps +static IDirect3D *g_pDirect3D = nullptr; +D3DCAPS g_D3DCaps = {}; // Direct3D Caps // wireframe toggle static int g_iWireframe = 0; @@ -143,29 +143,29 @@ static DWORD g_dwBaseVertexIndex = 0;// current active in // current active vertex stream static XTL::X_D3DVertexBuffer *g_pVertexBuffer = NULL; // current active vertex buffer -static XTL::IDirect3DVertexBuffer *g_pDummyBuffer = NULL; // Dummy buffer, used to set unused stream sources with +static IDirect3DVertexBuffer *g_pDummyBuffer = NULL; // Dummy buffer, used to set unused stream sources with static DWORD g_dwLastSetStream = 0; // The last stream set by D3DDevice::SetStreamSource // current vertical blank information -static XTL::D3DVBLANKDATA g_VBData = {0}; +static XTL::X_D3DVBLANKDATA g_VBData = {0}; static DWORD g_VBLastSwap = 0; // current swap information -static XTL::D3DSWAPDATA g_SwapData = {0}; +static XTL::X_D3DSWAPDATA g_SwapData = {0}; static DWORD g_SwapLast = 0; static CxbxVertexBufferConverter VertexBufferConverter = {}; // cached Direct3D state variable(s) -static XTL::IDirect3DIndexBuffer *pClosingLineLoopIndexBuffer = nullptr; +static IDirect3DIndexBuffer *pClosingLineLoopIndexBuffer = nullptr; -static XTL::IDirect3DIndexBuffer *pQuadToTriangleD3DIndexBuffer = nullptr; +static IDirect3DIndexBuffer *pQuadToTriangleD3DIndexBuffer = nullptr; static UINT QuadToTriangleD3DIndexBuffer_Size = 0; // = NrOfQuadVertices static INDEX16 *pQuadToTriangleIndexBuffer = nullptr; static UINT QuadToTriangleIndexBuffer_Size = 0; // = NrOfQuadVertices -static XTL::IDirect3DSurface *g_DefaultHostDepthBufferSuface = NULL; +static IDirect3DSurface *g_DefaultHostDepthBufferSuface = NULL; XTL::X_D3DSurface *g_XboxBackBufferSurface = NULL; static XTL::X_D3DSurface *g_XboxDefaultDepthStencilSurface = NULL; XTL::X_D3DSurface *g_pXboxRenderTarget = NULL; @@ -188,10 +188,10 @@ static PVOID g_pCurrentPalette[XTL::X_D3DTS_STAGECOUNT] = { nullptr, nullptr, nu static XTL::X_VERTEXSHADERCONSTANTMODE g_VertexShaderConstantMode = X_D3DSCM_192CONSTANTS; // TODO : Move to XbVertexShader.cpp // cached Direct3D tiles -XTL::X_D3DTILE XTL::EmuD3DTileCache[0x08] = {0}; +XTL::X_D3DTILE EmuD3DTileCache[0x08] = {0}; // cached active texture -XTL::X_D3DBaseTexture *XTL::EmuD3DActiveTexture[XTL::X_D3DTS_STAGECOUNT] = {0,0,0,0}; +XTL::X_D3DBaseTexture *EmuD3DActiveTexture[XTL::X_D3DTS_STAGECOUNT] = {0,0,0,0}; XTL::X_D3DBaseTexture CxbxActiveTextureCopies[XTL::X_D3DTS_STAGECOUNT] = {}; // information passed to the create device proxy thread @@ -199,7 +199,7 @@ struct EmuD3D8CreateDeviceProxyData { // Set by EmuD3DInit() XTL::UINT Adapter; - XTL::D3DDEVTYPE DeviceType; + D3DDEVTYPE DeviceType; HWND hFocusWindow; // Set byt EMUPATCH(Direct3D_CreateDevice) XTL::X_D3DPRESENT_PARAMETERS XboxPresentationParameters; @@ -207,7 +207,7 @@ struct EmuD3D8CreateDeviceProxyData volatile bool bCreate; // false : release // Set by EmuCreateDeviceProxy() XTL::DWORD BehaviorFlags; - XTL::D3DPRESENT_PARAMETERS HostPresentationParameters; + D3DPRESENT_PARAMETERS HostPresentationParameters; volatile HRESULT hRet; } g_EmuCDPD = {0}; @@ -453,8 +453,6 @@ const char *CxbxGetErrorDescription(HRESULT hResult) const char *D3DErrorString(HRESULT hResult) { - using namespace XTL; - static char buffer[1024]; buffer[0] = 0; // Reset static buffer! @@ -474,7 +472,7 @@ const char *D3DErrorString(HRESULT hResult) return buffer; } -VOID XTL::CxbxInitWindow(bool bFullInit) +VOID CxbxInitWindow(bool bFullInit) { g_EmuShared->GetVideoSettings(&g_XBVideo); @@ -717,7 +715,7 @@ void *GetDataFromXboxResource(XTL::X_D3DResource *pXboxResource) } typedef struct { - XTL::IDirect3DResource* pHostResource = nullptr; + IDirect3DResource* pHostResource = nullptr; XTL::X_D3DResource* pXboxResource = nullptr; DWORD dwXboxResourceType = 0; void* pXboxData = nullptr; @@ -788,7 +786,7 @@ void ForceResourceRehash(XTL::X_D3DResource* pXboxResource) } } -XTL::IDirect3DResource *GetHostResource(XTL::X_D3DResource *pXboxResource, DWORD D3DUsage = 0, int iTextureStage = 0) +IDirect3DResource *GetHostResource(XTL::X_D3DResource *pXboxResource, DWORD D3DUsage = 0, int iTextureStage = 0) { if (pXboxResource == NULL || pXboxResource->Data == NULL) return nullptr; @@ -897,7 +895,7 @@ bool HostResourceRequiresUpdate(resource_key_t key, DWORD dwSize) return modified; } -void SetHostResource(XTL::X_D3DResource* pXboxResource, XTL::IDirect3DResource* pHostResource, DWORD dwSize = 0) +void SetHostResource(XTL::X_D3DResource* pXboxResource, IDirect3DResource* pHostResource, DWORD dwSize = 0) { auto key = GetHostResourceKey(pXboxResource); auto& resourceInfo = g_XboxDirect3DResources[key]; // Implicitely inserts a new entry if not already existing @@ -918,7 +916,7 @@ void SetHostResource(XTL::X_D3DResource* pXboxResource, XTL::IDirect3DResource* resourceInfo.forceRehash = false; } -XTL::IDirect3DSurface *GetHostSurface(XTL::X_D3DResource *pXboxResource, DWORD D3DUsage = 0) +IDirect3DSurface *GetHostSurface(XTL::X_D3DResource *pXboxResource, DWORD D3DUsage = 0) { if (pXboxResource == NULL) return nullptr; @@ -926,10 +924,10 @@ XTL::IDirect3DSurface *GetHostSurface(XTL::X_D3DResource *pXboxResource, DWORD D if (GetXboxCommonResourceType(pXboxResource) != X_D3DCOMMON_TYPE_SURFACE) // Allows breakpoint below assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_SURFACE); - return (XTL::IDirect3DSurface*) GetHostResource(pXboxResource, D3DUsage); + return (IDirect3DSurface*) GetHostResource(pXboxResource, D3DUsage); } -XTL::IDirect3DBaseTexture *GetHostBaseTexture(XTL::X_D3DResource *pXboxResource, DWORD D3DUsage = 0, int iTextureStage = 0) +IDirect3DBaseTexture *GetHostBaseTexture(XTL::X_D3DResource *pXboxResource, DWORD D3DUsage = 0, int iTextureStage = 0) { if (pXboxResource == NULL) return nullptr; @@ -942,92 +940,92 @@ XTL::IDirect3DBaseTexture *GetHostBaseTexture(XTL::X_D3DResource *pXboxResource, return nullptr; } - return (XTL::IDirect3DBaseTexture*)GetHostResource(pXboxResource, D3DUsage, iTextureStage); + return (IDirect3DBaseTexture*)GetHostResource(pXboxResource, D3DUsage, iTextureStage); } -XTL::IDirect3DTexture *GetHostTexture(XTL::X_D3DResource *pXboxResource, int iTextureStage = 0) +IDirect3DTexture *GetHostTexture(XTL::X_D3DResource *pXboxResource, int iTextureStage = 0) { if (pXboxResource == NULL) return nullptr; - return (XTL::IDirect3DTexture *)GetHostBaseTexture(pXboxResource, 0, iTextureStage); + return (IDirect3DTexture *)GetHostBaseTexture(pXboxResource, 0, iTextureStage); // TODO : Check for 1 face (and 2 dimensions)? } -XTL::IDirect3DVolumeTexture *GetHostVolumeTexture(XTL::X_D3DResource *pXboxResource, int iTextureStage = 0) +IDirect3DVolumeTexture *GetHostVolumeTexture(XTL::X_D3DResource *pXboxResource, int iTextureStage = 0) { - return (XTL::IDirect3DVolumeTexture *)GetHostBaseTexture(pXboxResource, 0, iTextureStage); + return (IDirect3DVolumeTexture *)GetHostBaseTexture(pXboxResource, 0, iTextureStage); // TODO : Check for 1 face (and 2 dimensions)? } -XTL::IDirect3DIndexBuffer *GetHostIndexBuffer(XTL::X_D3DResource *pXboxResource) +IDirect3DIndexBuffer *GetHostIndexBuffer(XTL::X_D3DResource *pXboxResource) { if (pXboxResource == NULL) return nullptr; assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_INDEXBUFFER); - return (XTL::IDirect3DIndexBuffer*)GetHostResource(pXboxResource); + return (IDirect3DIndexBuffer*)GetHostResource(pXboxResource); } -void SetHostSurface(XTL::X_D3DResource *pXboxResource, XTL::IDirect3DSurface *pHostSurface) +void SetHostSurface(XTL::X_D3DResource *pXboxResource, IDirect3DSurface *pHostSurface) { assert(pXboxResource != NULL); assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_SURFACE); - SetHostResource(pXboxResource, (XTL::IDirect3DResource*)pHostSurface); + SetHostResource(pXboxResource, (IDirect3DResource*)pHostSurface); } -void SetHostTexture(XTL::X_D3DResource *pXboxResource, XTL::IDirect3DTexture *pHostTexture) +void SetHostTexture(XTL::X_D3DResource *pXboxResource, IDirect3DTexture *pHostTexture) { assert(pXboxResource != NULL); assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_TEXTURE); - SetHostResource(pXboxResource, (XTL::IDirect3DResource*)pHostTexture); + SetHostResource(pXboxResource, (IDirect3DResource*)pHostTexture); } -void SetHostCubeTexture(XTL::X_D3DResource *pXboxResource, XTL::IDirect3DCubeTexture *pHostCubeTexture) +void SetHostCubeTexture(XTL::X_D3DResource *pXboxResource, IDirect3DCubeTexture *pHostCubeTexture) { assert(pXboxResource != NULL); assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_TEXTURE); - SetHostResource(pXboxResource, (XTL::IDirect3DResource*)pHostCubeTexture); + SetHostResource(pXboxResource, (IDirect3DResource*)pHostCubeTexture); } -void SetHostVolumeTexture(XTL::X_D3DResource *pXboxResource, XTL::IDirect3DVolumeTexture *pHostVolumeTexture) +void SetHostVolumeTexture(XTL::X_D3DResource *pXboxResource, IDirect3DVolumeTexture *pHostVolumeTexture) { assert(pXboxResource != NULL); assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_TEXTURE); - SetHostResource(pXboxResource, (XTL::IDirect3DResource*)pHostVolumeTexture); + SetHostResource(pXboxResource, (IDirect3DResource*)pHostVolumeTexture); } -void SetHostVolume(XTL::X_D3DResource *pXboxResource, XTL::IDirect3DVolume *pHostVolume) +void SetHostVolume(XTL::X_D3DResource *pXboxResource, IDirect3DVolume *pHostVolume) { assert(pXboxResource != NULL); assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_TEXTURE); - SetHostResource(pXboxResource, (XTL::IDirect3DResource*)pHostVolume); + SetHostResource(pXboxResource, (IDirect3DResource*)pHostVolume); } -void SetHostIndexBuffer(XTL::X_D3DResource *pXboxResource, XTL::IDirect3DIndexBuffer *pHostIndexBuffer) +void SetHostIndexBuffer(XTL::X_D3DResource *pXboxResource, IDirect3DIndexBuffer *pHostIndexBuffer) { assert(pXboxResource != NULL); assert(GetXboxCommonResourceType(pXboxResource) == X_D3DCOMMON_TYPE_INDEXBUFFER); - SetHostResource(pXboxResource, (XTL::IDirect3DResource*)pHostIndexBuffer); + SetHostResource(pXboxResource, (IDirect3DResource*)pHostIndexBuffer); } int XboxD3DPaletteSizeToBytes(const XTL::X_D3DPALETTESIZE Size) { static int lk[4] = { - 256 * sizeof(XTL::D3DCOLOR), // D3DPALETTE_256 - 128 * sizeof(XTL::D3DCOLOR), // D3DPALETTE_128 - 64 * sizeof(XTL::D3DCOLOR), // D3DPALETTE_64 - 32 * sizeof(XTL::D3DCOLOR) // D3DPALETTE_32 + 256 * sizeof(D3DCOLOR), // D3DPALETTE_256 + 128 * sizeof(D3DCOLOR), // D3DPALETTE_128 + 64 * sizeof(D3DCOLOR), // D3DPALETTE_64 + 32 * sizeof(D3DCOLOR) // D3DPALETTE_32 }; return lk[Size]; @@ -1041,7 +1039,7 @@ inline XTL::X_D3DPALETTESIZE GetXboxPaletteSize(const XTL::X_D3DPalette *pPalett return PaletteSize; } -int GetD3DResourceRefCount(XTL::IDirect3DResource *EmuResource) +int GetD3DResourceRefCount(IDirect3DResource *EmuResource) { if (EmuResource != nullptr) { @@ -1064,7 +1062,7 @@ XTL::X_D3DSurface *EmuNewD3DSurface() } */ -VOID XTL::CxbxSetPixelContainerHeader +VOID CxbxSetPixelContainerHeader ( XTL::X_D3DPixelContainer* pPixelContainer, DWORD Common, @@ -1209,7 +1207,7 @@ VOID CxbxGetPixelContainerMeasures } } -void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3DBaseTexture* pTexture, UINT& Level, XTL::D3DCUBEMAP_FACES& Face) +void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3DBaseTexture* pTexture, UINT& Level, D3DCUBEMAP_FACES& Face) { auto pSurfaceData = (uintptr_t)GetDataFromXboxResource(pSurface); auto pTextureData = (uintptr_t)GetDataFromXboxResource(pTexture); @@ -1217,7 +1215,7 @@ void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3D // Fast path: If the data pointers match, this must be the first surface within the texture if ((pSurfaceData == pTextureData)) { Level = 0; - Face = XTL::D3DCUBEMAP_FACE_POSITIVE_X; + Face = D3DCUBEMAP_FACE_POSITIVE_X; return; } @@ -1239,7 +1237,7 @@ void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3D int cubeFaceOffset = 0; int cubeFaceSize = 0; auto pData = pTextureData; - for (int face = XTL::D3DCUBEMAP_FACE_POSITIVE_X; face <= numFaces; face++) { + for (int face = D3DCUBEMAP_FACE_POSITIVE_X; face <= numFaces; face++) { int mipWidth = textureWidth; int mipHeight = textureHeight; int mipDepth = textureDepth; @@ -1249,7 +1247,7 @@ void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3D for (int level = 0; level < numLevels; level++) { if (pData == pSurfaceData) { Level = level; - Face = (XTL::D3DCUBEMAP_FACES)face; + Face = (D3DCUBEMAP_FACES)face; return; } @@ -1260,7 +1258,7 @@ void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3D } // If this is the first face, set the cube face size - if (face == XTL::D3DCUBEMAP_FACE_POSITIVE_X) { + if (face == D3DCUBEMAP_FACE_POSITIVE_X) { cubeFaceSize = ROUND_UP(textureDepth * dwMipSize, X_D3DTEXTURE_CUBEFACE_ALIGNMENT); } @@ -1287,13 +1285,13 @@ void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3D LOG_TEST_CASE("Could not find Surface within Texture, falling back to Level = 0, Face = D3DCUBEMAP_FACE_POSITIVE_X"); Level = 0; - Face = XTL::D3DCUBEMAP_FACE_POSITIVE_X; + Face = D3DCUBEMAP_FACE_POSITIVE_X; } // Wrapper function to allow calling without passing a face void GetSurfaceFaceAndLevelWithinTexture(XTL::X_D3DSurface* pSurface, XTL::X_D3DBaseTexture* pBaseTexture, UINT& Level) { - XTL::D3DCUBEMAP_FACES face; + D3DCUBEMAP_FACES face; GetSurfaceFaceAndLevelWithinTexture(pSurface, pBaseTexture, Level, face); } @@ -1359,7 +1357,7 @@ bool ConvertD3DTextureToARGBBuffer( } // Called by WndMain::LoadGameLogo() to load game logo bitmap -uint8_t *XTL::ConvertD3DTextureToARGB( +uint8_t *ConvertD3DTextureToARGB( XTL::X_D3DPixelContainer *pXboxPixelContainer, uint8_t *pSrc, int *pWidth, int *pHeight, @@ -1403,7 +1401,7 @@ uint8_t *XTL::ConvertD3DTextureToARGB( } // Direct3D initialization (called before emulation begins) -VOID XTL::EmuD3DInit() +VOID EmuD3DInit() { // create the create device proxy thread { @@ -1440,7 +1438,7 @@ VOID XTL::EmuD3DInit() } // cleanup Direct3D -VOID XTL::EmuD3DCleanup() {} +VOID EmuD3DCleanup() {} // enumeration procedure for locating display device GUIDs static BOOL WINAPI EmuEnumDisplayDevices(GUID FAR *lpGUID, LPSTR lpDriverDescription, LPSTR lpDriverName, LPVOID lpContext, HMONITOR hm) @@ -1897,13 +1895,11 @@ static DWORD WINAPI EmuUpdateTickCount(LPVOID) } } -void UpdateDepthStencilFlags(XTL::IDirect3DSurface *pDepthStencilSurface) +void UpdateDepthStencilFlags(IDirect3DSurface *pDepthStencilSurface) { g_bHasDepth = false; g_bHasStencil = false; if (pDepthStencilSurface != nullptr) { - using namespace XTL; // Shouldn't be nescessary - D3DSURFACE_DESC Desc; pDepthStencilSurface->GetDesc(&Desc); @@ -2003,14 +1999,14 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) EmuLog(LOG_LEVEL::WARNING, "DepthStencilSurface : 0x%.08X", g_EmuCDPD.XboxPresentationParameters.DepthStencilSurface); // Make a binary copy of the Xbox D3DPRESENT_PARAMETERS - memcpy(&g_EmuCDPD.HostPresentationParameters, &(g_EmuCDPD.XboxPresentationParameters), sizeof(XTL::D3DPRESENT_PARAMETERS)); + memcpy(&g_EmuCDPD.HostPresentationParameters, &(g_EmuCDPD.XboxPresentationParameters), sizeof(D3DPRESENT_PARAMETERS)); // make adjustments to parameters to make sense with windows Direct3D { g_EmuCDPD.HostPresentationParameters.Windowed = !g_XBVideo.bFullScreen; // TODO: Investigate the best option for this - g_EmuCDPD.HostPresentationParameters.SwapEffect = XTL::D3DSWAPEFFECT_COPY; + g_EmuCDPD.HostPresentationParameters.SwapEffect = D3DSWAPEFFECT_COPY; g_EmuCDPD.HostPresentationParameters.BackBufferFormat = EmuXB2PC_D3DFormat(g_EmuCDPD.XboxPresentationParameters.BackBufferFormat); g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat = EmuXB2PC_D3DFormat(g_EmuCDPD.XboxPresentationParameters.AutoDepthStencilFormat); @@ -2030,7 +2026,7 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) // It causes issues with backbuffer locking. // NOTE: multisampling is could potentially be implemented by having the host backbuffer normal size // the Xbox backbuffer being multisampled and scaled during blit - g_EmuCDPD.HostPresentationParameters.MultiSampleType = XTL::D3DMULTISAMPLE_NONE; + g_EmuCDPD.HostPresentationParameters.MultiSampleType = D3DMULTISAMPLE_NONE; g_EmuCDPD.HostPresentationParameters.MultiSampleQuality = 0; /* @@ -2038,11 +2034,11 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) // TODO: Check card for multisampling abilities if(g_EmuCDPD.XboxPresentationParameters.MultiSampleType == XTL::X_D3DMULTISAMPLE_2_SAMPLES_MULTISAMPLE_QUINCUNX) // = 0x00001121 = 4385 // Test-case : Galleon - g_EmuCDPD.HostPresentationParameters.MultiSampleType = XTL::D3DMULTISAMPLE_2_SAMPLES; + g_EmuCDPD.HostPresentationParameters.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES; else { // CxbxKrnlCleanup("Unknown MultiSampleType (0x%.08X)", g_EmuCDPD.XboxPresentationParameters.MultiSampleType); EmuLog(LOG_LEVEL::WARNING, "MultiSampleType 0x%.08X is not supported!", g_EmuCDPD.XboxPresentationParameters.MultiSampleType); - g_EmuCDPD.HostPresentationParameters.MultiSampleType = XTL::D3DMULTISAMPLE_NONE; + g_EmuCDPD.HostPresentationParameters.MultiSampleType = D3DMULTISAMPLE_NONE; } }*/ @@ -2062,7 +2058,7 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) EmuLog(LOG_LEVEL::DEBUG, "EmuCreateDeviceProxy: Default height wasn't updated."); } - XTL::D3DDISPLAYMODE D3DDisplayMode; + D3DDISPLAYMODE D3DDisplayMode; g_pDirect3D->GetAdapterDisplayMode(g_EmuCDPD.Adapter, &D3DDisplayMode); @@ -2089,18 +2085,18 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) } if(strcmp(szBackBufferFormat, "x1r5g5b5") == 0) - g_EmuCDPD.HostPresentationParameters.BackBufferFormat = XTL::D3DFMT_X1R5G5B5; + g_EmuCDPD.HostPresentationParameters.BackBufferFormat = D3DFMT_X1R5G5B5; else if(strcmp(szBackBufferFormat, "r5g6r5") == 0) - g_EmuCDPD.HostPresentationParameters.BackBufferFormat = XTL::D3DFMT_R5G6B5; + g_EmuCDPD.HostPresentationParameters.BackBufferFormat = D3DFMT_R5G6B5; else if(strcmp(szBackBufferFormat, "x8r8g8b8") == 0) - g_EmuCDPD.HostPresentationParameters.BackBufferFormat = XTL::D3DFMT_X8R8G8B8; + g_EmuCDPD.HostPresentationParameters.BackBufferFormat = D3DFMT_X8R8G8B8; else if(strcmp(szBackBufferFormat, "a8r8g8b8") == 0) - g_EmuCDPD.HostPresentationParameters.BackBufferFormat = XTL::D3DFMT_A8R8G8B8; + g_EmuCDPD.HostPresentationParameters.BackBufferFormat = D3DFMT_A8R8G8B8; } } // detect vertex processing capabilities - if((g_D3DCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) && g_EmuCDPD.DeviceType == XTL::D3DDEVTYPE_HAL) + if((g_D3DCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) && g_EmuCDPD.DeviceType == D3DDEVTYPE_HAL) { EmuLog(LOG_LEVEL::DEBUG, "Using hardware vertex processing"); @@ -2129,22 +2125,22 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) // If the depth stencil format is unsupported by the host, use a sensible fallback if (g_pDirect3D->CheckDeviceFormat( D3DADAPTER_DEFAULT, - XTL::D3DDEVTYPE_HAL, + D3DDEVTYPE_HAL, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, - XTL::D3DRTYPE_SURFACE, + D3DRTYPE_SURFACE, g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat) != D3D_OK) { - g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat = XTL::D3DFMT_D24S8; + g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat = D3DFMT_D24S8; } // For some reason, D3DFMT_D16_LOCKABLE as the AudoDepthStencil causes CreateDevice to fail... - if (g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat == XTL::D3DFMT_D16_LOCKABLE) { - g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat = XTL::D3DFMT_D16; + if (g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat == D3DFMT_D16_LOCKABLE) { + g_EmuCDPD.HostPresentationParameters.AutoDepthStencilFormat = D3DFMT_D16; } // DirectX9 doesn't support 0 as a swap effect if (g_EmuCDPD.HostPresentationParameters.SwapEffect == 0) { - g_EmuCDPD.HostPresentationParameters.SwapEffect = XTL::D3DSWAPEFFECT_DISCARD; + g_EmuCDPD.HostPresentationParameters.SwapEffect = D3DSWAPEFFECT_DISCARD; } // redirect to windows Direct3D @@ -2174,48 +2170,48 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) // Only process Xbox formats that are directly mappable to host if (!EmuXBFormatRequiresConversionToARGB((XTL::X_D3DFORMAT)X_Format)) { // Convert the Xbox format into host format (without warning, thanks to the above restriction) - XTL::D3DFORMAT PCFormat = EmuXB2PC_D3DFormat((XTL::X_D3DFORMAT)X_Format); - if (PCFormat != XTL::D3DFMT_UNKNOWN) { + D3DFORMAT PCFormat = EmuXB2PC_D3DFormat((XTL::X_D3DFORMAT)X_Format); + if (PCFormat != D3DFMT_UNKNOWN) { // Index with Xbox D3DFormat, because host FourCC codes are too big to be used as indices if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, 0, - XTL::D3DRTYPE_SURFACE, PCFormat)) + D3DRTYPE_SURFACE, PCFormat)) g_bSupportsFormatSurface[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, D3DUSAGE_RENDERTARGET, - XTL::D3DRTYPE_SURFACE, PCFormat)) + D3DRTYPE_SURFACE, PCFormat)) g_bSupportsFormatSurfaceRenderTarget[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, - XTL::D3DRTYPE_SURFACE, PCFormat)) + D3DRTYPE_SURFACE, PCFormat)) g_bSupportsFormatSurfaceDepthStencil[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, 0, - XTL::D3DRTYPE_TEXTURE, PCFormat)) + D3DRTYPE_TEXTURE, PCFormat)) g_bSupportsFormatTexture[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, D3DUSAGE_RENDERTARGET, - XTL::D3DRTYPE_TEXTURE, PCFormat)) + D3DRTYPE_TEXTURE, PCFormat)) g_bSupportsFormatTextureRenderTarget[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL, - XTL::D3DRTYPE_TEXTURE, PCFormat)) + D3DRTYPE_TEXTURE, PCFormat)) g_bSupportsFormatTextureDepthStencil[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, 0, - XTL::D3DRTYPE_VOLUMETEXTURE, PCFormat)) + D3DRTYPE_VOLUMETEXTURE, PCFormat)) g_bSupportsFormatVolumeTexture[X_Format] = true; if (D3D_OK == g_pDirect3D->CheckDeviceFormat( g_EmuCDPD.Adapter, g_EmuCDPD.DeviceType, g_EmuCDPD.HostPresentationParameters.BackBufferFormat, 0, - XTL::D3DRTYPE_CUBETEXTURE, PCFormat)) + D3DRTYPE_CUBETEXTURE, PCFormat)) g_bSupportsFormatCubeTexture[X_Format] = true; } } @@ -2227,17 +2223,17 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) HRESULT hRet; // enumerate device guid for this monitor, for directdraw - hRet = XTL::DirectDrawEnumerateExA(EmuEnumDisplayDevices, NULL, DDENUM_ATTACHEDSECONDARYDEVICES); + hRet = DirectDrawEnumerateExA(EmuEnumDisplayDevices, NULL, DDENUM_ATTACHEDSECONDARYDEVICES); DEBUG_D3DRESULT(hRet, "DirectDrawEnumerateExA"); // create DirectDraw7 { if(FAILED(hRet)) { - hRet = XTL::DirectDrawCreateEx(NULL, (void**)&g_pDD7, XTL::IID_IDirectDraw7, NULL); - DEBUG_D3DRESULT(hRet, "XTL::DirectDrawCreateEx(NULL)"); + hRet = DirectDrawCreateEx(NULL, (void**)&g_pDD7, IID_IDirectDraw7, NULL); + DEBUG_D3DRESULT(hRet, "DirectDrawCreateEx(NULL)"); } else { - hRet = XTL::DirectDrawCreateEx(&g_ddguid, (void**)&g_pDD7, XTL::IID_IDirectDraw7, NULL); - DEBUG_D3DRESULT(hRet, "XTL::DirectDrawCreateEx(&g_ddguid)"); + hRet = DirectDrawCreateEx(&g_ddguid, (void**)&g_pDD7, IID_IDirectDraw7, NULL); + DEBUG_D3DRESULT(hRet, "DirectDrawCreateEx(&g_ddguid)"); } if(FAILED(hRet)) @@ -2299,7 +2295,7 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) /* Disabled for now, as this has no other side-effect (other then adding a reference count that's never Released) // update render target cache - XTL::IDirect3DSurface *pCurrentHostRenderTarget = nullptr; + IDirect3DSurface *pCurrentHostRenderTarget = nullptr; hRet = g_pD3DDevice->GetRenderTarget( 0, // RenderTargetIndex &pCurrentHostRenderTarget); @@ -2313,7 +2309,7 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID) hRet = g_pD3DDevice->CreateVertexBuffer ( - 1, 0, 0, XTL::D3DPOOL_MANAGED, + 1, 0, 0, D3DPOOL_MANAGED, &g_pDummyBuffer , nullptr ); @@ -2389,11 +2385,11 @@ static void EmuVerifyResourceIsRegistered(XTL::X_D3DResource *pResource, DWORD D // Determine if the associated host resource is a render target already, if so, do nothing HRESULT hRet = STATUS_INVALID_PARAMETER; // Default to an error condition, so we can use D3D_OK to check for success - XTL::D3DSURFACE_DESC surfaceDesc; + D3DSURFACE_DESC surfaceDesc; if (xboxResourceType == XTL::X_D3DRTYPE_SURFACE) { - hRet = ((XTL::IDirect3DSurface*)hostResource)->GetDesc(&surfaceDesc); + hRet = ((IDirect3DSurface*)hostResource)->GetDesc(&surfaceDesc); } else if (xboxResourceType == XTL::X_D3DRTYPE_TEXTURE) { - hRet = ((XTL::IDirect3DTexture*)hostResource)->GetLevelDesc(0, &surfaceDesc); + hRet = ((IDirect3DTexture*)hostResource)->GetLevelDesc(0, &surfaceDesc); } // Only continue checking if we were able to get the surface desc, if it failed, we fall-through @@ -2463,7 +2459,7 @@ static void EmuVerifyResourceIsRegistered(XTL::X_D3DResource *pResource, DWORD D typedef struct { uint64_t Hash = 0; DWORD IndexCount = 0; - XTL::IDirect3DIndexBuffer* pHostIndexBuffer = nullptr; + IDirect3DIndexBuffer* pHostIndexBuffer = nullptr; } ConvertedIndexBuffer; std::unordered_map g_ConvertedIndexBuffers; @@ -2497,7 +2493,7 @@ void CxbxUpdateActiveIndexBuffer // "Managing Resources (Direct3D 9)" // suggests "for resources which change with high frequency" [...] // "D3DPOOL_DEFAULT along with D3DUSAGE_DYNAMIC should be used." - const XTL::D3DPOOL D3DPool = XTL::D3DPOOL_DEFAULT; // Was XTL::D3DPOOL_MANAGED + const D3DPOOL D3DPool = D3DPOOL_DEFAULT; // Was D3DPOOL_MANAGED // https://msdn.microsoft.com/en-us/library/windows/desktop/bb172625(v=vs.85).aspx // "Buffers created with D3DPOOL_DEFAULT that do not specify D3DUSAGE_WRITEONLY may suffer a severe performance penalty." const DWORD D3DUsage = D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY; // Was D3DUSAGE_WRITEONLY @@ -2505,7 +2501,7 @@ void CxbxUpdateActiveIndexBuffer HRESULT hRet = g_pD3DDevice->CreateIndexBuffer( IndexCount * 2, D3DUsage, - XTL::D3DFMT_INDEX16, + D3DFMT_INDEX16, D3DPool, &indexBuffer.pHostIndexBuffer , nullptr // pSharedHandle @@ -3132,7 +3128,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SelectVertexShader) // If Handle is assigned, it becomes the new current Xbox VertexShader, // which resets a bit of state (nv2a execution mode, viewport, ?) // Either way, the given address slot is selected as the start of the current vertex shader program - g_CurrentXboxVertexShaderHandle = Handle; + g_Xbox_VertexShader_Handle = Handle; CxbxVertexShader *pCxbxVertexShader = nullptr; DWORD HostFVF = 0; @@ -3161,8 +3157,8 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SelectVertexShader) } } - XTL::IDirect3DVertexDeclaration* pHostVertexDeclaration = nullptr; - XTL::IDirect3DVertexShader* pHostVertexShader = nullptr; + IDirect3DVertexDeclaration* pHostVertexDeclaration = nullptr; + IDirect3DVertexShader* pHostVertexShader = nullptr; if (pCxbxVertexShader) { @@ -3303,7 +3299,7 @@ XTL::X_D3DSurface* WINAPI XTL::EMUPATCH(D3DDevice_GetBackBuffer2) //*/ static X_D3DSurface *pBackBuffer = EmuNewD3DSurface(); - XTL::IDirect3DSurface *pCurrentHostBackBuffer = nullptr; + IDirect3DSurface *pCurrentHostBackBuffer = nullptr; STATUS_SUCCESS; @@ -3402,7 +3398,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_GetBackBuffer) *ppBackBuffer = EMUPATCH(D3DDevice_GetBackBuffer2)(BackBuffer); } -bool GetHostRenderTargetDimensions(DWORD *pHostWidth, DWORD *pHostHeight, XTL::IDirect3DSurface* pHostRenderTarget = nullptr) +bool GetHostRenderTargetDimensions(DWORD *pHostWidth, DWORD *pHostHeight, IDirect3DSurface* pHostRenderTarget = nullptr) { bool shouldRelease = false; if (pHostRenderTarget == nullptr) { @@ -3419,7 +3415,7 @@ bool GetHostRenderTargetDimensions(DWORD *pHostWidth, DWORD *pHostHeight, XTL::I } // Get current host render target dimensions - XTL::D3DSURFACE_DESC HostRenderTarget_Desc; + D3DSURFACE_DESC HostRenderTarget_Desc; pHostRenderTarget->GetDesc(&HostRenderTarget_Desc); if (shouldRelease) { @@ -3465,7 +3461,7 @@ void UpdateViewPortOffsetAndScaleConstants() // 59 (c-37) used for screen space transformation. if (g_VertexShaderConstantMode != X_D3DSCM_NORESERVEDCONSTANTS) { - XTL::D3DVIEWPORT ViewPort; + D3DVIEWPORT ViewPort; g_pD3DDevice->GetViewport(&ViewPort); float vScale[] = { (2.0f / ViewPort.Width) * g_RenderScaleFactor, (-2.0f / ViewPort.Height) * g_RenderScaleFactor, 0.0f, 0.0f }; @@ -4282,9 +4278,9 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData4f) // Get the vertex shader flags (if any is active) : uint32_t ActiveVertexAttributeFlags = 0; - if (VshHandleIsVertexShader(g_CurrentXboxVertexShaderHandle)) { + if (VshHandleIsVertexShader(g_Xbox_VertexShader_Handle)) { LOG_TEST_CASE("D3DDevice_SetVertexData4f with active VertexShader"); - X_D3DVertexShader *pXboxVertexShader = VshHandleToXboxVertexShader(g_CurrentXboxVertexShaderHandle); + X_D3DVertexShader *pXboxVertexShader = VshHandleToXboxVertexShader(g_Xbox_VertexShader_Handle); if (!(pXboxVertexShader->Flags & 0x10/*=X_VERTEXSHADER_PROGRAM*/)) { ActiveVertexAttributeFlags = pXboxVertexShader->Flags; } @@ -4859,10 +4855,10 @@ DWORD WINAPI XTL::EMUPATCH(D3DDevice_Swap) EmuLog(LOG_LEVEL::WARNING, "XTL::EmuD3DDevice_Swap: Flags != 0"); // Fetch the host backbuffer - XTL::IDirect3DSurface *pCurrentHostBackBuffer = nullptr; + IDirect3DSurface *pCurrentHostBackBuffer = nullptr; HRESULT hRet = g_pD3DDevice->GetBackBuffer( 0, // iSwapChain - 0, XTL::D3DBACKBUFFER_TYPE_MONO, &pCurrentHostBackBuffer); + 0, D3DBACKBUFFER_TYPE_MONO, &pCurrentHostBackBuffer); DEBUG_D3DRESULT(hRet, "g_pD3DDevice->GetBackBuffer - Unable to get backbuffer surface!"); if (hRet == D3D_OK) { assert(pCurrentHostBackBuffer != nullptr); @@ -5247,19 +5243,19 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText // Happens in some Outrun 2006 SetRenderTarget calls if (pParentXboxTexture && (pXboxSurface->Format == pParentXboxTexture->Format)) { // For surfaces with a parent texture, map these to a host texture first - XTL::IDirect3DBaseTexture *pParentHostBaseTexture = GetHostBaseTexture(pParentXboxTexture, D3DUsage, iTextureStage); - XTL::IDirect3DSurface* pNewHostSurface; + IDirect3DBaseTexture *pParentHostBaseTexture = GetHostBaseTexture(pParentXboxTexture, D3DUsage, iTextureStage); + IDirect3DSurface* pNewHostSurface; switch (pParentHostBaseTexture->GetType()) { - case XTL::D3DRTYPE_VOLUMETEXTURE: { + case D3DRTYPE_VOLUMETEXTURE: { LOG_TEST_CASE("Using child surface of VolumeTexture"); // TODO break; } - case XTL::D3DRTYPE_CUBETEXTURE: { + case D3DRTYPE_CUBETEXTURE: { // test-case : Burnout - auto pParentHostTexture = (XTL::IDirect3DCubeTexture*)pParentHostBaseTexture; + auto pParentHostTexture = (IDirect3DCubeTexture*)pParentHostBaseTexture; - XTL::D3DCUBEMAP_FACES CubeMapFace = XTL::D3DCUBEMAP_FACE_POSITIVE_X; + D3DCUBEMAP_FACES CubeMapFace = D3DCUBEMAP_FACE_POSITIVE_X; UINT SurfaceLevel = 0; GetSurfaceFaceAndLevelWithinTexture(pXboxSurface, pParentXboxTexture, SurfaceLevel, CubeMapFace); @@ -5275,8 +5271,8 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText break; } - case XTL::D3DRTYPE_TEXTURE: { - XTL::IDirect3DTexture* pParentHostTexture = (XTL::IDirect3DTexture*)pParentHostBaseTexture; + case D3DRTYPE_TEXTURE: { + IDirect3DTexture* pParentHostTexture = (IDirect3DTexture*)pParentHostBaseTexture; UINT SurfaceLevel = 0; GetSurfaceFaceAndLevelWithinTexture(pXboxSurface, pParentXboxTexture, SurfaceLevel); @@ -5303,9 +5299,9 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText XTL::X_D3DVolumeTexture *pParentXboxVolumeTexture = (pXboxVolume) ? (XTL::X_D3DVolumeTexture *)pXboxVolume->Parent : xbnullptr; if (pParentXboxVolumeTexture) { // For volumes with a parent volume texture, map these to a host volume texture first - XTL::IDirect3DVolumeTexture *pParentHostVolumeTexture = GetHostVolumeTexture(pParentXboxVolumeTexture, iTextureStage); + IDirect3DVolumeTexture *pParentHostVolumeTexture = GetHostVolumeTexture(pParentXboxVolumeTexture, iTextureStage); UINT VolumeLevel = 0; // TODO : Derive actual level based on pXboxVolume->Data delta to pParentXboxVolumeTexture->Data - XTL::IDirect3DVolume *pNewHostVolume; + IDirect3DVolume *pNewHostVolume; HRESULT hRet = pParentHostVolumeTexture->GetVolumeLevel(VolumeLevel, &pNewHostVolume); DEBUG_D3DRESULT(hRet, "pParentHostVolumeTexture->GetVolumeLevel"); if (hRet == D3D_OK) { @@ -5324,7 +5320,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText case XTL::X_D3DRTYPE_CUBETEXTURE: { XTL::X_D3DPixelContainer *pPixelContainer = (XTL::X_D3DPixelContainer*)pResource; XTL::X_D3DFORMAT X_Format = GetXboxPixelContainerFormat(pPixelContainer); - XTL::D3DPOOL D3DPool = XTL::D3DPOOL_DEFAULT; // Was: D3DPOOL_MANAGED TODO : Nuance D3DPOOL where/when needed + D3DPOOL D3DPool = D3DPOOL_DEFAULT; // Was: D3DPOOL_MANAGED TODO : Nuance D3DPOOL where/when needed if (EmuXBFormatIsDepthBuffer(X_Format)) { D3DUsage |= D3DUSAGE_DEPTHSTENCIL; @@ -5337,12 +5333,12 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText } // Determine the format we'll be using on host D3D - XTL::D3DFORMAT PCFormat; + D3DFORMAT PCFormat; bool bConvertToARGB = false; if (EmuXBFormatRequiresConversionToARGB(X_Format)) { bConvertToARGB = true; - PCFormat = XTL::D3DFMT_A8R8G8B8; + PCFormat = D3DFMT_A8R8G8B8; // Unset D3DUSAGE_DEPTHSTENCIL: It's not possible for ARGB textures to be depth stencils // Fixes CreateTexture error in Virtua Cop 3 (Chihiro) @@ -5363,11 +5359,11 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText if (D3DUsage & D3DUSAGE_DEPTHSTENCIL) { // If it was a depth stencil, fall back to a known supported depth format EmuLog(LOG_LEVEL::WARNING, "Xbox %s Format %x will be converted to D3DFMT_D24S8", ResourceTypeName, X_Format); - PCFormat = XTL::D3DFMT_D24S8; + PCFormat = D3DFMT_D24S8; } else if (EmuXBFormatCanBeConvertedToARGB(X_Format)) { EmuLog(LOG_LEVEL::WARNING, "Xbox %s Format %x will be converted to ARGB", ResourceTypeName, X_Format); bConvertToARGB = true; - PCFormat = XTL::D3DFMT_A8R8G8B8; + PCFormat = D3DFMT_A8R8G8B8; } else { // Otherwise, use a best matching format /*CxbxKrnlCleanup*/EmuLog(LOG_LEVEL::WARNING, "Encountered a completely incompatible %s format!", ResourceTypeName); @@ -5378,13 +5374,13 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText // Update D3DPool accordingly to the active D3DUsage flags if (D3DUsage & D3DUSAGE_DEPTHSTENCIL) { - D3DPool = XTL::D3DPOOL_DEFAULT; + D3DPool = D3DPOOL_DEFAULT; } if (D3DUsage & D3DUSAGE_RENDERTARGET) { - D3DPool = XTL::D3DPOOL_DEFAULT; + D3DPool = D3DPOOL_DEFAULT; } if (D3DUsage & D3DUSAGE_DYNAMIC) { - D3DPool = XTL::D3DPOOL_DEFAULT; + D3DPool = D3DPOOL_DEFAULT; } // Interpret Width/Height/BPP @@ -5443,14 +5439,14 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText // One of these will be created : each also has an intermediate copy to allow UpdateTexture to work // This means we don't need to lock the GPU resource anymore, so we can use D3DPOOL_DEFAULT to allow Stretch/CopyRects to work! - XTL::IDirect3DSurface *pNewHostSurface = nullptr; // for X_D3DRTYPE_SURFACE - XTL::IDirect3DVolume *pNewHostVolume = nullptr; // for X_D3DRTYPE_VOLUME - XTL::IDirect3DTexture *pNewHostTexture = nullptr; // for X_D3DRTYPE_TEXTURE - XTL::IDirect3DTexture *pIntermediateHostTexture = nullptr; - XTL::IDirect3DVolumeTexture *pNewHostVolumeTexture = nullptr; // for X_D3DRTYPE_VOLUMETEXTURE - XTL::IDirect3DVolumeTexture *pIntermediateHostVolumeTexture = nullptr; - XTL::IDirect3DCubeTexture *pNewHostCubeTexture = nullptr; // for X_D3DRTYPE_CUBETEXTURE - XTL::IDirect3DCubeTexture *pIntermediateHostCubeTexture = nullptr; + IDirect3DSurface *pNewHostSurface = nullptr; // for X_D3DRTYPE_SURFACE + IDirect3DVolume *pNewHostVolume = nullptr; // for X_D3DRTYPE_VOLUME + IDirect3DTexture *pNewHostTexture = nullptr; // for X_D3DRTYPE_TEXTURE + IDirect3DTexture *pIntermediateHostTexture = nullptr; + IDirect3DVolumeTexture *pNewHostVolumeTexture = nullptr; // for X_D3DRTYPE_VOLUMETEXTURE + IDirect3DVolumeTexture *pIntermediateHostVolumeTexture = nullptr; + IDirect3DCubeTexture *pNewHostCubeTexture = nullptr; // for X_D3DRTYPE_CUBETEXTURE + IDirect3DCubeTexture *pIntermediateHostCubeTexture = nullptr; HRESULT hRet; @@ -5478,7 +5474,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText DEBUG_D3DRESULT(hRet, "g_pD3DDevice->CreateDepthStencilSurface"); } else { - D3DPool = XTL::D3DPOOL_SYSTEMMEM; + D3DPool = D3DPOOL_SYSTEMMEM; hRet = g_pD3DDevice->CreateOffscreenPlainSurface(dwWidth, dwHeight, PCFormat, D3DPool, &pNewHostSurface, nullptr); DEBUG_D3DRESULT(hRet, "g_pD3DDevice->CreateOffscreenPlainSurface"); } @@ -5488,11 +5484,11 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText if (hRet != D3D_OK) { if (D3DUsage & D3DUSAGE_DEPTHSTENCIL) { EmuLog(LOG_LEVEL::WARNING, "CreateDepthStencilSurface Failed\n\nError: %s\nDesc: %s", - XTL::DXGetErrorString(hRet), XTL::DXGetErrorDescription(hRet)); + DXGetErrorString(hRet), DXGetErrorDescription(hRet)); } else { EmuLog(LOG_LEVEL::WARNING, "CreateImageSurface Failed\n\nError: %s\nDesc: %s", - XTL::DXGetErrorString(hRet), XTL::DXGetErrorDescription(hRet)); + DXGetErrorString(hRet), DXGetErrorDescription(hRet)); } EmuLog(LOG_LEVEL::WARNING, "Trying Fallback"); @@ -5503,7 +5499,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText if (hRet != D3D_OK) { // We cannot safely continue in this state. CxbxKrnlCleanup("CreateImageSurface Failed!\n\nError: %s\nDesc: %s", - XTL::DXGetErrorString(hRet), XTL::DXGetErrorDescription(hRet)); + DXGetErrorString(hRet), DXGetErrorDescription(hRet)); } SetHostSurface(pResource, pNewHostSurface); @@ -5535,9 +5531,9 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText DEBUG_D3DRESULT(hRet, "g_pD3DDevice->CreateTexture"); // If the above failed, we might be able to use an ARGB texture instead - if ((hRet != D3D_OK) && (PCFormat != XTL::D3DFMT_A8R8G8B8) && EmuXBFormatCanBeConvertedToARGB(X_Format)) { + if ((hRet != D3D_OK) && (PCFormat != D3DFMT_A8R8G8B8) && EmuXBFormatCanBeConvertedToARGB(X_Format)) { hRet = g_pD3DDevice->CreateTexture(dwWidth, dwHeight, dwMipMapLevels, - D3DUsage, XTL::D3DFMT_A8R8G8B8, D3DPool, &pNewHostTexture, + D3DUsage, D3DFMT_A8R8G8B8, D3DPool, &pNewHostTexture, nullptr ); DEBUG_D3DRESULT(hRet, "g_pD3DDevice->CreateTexture(D3DFMT_A8R8G8B8)"); @@ -5545,14 +5541,14 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText if (hRet == D3D_OK) { // Okay, now this works, make sure the texture gets converted bConvertToARGB = true; - PCFormat = XTL::D3DFMT_A8R8G8B8; + PCFormat = D3DFMT_A8R8G8B8; } } // Now create our intermediate texture for UpdateTexture, but not for render targets or depth stencils if (hRet == D3D_OK && (D3DUsage & D3DUSAGE_RENDERTARGET) == 0 && (D3DUsage & D3DUSAGE_DEPTHSTENCIL) == 0) { hRet = g_pD3DDevice->CreateTexture(dwWidth, dwHeight, dwMipMapLevels, - 0, PCFormat, XTL::D3DPOOL_SYSTEMMEM, &pIntermediateHostTexture, + 0, PCFormat, D3DPOOL_SYSTEMMEM, &pIntermediateHostTexture, nullptr ); } @@ -5590,14 +5586,14 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText // Now create our intermediate texture for UpdateTexture, but not for render targets or depth stencils if (hRet == D3D_OK && (D3DUsage & D3DUSAGE_RENDERTARGET) == 0 && (D3DUsage & D3DUSAGE_DEPTHSTENCIL) == 0) { hRet = g_pD3DDevice->CreateVolumeTexture(dwWidth, dwHeight, dwDepth, - dwMipMapLevels, 0, PCFormat, XTL::D3DPOOL_SYSTEMMEM, &pIntermediateHostVolumeTexture, + dwMipMapLevels, 0, PCFormat, D3DPOOL_SYSTEMMEM, &pIntermediateHostVolumeTexture, nullptr ); } if (hRet != D3D_OK) { CxbxKrnlCleanup("CreateVolumeTexture Failed!\n\nError: %s\nDesc: %s", - XTL::DXGetErrorString(hRet), XTL::DXGetErrorDescription(hRet)); + DXGetErrorString(hRet), DXGetErrorDescription(hRet)); } SetHostVolumeTexture(pResource, pNewHostVolumeTexture); @@ -5619,7 +5615,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText // Now create our intermediate texture for UpdateTexture, but not for render targets or depth stencils if (hRet == D3D_OK && (D3DUsage & D3DUSAGE_RENDERTARGET) == 0 && (D3DUsage & D3DUSAGE_DEPTHSTENCIL) == 0) { hRet = g_pD3DDevice->CreateCubeTexture(dwWidth, dwMipMapLevels, 0, - PCFormat, XTL::D3DPOOL_SYSTEMMEM, &pIntermediateHostCubeTexture, + PCFormat, D3DPOOL_SYSTEMMEM, &pIntermediateHostCubeTexture, nullptr ); } @@ -5651,8 +5647,8 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText DWORD dwCubeFaceOffset = 0; DWORD dwCubeFaceSize = 0; - XTL::D3DCUBEMAP_FACES last_face = (bCubemap) ? XTL::D3DCUBEMAP_FACE_NEGATIVE_Z : XTL::D3DCUBEMAP_FACE_POSITIVE_X; - for (int face = XTL::D3DCUBEMAP_FACE_POSITIVE_X; face <= last_face; face++) { + D3DCUBEMAP_FACES last_face = (bCubemap) ? D3DCUBEMAP_FACE_NEGATIVE_Z : D3DCUBEMAP_FACE_POSITIVE_X; + for (int face = D3DCUBEMAP_FACE_POSITIVE_X; face <= last_face; face++) { // As we iterate through mipmap levels, we'll adjust the source resource offset DWORD dwMipOffset = 0; DWORD dwMipWidth = dwWidth; @@ -5670,8 +5666,8 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText } // Lock the host resource - XTL::D3DLOCKED_RECT LockedRect = {}; - XTL::D3DLOCKED_BOX LockedBox = {}; + D3DLOCKED_RECT LockedRect = {}; + D3DLOCKED_BOX LockedBox = {}; switch (XboxResourceType) { case XTL::X_D3DRTYPE_SURFACE: @@ -5687,7 +5683,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText hRet = pIntermediateHostVolumeTexture->LockBox(mipmap_level, &LockedBox, nullptr, D3DLockFlags); break; case XTL::X_D3DRTYPE_CUBETEXTURE: - hRet = pIntermediateHostCubeTexture->LockRect((XTL::D3DCUBEMAP_FACES)face, mipmap_level, &LockedRect, nullptr, D3DLockFlags); + hRet = pIntermediateHostCubeTexture->LockRect((D3DCUBEMAP_FACES)face, mipmap_level, &LockedRect, nullptr, D3DLockFlags); break; default: assert(false); @@ -5786,7 +5782,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText hRet = pIntermediateHostVolumeTexture->UnlockBox(mipmap_level); break; case XTL::X_D3DRTYPE_CUBETEXTURE: - hRet = pIntermediateHostCubeTexture->UnlockRect((XTL::D3DCUBEMAP_FACES)face, mipmap_level); + hRet = pIntermediateHostCubeTexture->UnlockRect((D3DCUBEMAP_FACES)face, mipmap_level); break; default: assert(false); @@ -5796,7 +5792,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText EmuLog(LOG_LEVEL::WARNING, "Unlocking host %s failed!", ResourceTypeName); } - if (face == XTL::D3DCUBEMAP_FACE_POSITIVE_X) { + if (face == D3DCUBEMAP_FACE_POSITIVE_X) { dwCubeFaceSize += dwDepth * dwMipSize; } @@ -5816,7 +5812,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText } } // for mipmap levels - if (face == XTL::D3DCUBEMAP_FACE_POSITIVE_X) { + if (face == D3DCUBEMAP_FACE_POSITIVE_X) { dwCubeFaceSize = ROUND_UP(dwCubeFaceSize, X_D3DTEXTURE_CUBEFACE_ALIGNMENT); } @@ -5863,7 +5859,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText case XTL::X_D3DRTYPE_SURFACE: { static int dwDumpSurface = 0; sprintf(szFilePath, _DEBUG_DUMP_TEXTURE_REGISTER "%.03d-Surface%.03d.dds", X_Format, dwDumpSurface++); - D3DXSaveSurfaceToFileA(szFilePath, XTL::D3DXIFF_DDS, pNewHostSurface, NULL, NULL); + D3DXSaveSurfaceToFileA(szFilePath, D3DXIFF_DDS, pNewHostSurface, NULL, NULL); break; } case XTL::X_D3DRTYPE_VOLUME: { @@ -5873,7 +5869,7 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText case XTL::X_D3DRTYPE_TEXTURE: { static int dwDumpTexure = 0; sprintf(szFilePath, _DEBUG_DUMP_TEXTURE_REGISTER "%.03d-Texture%.03d.dds", X_Format, dwDumpTexure++); - D3DXSaveTextureToFileA(szFilePath, XTL::D3DXIFF_DDS, pNewHostTexture, NULL); + D3DXSaveTextureToFileA(szFilePath, D3DXIFF_DDS, pNewHostTexture, NULL); break; } case XTL::X_D3DRTYPE_VOLUMETEXTURE: { @@ -5882,11 +5878,11 @@ void CreateHostResource(XTL::X_D3DResource *pResource, DWORD D3DUsage, int iText } case XTL::X_D3DRTYPE_CUBETEXTURE: { static int dwDumpCubeTexture = 0; - for (unsigned int face = XTL::D3DCUBEMAP_FACE_POSITIVE_X; face <= XTL::D3DCUBEMAP_FACE_NEGATIVE_Z; face++) { - XTL::IDirect3DSurface8 *pSurface; - if (D3D_OK == pNewHostCubeTexture->GetCubeMapSurface((XTL::D3DCUBEMAP_FACES)face, 0, &pSurface)) { + for (unsigned int face = D3DCUBEMAP_FACE_POSITIVE_X; face <= D3DCUBEMAP_FACE_NEGATIVE_Z; face++) { + IDirect3DSurface8 *pSurface; + if (D3D_OK == pNewHostCubeTexture->GetCubeMapSurface((D3DCUBEMAP_FACES)face, 0, &pSurface)) { sprintf(szFilePath, _DEBUG_DUMP_TEXTURE_REGISTER "%.03d-CubeTexure%.03d-%d.dds", X_Format, dwDumpCubeTexture, face); - D3DXSaveSurfaceToFileA(szFilePath, XTL::D3DXIFF_DDS, pSurface, NULL, NULL); + D3DXSaveSurfaceToFileA(szFilePath, D3DXIFF_DDS, pSurface, NULL, NULL); pSurface->Release(); } } @@ -6026,7 +6022,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_BlockUntilVerticalBlank)() // ****************************************************************** VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVerticalBlankCallback) ( - D3DVBLANKCALLBACK pCallback + X_D3DVBLANKCALLBACK pCallback ) { LOG_FUNC_ONE_ARG(pCallback); @@ -7318,7 +7314,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexShader) HRESULT hRet = D3D_OK; - g_CurrentXboxVertexShaderHandle = Handle; + g_Xbox_VertexShader_Handle = Handle; if (VshHandleIsVertexShader(Handle)) { CxbxVertexShader *pCxbxVertexShader = GetCxbxVertexShader(Handle); @@ -7441,8 +7437,8 @@ void CxbxAssureQuadListD3DIndexBuffer(UINT NrOfQuadVertices) hRet = g_pD3DDevice->CreateIndexBuffer( uiIndexBufferSize, D3DUSAGE_WRITEONLY, - XTL::D3DFMT_INDEX16, - XTL::D3DPOOL_MANAGED, + D3DFMT_INDEX16, + D3DPOOL_MANAGED, &pQuadToTriangleD3DIndexBuffer, nullptr // pSharedHandle ); @@ -7485,8 +7481,8 @@ void CxbxDrawIndexedClosingLine(INDEX16 LowIndex, INDEX16 HighIndex) hRet = g_pD3DDevice->CreateIndexBuffer( uiIndexBufferSize, D3DUSAGE_WRITEONLY, - XTL::D3DFMT_INDEX16, - XTL::D3DPOOL_DEFAULT, + D3DFMT_INDEX16, + D3DPOOL_DEFAULT, &pClosingLineLoopIndexBuffer, nullptr // pSharedHandle ); @@ -7508,7 +7504,7 @@ void CxbxDrawIndexedClosingLine(INDEX16 LowIndex, INDEX16 HighIndex) DEBUG_D3DRESULT(hRet, "g_pD3DDevice->SetIndices"); hRet = g_pD3DDevice->DrawIndexedPrimitive( - XTL::D3DPT_LINELIST, + D3DPT_LINELIST, g_XboxBaseVertexIndex, LowIndex, // minIndex (HighIndex - LowIndex) + 1, // NumVertexIndices @@ -7528,12 +7524,12 @@ void CxbxDrawIndexedClosingLineUP(INDEX16 LowIndex, INDEX16 HighIndex, void *pHo INDEX16 CxbxClosingLineIndices[2] = { LowIndex, HighIndex }; HRESULT hRet = g_pD3DDevice->DrawIndexedPrimitiveUP( - XTL::D3DPT_LINELIST, + D3DPT_LINELIST, LowIndex, // MinVertexIndex (HighIndex - LowIndex) + 1, // NumVertexIndices, 1, // PrimitiveCount, CxbxClosingLineIndices, // pIndexData - XTL::D3DFMT_INDEX16, // IndexDataFormat + D3DFMT_INDEX16, // IndexDataFormat pHostVertexStreamZeroData, uiHostVertexStreamZeroStride ); @@ -7571,7 +7567,7 @@ void CxbxDrawIndexed(CxbxDrawContext &DrawContext) // Emulate a quad by drawing each as a fan of 2 triangles HRESULT hRet = g_pD3DDevice->DrawIndexedPrimitive( - XTL::D3DPT_TRIANGLEFAN, + D3DPT_TRIANGLEFAN, DrawContext.dwIndexBase, LowIndex, // minIndex (HighIndex - LowIndex) + 1, // NumVertices @@ -7649,12 +7645,12 @@ void CxbxDrawPrimitiveUP(CxbxDrawContext &DrawContext) INDEX16 HighIndex = (INDEX16)(DrawContext.dwVertexCount - 1); HRESULT hRet = g_pD3DDevice->DrawIndexedPrimitiveUP( - XTL::D3DPT_TRIANGLELIST, // Draw indexed triangles instead of quads + D3DPT_TRIANGLELIST, // Draw indexed triangles instead of quads LowIndex, // MinVertexIndex (HighIndex - LowIndex) + 1, // NumVertexIndices PrimitiveCount, pIndexData, - XTL::D3DFMT_INDEX16, // IndexDataFormat + D3DFMT_INDEX16, // IndexDataFormat DrawContext.pHostVertexStreamZeroData, DrawContext.uiHostVertexStreamZeroStride ); @@ -7695,14 +7691,14 @@ void EmuUpdateActiveTextureStages() for (int i = 0; i < XTL::X_D3DTS_STAGECOUNT; i++) { - XTL::X_D3DBaseTexture *pBaseTexture = XTL::EmuD3DActiveTexture[i]; + XTL::X_D3DBaseTexture *pBaseTexture = EmuD3DActiveTexture[i]; if (pBaseTexture == nullptr) { HRESULT hRet = g_pD3DDevice->SetTexture(i, NULL); DEBUG_D3DRESULT(hRet, "g_pD3DDevice->SetTexture"); continue; } - XTL::IDirect3DTexture *pHostTexture = GetHostTexture(pBaseTexture, i); + IDirect3DTexture *pHostTexture = GetHostTexture(pBaseTexture, i); if (pHostTexture != nullptr) { HRESULT hRet = g_pD3DDevice->SetTexture(i, pHostTexture); @@ -7853,7 +7849,6 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_DrawVertices) DrawContext.XboxPrimitiveType = PrimitiveType; DrawContext.dwVertexCount = VertexCount; DrawContext.dwStartVertex = StartVertex; - DrawContext.XboxVertexShaderHandle = g_CurrentXboxVertexShaderHandle; VertexBufferConverter.Apply(&DrawContext); if (DrawContext.XboxPrimitiveType == X_D3DPT_QUADLIST) { @@ -7954,7 +7949,6 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_DrawVerticesUP) DrawContext.dwVertexCount = VertexCount; DrawContext.pXboxVertexStreamZeroData = pVertexStreamZeroData; DrawContext.uiXboxVertexStreamZeroStride = VertexStreamZeroStride; - DrawContext.XboxVertexShaderHandle = g_CurrentXboxVertexShaderHandle; CxbxDrawPrimitiveUP(DrawContext); } @@ -8004,7 +7998,6 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_DrawIndexedVertices) DrawContext.XboxPrimitiveType = PrimitiveType; DrawContext.dwVertexCount = VertexCount; - DrawContext.XboxVertexShaderHandle = g_CurrentXboxVertexShaderHandle; DrawContext.dwIndexBase = g_XboxBaseVertexIndex; // Used by GetVerticesInBuffer DrawContext.pIndexData = pIndexData; // Used by GetVerticesInBuffer @@ -8060,7 +8053,6 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_DrawIndexedVerticesUP) DrawContext.dwVertexCount = VertexCount; DrawContext.pXboxVertexStreamZeroData = pVertexStreamZeroData; DrawContext.uiXboxVertexStreamZeroStride = VertexStreamZeroStride; - DrawContext.XboxVertexShaderHandle = g_CurrentXboxVertexShaderHandle; // Don't set DrawContext.pIndexData = (INDEX16*)pIndexData; // Used by GetVerticesInBuffer VertexBufferConverter.Apply(&DrawContext); @@ -8372,7 +8364,7 @@ VOID WINAPI XTL::EMUPATCH(D3DPalette_Lock) // ****************************************************************** // * patch: IDirect3DPalette8_Lock2 // ****************************************************************** -XTL::D3DCOLOR * WINAPI XTL::EMUPATCH(D3DPalette_Lock2) +D3DCOLOR * WINAPI XTL::EMUPATCH(D3DPalette_Lock2) ( X_D3DPalette *pThis, DWORD Flags @@ -8383,8 +8375,8 @@ XTL::D3DCOLOR * WINAPI XTL::EMUPATCH(D3DPalette_Lock2) LOG_FUNC_ARG(Flags) LOG_FUNC_END; - XB_trampoline(XTL::D3DCOLOR*, WINAPI, D3DPalette_Lock2, (X_D3DPalette*, DWORD)); - XTL::D3DCOLOR* pData = XB_D3DPalette_Lock2(pThis, Flags); + XB_trampoline(D3DCOLOR*, WINAPI, D3DPalette_Lock2, (X_D3DPalette*, DWORD)); + 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++) { @@ -8569,7 +8561,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_GetVertexShader) if(pHandle) { - (*pHandle) = g_CurrentXboxVertexShaderHandle; + (*pHandle) = g_Xbox_VertexShader_Handle; } } @@ -8711,7 +8703,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_LoadVertexShaderProgram) // D3DDevice_LoadVertexShaderProgram splits the given function buffer into batch-wise pushes to the NV2A - load_shader_program_key_t shaderCacheKey = ((load_shader_program_key_t)g_CurrentXboxVertexShaderHandle << 32) | (DWORD)pFunction; + load_shader_program_key_t shaderCacheKey = ((load_shader_program_key_t)g_Xbox_VertexShader_Handle << 32) | (DWORD)pFunction; // If the shader key was located in the cache, use the cached shader // TODO: When do we clear the cache? In this approach, shaders are @@ -8725,8 +8717,8 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_LoadVertexShaderProgram) DWORD *pXboxVertexDeclaration = nullptr; - if (VshHandleIsVertexShader(g_CurrentXboxVertexShaderHandle)) { - CxbxVertexShader *pCxbxVertexShader = GetCxbxVertexShader(g_CurrentXboxVertexShaderHandle); + if (VshHandleIsVertexShader(g_Xbox_VertexShader_Handle)) { + CxbxVertexShader *pCxbxVertexShader = GetCxbxVertexShader(g_Xbox_VertexShader_Handle); // If we failed to fetch an active pixel shader, log and do nothing if (pCxbxVertexShader == nullptr) { @@ -8743,14 +8735,14 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_LoadVertexShaderProgram) // Define a large enough definition to contain all possible FVF types // 20 is maximum possible size - XTL::DWORD CxbxXboxVertexDeclaration[20] = { 0 }; + DWORD CxbxXboxVertexDeclaration[20] = { 0 }; int index = 0; // Write the Stream Number (always 0 for FVF) CxbxXboxVertexDeclaration[index++] = X_D3DVSD_STREAM(0); // Write Position - DWORD position = (g_CurrentXboxVertexShaderHandle & X_D3DFVF_POSITION_MASK); + DWORD position = (g_Xbox_VertexShader_Handle & X_D3DFVF_POSITION_MASK); if (position == X_D3DFVF_XYZRHW) { CxbxXboxVertexDeclaration[index++] = X_D3DVSD_REG(X_D3DVSDE_POSITION, X_D3DVSDT_FLOAT4); } else { @@ -8772,32 +8764,32 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_LoadVertexShaderProgram) } // Write Normal, Diffuse, and Specular - if (g_CurrentXboxVertexShaderHandle & X_D3DFVF_NORMAL) { + if (g_Xbox_VertexShader_Handle & X_D3DFVF_NORMAL) { CxbxXboxVertexDeclaration[index++] = X_D3DVSD_REG(X_D3DVSDE_NORMAL, X_D3DVSDT_FLOAT3); } - if (g_CurrentXboxVertexShaderHandle & X_D3DFVF_DIFFUSE) { + if (g_Xbox_VertexShader_Handle & X_D3DFVF_DIFFUSE) { CxbxXboxVertexDeclaration[index++] = X_D3DVSD_REG(X_D3DVSDE_DIFFUSE, X_D3DVSDT_D3DCOLOR); } - if (g_CurrentXboxVertexShaderHandle & X_D3DFVF_SPECULAR) { + if (g_Xbox_VertexShader_Handle & X_D3DFVF_SPECULAR) { CxbxXboxVertexDeclaration[index++] = X_D3DVSD_REG(X_D3DVSDE_SPECULAR, X_D3DVSDT_D3DCOLOR); } // Write Texture Coordinates - int textureCount = (g_CurrentXboxVertexShaderHandle & X_D3DFVF_TEXCOUNT_MASK) >> X_D3DFVF_TEXCOUNT_SHIFT; + int textureCount = (g_Xbox_VertexShader_Handle & X_D3DFVF_TEXCOUNT_MASK) >> X_D3DFVF_TEXCOUNT_SHIFT; assert(textureCount <= 4); // Safeguard, since the X_D3DFVF_TEXCOUNT bitfield could contain invalid values (5 up to 15) for (int i = 0; i < textureCount; i++) { int numberOfCoordinates = 0; - if ((g_CurrentXboxVertexShaderHandle & X_D3DFVF_TEXCOORDSIZE1(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE1(i)) { + if ((g_Xbox_VertexShader_Handle & X_D3DFVF_TEXCOORDSIZE1(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE1(i)) { numberOfCoordinates = X_D3DVSDT_FLOAT1; } - if ((g_CurrentXboxVertexShaderHandle & X_D3DFVF_TEXCOORDSIZE2(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE2(i)) { + if ((g_Xbox_VertexShader_Handle & X_D3DFVF_TEXCOORDSIZE2(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE2(i)) { numberOfCoordinates = X_D3DVSDT_FLOAT2; } - if ((g_CurrentXboxVertexShaderHandle & X_D3DFVF_TEXCOORDSIZE3(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE3(i)) { + if ((g_Xbox_VertexShader_Handle & X_D3DFVF_TEXCOORDSIZE3(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE3(i)) { numberOfCoordinates = X_D3DVSDT_FLOAT3; } - if ((g_CurrentXboxVertexShaderHandle & X_D3DFVF_TEXCOORDSIZE4(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE4(i)) { + if ((g_Xbox_VertexShader_Handle & X_D3DFVF_TEXCOORDSIZE4(i)) == (DWORD)X_D3DFVF_TEXCOORDSIZE4(i)) { numberOfCoordinates = X_D3DVSDT_FLOAT4; } @@ -9104,7 +9096,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_InsertCallback) LOG_FUNC_END; // TODO: Implement - g_pCallback = (D3DCALLBACK) pCallback; + g_pCallback = pCallback; g_CallbackType = Type; g_CallbackParam = Context; @@ -9261,7 +9253,7 @@ void WINAPI XTL::EMUPATCH(D3DDevice_SetStipple)( DWORD* pPattern ) // ****************************************************************** void WINAPI XTL::EMUPATCH(D3DDevice_SetSwapCallback) ( - D3DSWAPCALLBACK pCallback + X_D3DSWAPCALLBACK pCallback ) { LOG_FUNC_ONE_ARG(pCallback); @@ -9457,7 +9449,7 @@ bool DestroyResource_Common(XTL::X_D3DResource* pResource) } for (int i = 0; i < XTL::X_D3DTS_STAGECOUNT; i++) { - if (pResource == XTL::EmuD3DActiveTexture[i]) { + if (pResource == EmuD3DActiveTexture[i]) { LOG_TEST_CASE("Skipping Release of active Xbox Texture"); return false; } diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.h b/src/core/hle/D3D8/Direct3D9/Direct3D9.h index f5c367d77..5d4aabfe4 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.h +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.h @@ -24,12 +24,10 @@ // ****************************************************************** #ifndef DIRECT3D9_H #define DIRECT3D9_H - -#include "../XbD3D8Types.h" -#include "core\kernel\init\CxbxKrnl.h" -#include "common\xbe\Xbe.h" -#include "core\kernel\support\Emu.h" - + +#include "core\hle\XAPI\Xapi.h" // For EMUPATCH +#include "core\hle\D3D8\XbD3D8Types.h" + #define DIRECTDRAW_VERSION 0x0700 #include @@ -60,12 +58,20 @@ extern VOID EmuD3DInit(); // cleanup direct3d extern VOID EmuD3DCleanup(); + +extern IDirect3DDevice *g_pD3DDevice; + +extern DWORD g_Xbox_VertexShader_Handle; + +extern XTL::X_PixelShader *g_D3DActivePixelShader; // EmuD3DTileCache (8 tiles maximum) -extern X_D3DTILE EmuD3DTileCache[0x08]; +extern XTL::X_D3DTILE EmuD3DTileCache[0x08]; // EmuD3DActiveTexture -extern X_D3DBaseTexture *EmuD3DActiveTexture[XTL::X_D3DTS_STAGECOUNT]; +extern XTL::X_D3DBaseTexture *EmuD3DActiveTexture[XTL::X_D3DTS_STAGECOUNT]; + +namespace XTL { // ****************************************************************** // * patch: Direct3D_CreateDevice @@ -983,7 +989,7 @@ VOID WINAPI EMUPATCH(D3DDevice_BlockUntilVerticalBlank)(); // ****************************************************************** VOID WINAPI EMUPATCH(D3DDevice_SetVerticalBlankCallback) ( - D3DVBLANKCALLBACK pCallback + X_D3DVBLANKCALLBACK pCallback ); // ****************************************************************** @@ -1891,7 +1897,7 @@ void WINAPI EMUPATCH(D3DDevice_SetStipple)( DWORD* pPattern ); // ****************************************************************** void WINAPI EMUPATCH(D3DDevice_SetSwapCallback) ( - D3DSWAPCALLBACK pCallback + X_D3DSWAPCALLBACK pCallback ); // ****************************************************************** @@ -2119,5 +2125,7 @@ VOID WINAPI EMUPATCH(D3DDevice_GetMaterial) ( X_D3DMATERIAL8* pMaterial ); + +} // end of namespace XTL #endif diff --git a/src/core/hle/D3D8/Direct3D9/WalkIndexBuffer.h b/src/core/hle/D3D8/Direct3D9/WalkIndexBuffer.h index e3bd0cf2e..02623eaa9 100644 --- a/src/core/hle/D3D8/Direct3D9/WalkIndexBuffer.h +++ b/src/core/hle/D3D8/Direct3D9/WalkIndexBuffer.h @@ -2,7 +2,6 @@ #define WALKINDEXBUFFER_H #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuXTL.h" extern void(*WalkIndexBuffer) ( diff --git a/src/core/hle/D3D8/XbConvert.cpp b/src/core/hle/D3D8/XbConvert.cpp index 8c377190d..520023614 100644 --- a/src/core/hle/D3D8/XbConvert.cpp +++ b/src/core/hle/D3D8/XbConvert.cpp @@ -29,7 +29,6 @@ #define LOG_PREFIX CXBXR_MODULE::D3DCVT #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuXTL.h" #include "XbConvert.h" // About format color components: @@ -138,7 +137,7 @@ void X1R5G5B5ToARGBRow_C(const uint8_t* src_x1r5g5b5, uint8_t* dst_argb, } void A8R8G8B8ToARGBRow_C(const uint8_t* src_a8r8g8b8, uint8_t* dst_argb, int width) { - memcpy(dst_argb, src_a8r8g8b8, width * sizeof(XTL::D3DCOLOR)); // Cxbx pass-through + memcpy(dst_argb, src_a8r8g8b8, width * sizeof(D3DCOLOR)); // Cxbx pass-through } void X8R8G8B8ToARGBRow_C(const uint8_t* src_x8r8g8b8, uint8_t* dst_argb, int width) { @@ -853,7 +852,7 @@ typedef struct _FormatInfo { uint8_t bits_per_pixel; _FormatStorage stored; _ComponentEncoding components; - XTL::D3DFORMAT pc; + D3DFORMAT pc; _FormatUsage usage; char *warning; } FormatInfo; @@ -869,76 +868,76 @@ static const FormatInfo FormatInfos[] = { // in the warning field, so EmuXBFormatRequiresConversionToARGB can return a conversion // to ARGB is needed (which is implemented in EMUPATCH(D3DResource_Register). - /* 0x00 X_D3DFMT_L8 */ { 8, Swzzld, ______L8, XTL::D3DFMT_L8 }, - /* 0x01 X_D3DFMT_AL8 */ { 8, Swzzld, _____AL8, XTL::D3DFMT_L8 , Texture, "X_D3DFMT_AL8 -> D3DFMT_L8" }, - /* 0x02 X_D3DFMT_A1R5G5B5 */ { 16, Swzzld, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 }, - /* 0x03 X_D3DFMT_X1R5G5B5 */ { 16, Swzzld, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 , RenderTarget }, - /* 0x04 X_D3DFMT_A4R4G4B4 */ { 16, Swzzld, A4R4G4B4, XTL::D3DFMT_A4R4G4B4 }, - /* 0x05 X_D3DFMT_R5G6B5 */ { 16, Swzzld, __R5G6B5, XTL::D3DFMT_R5G6B5 , RenderTarget }, - /* 0x06 X_D3DFMT_A8R8G8B8 */ { 32, Swzzld, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 , RenderTarget }, - /* 0x07 X_D3DFMT_X8R8G8B8 */ { 32, Swzzld, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 , RenderTarget }, // Alias : X_D3DFMT_X8L8V8U8 + /* 0x00 X_D3DFMT_L8 */ { 8, Swzzld, ______L8, D3DFMT_L8 }, + /* 0x01 X_D3DFMT_AL8 */ { 8, Swzzld, _____AL8, D3DFMT_L8 , Texture, "X_D3DFMT_AL8 -> D3DFMT_L8" }, + /* 0x02 X_D3DFMT_A1R5G5B5 */ { 16, Swzzld, A1R5G5B5, D3DFMT_A1R5G5B5 }, + /* 0x03 X_D3DFMT_X1R5G5B5 */ { 16, Swzzld, X1R5G5B5, D3DFMT_X1R5G5B5 , RenderTarget }, + /* 0x04 X_D3DFMT_A4R4G4B4 */ { 16, Swzzld, A4R4G4B4, D3DFMT_A4R4G4B4 }, + /* 0x05 X_D3DFMT_R5G6B5 */ { 16, Swzzld, __R5G6B5, D3DFMT_R5G6B5 , RenderTarget }, + /* 0x06 X_D3DFMT_A8R8G8B8 */ { 32, Swzzld, A8R8G8B8, D3DFMT_A8R8G8B8 , RenderTarget }, + /* 0x07 X_D3DFMT_X8R8G8B8 */ { 32, Swzzld, X8R8G8B8, D3DFMT_X8R8G8B8 , RenderTarget }, // Alias : X_D3DFMT_X8L8V8U8 /* 0x08 undefined */ {}, /* 0x09 undefined */ {}, /* 0x0A undefined */ {}, - /* 0x0B X_D3DFMT_P8 */ { 8, Swzzld, ______P8, XTL::D3DFMT_P8 , Texture, "X_D3DFMT_P8 -> D3DFMT_L8" }, // 8-bit palletized - /* 0x0C X_D3DFMT_DXT1 */ { 4, Cmprsd, ____DXT1, XTL::D3DFMT_DXT1 }, // opaque/one-bit alpha // NOTE : DXT1 is half byte per pixel, so divide Size and Pitch calculations by two! + /* 0x0B X_D3DFMT_P8 */ { 8, Swzzld, ______P8, D3DFMT_P8 , Texture, "X_D3DFMT_P8 -> D3DFMT_L8" }, // 8-bit palletized + /* 0x0C X_D3DFMT_DXT1 */ { 4, Cmprsd, ____DXT1, D3DFMT_DXT1 }, // opaque/one-bit alpha // NOTE : DXT1 is half byte per pixel, so divide Size and Pitch calculations by two! /* 0x0D undefined */ {}, - /* 0x0E X_D3DFMT_DXT3 */ { 8, Cmprsd, ____DXT3, XTL::D3DFMT_DXT3 }, // Alias : X_D3DFMT_DXT2 // linear alpha - /* 0x0F X_D3DFMT_DXT5 */ { 8, Cmprsd, ____DXT5, XTL::D3DFMT_DXT5 }, // Alias : X_D3DFMT_DXT4 // interpolated alpha - /* 0x10 X_D3DFMT_LIN_A1R5G5B5 */ { 16, Linear, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 }, - /* 0x11 X_D3DFMT_LIN_R5G6B5 */ { 16, Linear, __R5G6B5, XTL::D3DFMT_R5G6B5 , RenderTarget }, - /* 0x12 X_D3DFMT_LIN_A8R8G8B8 */ { 32, Linear, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 , RenderTarget }, - /* 0x13 X_D3DFMT_LIN_L8 */ { 8, Linear, ______L8, XTL::D3DFMT_L8 , RenderTarget }, + /* 0x0E X_D3DFMT_DXT3 */ { 8, Cmprsd, ____DXT3, D3DFMT_DXT3 }, // Alias : X_D3DFMT_DXT2 // linear alpha + /* 0x0F X_D3DFMT_DXT5 */ { 8, Cmprsd, ____DXT5, D3DFMT_DXT5 }, // Alias : X_D3DFMT_DXT4 // interpolated alpha + /* 0x10 X_D3DFMT_LIN_A1R5G5B5 */ { 16, Linear, A1R5G5B5, D3DFMT_A1R5G5B5 }, + /* 0x11 X_D3DFMT_LIN_R5G6B5 */ { 16, Linear, __R5G6B5, D3DFMT_R5G6B5 , RenderTarget }, + /* 0x12 X_D3DFMT_LIN_A8R8G8B8 */ { 32, Linear, A8R8G8B8, D3DFMT_A8R8G8B8 , RenderTarget }, + /* 0x13 X_D3DFMT_LIN_L8 */ { 8, Linear, ______L8, D3DFMT_L8 , RenderTarget }, /* 0x14 undefined */ {}, /* 0x15 undefined */ {}, - /* 0x16 X_D3DFMT_LIN_R8B8 */ { 16, Linear, ____R8B8, XTL::D3DFMT_R5G6B5 , Texture, "X_D3DFMT_LIN_R8B8 -> D3DFMT_R5G6B5" }, - /* 0x17 X_D3DFMT_LIN_G8B8 */ { 16, Linear, ____G8B8, XTL::D3DFMT_R5G6B5 , RenderTarget, "X_D3DFMT_LIN_G8B8 -> D3DFMT_R5G6B5" }, // Alias : X_D3DFMT_LIN_V8U8 + /* 0x16 X_D3DFMT_LIN_R8B8 */ { 16, Linear, ____R8B8, D3DFMT_R5G6B5 , Texture, "X_D3DFMT_LIN_R8B8 -> D3DFMT_R5G6B5" }, + /* 0x17 X_D3DFMT_LIN_G8B8 */ { 16, Linear, ____G8B8, D3DFMT_R5G6B5 , RenderTarget, "X_D3DFMT_LIN_G8B8 -> D3DFMT_R5G6B5" }, // Alias : X_D3DFMT_LIN_V8U8 /* 0x18 undefined */ {}, - /* 0x19 X_D3DFMT_A8 */ { 8, Swzzld, ______A8, XTL::D3DFMT_A8 }, - /* 0x1A X_D3DFMT_A8L8 */ { 16, Swzzld, ____A8L8, XTL::D3DFMT_A8L8 }, - /* 0x1B X_D3DFMT_LIN_AL8 */ { 8, Linear, _____AL8, XTL::D3DFMT_L8 , Texture, "X_D3DFMT_LIN_AL8 -> D3DFMT_L8" }, - /* 0x1C X_D3DFMT_LIN_X1R5G5B5 */ { 16, Linear, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 , RenderTarget }, - /* 0x1D X_D3DFMT_LIN_A4R4G4B4 */ { 16, Linear, A4R4G4B4, XTL::D3DFMT_A4R4G4B4 }, - /* 0x1E X_D3DFMT_LIN_X8R8G8B8 */ { 32, Linear, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 , RenderTarget }, // Alias : X_D3DFMT_LIN_X8L8V8U8 - /* 0x1F X_D3DFMT_LIN_A8 */ { 8, Linear, ______A8, XTL::D3DFMT_A8 }, - /* 0x20 X_D3DFMT_LIN_A8L8 */ { 16, Linear, ____A8L8, XTL::D3DFMT_A8L8 }, + /* 0x19 X_D3DFMT_A8 */ { 8, Swzzld, ______A8, D3DFMT_A8 }, + /* 0x1A X_D3DFMT_A8L8 */ { 16, Swzzld, ____A8L8, D3DFMT_A8L8 }, + /* 0x1B X_D3DFMT_LIN_AL8 */ { 8, Linear, _____AL8, D3DFMT_L8 , Texture, "X_D3DFMT_LIN_AL8 -> D3DFMT_L8" }, + /* 0x1C X_D3DFMT_LIN_X1R5G5B5 */ { 16, Linear, X1R5G5B5, D3DFMT_X1R5G5B5 , RenderTarget }, + /* 0x1D X_D3DFMT_LIN_A4R4G4B4 */ { 16, Linear, A4R4G4B4, D3DFMT_A4R4G4B4 }, + /* 0x1E X_D3DFMT_LIN_X8R8G8B8 */ { 32, Linear, X8R8G8B8, D3DFMT_X8R8G8B8 , RenderTarget }, // Alias : X_D3DFMT_LIN_X8L8V8U8 + /* 0x1F X_D3DFMT_LIN_A8 */ { 8, Linear, ______A8, D3DFMT_A8 }, + /* 0x20 X_D3DFMT_LIN_A8L8 */ { 16, Linear, ____A8L8, D3DFMT_A8L8 }, /* 0x21 undefined */ {}, /* 0x22 undefined */ {}, /* 0x23 undefined */ {}, - /* 0x24 X_D3DFMT_YUY2 */ { 16, Linear, ____YUY2, XTL::D3DFMT_YUY2 }, - /* 0x25 X_D3DFMT_UYVY */ { 16, Linear, ____UYVY, XTL::D3DFMT_UYVY }, + /* 0x24 X_D3DFMT_YUY2 */ { 16, Linear, ____YUY2, D3DFMT_YUY2 }, + /* 0x25 X_D3DFMT_UYVY */ { 16, Linear, ____UYVY, D3DFMT_UYVY }, /* 0x26 undefined */ {}, - /* 0x27 X_D3DFMT_L6V5U5 */ { 16, Swzzld, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // Alias : X_D3DFMT_R6G5B5 // XQEMU NOTE : This might be signed - /* 0x28 X_D3DFMT_V8U8 */ { 16, Swzzld, ____G8B8, XTL::D3DFMT_V8U8 }, // Alias : X_D3DFMT_G8B8 // XQEMU NOTE : This might be signed - /* 0x29 X_D3DFMT_R8B8 */ { 16, Swzzld, ____R8B8, XTL::D3DFMT_R5G6B5 , Texture, "X_D3DFMT_R8B8 -> D3DFMT_R5G6B5" }, // XQEMU NOTE : This might be signed - /* 0x2A X_D3DFMT_D24S8 */ { 32, Swzzld, NoCmpnts, XTL::D3DFMT_D24S8 , DepthBuffer }, - /* 0x2B X_D3DFMT_F24S8 */ { 32, Swzzld, NoCmpnts, XTL::D3DFMT_D24FS8 , DepthBuffer }, - /* 0x2C X_D3DFMT_D16 */ { 16, Swzzld, NoCmpnts, XTL::D3DFMT_D16 , DepthBuffer }, // Note : X_D3DFMT_D16 is always lockable on Xbox, D3DFMT_D16 on host is not, but D3DFMT_D16_LOCKABLE often fails SetRenderTarget. - /* 0x2D X_D3DFMT_F16 */ { 16, Swzzld, NoCmpnts, XTL::D3DFMT_D16 , DepthBuffer, "X_D3DFMT_F16 -> D3DFMT_D16" }, // HACK : PC doesn't have D3DFMT_F16 (Float vs Int) // TODO : Use D3DFMT_R16F? - /* 0x2E X_D3DFMT_LIN_D24S8 */ { 32, Linear, NoCmpnts, XTL::D3DFMT_D24S8 , DepthBuffer }, - /* 0x2F X_D3DFMT_LIN_F24S8 */ { 32, Linear, NoCmpnts, XTL::D3DFMT_D24FS8 , DepthBuffer }, - /* 0x30 X_D3DFMT_LIN_D16 */ { 16, Linear, NoCmpnts, XTL::D3DFMT_D16 , DepthBuffer }, // Note : X_D3DFMT_D16 is always lockable on Xbox, D3DFMT_D16 on host is not, but D3DFMT_D16_LOCKABLE often fails SetRenderTarget. - /* 0x31 X_D3DFMT_LIN_F16 */ { 16, Linear, NoCmpnts, XTL::D3DFMT_D16 , DepthBuffer, "X_D3DFMT_LIN_F16 -> D3DFMT_D16" }, // HACK : PC doesn't have D3DFMT_F16 (Float vs Int) // TODO : Use D3DFMT_R16F? - /* 0x32 X_D3DFMT_L16 */ { 16, Swzzld, _____L16, XTL::D3DFMT_L16 }, - /* 0x33 X_D3DFMT_V16U16 */ { 32, Swzzld, NoCmpnts, XTL::D3DFMT_V16U16 }, + /* 0x27 X_D3DFMT_L6V5U5 */ { 16, Swzzld, __R6G5B5, D3DFMT_L6V5U5 }, // Alias : X_D3DFMT_R6G5B5 // XQEMU NOTE : This might be signed + /* 0x28 X_D3DFMT_V8U8 */ { 16, Swzzld, ____G8B8, D3DFMT_V8U8 }, // Alias : X_D3DFMT_G8B8 // XQEMU NOTE : This might be signed + /* 0x29 X_D3DFMT_R8B8 */ { 16, Swzzld, ____R8B8, D3DFMT_R5G6B5 , Texture, "X_D3DFMT_R8B8 -> D3DFMT_R5G6B5" }, // XQEMU NOTE : This might be signed + /* 0x2A X_D3DFMT_D24S8 */ { 32, Swzzld, NoCmpnts, D3DFMT_D24S8 , DepthBuffer }, + /* 0x2B X_D3DFMT_F24S8 */ { 32, Swzzld, NoCmpnts, D3DFMT_D24FS8 , DepthBuffer }, + /* 0x2C X_D3DFMT_D16 */ { 16, Swzzld, NoCmpnts, D3DFMT_D16 , DepthBuffer }, // Note : X_D3DFMT_D16 is always lockable on Xbox, D3DFMT_D16 on host is not, but D3DFMT_D16_LOCKABLE often fails SetRenderTarget. + /* 0x2D X_D3DFMT_F16 */ { 16, Swzzld, NoCmpnts, D3DFMT_D16 , DepthBuffer, "X_D3DFMT_F16 -> D3DFMT_D16" }, // HACK : PC doesn't have D3DFMT_F16 (Float vs Int) // TODO : Use D3DFMT_R16F? + /* 0x2E X_D3DFMT_LIN_D24S8 */ { 32, Linear, NoCmpnts, D3DFMT_D24S8 , DepthBuffer }, + /* 0x2F X_D3DFMT_LIN_F24S8 */ { 32, Linear, NoCmpnts, D3DFMT_D24FS8 , DepthBuffer }, + /* 0x30 X_D3DFMT_LIN_D16 */ { 16, Linear, NoCmpnts, D3DFMT_D16 , DepthBuffer }, // Note : X_D3DFMT_D16 is always lockable on Xbox, D3DFMT_D16 on host is not, but D3DFMT_D16_LOCKABLE often fails SetRenderTarget. + /* 0x31 X_D3DFMT_LIN_F16 */ { 16, Linear, NoCmpnts, D3DFMT_D16 , DepthBuffer, "X_D3DFMT_LIN_F16 -> D3DFMT_D16" }, // HACK : PC doesn't have D3DFMT_F16 (Float vs Int) // TODO : Use D3DFMT_R16F? + /* 0x32 X_D3DFMT_L16 */ { 16, Swzzld, _____L16, D3DFMT_L16 }, + /* 0x33 X_D3DFMT_V16U16 */ { 32, Swzzld, NoCmpnts, D3DFMT_V16U16 }, /* 0x34 undefined */ {}, - /* 0x35 X_D3DFMT_LIN_L16 */ { 16, Linear, _____L16, XTL::D3DFMT_L16 }, - /* 0x36 X_D3DFMT_LIN_V16U16 */ { 32, Linear, NoCmpnts, XTL::D3DFMT_V16U16 }, // Note : Seems ununsed on Xbox - /* 0x37 X_D3DFMT_LIN_L6V5U5 */ { 16, Linear, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // Alias : X_D3DFMT_LIN_R6G5B5 - /* 0x38 X_D3DFMT_R5G5B5A1 */ { 16, Swzzld, R5G5B5A1, XTL::D3DFMT_A1R5G5B5 , Texture, "X_D3DFMT_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, - /* 0x39 X_D3DFMT_R4G4B4A4 */ { 16, Swzzld, R4G4B4A4, XTL::D3DFMT_A4R4G4B4 , Texture, "X_D3DFMT_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, - /* 0x3A X_D3DFMT_Q8W8V8U8 */ { 32, Swzzld, A8B8G8R8, XTL::D3DFMT_Q8W8V8U8 }, // Alias : X_D3DFMT_A8B8G8R8 // Note : D3DFMT_A8B8G8R8=32 D3DFMT_Q8W8V8U8=63 // TODO : Needs testcase. - /* 0x3B X_D3DFMT_B8G8R8A8 */ { 32, Swzzld, B8G8R8A8, XTL::D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, - /* 0x3C X_D3DFMT_R8G8B8A8 */ { 32, Swzzld, R8G8B8A8, XTL::D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_R8G8B8A8 -> D3DFMT_A8R8G8B8" }, - /* 0x3D X_D3DFMT_LIN_R5G5B5A1 */ { 16, Linear, R5G5B5A1, XTL::D3DFMT_A1R5G5B5 , Texture, "X_D3DFMT_LIN_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, - /* 0x3E X_D3DFMT_LIN_R4G4B4A4 */ { 16, Linear, R4G4B4A4, XTL::D3DFMT_A4R4G4B4 , Texture, "X_D3DFMT_LIN_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, - /* 0x3F X_D3DFMT_LIN_A8B8G8R8 */ { 32, Linear, A8B8G8R8, XTL::D3DFMT_A8B8G8R8 }, // Note : D3DFMT_A8B8G8R8=32 D3DFMT_Q8W8V8U8=63 // TODO : Needs testcase. - /* 0x40 X_D3DFMT_LIN_B8G8R8A8 */ { 32, Linear, B8G8R8A8, XTL::D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_LIN_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, - /* 0x41 X_D3DFMT_LIN_R8G8B8A8 */ { 32, Linear, R8G8B8A8, XTL::D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_LIN_R8G8B8A8 -> D3DFMT_A8R8G8B8" }, + /* 0x35 X_D3DFMT_LIN_L16 */ { 16, Linear, _____L16, D3DFMT_L16 }, + /* 0x36 X_D3DFMT_LIN_V16U16 */ { 32, Linear, NoCmpnts, D3DFMT_V16U16 }, // Note : Seems ununsed on Xbox + /* 0x37 X_D3DFMT_LIN_L6V5U5 */ { 16, Linear, __R6G5B5, D3DFMT_L6V5U5 }, // Alias : X_D3DFMT_LIN_R6G5B5 + /* 0x38 X_D3DFMT_R5G5B5A1 */ { 16, Swzzld, R5G5B5A1, D3DFMT_A1R5G5B5 , Texture, "X_D3DFMT_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, + /* 0x39 X_D3DFMT_R4G4B4A4 */ { 16, Swzzld, R4G4B4A4, D3DFMT_A4R4G4B4 , Texture, "X_D3DFMT_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, + /* 0x3A X_D3DFMT_Q8W8V8U8 */ { 32, Swzzld, A8B8G8R8, D3DFMT_Q8W8V8U8 }, // Alias : X_D3DFMT_A8B8G8R8 // Note : D3DFMT_A8B8G8R8=32 D3DFMT_Q8W8V8U8=63 // TODO : Needs testcase. + /* 0x3B X_D3DFMT_B8G8R8A8 */ { 32, Swzzld, B8G8R8A8, D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, + /* 0x3C X_D3DFMT_R8G8B8A8 */ { 32, Swzzld, R8G8B8A8, D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_R8G8B8A8 -> D3DFMT_A8R8G8B8" }, + /* 0x3D X_D3DFMT_LIN_R5G5B5A1 */ { 16, Linear, R5G5B5A1, D3DFMT_A1R5G5B5 , Texture, "X_D3DFMT_LIN_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, + /* 0x3E X_D3DFMT_LIN_R4G4B4A4 */ { 16, Linear, R4G4B4A4, D3DFMT_A4R4G4B4 , Texture, "X_D3DFMT_LIN_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, + /* 0x3F X_D3DFMT_LIN_A8B8G8R8 */ { 32, Linear, A8B8G8R8, D3DFMT_A8B8G8R8 }, // Note : D3DFMT_A8B8G8R8=32 D3DFMT_Q8W8V8U8=63 // TODO : Needs testcase. + /* 0x40 X_D3DFMT_LIN_B8G8R8A8 */ { 32, Linear, B8G8R8A8, D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_LIN_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, + /* 0x41 X_D3DFMT_LIN_R8G8B8A8 */ { 32, Linear, R8G8B8A8, D3DFMT_A8R8G8B8 , Texture, "X_D3DFMT_LIN_R8G8B8A8 -> D3DFMT_A8R8G8B8" }, #if 0 /* 0x42 to 0x63 undefined */ {},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}, - /* 0x64 X_D3DFMT_VERTEXDATA */ { 8, Linear, NoCmpnts, XTL::D3DFMT_VERTEXDATA }, - /* 0x65 X_D3DFMT_INDEX16 */ { 16, Linear, NoCmpnts, XTL::D3DFMT_INDEX16 }, // Dxbx addition : X_D3DFMT_INDEX16 is not an Xbox format, but used internally + /* 0x64 X_D3DFMT_VERTEXDATA */ { 8, Linear, NoCmpnts, D3DFMT_VERTEXDATA }, + /* 0x65 X_D3DFMT_INDEX16 */ { 16, Linear, NoCmpnts, D3DFMT_INDEX16 }, // Dxbx addition : X_D3DFMT_INDEX16 is not an Xbox format, but used internally #endif }; @@ -1023,11 +1022,9 @@ BOOL EmuXBFormatIsDepthBuffer(XTL::X_D3DFORMAT Format) return false; } -XTL::D3DFORMAT EmuXB2PC_D3DFormat(XTL::X_D3DFORMAT Format) +D3DFORMAT EmuXB2PC_D3DFormat(XTL::X_D3DFORMAT Format) { - using namespace XTL; - - if (Format <= X_D3DFMT_LIN_R8G8B8A8 && Format != -1 /*X_D3DFMT_UNKNOWN*/) // The last bit prevents crashing (Metal Slug 3) + if (Format <= XTL::X_D3DFMT_LIN_R8G8B8A8 && Format != -1 /*XTL::X_D3DFMT_UNKNOWN*/) // The last bit prevents crashing (Metal Slug 3) { const FormatInfo *info = &FormatInfos[Format]; if (info->warning != nullptr) { @@ -1038,9 +1035,9 @@ XTL::D3DFORMAT EmuXB2PC_D3DFormat(XTL::X_D3DFORMAT Format) } switch (Format) { - case X_D3DFMT_VERTEXDATA: + case XTL::X_D3DFMT_VERTEXDATA: return D3DFMT_VERTEXDATA; - case ((X_D3DFORMAT)0xffffffff): + case ((XTL::X_D3DFORMAT)0xffffffff): return D3DFMT_UNKNOWN; // TODO -oCXBX: Not sure if this counts as swizzled or not... default: CxbxKrnlCleanup("EmuXB2PC_D3DFormat: Unknown Format (0x%.08X)", Format); @@ -1049,82 +1046,80 @@ XTL::D3DFORMAT EmuXB2PC_D3DFormat(XTL::X_D3DFORMAT Format) return D3DFMT_UNKNOWN; } -XTL::X_D3DFORMAT EmuPC2XB_D3DFormat(XTL::D3DFORMAT Format, bool bPreferLinear) +XTL::X_D3DFORMAT EmuPC2XB_D3DFormat(D3DFORMAT Format, bool bPreferLinear) { - using namespace XTL; - - X_D3DFORMAT result; + XTL::X_D3DFORMAT result; switch(Format) { case D3DFMT_YUY2: - result = X_D3DFMT_YUY2; + result = XTL::X_D3DFMT_YUY2; break; case D3DFMT_UYVY: - result = X_D3DFMT_UYVY; + result = XTL::X_D3DFMT_UYVY; break; case D3DFMT_R5G6B5: - result = bPreferLinear ? X_D3DFMT_LIN_R5G6B5 : X_D3DFMT_R5G6B5; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_R5G6B5 : XTL::X_D3DFMT_R5G6B5; break; case D3DFMT_D24S8: - result = bPreferLinear ? X_D3DFMT_LIN_D24S8 : X_D3DFMT_D24S8; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_D24S8 : XTL::X_D3DFMT_D24S8; break; case D3DFMT_DXT5: - result = X_D3DFMT_DXT5; // Compressed + result = XTL::X_D3DFMT_DXT5; // Compressed break; case D3DFMT_DXT4: - result = X_D3DFMT_DXT4; // Compressed // Same as X_D3DFMT_DXT5 + result = XTL::X_D3DFMT_DXT4; // Compressed // Same as XTL::X_D3DFMT_DXT5 break; case D3DFMT_DXT3: - result = X_D3DFMT_DXT3; // Compressed + result = XTL::X_D3DFMT_DXT3; // Compressed break; case D3DFMT_DXT2: - result = X_D3DFMT_DXT2; // Compressed // Same as X_D3DFMT_DXT3 + result = XTL::X_D3DFMT_DXT2; // Compressed // Same as XTL::X_D3DFMT_DXT3 break; case D3DFMT_DXT1: - result = X_D3DFMT_DXT1; // Compressed + result = XTL::X_D3DFMT_DXT1; // Compressed break; case D3DFMT_A1R5G5B5: - result = bPreferLinear ? X_D3DFMT_LIN_A1R5G5B5 : X_D3DFMT_A1R5G5B5; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_A1R5G5B5 : XTL::X_D3DFMT_A1R5G5B5; break; case D3DFMT_X8R8G8B8: - result = bPreferLinear ? X_D3DFMT_LIN_X8R8G8B8 : X_D3DFMT_X8R8G8B8; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_X8R8G8B8 : XTL::X_D3DFMT_X8R8G8B8; break; case D3DFMT_A8R8G8B8: - result = bPreferLinear ? X_D3DFMT_LIN_A8R8G8B8 : X_D3DFMT_A8R8G8B8; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_A8R8G8B8 : XTL::X_D3DFMT_A8R8G8B8; break; case D3DFMT_A4R4G4B4: - result = bPreferLinear ? X_D3DFMT_LIN_A4R4G4B4 : X_D3DFMT_A4R4G4B4; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_A4R4G4B4 : XTL::X_D3DFMT_A4R4G4B4; break; case D3DFMT_X1R5G5B5: - result = bPreferLinear ? X_D3DFMT_LIN_X1R5G5B5 : X_D3DFMT_X1R5G5B5; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_X1R5G5B5 : XTL::X_D3DFMT_X1R5G5B5; break; case D3DFMT_A8: - result = bPreferLinear ? X_D3DFMT_LIN_A8 : X_D3DFMT_A8; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_A8 : XTL::X_D3DFMT_A8; break; case D3DFMT_L8: - result = bPreferLinear ? X_D3DFMT_LIN_L8 : X_D3DFMT_L8; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_L8 : XTL::X_D3DFMT_L8; break; case D3DFMT_D16: - result = bPreferLinear ? X_D3DFMT_LIN_D16 : X_D3DFMT_D16; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_D16 : XTL::X_D3DFMT_D16; break; case D3DFMT_D16_LOCKABLE: - result = X_D3DFMT_D16_LOCKABLE; + result = XTL::X_D3DFMT_D16_LOCKABLE; break; case D3DFMT_UNKNOWN: - result = ((X_D3DFORMAT)0xffffffff); // TODO : return X_D3DFMT_UNKNOWN ? + result = ((XTL::X_D3DFORMAT)0xffffffff); // TODO : return XTL::X_D3DFMT_UNKNOWN ? break; // Dxbx additions : case D3DFMT_L6V5U5: - result = bPreferLinear ? X_D3DFMT_LIN_L6V5U5 : X_D3DFMT_L6V5U5; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_L6V5U5 : XTL::X_D3DFMT_L6V5U5; break; case D3DFMT_V8U8: - result = bPreferLinear ? X_D3DFMT_LIN_V8U8 : X_D3DFMT_V8U8; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_V8U8 : XTL::X_D3DFMT_V8U8; break; case D3DFMT_V16U16: - result = bPreferLinear ? X_D3DFMT_LIN_V16U16 : X_D3DFMT_V16U16; + result = bPreferLinear ? XTL::X_D3DFMT_LIN_V16U16 : XTL::X_D3DFMT_V16U16; break; case D3DFMT_VERTEXDATA: - result = X_D3DFMT_VERTEXDATA; + result = XTL::X_D3DFMT_VERTEXDATA; break; default: CxbxKrnlCleanup("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format); @@ -1135,8 +1130,6 @@ XTL::X_D3DFORMAT EmuPC2XB_D3DFormat(XTL::D3DFORMAT Format, bool bPreferLinear) DWORD EmuXB2PC_D3DLock(DWORD Flags) { - using namespace XTL; - DWORD NewFlags = 0; // Need to convert the flags, TODO: fix the xbox extensions @@ -1156,30 +1149,28 @@ DWORD EmuXB2PC_D3DLock(DWORD Flags) } // convert from xbox to pc multisample formats -XTL::D3DMULTISAMPLE_TYPE EmuXB2PC_D3DMultiSampleFormat(DWORD Type) +D3DMULTISAMPLE_TYPE EmuXB2PC_D3DMultiSampleFormat(DWORD Type) { - using namespace XTL; - D3DMULTISAMPLE_TYPE result; switch (Type & 0xFFFF) { - case X_D3DMULTISAMPLE_NONE: + case XTL::X_D3DMULTISAMPLE_NONE: result = D3DMULTISAMPLE_NONE; break; - case X_D3DMULTISAMPLE_2_SAMPLES_MULTISAMPLE_LINEAR: - case X_D3DMULTISAMPLE_2_SAMPLES_MULTISAMPLE_QUINCUNX: - case X_D3DMULTISAMPLE_2_SAMPLES_SUPERSAMPLE_HORIZONTAL_LINEAR: - case X_D3DMULTISAMPLE_2_SAMPLES_SUPERSAMPLE_VERTICAL_LINEAR: + case XTL::X_D3DMULTISAMPLE_2_SAMPLES_MULTISAMPLE_LINEAR: + case XTL::X_D3DMULTISAMPLE_2_SAMPLES_MULTISAMPLE_QUINCUNX: + case XTL::X_D3DMULTISAMPLE_2_SAMPLES_SUPERSAMPLE_HORIZONTAL_LINEAR: + case XTL::X_D3DMULTISAMPLE_2_SAMPLES_SUPERSAMPLE_VERTICAL_LINEAR: result = D3DMULTISAMPLE_2_SAMPLES; break; - case X_D3DMULTISAMPLE_4_SAMPLES_MULTISAMPLE_LINEAR: - case X_D3DMULTISAMPLE_4_SAMPLES_MULTISAMPLE_GAUSSIAN: - case X_D3DMULTISAMPLE_4_SAMPLES_SUPERSAMPLE_LINEAR: - case X_D3DMULTISAMPLE_4_SAMPLES_SUPERSAMPLE_GAUSSIAN: + case XTL::X_D3DMULTISAMPLE_4_SAMPLES_MULTISAMPLE_LINEAR: + case XTL::X_D3DMULTISAMPLE_4_SAMPLES_MULTISAMPLE_GAUSSIAN: + case XTL::X_D3DMULTISAMPLE_4_SAMPLES_SUPERSAMPLE_LINEAR: + case XTL::X_D3DMULTISAMPLE_4_SAMPLES_SUPERSAMPLE_GAUSSIAN: result = D3DMULTISAMPLE_4_SAMPLES; break; - case X_D3DMULTISAMPLE_9_SAMPLES_MULTISAMPLE_GAUSSIAN: - case X_D3DMULTISAMPLE_9_SAMPLES_SUPERSAMPLE_GAUSSIAN: + case XTL::X_D3DMULTISAMPLE_9_SAMPLES_MULTISAMPLE_GAUSSIAN: + case XTL::X_D3DMULTISAMPLE_9_SAMPLES_SUPERSAMPLE_GAUSSIAN: result = D3DMULTISAMPLE_9_SAMPLES; break; default: @@ -1206,20 +1197,20 @@ UINT EmuD3DVertexToPrimitive[11][2] = }; // conversion table for xbox->pc primitive types -XTL::D3DPRIMITIVETYPE EmuPrimitiveTypeLookup[] = +D3DPRIMITIVETYPE EmuPrimitiveTypeLookup[] = { - /* NULL = 0 */ (XTL::D3DPRIMITIVETYPE)0, - /* D3DPT_POINTLIST = 1, */ XTL::D3DPT_POINTLIST, - /* D3DPT_LINELIST = 2, */ XTL::D3DPT_LINELIST, - /* D3DPT_LINELOOP = 3, Xbox */ XTL::D3DPT_LINESTRIP, - /* D3DPT_LINESTRIP = 4, */ XTL::D3DPT_LINESTRIP, - /* D3DPT_TRIANGLELIST = 5, */ XTL::D3DPT_TRIANGLELIST, - /* D3DPT_TRIANGLESTRIP = 6, */ XTL::D3DPT_TRIANGLESTRIP, - /* D3DPT_TRIANGLEFAN = 7, */ XTL::D3DPT_TRIANGLEFAN, - /* D3DPT_QUADLIST = 8, Xbox */ XTL::D3DPT_TRIANGLELIST, - /* D3DPT_QUADSTRIP = 9, Xbox */ XTL::D3DPT_TRIANGLESTRIP, - /* D3DPT_POLYGON = 10, Xbox */ XTL::D3DPT_TRIANGLEFAN, - /* D3DPT_MAX = 11, */ (XTL::D3DPRIMITIVETYPE)11 + /* NULL = 0 */ (D3DPRIMITIVETYPE)0, + /* D3DPT_POINTLIST = 1, */ D3DPT_POINTLIST, + /* D3DPT_LINELIST = 2, */ D3DPT_LINELIST, + /* D3DPT_LINELOOP = 3, Xbox */ D3DPT_LINESTRIP, + /* D3DPT_LINESTRIP = 4, */ D3DPT_LINESTRIP, + /* D3DPT_TRIANGLELIST = 5, */ D3DPT_TRIANGLELIST, + /* D3DPT_TRIANGLESTRIP = 6, */ D3DPT_TRIANGLESTRIP, + /* D3DPT_TRIANGLEFAN = 7, */ D3DPT_TRIANGLEFAN, + /* D3DPT_QUADLIST = 8, Xbox */ D3DPT_TRIANGLELIST, + /* D3DPT_QUADSTRIP = 9, Xbox */ D3DPT_TRIANGLESTRIP, + /* D3DPT_POLYGON = 10, Xbox */ D3DPT_TRIANGLEFAN, + /* D3DPT_MAX = 11, */ (D3DPRIMITIVETYPE)11 }; void EmuUnswizzleBox @@ -1397,25 +1388,25 @@ const RenderStateInfo DxbxRenderStateInfo[] = { { "D3DRS_PSDOTMAPPING" /*= 55*/, 3424, xtDWORD, NV2A_TX_SHADER_DOTMAPPING }, { "D3DRS_PSINPUTTEXTURE" /*= 56*/, 3424, xtDWORD, NV2A_TX_SHADER_PREVIOUS }, // End of "pixel-shader" render states, continuing with "simple" render states : - { "D3DRS_ZFUNC" /*= 57*/, 3424, xtD3DCMPFUNC, NV2A_DEPTH_FUNC, XTL::D3DRS_ZFUNC }, - { "D3DRS_ALPHAFUNC" /*= 58*/, 3424, xtD3DCMPFUNC, NV2A_ALPHA_FUNC_FUNC, XTL::D3DRS_ALPHAFUNC }, - { "D3DRS_ALPHABLENDENABLE" /*= 59*/, 3424, xtBOOL, NV2A_BLEND_FUNC_ENABLE, XTL::D3DRS_ALPHABLENDENABLE, "TRUE to enable alpha blending" }, - { "D3DRS_ALPHATESTENABLE" /*= 60*/, 3424, xtBOOL, NV2A_ALPHA_FUNC_ENABLE, XTL::D3DRS_ALPHATESTENABLE, "TRUE to enable alpha tests" }, - { "D3DRS_ALPHAREF" /*= 61*/, 3424, xtBYTE, NV2A_ALPHA_FUNC_REF, XTL::D3DRS_ALPHAREF }, - { "D3DRS_SRCBLEND" /*= 62*/, 3424, xtD3DBLEND, NV2A_BLEND_FUNC_SRC, XTL::D3DRS_SRCBLEND }, - { "D3DRS_DESTBLEND" /*= 63*/, 3424, xtD3DBLEND, NV2A_BLEND_FUNC_DST, XTL::D3DRS_DESTBLEND }, - { "D3DRS_ZWRITEENABLE" /*= 64*/, 3424, xtBOOL, NV2A_DEPTH_WRITE_ENABLE, XTL::D3DRS_ZWRITEENABLE, "TRUE to enable Z writes" }, - { "D3DRS_DITHERENABLE" /*= 65*/, 3424, xtBOOL, NV2A_DITHER_ENABLE, XTL::D3DRS_DITHERENABLE, "TRUE to enable dithering" }, - { "D3DRS_SHADEMODE" /*= 66*/, 3424, xtD3DSHADEMODE, NV2A_SHADE_MODEL, XTL::D3DRS_SHADEMODE }, - { "D3DRS_COLORWRITEENABLE" /*= 67*/, 3424, xtD3DCOLORWRITEENABLE, NV2A_COLOR_MASK, XTL::D3DRS_COLORWRITEENABLE }, // *_ALPHA, etc. per-channel write enable - { "D3DRS_STENCILZFAIL" /*= 68*/, 3424, xtD3DSTENCILOP, NV2A_STENCIL_OP_ZFAIL, XTL::D3DRS_STENCILZFAIL, "Operation to do if stencil test passes and Z test fails" }, - { "D3DRS_STENCILPASS" /*= 69*/, 3424, xtD3DSTENCILOP, NV2A_STENCIL_OP_ZPASS, XTL::D3DRS_STENCILPASS, "Operation to do if both stencil and Z tests pass" }, - { "D3DRS_STENCILFUNC" /*= 70*/, 3424, xtD3DCMPFUNC, NV2A_STENCIL_FUNC_FUNC, XTL::D3DRS_STENCILFUNC }, - { "D3DRS_STENCILREF" /*= 71*/, 3424, xtBYTE, NV2A_STENCIL_FUNC_REF, XTL::D3DRS_STENCILREF, "BYTE reference value used in stencil test" }, - { "D3DRS_STENCILMASK" /*= 72*/, 3424, xtBYTE, NV2A_STENCIL_FUNC_MASK, XTL::D3DRS_STENCILMASK, "BYTE mask value used in stencil test" }, - { "D3DRS_STENCILWRITEMASK" /*= 73*/, 3424, xtBYTE, NV2A_STENCIL_MASK, XTL::D3DRS_STENCILWRITEMASK, "BYTE write mask applied to values written to stencil buffer" }, - { "D3DRS_BLENDOP" /*= 74*/, 3424, xtD3DBLENDOP, NV2A_BLEND_EQUATION, XTL::D3DRS_BLENDOP }, - { "D3DRS_BLENDCOLOR" /*= 75*/, 3424, xtD3DCOLOR, NV2A_BLEND_COLOR, XTL::D3DRS_BLENDFACTOR, "D3DCOLOR for D3DBLEND_CONSTANTCOLOR" }, + { "D3DRS_ZFUNC" /*= 57*/, 3424, xtD3DCMPFUNC, NV2A_DEPTH_FUNC, D3DRS_ZFUNC }, + { "D3DRS_ALPHAFUNC" /*= 58*/, 3424, xtD3DCMPFUNC, NV2A_ALPHA_FUNC_FUNC, D3DRS_ALPHAFUNC }, + { "D3DRS_ALPHABLENDENABLE" /*= 59*/, 3424, xtBOOL, NV2A_BLEND_FUNC_ENABLE, D3DRS_ALPHABLENDENABLE, "TRUE to enable alpha blending" }, + { "D3DRS_ALPHATESTENABLE" /*= 60*/, 3424, xtBOOL, NV2A_ALPHA_FUNC_ENABLE, D3DRS_ALPHATESTENABLE, "TRUE to enable alpha tests" }, + { "D3DRS_ALPHAREF" /*= 61*/, 3424, xtBYTE, NV2A_ALPHA_FUNC_REF, D3DRS_ALPHAREF }, + { "D3DRS_SRCBLEND" /*= 62*/, 3424, xtD3DBLEND, NV2A_BLEND_FUNC_SRC, D3DRS_SRCBLEND }, + { "D3DRS_DESTBLEND" /*= 63*/, 3424, xtD3DBLEND, NV2A_BLEND_FUNC_DST, D3DRS_DESTBLEND }, + { "D3DRS_ZWRITEENABLE" /*= 64*/, 3424, xtBOOL, NV2A_DEPTH_WRITE_ENABLE, D3DRS_ZWRITEENABLE, "TRUE to enable Z writes" }, + { "D3DRS_DITHERENABLE" /*= 65*/, 3424, xtBOOL, NV2A_DITHER_ENABLE, D3DRS_DITHERENABLE, "TRUE to enable dithering" }, + { "D3DRS_SHADEMODE" /*= 66*/, 3424, xtD3DSHADEMODE, NV2A_SHADE_MODEL, D3DRS_SHADEMODE }, + { "D3DRS_COLORWRITEENABLE" /*= 67*/, 3424, xtD3DCOLORWRITEENABLE, NV2A_COLOR_MASK, D3DRS_COLORWRITEENABLE }, // *_ALPHA, etc. per-channel write enable + { "D3DRS_STENCILZFAIL" /*= 68*/, 3424, xtD3DSTENCILOP, NV2A_STENCIL_OP_ZFAIL, D3DRS_STENCILZFAIL, "Operation to do if stencil test passes and Z test fails" }, + { "D3DRS_STENCILPASS" /*= 69*/, 3424, xtD3DSTENCILOP, NV2A_STENCIL_OP_ZPASS, D3DRS_STENCILPASS, "Operation to do if both stencil and Z tests pass" }, + { "D3DRS_STENCILFUNC" /*= 70*/, 3424, xtD3DCMPFUNC, NV2A_STENCIL_FUNC_FUNC, D3DRS_STENCILFUNC }, + { "D3DRS_STENCILREF" /*= 71*/, 3424, xtBYTE, NV2A_STENCIL_FUNC_REF, D3DRS_STENCILREF, "BYTE reference value used in stencil test" }, + { "D3DRS_STENCILMASK" /*= 72*/, 3424, xtBYTE, NV2A_STENCIL_FUNC_MASK, D3DRS_STENCILMASK, "BYTE mask value used in stencil test" }, + { "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 { "D3DRS_SWATHWIDTH" /*= 76*/, 3424, xtD3DSWATH, NV2A_SWATH_WIDTH }, { "D3DRS_POLYGONOFFSETZSLOPESCALE" /*= 77*/, 3424, xtFloat, NV2A_POLYGON_OFFSET_FACTOR, D3DRS_NONE, "float Z factor for shadow maps" }, @@ -1434,39 +1425,39 @@ const RenderStateInfo DxbxRenderStateInfo[] = { { "D3DRS_SIMPLE_UNUSED2" /*= 90*/, 4627, xtDWORD, 0 }, { "D3DRS_SIMPLE_UNUSED1" /*= 91*/, 4627, xtDWORD, 0 }, // End of "simple" render states, continuing with "deferred" render states : - { "D3DRS_FOGENABLE" /*= 92*/, 3424, xtBOOL, NV2A_FOG_ENABLE, XTL::D3DRS_FOGENABLE }, - { "D3DRS_FOGTABLEMODE" /*= 93*/, 3424, xtD3DFOGMODE, NV2A_FOG_MODE, XTL::D3DRS_FOGTABLEMODE }, - { "D3DRS_FOGSTART" /*= 94*/, 3424, xtFloat, NV2A_FOG_COORD_DIST, XTL::D3DRS_FOGSTART }, - { "D3DRS_FOGEND" /*= 95*/, 3424, xtFloat, NV2A_FOG_MODE, XTL::D3DRS_FOGEND }, - { "D3DRS_FOGDENSITY" /*= 96*/, 3424, xtFloat, NV2A_FOG_EQUATION_CONSTANT, XTL::D3DRS_FOGDENSITY }, // + NV2A_FOG_EQUATION_LINEAR + NV2A_FOG_EQUATION_QUADRATIC - { "D3DRS_RANGEFOGENABLE" /*= 97*/, 3424, xtBOOL, NV2A_FOG_COORD_DIST, XTL::D3DRS_RANGEFOGENABLE }, - { "D3DRS_WRAP0" /*= 98*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(0), XTL::D3DRS_WRAP0 }, - { "D3DRS_WRAP1" /*= 99*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(1), XTL::D3DRS_WRAP1 }, - { "D3DRS_WRAP2" /*= 100*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(2), XTL::D3DRS_WRAP2 }, - { "D3DRS_WRAP3" /*= 101*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(3), XTL::D3DRS_WRAP3 }, - { "D3DRS_LIGHTING" /*= 102*/, 3424, xtBOOL, NV2A_LIGHT_MODEL, XTL::D3DRS_LIGHTING }, // TODO : Needs push-buffer data conversion - { "D3DRS_SPECULARENABLE" /*= 103*/, 3424, xtBOOL, NV2A_RC_FINAL0, XTL::D3DRS_SPECULARENABLE }, - { "D3DRS_LOCALVIEWER" /*= 104*/, 3424, xtBOOL, 0, XTL::D3DRS_LOCALVIEWER }, - { "D3DRS_COLORVERTEX" /*= 105*/, 3424, xtBOOL, 0, XTL::D3DRS_COLORVERTEX }, + { "D3DRS_FOGENABLE" /*= 92*/, 3424, xtBOOL, NV2A_FOG_ENABLE, D3DRS_FOGENABLE }, + { "D3DRS_FOGTABLEMODE" /*= 93*/, 3424, xtD3DFOGMODE, NV2A_FOG_MODE, D3DRS_FOGTABLEMODE }, + { "D3DRS_FOGSTART" /*= 94*/, 3424, xtFloat, NV2A_FOG_COORD_DIST, D3DRS_FOGSTART }, + { "D3DRS_FOGEND" /*= 95*/, 3424, xtFloat, NV2A_FOG_MODE, D3DRS_FOGEND }, + { "D3DRS_FOGDENSITY" /*= 96*/, 3424, xtFloat, NV2A_FOG_EQUATION_CONSTANT, D3DRS_FOGDENSITY }, // + NV2A_FOG_EQUATION_LINEAR + NV2A_FOG_EQUATION_QUADRATIC + { "D3DRS_RANGEFOGENABLE" /*= 97*/, 3424, xtBOOL, NV2A_FOG_COORD_DIST, D3DRS_RANGEFOGENABLE }, + { "D3DRS_WRAP0" /*= 98*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(0), D3DRS_WRAP0 }, + { "D3DRS_WRAP1" /*= 99*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(1), D3DRS_WRAP1 }, + { "D3DRS_WRAP2" /*= 100*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(2), D3DRS_WRAP2 }, + { "D3DRS_WRAP3" /*= 101*/, 3424, xtD3DWRAP, NV2A_TX_WRAP(3), D3DRS_WRAP3 }, + { "D3DRS_LIGHTING" /*= 102*/, 3424, xtBOOL, NV2A_LIGHT_MODEL, D3DRS_LIGHTING }, // TODO : Needs push-buffer data conversion + { "D3DRS_SPECULARENABLE" /*= 103*/, 3424, xtBOOL, NV2A_RC_FINAL0, D3DRS_SPECULARENABLE }, + { "D3DRS_LOCALVIEWER" /*= 104*/, 3424, xtBOOL, 0, D3DRS_LOCALVIEWER }, + { "D3DRS_COLORVERTEX" /*= 105*/, 3424, xtBOOL, 0, D3DRS_COLORVERTEX }, { "D3DRS_BACKSPECULARMATERIALSOURCE" /*= 106*/, 3424, xtD3DMCS, 0 }, // nsp. { "D3DRS_BACKDIFFUSEMATERIALSOURCE" /*= 107*/, 3424, xtD3DMCS, 0 }, // nsp. { "D3DRS_BACKAMBIENTMATERIALSOURCE" /*= 108*/, 3424, xtD3DMCS, 0 }, // nsp. { "D3DRS_BACKEMISSIVEMATERIALSOURCE" /*= 109*/, 3424, xtD3DMCS, 0 }, // nsp. - { "D3DRS_SPECULARMATERIALSOURCE" /*= 110*/, 3424, xtD3DMCS, NV2A_COLOR_MATERIAL, XTL::D3DRS_SPECULARMATERIALSOURCE }, - { "D3DRS_DIFFUSEMATERIALSOURCE" /*= 111*/, 3424, xtD3DMCS, 0, XTL::D3DRS_DIFFUSEMATERIALSOURCE }, - { "D3DRS_AMBIENTMATERIALSOURCE" /*= 112*/, 3424, xtD3DMCS, 0, XTL::D3DRS_AMBIENTMATERIALSOURCE }, - { "D3DRS_EMISSIVEMATERIALSOURCE" /*= 113*/, 3424, xtD3DMCS, 0, XTL::D3DRS_EMISSIVEMATERIALSOURCE }, + { "D3DRS_SPECULARMATERIALSOURCE" /*= 110*/, 3424, xtD3DMCS, NV2A_COLOR_MATERIAL, D3DRS_SPECULARMATERIALSOURCE }, + { "D3DRS_DIFFUSEMATERIALSOURCE" /*= 111*/, 3424, xtD3DMCS, 0, D3DRS_DIFFUSEMATERIALSOURCE }, + { "D3DRS_AMBIENTMATERIALSOURCE" /*= 112*/, 3424, xtD3DMCS, 0, D3DRS_AMBIENTMATERIALSOURCE }, + { "D3DRS_EMISSIVEMATERIALSOURCE" /*= 113*/, 3424, xtD3DMCS, 0, D3DRS_EMISSIVEMATERIALSOURCE }, { "D3DRS_BACKAMBIENT" /*= 114*/, 3424, xtD3DCOLOR, NV2A_LIGHT_MODEL_BACK_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_R }, // ..NV2A_MATERIAL_FACTOR_BACK_B nsp. Was NV2A_LIGHT_MODEL_BACK_AMBIENT_R - { "D3DRS_AMBIENT" /*= 115*/, 3424, xtD3DCOLOR, NV2A_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_R, XTL::D3DRS_AMBIENT }, // ..NV2A_LIGHT_MODEL_FRONT_AMBIENT_B + NV2A_MATERIAL_FACTOR_FRONT_R..NV2A_MATERIAL_FACTOR_FRONT_A Was NV2A_LIGHT_MODEL_FRONT_AMBIENT_R - { "D3DRS_POINTSIZE" /*= 116*/, 3424, xtFloat, NV2A_POINT_PARAMETER(0), XTL::D3DRS_POINTSIZE }, - { "D3DRS_POINTSIZE_MIN" /*= 117*/, 3424, xtFloat, 0, XTL::D3DRS_POINTSIZE_MIN }, - { "D3DRS_POINTSPRITEENABLE" /*= 118*/, 3424, xtBOOL, NV2A_POINT_SMOOTH_ENABLE, XTL::D3DRS_POINTSPRITEENABLE }, - { "D3DRS_POINTSCALEENABLE" /*= 119*/, 3424, xtBOOL, NV2A_POINT_PARAMETERS_ENABLE, XTL::D3DRS_POINTSCALEENABLE }, - { "D3DRS_POINTSCALE_A" /*= 120*/, 3424, xtFloat, 0, XTL::D3DRS_POINTSCALE_A }, - { "D3DRS_POINTSCALE_B" /*= 121*/, 3424, xtFloat, 0, XTL::D3DRS_POINTSCALE_B }, - { "D3DRS_POINTSCALE_C" /*= 122*/, 3424, xtFloat, 0, XTL::D3DRS_POINTSCALE_C }, - { "D3DRS_POINTSIZE_MAX" /*= 123*/, 3424, xtFloat, 0, XTL::D3DRS_POINTSIZE_MAX }, - { "D3DRS_PATCHEDGESTYLE" /*= 124*/, 3424, xtDWORD, 0, XTL::D3DRS_PATCHEDGESTYLE }, // D3DPATCHEDGESTYLE? + { "D3DRS_AMBIENT" /*= 115*/, 3424, xtD3DCOLOR, NV2A_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_R, D3DRS_AMBIENT }, // ..NV2A_LIGHT_MODEL_FRONT_AMBIENT_B + NV2A_MATERIAL_FACTOR_FRONT_R..NV2A_MATERIAL_FACTOR_FRONT_A Was NV2A_LIGHT_MODEL_FRONT_AMBIENT_R + { "D3DRS_POINTSIZE" /*= 116*/, 3424, xtFloat, NV2A_POINT_PARAMETER(0), D3DRS_POINTSIZE }, + { "D3DRS_POINTSIZE_MIN" /*= 117*/, 3424, xtFloat, 0, D3DRS_POINTSIZE_MIN }, + { "D3DRS_POINTSPRITEENABLE" /*= 118*/, 3424, xtBOOL, NV2A_POINT_SMOOTH_ENABLE, D3DRS_POINTSPRITEENABLE }, + { "D3DRS_POINTSCALEENABLE" /*= 119*/, 3424, xtBOOL, NV2A_POINT_PARAMETERS_ENABLE, D3DRS_POINTSCALEENABLE }, + { "D3DRS_POINTSCALE_A" /*= 120*/, 3424, xtFloat, 0, D3DRS_POINTSCALE_A }, + { "D3DRS_POINTSCALE_B" /*= 121*/, 3424, xtFloat, 0, D3DRS_POINTSCALE_B }, + { "D3DRS_POINTSCALE_C" /*= 122*/, 3424, xtFloat, 0, D3DRS_POINTSCALE_C }, + { "D3DRS_POINTSIZE_MAX" /*= 123*/, 3424, xtFloat, 0, D3DRS_POINTSIZE_MAX }, + { "D3DRS_PATCHEDGESTYLE" /*= 124*/, 3424, xtDWORD, 0, D3DRS_PATCHEDGESTYLE }, // D3DPATCHEDGESTYLE? { "D3DRS_PATCHSEGMENTS" /*= 125*/, 3424, xtDWORD, 0 }, // nsp. // D3DRS_PATCHSEGMENTS exists in Direct3D 8, but not in 9 !? // TODO -oDxbx : Is X_D3DRS_SWAPFILTER really a xtD3DMULTISAMPLE_TYPE? { "D3DRS_SWAPFILTER" /*= 126*/, 4039, xtD3DMULTISAMPLE_TYPE, 0, D3DRS_NONE, "D3DTEXF_LINEAR etc. filter to use for Swap" }, // nsp. @@ -1481,23 +1472,23 @@ const RenderStateInfo DxbxRenderStateInfo[] = { { "D3DRS_DEFERRED_UNUSED1" /*= 135*/, 4627, xtDWORD, 0 }, // End of "deferred" render states, continuing with "complex" render states : { "D3DRS_PSTEXTUREMODES" /*= 136*/, 3424, xtDWORD, 0 }, - { "D3DRS_VERTEXBLEND" /*= 137*/, 3424, xtD3DVERTEXBLENDFLAGS, NV2A_SKIN_MODE, XTL::D3DRS_VERTEXBLEND }, - { "D3DRS_FOGCOLOR" /*= 138*/, 3424, xtD3DCOLOR, NV2A_FOG_COLOR, XTL::D3DRS_FOGCOLOR }, // SwapRgb - { "D3DRS_FILLMODE" /*= 139*/, 3424, xtD3DFILLMODE, NV2A_POLYGON_MODE_FRONT, XTL::D3DRS_FILLMODE }, + { "D3DRS_VERTEXBLEND" /*= 137*/, 3424, xtD3DVERTEXBLENDFLAGS, NV2A_SKIN_MODE, D3DRS_VERTEXBLEND }, + { "D3DRS_FOGCOLOR" /*= 138*/, 3424, xtD3DCOLOR, NV2A_FOG_COLOR, D3DRS_FOGCOLOR }, // SwapRgb + { "D3DRS_FILLMODE" /*= 139*/, 3424, xtD3DFILLMODE, NV2A_POLYGON_MODE_FRONT, D3DRS_FILLMODE }, { "D3DRS_BACKFILLMODE" /*= 140*/, 3424, xtD3DFILLMODE, 0 }, // nsp. { "D3DRS_TWOSIDEDLIGHTING" /*= 141*/, 3424, xtBOOL, NV2A_POLYGON_MODE_BACK }, // nsp. - { "D3DRS_NORMALIZENORMALS" /*= 142*/, 3424, xtBOOL, NV2A_NORMALIZE_ENABLE, XTL::D3DRS_NORMALIZENORMALS }, - { "D3DRS_ZENABLE" /*= 143*/, 3424, xtBOOL, NV2A_DEPTH_TEST_ENABLE, XTL::D3DRS_ZENABLE }, // D3DZBUFFERTYPE? - { "D3DRS_STENCILENABLE" /*= 144*/, 3424, xtBOOL, NV2A_STENCIL_ENABLE, XTL::D3DRS_STENCILENABLE }, - { "D3DRS_STENCILFAIL" /*= 145*/, 3424, xtD3DSTENCILOP, NV2A_STENCIL_OP_FAIL, XTL::D3DRS_STENCILFAIL }, + { "D3DRS_NORMALIZENORMALS" /*= 142*/, 3424, xtBOOL, NV2A_NORMALIZE_ENABLE, D3DRS_NORMALIZENORMALS }, + { "D3DRS_ZENABLE" /*= 143*/, 3424, xtBOOL, NV2A_DEPTH_TEST_ENABLE, D3DRS_ZENABLE }, // D3DZBUFFERTYPE? + { "D3DRS_STENCILENABLE" /*= 144*/, 3424, xtBOOL, NV2A_STENCIL_ENABLE, D3DRS_STENCILENABLE }, + { "D3DRS_STENCILFAIL" /*= 145*/, 3424, xtD3DSTENCILOP, NV2A_STENCIL_OP_FAIL, D3DRS_STENCILFAIL }, { "D3DRS_FRONTFACE" /*= 146*/, 3424, xtD3DFRONT, NV2A_FRONT_FACE }, // nsp. - { "D3DRS_CULLMODE" /*= 147*/, 3424, xtD3DCULL, NV2A_CULL_FACE, XTL::D3DRS_CULLMODE }, - { "D3DRS_TEXTUREFACTOR" /*= 148*/, 3424, xtD3DCOLOR, NV2A_RC_CONSTANT_COLOR0(0), XTL::D3DRS_TEXTUREFACTOR }, - { "D3DRS_ZBIAS" /*= 149*/, 3424, xtLONG, 0, XTL::D3DRS_DEPTHBIAS }, // Was D3DRS_ZBIAS + { "D3DRS_CULLMODE" /*= 147*/, 3424, xtD3DCULL, NV2A_CULL_FACE, D3DRS_CULLMODE }, + { "D3DRS_TEXTUREFACTOR" /*= 148*/, 3424, xtD3DCOLOR, NV2A_RC_CONSTANT_COLOR0(0), D3DRS_TEXTUREFACTOR }, + { "D3DRS_ZBIAS" /*= 149*/, 3424, xtLONG, 0, D3DRS_DEPTHBIAS }, // Was D3DRS_ZBIAS { "D3DRS_LOGICOP" /*= 150*/, 3424, xtD3DLOGICOP, NV2A_COLOR_LOGIC_OP_OP }, // nsp. - { "D3DRS_EDGEANTIALIAS" /*= 151*/, 3424, xtBOOL, NV2A_LINE_SMOOTH_ENABLE, XTL::D3DRS_ANTIALIASEDLINEENABLE }, // Was D3DRS_EDGEANTIALIAS. Dxbx note : No Xbox ext. (according to Direct3D8) ! - { "D3DRS_MULTISAMPLEANTIALIAS" /*= 152*/, 3424, xtBOOL, NV2A_MULTISAMPLE_CONTROL, XTL::D3DRS_MULTISAMPLEANTIALIAS }, - { "D3DRS_MULTISAMPLEMASK" /*= 153*/, 3424, xtDWORD, NV2A_MULTISAMPLE_CONTROL, XTL::D3DRS_MULTISAMPLEMASK }, + { "D3DRS_EDGEANTIALIAS" /*= 151*/, 3424, xtBOOL, NV2A_LINE_SMOOTH_ENABLE, D3DRS_ANTIALIASEDLINEENABLE }, // Was D3DRS_EDGEANTIALIAS. Dxbx note : No Xbox ext. (according to Direct3D8) ! + { "D3DRS_MULTISAMPLEANTIALIAS" /*= 152*/, 3424, xtBOOL, NV2A_MULTISAMPLE_CONTROL, D3DRS_MULTISAMPLEANTIALIAS }, + { "D3DRS_MULTISAMPLEMASK" /*= 153*/, 3424, xtDWORD, NV2A_MULTISAMPLE_CONTROL, D3DRS_MULTISAMPLEMASK }, // { "D3DRS_MULTISAMPLETYPE" /*= 154*/, 3424, xtD3DMULTISAMPLE_TYPE, 0 }, // [-3911] \_ aliasses D3DMULTISAMPLE_TYPE { "D3DRS_MULTISAMPLEMODE" /*= 154*/, 4361, xtD3DMULTISAMPLEMODE, 0 }, // [4361+] / D3DMULTISAMPLEMODE for the backbuffer { "D3DRS_MULTISAMPLERENDERTARGETMODE" /*= 155*/, 4242, xtD3DMULTISAMPLEMODE, NV2A_RT_FORMAT }, @@ -1597,8 +1588,6 @@ uint32 Swizzle(uint32 value, uint32 max, uint32 shift) typedef uint16 TRGB16; -using namespace XTL; // for X_D3DFMT_* - // test-case: Frogger, Turok, Crazy Taxi 3 and many more bool WndMain::ReadS3TCFormatIntoBitmap(uint32 format, unsigned char *data, uint32 dataSize, int width, int height, int pitch, void*& bitmap) { @@ -1611,14 +1600,14 @@ bool WndMain::ReadS3TCFormatIntoBitmap(uint32 format, unsigned char *data, uint3 j = k = p = x = y = 0; // sanity checks - if (format != X_D3DFMT_DXT1 && format != X_D3DFMT_DXT3 && format != X_D3DFMT_DXT5) + if (format != XTL::X_D3DFMT_DXT1 && format != XTL::X_D3DFMT_DXT3 && format != XTL::X_D3DFMT_DXT5) return false; if (!(width > 0) || !(height > 0)) return false; while (j < dataSize) { - if (format != X_D3DFMT_DXT1) // Skip X_D3DFMT_DXT3 and X_D3DFMT_DXT5 alpha data (ported from Dxbx) + if (format != XTL::X_D3DFMT_DXT1) // Skip XTL::X_D3DFMT_DXT3 and XTL::X_D3DFMT_DXT5 alpha data (ported from Dxbx) j += 8; // Read two 16-bit pixels @@ -1701,7 +1690,7 @@ bool WndMain::ReadSwizzledFormatIntoBitmap(uint32 format, unsigned char *data, u TRGB32* yscanline; // sanity checks - if (format != X_D3DFMT_A8R8G8B8 && format != X_D3DFMT_X8R8G8B8) + if (format != XTL::X_D3DFMT_A8R8G8B8 && format != XTL::X_D3DFMT_X8R8G8B8) return false; if (!(width > 0) || !(height > 0)) return false; @@ -1739,7 +1728,7 @@ bool WndMain::ReadSwizzled16bitFormatIntoBitmap(uint32 format, unsigned char *da TRGB16* yscanline; // sanity checks - if (format != X_D3DFMT_R5G6B5) + if (format != XTL::X_D3DFMT_R5G6B5) return false; if (!(width > 0) || !(height > 0)) return false; diff --git a/src/core/hle/D3D8/XbConvert.h b/src/core/hle/D3D8/XbConvert.h index 8f1fd70b6..1255d2fec 100644 --- a/src/core/hle/D3D8/XbConvert.h +++ b/src/core/hle/D3D8/XbConvert.h @@ -26,6 +26,8 @@ #define XBCONVERT_H #include "core\kernel\init\CxbxKrnl.h" + +#include "core\hle\D3D8\XbD3D8Types.h" #define VERTICES_PER_TRIANGLE 3 #define VERTICES_PER_QUAD 4 @@ -66,16 +68,16 @@ extern BOOL EmuXBFormatIsRenderTarget(XTL::X_D3DFORMAT Format); extern BOOL EmuXBFormatIsDepthBuffer(XTL::X_D3DFORMAT Format); // convert from xbox to pc color formats -extern XTL::D3DFORMAT EmuXB2PC_D3DFormat(XTL::X_D3DFORMAT Format); +extern D3DFORMAT EmuXB2PC_D3DFormat(XTL::X_D3DFORMAT Format); // convert from pc to xbox color formats -extern XTL::X_D3DFORMAT EmuPC2XB_D3DFormat(XTL::D3DFORMAT Format, bool bPreferLinear = true); +extern XTL::X_D3DFORMAT EmuPC2XB_D3DFormat(D3DFORMAT Format, bool bPreferLinear = true); // convert from xbox to pc d3d lock flags extern DWORD EmuXB2PC_D3DLock(DWORD Flags); // convert from xbox to pc multisample formats -extern XTL::D3DMULTISAMPLE_TYPE EmuXB2PC_D3DMultiSampleFormat(DWORD Type); +extern D3DMULTISAMPLE_TYPE EmuXB2PC_D3DMultiSampleFormat(DWORD Type); /** // convert from pc to xbox texture transform state types (unnecessary so far) @@ -90,10 +92,8 @@ else //*/ // convert from xbox to pc texture transform state types -inline XTL::D3DTRANSFORMSTATETYPE EmuXB2PC_D3DTS(XTL::D3DTRANSFORMSTATETYPE State) +inline D3DTRANSFORMSTATETYPE EmuXB2PC_D3DTS(D3DTRANSFORMSTATETYPE State) { - using namespace XTL; - // Handle Xbox -> D3D State mapping switch (State) { case 0: return (D3DTRANSFORMSTATETYPE)D3DTS_VIEW; @@ -118,10 +118,8 @@ inline XTL::D3DTRANSFORMSTATETYPE EmuXB2PC_D3DTS(XTL::D3DTRANSFORMSTATETYPE Stat } // convert from xbox to pc blend ops -inline XTL::D3DBLENDOP EmuXB2PC_D3DBLENDOP(XTL::X_D3DBLENDOP Value) +inline D3DBLENDOP EmuXB2PC_D3DBLENDOP(XTL::X_D3DBLENDOP Value) { - using namespace XTL; - switch(Value) { case 0x8006: return D3DBLENDOP_ADD; @@ -145,10 +143,8 @@ inline XTL::D3DBLENDOP EmuXB2PC_D3DBLENDOP(XTL::X_D3DBLENDOP Value) } // convert from xbox to pc blend types -inline XTL::D3DBLEND EmuXB2PC_D3DBLEND(XTL::X_D3DBLEND Value) +inline D3DBLEND EmuXB2PC_D3DBLEND(XTL::X_D3DBLEND Value) { - using namespace XTL; - switch (Value) { case 0x000: return D3DBLEND_ZERO; case 0x001: return D3DBLEND_ONE; @@ -172,10 +168,8 @@ inline XTL::D3DBLEND EmuXB2PC_D3DBLEND(XTL::X_D3DBLEND Value) } // convert from xbox to pc comparison functions -inline XTL::D3DCMPFUNC EmuXB2PC_D3DCMPFUNC(XTL::X_D3DCMPFUNC Value) +inline D3DCMPFUNC EmuXB2PC_D3DCMPFUNC(XTL::X_D3DCMPFUNC Value) { - using namespace XTL; - switch (Value) { case 0x200: return D3DCMP_NEVER; case 0x201: return D3DCMP_LESS; @@ -192,10 +186,8 @@ inline XTL::D3DCMPFUNC EmuXB2PC_D3DCMPFUNC(XTL::X_D3DCMPFUNC Value) } // convert from xbox to pc fill modes -inline XTL::D3DFILLMODE EmuXB2PC_D3DFILLMODE(XTL::X_D3DFILLMODE Value) +inline D3DFILLMODE EmuXB2PC_D3DFILLMODE(XTL::X_D3DFILLMODE Value) { - using namespace XTL; - switch (Value) { case 0x1B00: return D3DFILL_POINT; case 0x1B01: return D3DFILL_WIREFRAME; @@ -207,10 +199,8 @@ inline XTL::D3DFILLMODE EmuXB2PC_D3DFILLMODE(XTL::X_D3DFILLMODE Value) } // convert from xbox to pc shade modes -inline XTL::D3DSHADEMODE EmuXB2PC_D3DSHADEMODE(XTL::X_D3DSHADEMODE Value) +inline D3DSHADEMODE EmuXB2PC_D3DSHADEMODE(XTL::X_D3DSHADEMODE Value) { - using namespace XTL; - switch (Value) { case 0x1D00: return D3DSHADE_FLAT; case 0x1D01: return D3DSHADE_GOURAUD; @@ -221,10 +211,8 @@ inline XTL::D3DSHADEMODE EmuXB2PC_D3DSHADEMODE(XTL::X_D3DSHADEMODE Value) } // convert from xbox to pc stencilop modes -inline XTL::D3DSTENCILOP EmuXB2PC_D3DSTENCILOP(XTL::X_D3DSTENCILOP Value) +inline D3DSTENCILOP EmuXB2PC_D3DSTENCILOP(XTL::X_D3DSTENCILOP Value) { - using namespace XTL; - switch(Value) { case 0x1e00: return D3DSTENCILOP_KEEP; @@ -269,13 +257,13 @@ inline int EmuD3DPrimitive2VertexCount(XTL::X_D3DPRIMITIVETYPE PrimitiveType, in } // conversion table for xbox->pc primitive types -extern XTL::D3DPRIMITIVETYPE EmuPrimitiveTypeLookup[]; +extern D3DPRIMITIVETYPE EmuPrimitiveTypeLookup[]; // convert xbox->pc primitive type -inline XTL::D3DPRIMITIVETYPE EmuXB2PC_D3DPrimitiveType(XTL::X_D3DPRIMITIVETYPE PrimitiveType) +inline D3DPRIMITIVETYPE EmuXB2PC_D3DPrimitiveType(XTL::X_D3DPRIMITIVETYPE PrimitiveType) { if((DWORD)PrimitiveType == 0x7FFFFFFF) - return XTL::D3DPT_FORCE_DWORD; + return D3DPT_FORCE_DWORD; return EmuPrimitiveTypeLookup[PrimitiveType]; } @@ -1824,12 +1812,12 @@ typedef struct _RenderStateInfo { WORD V; // The XDK version since which a render state was introduced (using the 5911 declarations as a base). TXBType T = xt_Unknown; // The Xbox data type. Defaults to xt_Unknown. XTL::NV2AMETHOD M; // The related push buffer method. Not always a 1-to-1 mapping. Needs push-buffer interpretation & conversion code. - XTL::D3DRENDERSTATETYPE PC = (XTL::D3DRENDERSTATETYPE)0; // Map XBox to PC render state + D3DRENDERSTATETYPE PC = (D3DRENDERSTATETYPE)0; // Map XBox to PC render state char *N; // XDK notes. Defaults to ''. } RenderStateInfo; -#define D3DRS_NONE ((XTL::D3DRENDERSTATETYPE)0) +#define D3DRS_NONE ((D3DRENDERSTATETYPE)0) extern const RenderStateInfo DxbxRenderStateInfo[]; diff --git a/src/core/hle/D3D8/XbD3D8Logging.cpp b/src/core/hle/D3D8/XbD3D8Logging.cpp index 23ca39c63..71529186f 100644 --- a/src/core/hle/D3D8/XbD3D8Logging.cpp +++ b/src/core/hle/D3D8/XbD3D8Logging.cpp @@ -28,10 +28,6 @@ #include "Logging.h" #include "XbD3D8Logging.h" -// prevent name collisions -namespace XTL -{ - // // Host D3D LOGRENDER(Type) implementations // @@ -560,6 +556,9 @@ LOGRENDER(RECT) } +// prevent name collisions +namespace XTL { + // // Cxbx D3D LOGRENDER(Type) implementations // @@ -770,4 +769,4 @@ LOGRENDER(X_D3DPixelContainer) LOGRENDER_MEMBER_TYPE(X_D3DRESOURCE_SIZE, Size); } -}; // end of namespace XTL +} // end of namespace XTL diff --git a/src/core/hle/D3D8/XbD3D8Logging.h b/src/core/hle/D3D8/XbD3D8Logging.h index 62866a9b5..b1f8590cd 100644 --- a/src/core/hle/D3D8/XbD3D8Logging.h +++ b/src/core/hle/D3D8/XbD3D8Logging.h @@ -25,14 +25,7 @@ #ifndef _EMU_D3D8_LOGGING_H #define _EMU_D3D8_LOGGING_H -#pragma once - -//#include // for std::ostream -//#include "EmuXTL.h" #include "Logging.h" - -namespace XTL -{ #include "XbD3D8Types.h" // Additional types, exclusively for logging (not really enums) : @@ -60,11 +53,15 @@ enum D3DVTXPCAPS; enum D3DDEVCAPS2; enum D3DDTCAPS; +namespace XTL { + enum X_D3DUSAGE; enum X_D3DCOMMON_TYPE; enum X_D3DRESOURCE_COMMON; enum X_D3DRESOURCE_FORMAT; enum X_D3DRESOURCE_SIZE; + +} // end of namespace XTL // // Headers for rendering host D3D enum types : @@ -109,6 +106,8 @@ LOGRENDER_HEADER(D3DPSHADERCAPS2_0) LOGRENDER_HEADER(D3DCAPS) LOGRENDER_HEADER(D3DLOCKED_RECT) LOGRENDER_HEADER(RECT) + +namespace XTL { // // Headers for rendering Xbox D3D enum types : @@ -148,6 +147,6 @@ LOGRENDER_HEADER(X_D3DDISPLAYMODE) LOGRENDER_HEADER(X_D3DResource) LOGRENDER_HEADER(X_D3DPixelContainer) -}; // end of namespace XTL +} // end of namespace XTL #endif _EMU_D3D8_LOGGING_H diff --git a/src/core/hle/D3D8/XbD3D8Types.h b/src/core/hle/D3D8/XbD3D8Types.h index 12d11f4b6..16bcd919a 100644 --- a/src/core/hle/D3D8/XbD3D8Types.h +++ b/src/core/hle/D3D8/XbD3D8Types.h @@ -53,37 +53,39 @@ #define D3DENUM_NO_WHQL_LEVEL 0 // default in Direct3D 9 // Alias all host Direct3D 9 symbols to generic symbols -#define DXGetErrorString DXGetErrorString9A -#define DXGetErrorDescription DXGetErrorDescription9A -#define Direct3DCreate Direct3DCreate9 -#define D3DXAssembleShader D3DXAssembleShader +#define DXGetErrorString DXGetErrorString9A +#define DXGetErrorDescription DXGetErrorDescription9A +#define Direct3DCreate Direct3DCreate9 +#define D3DXAssembleShader D3DXAssembleShader #define FullScreen_PresentationInterval PresentationInterval // a field in D3DPRESENT_PARAMETERS -#define D3DLockData void -#define PixelShaderConstantType float +#define D3DLockData void +#define PixelShaderConstantType float -#define D3DADAPTER_IDENTIFIER D3DADAPTER_IDENTIFIER9 -#define D3DCAPS D3DCAPS9 -#define D3DVERTEXELEMENT D3DVERTEXELEMENT9 -#define D3DVIEWPORT D3DVIEWPORT9 +#define D3DADAPTER_IDENTIFIER D3DADAPTER_IDENTIFIER9 +#define D3DCAPS D3DCAPS9 +#define D3DVERTEXELEMENT D3DVERTEXELEMENT9 +#define D3DVIEWPORT D3DVIEWPORT9 -#define IDirect3D IDirect3D9 -#define IDirect3DDevice IDirect3DDevice9 -//#define IDirect3DStateBlock IDirect3DStateBlock9 -#define IDirect3DVertexDeclaration IDirect3DVertexDeclaration9 -#define IDirect3DVertexShader IDirect3DVertexShader9 -#define IDirect3DPixelShader IDirect3DPixelShader9 -#define IDirect3DResource IDirect3DResource9 -#define IDirect3DBaseTexture IDirect3DBaseTexture9 -#define IDirect3DTexture IDirect3DTexture9 -#define IDirect3DVolumeTexture IDirect3DVolumeTexture9 -#define IDirect3DCubeTexture IDirect3DCubeTexture9 -#define IDirect3DVertexBuffer IDirect3DVertexBuffer9 -#define IDirect3DIndexBuffer IDirect3DIndexBuffer9 -#define IDirect3DSurface IDirect3DSurface9 -#define IDirect3DVolume IDirect3DVolume9 -#define IDirect3DSwapChain IDirect3DSwapChain9 -//#define IDirect3DQuery IDirect3DQuery9 +#define IDirect3D IDirect3D9 +#define IDirect3DDevice IDirect3DDevice9 +#define IDirect3DStateBlock IDirect3DStateBlock9 // unused +#define IDirect3DVertexDeclaration IDirect3DVertexDeclaration9 +#define IDirect3DVertexShader IDirect3DVertexShader9 +#define IDirect3DPixelShader IDirect3DPixelShader9 +#define IDirect3DResource IDirect3DResource9 +#define IDirect3DBaseTexture IDirect3DBaseTexture9 +#define IDirect3DTexture IDirect3DTexture9 +#define IDirect3DVolumeTexture IDirect3DVolumeTexture9 +#define IDirect3DCubeTexture IDirect3DCubeTexture9 +#define IDirect3DVertexBuffer IDirect3DVertexBuffer9 +#define IDirect3DIndexBuffer IDirect3DIndexBuffer9 +#define IDirect3DSurface IDirect3DSurface9 +#define IDirect3DVolume IDirect3DVolume9 +#define IDirect3DSwapChain IDirect3DSwapChain9 +#define IDirect3DQuery IDirect3DQuery9 // unused +namespace XTL { + // TODO : Declare these aliasses as Xbox type typedef D3DLIGHT9 X_D3DLIGHT8; typedef D3DMATERIAL9 X_D3DMATERIAL8; @@ -100,7 +102,6 @@ typedef DWORD X_D3DMULTISAMPLE_TYPE; typedef DWORD X_D3DSHADEMODE; typedef DWORD X_D3DSTENCILOP; typedef DWORD X_D3DTEXTURESTAGESTATETYPE; -typedef PVOID X_D3DCALLBACK; typedef enum _X_D3DCULL { @@ -622,7 +623,7 @@ typedef struct _D3DVBLANKDATA DWORD Swap; DWORD Flags; } -D3DVBLANKDATA; +X_D3DVBLANKDATA; typedef struct _D3DSWAPDATA { @@ -632,16 +633,16 @@ typedef struct _D3DSWAPDATA DWORD TimeUntilSwapVBlank; DWORD TimeBetweenSwapVBlanks; } -D3DSWAPDATA; +X_D3DSWAPDATA; // D3DVBLANKCALLBACK -typedef void (__cdecl * D3DVBLANKCALLBACK)(D3DVBLANKDATA *pData); +typedef void (__cdecl * X_D3DVBLANKCALLBACK)(X_D3DVBLANKDATA *pData); // D3DSWAPCALLBACK -typedef void (__cdecl * D3DSWAPCALLBACK)(D3DSWAPDATA *pData); +typedef void (__cdecl * X_D3DSWAPCALLBACK)(X_D3DSWAPDATA *pData); // D3DCALLBACK -typedef void (__cdecl * D3DCALLBACK)(DWORD Context); +typedef void (__cdecl * X_D3DCALLBACK)(DWORD Context); // X_D3DRENDERSTATETYPE values typedef enum _X_D3DRENDERSTATETYPE { @@ -1207,4 +1208,6 @@ typedef DWORD NV2AMETHOD; // Host vertex shader counts #define CXBX_D3DVS_CONSTREG_VERTEXDATA4F_BASE (X_D3DVS_CONSTREG_COUNT + 1) +} // end of namespace XTL + #endif diff --git a/src/core/hle/D3D8/XbPixelShader.cpp b/src/core/hle/D3D8/XbPixelShader.cpp index f28decd10..13c9a4a9d 100644 --- a/src/core/hle/D3D8/XbPixelShader.cpp +++ b/src/core/hle/D3D8/XbPixelShader.cpp @@ -53,38 +53,24 @@ - Alternatively, translate to HLSL and let D3DXCompileShader/D3DCompile figure it out */ -// ****************************************************************** -// * prevent name collisions -// ****************************************************************** -//namespace xboxkrnl -//{ -// #include -//}; - #define LOG_PREFIX CXBXR_MODULE::PXSH #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" -#include "core\kernel\support\EmuXTL.h" // X_PSH_COMBINECOUNT - +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For g_pD3DDevice, g_D3DActivePixelShader #include "core\hle\D3D8\XbPixelShader.h" #include "core\hle\D3D8\XbState.h" // For CXBX_D3DRS_UNSUPPORTED #include "core\kernel\init\CxbxKrnl.h" // For CxbxKrnlCleanup() #include // assert() - #include #include - #define DbgPshPrintf \ LOG_CHECK_ENABLED(LOG_LEVEL::DEBUG) \ if(g_bPrintfOn) printf -//#include "EmuD3DPixelShader.h" - /*---------------------------------------------------------------------------*/ /* Texture configuration - The following members of the D3DPixelShaderDef */ /* structure define the addressing modes of each of the four texture stages:*/ @@ -823,7 +809,7 @@ typedef struct _PSH_IMD_ARGUMENT { void SetRegister(PSH_ARGUMENT_TYPE aRegType, int16_t aAddress, DWORD aMask); bool HasModifier(PSH_ARG_MODIFIER modifier); bool SetScaleConstRegister(float factor, const PSH_RECOMPILED_SHADER& pRecompiled); - bool SetScaleBemLumRegister(XTL::D3DTEXTURESTAGESTATETYPE factor, int stage, const PSH_RECOMPILED_SHADER& pRecompiled); + bool SetScaleBemLumRegister(D3DTEXTURESTAGESTATETYPE factor, int stage, const PSH_RECOMPILED_SHADER& pRecompiled); std::string ToString(); bool Decode(const DWORD Value, DWORD aMask, TArgumentType ArgumentType); void Invert(); @@ -916,8 +902,8 @@ struct PSH_XBOX_SHADER { bool InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPSDef, int Stage, PSH_OPCODE opcode, std::vector& InsertIns, int& InsertPos); bool MoveRemovableParametersRight(); void ConvertXboxOpcodesToNative(XTL::X_D3DPIXELSHADERDEF *pPSDef); - void _SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, XTL::D3DCOLOR ConstColor); - void _SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, XTL::D3DCOLORVALUE ConstColor); + void _SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, D3DCOLOR ConstColor); + void _SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, D3DCOLORVALUE ConstColor); int _MapConstant(int ConstNr, bool *NativeConstInUse); int _HandleConst(int XboxConst, /*var OUT*/PSH_RECOMPILED_SHADER *Recompiled, bool *NativeConstInUse, bool *EmittedNewConstant); bool ConvertConstantsToNative(XTL::X_D3DPIXELSHADERDEF *pPSDef, /*var OUT*/PSH_RECOMPILED_SHADER *Recompiled); @@ -1354,7 +1340,7 @@ bool PSH_IMD_ARGUMENT::SetScaleConstRegister(float factor, const PSH_RECOMPILED_ return result; } -bool PSH_IMD_ARGUMENT::SetScaleBemLumRegister(XTL::D3DTEXTURESTAGESTATETYPE factor, int stage, const PSH_RECOMPILED_SHADER& pRecompiled) +bool PSH_IMD_ARGUMENT::SetScaleBemLumRegister(D3DTEXTURESTAGESTATETYPE factor, int stage, const PSH_RECOMPILED_SHADER& pRecompiled) { bool result = false; @@ -1367,42 +1353,42 @@ bool PSH_IMD_ARGUMENT::SetScaleBemLumRegister(XTL::D3DTEXTURESTAGESTATETYPE fact switch (factor) { - case XTL::D3DTSS_BUMPENVMAT00: + case D3DTSS_BUMPENVMAT00: { address = mappedConstant0; mask = MASK_R; result = true; break; } - case XTL::D3DTSS_BUMPENVMAT01: + case D3DTSS_BUMPENVMAT01: { address = mappedConstant0; mask = MASK_G; result = true; break; } - case XTL::D3DTSS_BUMPENVMAT11: + case D3DTSS_BUMPENVMAT11: { address = mappedConstant0; mask = MASK_B; result = true; break; } - case XTL::D3DTSS_BUMPENVMAT10: + case D3DTSS_BUMPENVMAT10: { address = mappedConstant0; mask = MASK_A; result = true; break; } - case XTL::D3DTSS_BUMPENVLSCALE: + case D3DTSS_BUMPENVLSCALE: { address = mappedConstant1; mask = MASK_R; result = true; break; } - case XTL::D3DTSS_BUMPENVLOFFSET: + case D3DTSS_BUMPENVLOFFSET: { address = mappedConstant1; mask = MASK_G; @@ -2934,7 +2920,7 @@ bool PSH_XBOX_SHADER::InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPS // and include the texture formats in the shader hash, somehow. bool bias = false; auto biasModifier = (1 << ARGMOD_SCALE_BX2); - auto pXboxTexture = XTL::EmuD3DActiveTexture[inputStage]; + auto pXboxTexture = EmuD3DActiveTexture[inputStage]; if (pXboxTexture != nullptr) { extern XTL::X_D3DFORMAT GetXboxPixelContainerFormat(const XTL::X_D3DPixelContainer *pXboxPixelContainer); // TODO : Move to XTL-independent header file @@ -2959,7 +2945,7 @@ bool PSH_XBOX_SHADER::InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPS Ins.Initialize(PO_MAD); Ins.Output[0].SetRegister(PARAM_R, 1, MASK_R); - Ins.Parameters[0].SetScaleBemLumRegister(XTL::D3DTSS_BUMPENVMAT00, Stage, Recompiled); + Ins.Parameters[0].SetScaleBemLumRegister(D3DTSS_BUMPENVMAT00, Stage, Recompiled); Ins.Parameters[1].SetRegister(PARAM_R, PSH_XBOX_MAX_R_REGISTER_COUNT + inputStage, MASK_R); if (bias) { @@ -2970,7 +2956,7 @@ bool PSH_XBOX_SHADER::InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPS InsertIns.emplace_back(Ins); Ins.Initialize(PO_MAD); Ins.Output[0].SetRegister(PARAM_R, 1, MASK_R); - Ins.Parameters[0].SetScaleBemLumRegister(XTL::D3DTSS_BUMPENVMAT10, Stage, Recompiled); + Ins.Parameters[0].SetScaleBemLumRegister(D3DTSS_BUMPENVMAT10, Stage, Recompiled); Ins.Parameters[1].SetRegister(PARAM_R, PSH_XBOX_MAX_R_REGISTER_COUNT + inputStage, MASK_G); if (bias) { Ins.Parameters[1].Modifiers = biasModifier; @@ -2980,7 +2966,7 @@ bool PSH_XBOX_SHADER::InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPS // Ins.Initialize(PO_MAD); Ins.Output[0].SetRegister(PARAM_R, 1, MASK_G); - Ins.Parameters[0].SetScaleBemLumRegister(XTL::D3DTSS_BUMPENVMAT01, Stage, Recompiled); + Ins.Parameters[0].SetScaleBemLumRegister(D3DTSS_BUMPENVMAT01, Stage, Recompiled); Ins.Parameters[1].SetRegister(PARAM_R, PSH_XBOX_MAX_R_REGISTER_COUNT + inputStage, MASK_R); if (bias) { Ins.Parameters[1].Modifiers = biasModifier; @@ -2989,7 +2975,7 @@ bool PSH_XBOX_SHADER::InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPS InsertIns.emplace_back(Ins); Ins.Initialize(PO_MAD); Ins.Output[0].SetRegister(PARAM_R, 1, MASK_G); - Ins.Parameters[0].SetScaleBemLumRegister(XTL::D3DTSS_BUMPENVMAT11, Stage, Recompiled); + Ins.Parameters[0].SetScaleBemLumRegister(D3DTSS_BUMPENVMAT11, Stage, Recompiled); Ins.Parameters[1].SetRegister(PARAM_R, PSH_XBOX_MAX_R_REGISTER_COUNT + inputStage, MASK_G); if (bias) { Ins.Parameters[1].Modifiers = biasModifier; @@ -3010,9 +2996,9 @@ bool PSH_XBOX_SHADER::InsertTextureModeInstruction(XTL::X_D3DPIXELSHADERDEF *pPS // Ins.Initialize(PO_MAD); Ins.Output[0].SetRegister(PARAM_R, 1, MASK_B); - Ins.Parameters[0].SetScaleBemLumRegister(XTL::D3DTSS_BUMPENVLSCALE, Stage, Recompiled); + Ins.Parameters[0].SetScaleBemLumRegister(D3DTSS_BUMPENVLSCALE, Stage, Recompiled); Ins.Parameters[1].SetRegister(PARAM_R, PSH_XBOX_MAX_R_REGISTER_COUNT + inputStage, MASK_B); - Ins.Parameters[2].SetScaleBemLumRegister(XTL::D3DTSS_BUMPENVLOFFSET, Stage, Recompiled); + Ins.Parameters[2].SetScaleBemLumRegister(D3DTSS_BUMPENVLOFFSET, Stage, Recompiled); InsertIns.emplace_back(Ins); // Ins.Initialize(PO_MUL); @@ -3411,9 +3397,9 @@ bool PSH_XBOX_SHADER::MoveRemovableParametersRight() //bool PSH_XBOX_SHADER::ConvertConstantsToNative(XTL::X_D3DPIXELSHADERDEF *pPSDef, /*var OUT*/PSH_RECOMPILED_SHADER *Recompiled) - void PSH_XBOX_SHADER::_SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, XTL::D3DCOLOR ConstColor) + void PSH_XBOX_SHADER::_SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, D3DCOLOR ConstColor) { - XTL::D3DXCOLOR XColor; + D3DXCOLOR XColor; // Colors are defined in RGBA format, and range 0.0 - 1.0 (negative values // can be obtained by supplying PS_INPUTMAPPING_SIGNED_NEGATE to the combiner @@ -3425,7 +3411,7 @@ bool PSH_XBOX_SHADER::MoveRemovableParametersRight() NewIns.Parameters[3].SetConstValue(XColor.a); } - void PSH_XBOX_SHADER::_SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, XTL::D3DCOLORVALUE ConstColor) + void PSH_XBOX_SHADER::_SetColor(/*var OUT*/PSH_INTERMEDIATE_FORMAT &NewIns, D3DCOLORVALUE ConstColor) { NewIns.Parameters[0].SetConstValue(ConstColor.r); NewIns.Parameters[1].SetConstValue(ConstColor.g); @@ -5876,7 +5862,7 @@ PSH_RECOMPILED_SHADER XTL_EmuRecompilePshDef(XTL::X_D3DPIXELSHADERDEF *pPSDef) { uint32_t PSVersion = D3DPS_VERSION(2, 0); // Use pixel shader model 2.0 by default - extern XTL::D3DCAPS g_D3DCaps; + extern D3DCAPS g_D3DCaps; if (g_D3DCaps.PixelShaderVersion > D3DPS_VERSION(3, 0)) { // TODO : Test PSVersion = D3DPS_VERSION(3, 0); // g_D3DCaps.PixelShaderVersion; @@ -5902,8 +5888,8 @@ static const "mov oC0, r0\n"; std::string ConvertedPixelShaderStr; DWORD hRet; - XTL::LPD3DXBUFFER pShader; - XTL::LPD3DXBUFFER pErrors; + LPD3DXBUFFER pShader; + LPD3DXBUFFER pErrors; DWORD *pFunction; // Attempt to recompile PixelShader @@ -5941,7 +5927,7 @@ static const if (hRet != D3D_OK) { EmuLog(LOG_LEVEL::WARNING, "Could not create pixel shader"); EmuLog(LOG_LEVEL::WARNING, std::string((char*)pErrors->GetBufferPointer(), pErrors->GetBufferSize()).c_str()); - XTL::CxbxKrnlCleanup("Cannot fall back to the most simple pixel shader!"); + CxbxKrnlCleanup("Cannot fall back to the most simple pixel shader!"); } EmuLog(LOG_LEVEL::WARNING, "We're lying about the creation of a pixel shader!"); @@ -5955,7 +5941,7 @@ static const hRet = g_pD3DDevice->CreatePixelShader ( pFunction, - (XTL::IDirect3DPixelShader**)(&(Result.ConvertedHandle)) //fixme + (IDirect3DPixelShader**)(&(Result.ConvertedHandle)) //fixme ); if (hRet != D3D_OK) { @@ -5989,16 +5975,14 @@ DWORD TemporaryPixelShaderRenderStates[XTL::X_D3DRS_PSTEXTUREMODES + 1]; VOID DxbxUpdateActivePixelShader() // NOPATCH { - using namespace XTL; // Temporary, not for actual XTL symbols, but for those that are erroneously contained herein (like everything from ddraw.h) - XTL::X_D3DPIXELSHADERDEF *pPSDef; PPSH_RECOMPILED_SHADER RecompiledPixelShader; DWORD ConvertedPixelShaderHandle; DWORD CurrentPixelShader; int i; DWORD Register_; - XTL::D3DCOLOR dwColor; - XTL::D3DXCOLOR fColor; + D3DCOLOR dwColor; + D3DXCOLOR fColor; HRESULT Result = D3D_OK; @@ -6066,10 +6050,10 @@ VOID DxbxUpdateActivePixelShader() // NOPATCH // switch (psTextureModes[i]) // { // case PS_TEXTUREMODES_BUMPENVMAP: - // g_pD3DDevice->SetTextureStageState(i, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BUMPENVMAP); + // g_pD3DDevice->SetTextureStageState(i, D3DTSS_COLOROP, D3DTOP_BUMPENVMAP); // break; // case PS_TEXTUREMODES_BUMPENVMAP_LUM: - // g_pD3DDevice->SetTextureStageState(i, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BUMPENVMAPLUMINANCE); + // g_pD3DDevice->SetTextureStageState(i, D3DTSS_COLOROP, D3DTOP_BUMPENVMAPLUMINANCE); // break; // default: // break; @@ -7190,7 +7174,6 @@ inline void GetOutputFlags } case PS_COMBINEROUTPUT_SHIFTLEFT_1_BIAS: // 0x18L { - using namespace XTL; LOG_TEST_CASE("PS_COMBINEROUTPUT_SHIFTLEFT_1_BIAS"); printf("PS_COMBINEROUTPUT_SHIFTLEFT_1_BIAS"); // y = (x - 0.5)*2 @@ -7206,7 +7189,6 @@ inline void GetOutputFlags } case PS_COMBINEROUTPUT_SHIFTLEFT_2: // 0x20L { - using namespace XTL; LOG_TEST_CASE("PS_COMBINEROUTPUT_SHIFTLEFT_2"); printf("PS_COMBINEROUTPUT_SHIFTLEFT_2"); // y = x*4 strcpy(szInstMod, "_x4"); @@ -7215,7 +7197,6 @@ inline void GetOutputFlags // case PS_COMBINEROUTPUT_SHIFTLEFT_2_BIAS: // 0x28L, // y = (x - 0.5)*4 case PS_COMBINEROUTPUT_SHIFTRIGHT_1: // 0x30L { - using namespace XTL; LOG_TEST_CASE("PS_COMBINEROUTPUT_SHIFTRIGHT_1"); printf("PS_COMBINEROUTPUT_SHIFTRIGHT_1"); // y = x/2 strcpy(szInstMod, "_d2"); diff --git a/src/core/hle/D3D8/XbPixelShader.h b/src/core/hle/D3D8/XbPixelShader.h index 267aff304..c0099f434 100644 --- a/src/core/hle/D3D8/XbPixelShader.h +++ b/src/core/hle/D3D8/XbPixelShader.h @@ -25,9 +25,9 @@ #ifndef XBPIXELSHADER_H #define XBPIXELSHADER_H -#pragma once - -#include "Cxbx.h" +#include "Cxbx.h" + +#include "core\hle\D3D8\XbD3D8Types.h" // dump pixel shader definition to file void DumpPixelShaderDefToFile( XTL::X_D3DPIXELSHADERDEF* pPSDef, const char* pszCode ); diff --git a/src/core/hle/D3D8/XbPushBuffer.cpp b/src/core/hle/D3D8/XbPushBuffer.cpp index 5e0c9a548..437835780 100644 --- a/src/core/hle/D3D8/XbPushBuffer.cpp +++ b/src/core/hle/D3D8/XbPushBuffer.cpp @@ -30,11 +30,9 @@ #include // For assert() #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuXTL.h" -namespace XTL { - #include "core\hle\D3D8\XbD3D8Types.h" // For X_D3DFORMAT -} -#include "core\hle\D3D8\ResourceTracker.h" +#include "core\hle\D3D8\XbD3D8Types.h" // For X_D3DFORMAT +#include "core\hle\D3D8\ResourceTracker.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For g_Xbox_VertexShader_Handle #include "core\hle\D3D8\XbPushBuffer.h" #include "core\hle\D3D8\XbState.h" // For CxbxUpdateNativeD3DResources, etc #include "core\hle\D3D8\XbConvert.h" @@ -102,11 +100,11 @@ UINT DxbxFVFToVertexSizeInBytes(DWORD dwFVF, BOOL bIncludeTextures) } if (dwFVF & D3DFVF_DIFFUSE) { - Result += sizeof(XTL::D3DCOLOR); + Result += sizeof(D3DCOLOR); } if (dwFVF & D3DFVF_SPECULAR) { - Result += sizeof(XTL::D3DCOLOR); + Result += sizeof(D3DCOLOR); } if (bIncludeTextures) { @@ -126,8 +124,6 @@ void EmuExecutePushBuffer XTL::X_D3DFixup *pFixup ) { - using namespace XTL; - //Check whether Fixup exists or not. if (pFixup != NULL) { LOG_TEST_CASE("PushBuffer has fixups"); @@ -170,9 +166,7 @@ void EmuExecutePushBuffer DWORD CxbxGetStrideFromVertexShaderHandle(DWORD dwVertexShader) { - using namespace XTL; - - XTL::DWORD Stride = 0; + DWORD Stride = 0; if (VshHandleIsVertexShader(dwVertexShader)) { // Test-case : Crash 'n' Burn [45530014] @@ -213,8 +207,6 @@ void HLE_draw_arrays(NV2AState *d) { // PGRAPHState *pg = &d->pgraph; - using namespace XTL; - LOG_TEST_CASE("HLE_draw_arrays"); LOG_UNIMPLEMENTED(); // TODO : Implement HLE_draw_arrays @@ -224,8 +216,6 @@ void HLE_draw_inline_buffer(NV2AState *d) { // PGRAPHState *pg = &d->pgraph; - using namespace XTL; - LOG_TEST_CASE("HLE_draw_inline_buffer"); LOG_UNIMPLEMENTED(); // TODO : Implement HLE_draw_inline_buffer @@ -235,31 +225,25 @@ void HLE_draw_inline_array(NV2AState *d) { PGRAPHState *pg = &d->pgraph; - using namespace XTL; - //DWORD vertex data array, // To be used as a replacement for DrawVerticesUP, the caller needs to set the vertex format using IDirect3DDevice8::SetVertexShader before calling BeginPush. // All attributes in the vertex format must be padded DWORD multiples, and the vertex attributes must be specified in the canonical FVF ordering // (position followed by weight, normal, diffuse, and so on). // retrieve vertex shader - XTL::DWORD dwVertexShader = g_CurrentXboxVertexShaderHandle; - if (dwVertexShader == 0) { + if (g_Xbox_VertexShader_Handle == 0) { LOG_TEST_CASE("FVF Vertex Shader is null"); - dwVertexShader = -1; } - // render vertices - if (dwVertexShader != -1) { - XTL::DWORD dwVertexStride = CxbxGetStrideFromVertexShaderHandle(dwVertexShader); + else { + DWORD dwVertexStride = CxbxGetStrideFromVertexShaderHandle(g_Xbox_VertexShader_Handle); if (dwVertexStride > 0) { - XTL::UINT VertexCount = (pg->inline_array_length * sizeof(XTL::DWORD)) / dwVertexStride; + UINT VertexCount = (pg->inline_array_length * sizeof(DWORD)) / dwVertexStride; CxbxDrawContext DrawContext = {}; - DrawContext.XboxPrimitiveType = (X_D3DPRIMITIVETYPE)pg->primitive_mode; + DrawContext.XboxPrimitiveType = (XTL::X_D3DPRIMITIVETYPE)pg->primitive_mode; DrawContext.dwVertexCount = VertexCount; DrawContext.pXboxVertexStreamZeroData = pg->inline_array; DrawContext.uiXboxVertexStreamZeroStride = dwVertexStride; - DrawContext.XboxVertexShaderHandle = dwVertexShader; CxbxDrawPrimitiveUP(DrawContext); } @@ -270,15 +254,12 @@ void HLE_draw_inline_elements(NV2AState *d) { PGRAPHState *pg = &d->pgraph; - using namespace XTL; - if (IsValidCurrentShader()) { unsigned int uiIndexCount = pg->inline_elements_length; CxbxDrawContext DrawContext = {}; - DrawContext.XboxPrimitiveType = (X_D3DPRIMITIVETYPE)pg->primitive_mode; + DrawContext.XboxPrimitiveType = (XTL::X_D3DPRIMITIVETYPE)pg->primitive_mode; DrawContext.dwVertexCount = EmuD3DIndexCountToVertexCount(DrawContext.XboxPrimitiveType, uiIndexCount); - DrawContext.XboxVertexShaderHandle = g_CurrentXboxVertexShaderHandle; DrawContext.pIndexData = d->pgraph.inline_elements; // Used by GetVerticesInBuffer CxbxDrawIndexed(DrawContext); @@ -294,8 +275,6 @@ void HLE_draw_state_update(NV2AState *d) { PGRAPHState *pg = &d->pgraph; - using namespace XTL; - CxbxUpdateNativeD3DResources(); HRESULT hRet; @@ -340,8 +319,6 @@ void HLE_draw_clear(NV2AState *d) { // PGRAPHState *pg = &d->pgraph; - using namespace XTL; - CxbxUpdateNativeD3DResources(); LOG_INCOMPLETE(); // TODO : Read state from pgraph, convert to D3D (call EMUPATCH(D3DDevice_Clear)?) @@ -464,8 +441,6 @@ extern void EmuExecutePushBufferRaw uint32_t uSizeInBytes ) { - using namespace XTL; // for logging - HLE_init_pgraph_plugins(); // TODO : Move to more approriate spot // Test-case : Azurik (see https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/issues/360) @@ -501,7 +476,7 @@ extern void EmuExecutePushBufferRaw uint32_t *dma_put; // pushbuffer current end address uint32_t *dma_get; //pushbuffer current read address struct { - NV2AMETHOD mthd; // Current method + XTL::NV2AMETHOD mthd; // Current method uint32_t subc; // :3 = Current subchannel uint32_t mcnt; // :24 = Current method count bool ni; // Current command's NI (non-increasing) flag @@ -660,8 +635,6 @@ extern void EmuExecutePushBufferRaw const char *NV2AMethodToString(DWORD dwMethod) { - using namespace XTL; // for NV2A symbols - switch (dwMethod) { #define ENUM_RANGED_ToString_N(Name, Method, Pitch, N) \ diff --git a/src/core/hle/D3D8/XbState.cpp b/src/core/hle/D3D8/XbState.cpp index fc1509e6d..7684a23cc 100644 --- a/src/core/hle/D3D8/XbState.cpp +++ b/src/core/hle/D3D8/XbState.cpp @@ -28,7 +28,7 @@ #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For g_pD3DDevice #include "core\hle\D3D8\XbConvert.h" // For DxbxRenderStateInfo // deferred state lookup tables @@ -277,7 +277,7 @@ void UpdateDeferredTextureStates() } // These states match the PC counterpart IDs - g_pD3DDevice->SetSamplerState(HostStage, (XTL::D3DSAMPLERSTATETYPE)(XboxState + 1), Value); + g_pD3DDevice->SetSamplerState(HostStage, (D3DSAMPLERSTATETYPE)(XboxState + 1), Value); break; case XTL::X_D3DTSS_MAGFILTER: case XTL::X_D3DTSS_MINFILTER: case XTL::X_D3DTSS_MIPFILTER: if (Value == XTL::X_D3DTEXF_QUINCUNX) { @@ -286,16 +286,16 @@ void UpdateDeferredTextureStates() } // These states (when incremented by 2) match the PC counterpart IDs - g_pD3DDevice->SetSamplerState(HostStage, (XTL::D3DSAMPLERSTATETYPE)(XboxState + 2), Value); + g_pD3DDevice->SetSamplerState(HostStage, (D3DSAMPLERSTATETYPE)(XboxState + 2), Value); break; case XTL::X_D3DTSS_MIPMAPLODBIAS: - g_pD3DDevice->SetSamplerState(HostStage, XTL::D3DSAMP_MIPMAPLODBIAS, Value); + g_pD3DDevice->SetSamplerState(HostStage, D3DSAMP_MIPMAPLODBIAS, Value); break; case XTL::X_D3DTSS_MAXMIPLEVEL: - g_pD3DDevice->SetSamplerState(HostStage, XTL::D3DSAMP_MAXMIPLEVEL, Value); + g_pD3DDevice->SetSamplerState(HostStage, D3DSAMP_MAXMIPLEVEL, Value); break; case XTL::X_D3DTSS_MAXANISOTROPY: - g_pD3DDevice->SetSamplerState(HostStage, XTL::D3DSAMP_MAXANISOTROPY, Value); + g_pD3DDevice->SetSamplerState(HostStage, D3DSAMP_MAXANISOTROPY, Value); break; case XTL::X_D3DTSS_COLORKEYOP: // Xbox ext // Logging Disabled: Causes Dashboard to slow down massively @@ -312,82 +312,82 @@ void UpdateDeferredTextureStates() case XTL::X_D3DTSS_COLOROP: switch (TranslateXDKSpecificD3DTOP(Value)) { case XTL::X_D3DTOP_DISABLE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_DISABLE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_DISABLE); break; case XTL::X_D3DTOP_SELECTARG1: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_SELECTARG1); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_SELECTARG1); break; case XTL::X_D3DTOP_SELECTARG2: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_SELECTARG2); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_SELECTARG2); break; case XTL::X_D3DTOP_MODULATE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATE); break; case XTL::X_D3DTOP_MODULATE2X: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATE2X); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATE2X); break; case XTL::X_D3DTOP_MODULATE4X: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATE4X); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATE4X); break; case XTL::X_D3DTOP_ADD: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_ADD); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_ADD); break; case XTL::X_D3DTOP_ADDSIGNED: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_ADDSIGNED); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_ADDSIGNED); break; case XTL::X_D3DTOP_ADDSIGNED2X: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_ADDSIGNED2X); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_ADDSIGNED2X); break; case XTL::X_D3DTOP_SUBTRACT: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_SUBTRACT); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_SUBTRACT); break; case XTL::X_D3DTOP_ADDSMOOTH: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_ADDSMOOTH); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_ADDSMOOTH); break; case XTL::X_D3DTOP_BLENDDIFFUSEALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BLENDDIFFUSEALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BLENDDIFFUSEALPHA); break; case XTL::X_D3DTOP_BLENDCURRENTALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BLENDCURRENTALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BLENDCURRENTALPHA); break; case XTL::X_D3DTOP_BLENDTEXTUREALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BLENDTEXTUREALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BLENDTEXTUREALPHA); break; case XTL::X_D3DTOP_BLENDFACTORALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BLENDFACTORALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BLENDFACTORALPHA); break; case XTL::X_D3DTOP_BLENDTEXTUREALPHAPM: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BLENDTEXTUREALPHAPM); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BLENDTEXTUREALPHAPM); break; case XTL::X_D3DTOP_PREMODULATE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_PREMODULATE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_PREMODULATE); break; case XTL::X_D3DTOP_MODULATEALPHA_ADDCOLOR: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATEALPHA_ADDCOLOR); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATEALPHA_ADDCOLOR); break; case XTL::X_D3DTOP_MODULATECOLOR_ADDALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATECOLOR_ADDALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATECOLOR_ADDALPHA); break; case XTL::X_D3DTOP_MODULATEINVALPHA_ADDCOLOR: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATEINVALPHA_ADDCOLOR); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATEINVALPHA_ADDCOLOR); break; case XTL::X_D3DTOP_MODULATEINVCOLOR_ADDALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MODULATEINVCOLOR_ADDALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MODULATEINVCOLOR_ADDALPHA); break; case XTL::X_D3DTOP_DOTPRODUCT3: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_DOTPRODUCT3); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3); break; case XTL::X_D3DTOP_MULTIPLYADD: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_MULTIPLYADD); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_MULTIPLYADD); break; case XTL::X_D3DTOP_LERP: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_LERP); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_LERP); break; case XTL::X_D3DTOP_BUMPENVMAP: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BUMPENVMAP); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BUMPENVMAP); break; case XTL::X_D3DTOP_BUMPENVMAPLUMINANCE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLOROP, XTL::D3DTOP_BUMPENVMAPLUMINANCE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLOROP, D3DTOP_BUMPENVMAPLUMINANCE); break; default: EmuLog(LOG_LEVEL::WARNING, "Unsupported D3DTSS_COLOROP Value (%d)", Value); @@ -395,95 +395,95 @@ void UpdateDeferredTextureStates() } break; case XTL::X_D3DTSS_COLORARG0: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLORARG0, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLORARG0, Value); break; case XTL::X_D3DTSS_COLORARG1: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLORARG1, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLORARG1, Value); break; case XTL::X_D3DTSS_COLORARG2: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_COLORARG2, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_COLORARG2, Value); break; case XTL::X_D3DTSS_ALPHAOP: // TODO: Use a lookup table, this is not always a 1:1 map (same as D3DTSS_COLOROP) if (Value != X_D3DTSS_UNK) { switch (TranslateXDKSpecificD3DTOP(Value)) { case XTL::X_D3DTOP_DISABLE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_DISABLE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_DISABLE); break; case XTL::X_D3DTOP_SELECTARG1: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_SELECTARG1); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); break; case XTL::X_D3DTOP_SELECTARG2: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_SELECTARG2); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); break; case XTL::X_D3DTOP_MODULATE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATE); break; case XTL::X_D3DTOP_MODULATE2X: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATE2X); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATE2X); break; case XTL::X_D3DTOP_MODULATE4X: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATE4X); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATE4X); break; case XTL::X_D3DTOP_ADD: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_ADD); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_ADD); break; case XTL::X_D3DTOP_ADDSIGNED: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_ADDSIGNED); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_ADDSIGNED); break; case XTL::X_D3DTOP_ADDSIGNED2X: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_ADDSIGNED2X); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_ADDSIGNED2X); break; case XTL::X_D3DTOP_SUBTRACT: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_SUBTRACT); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_SUBTRACT); break; case XTL::X_D3DTOP_ADDSMOOTH: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_ADDSMOOTH); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_ADDSMOOTH); break; case XTL::X_D3DTOP_BLENDDIFFUSEALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BLENDDIFFUSEALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BLENDDIFFUSEALPHA); break; case XTL::X_D3DTOP_BLENDTEXTUREALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BLENDTEXTUREALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BLENDTEXTUREALPHA); break; case XTL::X_D3DTOP_BLENDFACTORALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BLENDFACTORALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BLENDFACTORALPHA); break; case XTL::X_D3DTOP_BLENDTEXTUREALPHAPM: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BLENDTEXTUREALPHAPM); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BLENDTEXTUREALPHAPM); break; case XTL::X_D3DTOP_BLENDCURRENTALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BLENDCURRENTALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BLENDCURRENTALPHA); break; case XTL::X_D3DTOP_PREMODULATE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_PREMODULATE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_PREMODULATE); break; case XTL::X_D3DTOP_MODULATEALPHA_ADDCOLOR: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATEALPHA_ADDCOLOR); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATEALPHA_ADDCOLOR); break; case XTL::X_D3DTOP_MODULATECOLOR_ADDALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATECOLOR_ADDALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATECOLOR_ADDALPHA); break; case XTL::X_D3DTOP_MODULATEINVALPHA_ADDCOLOR: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATEINVALPHA_ADDCOLOR); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATEINVALPHA_ADDCOLOR); break; case XTL::X_D3DTOP_MODULATEINVCOLOR_ADDALPHA: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MODULATEINVCOLOR_ADDALPHA); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MODULATEINVCOLOR_ADDALPHA); break; case XTL::X_D3DTOP_DOTPRODUCT3: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_DOTPRODUCT3); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_DOTPRODUCT3); break; case XTL::X_D3DTOP_MULTIPLYADD: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_MULTIPLYADD); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_MULTIPLYADD); break; case XTL::X_D3DTOP_LERP: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_LERP); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_LERP); break; case XTL::X_D3DTOP_BUMPENVMAP: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BUMPENVMAP); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BUMPENVMAP); break; case XTL::X_D3DTOP_BUMPENVMAPLUMINANCE: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_BUMPENVMAPLUMINANCE); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAOP, D3DTOP_BUMPENVMAPLUMINANCE); break; default: EmuLog(LOG_LEVEL::WARNING, "Unsupported D3DTSS_ALPHAOP Value (%d)", Value); @@ -492,19 +492,19 @@ void UpdateDeferredTextureStates() } break; case XTL::X_D3DTSS_ALPHAARG0: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAARG0, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAARG0, Value); break; case XTL::X_D3DTSS_ALPHAARG1: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAARG1, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAARG1, Value); break; case XTL::X_D3DTSS_ALPHAARG2: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_ALPHAARG2, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_ALPHAARG2, Value); break; case XTL::X_D3DTSS_RESULTARG: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_RESULTARG, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_RESULTARG, Value); break; case XTL::X_D3DTSS_TEXTURETRANSFORMFLAGS: - g_pD3DDevice->SetTextureStageState(HostStage, XTL::D3DTSS_TEXTURETRANSFORMFLAGS, Value); + g_pD3DDevice->SetTextureStageState(HostStage, D3DTSS_TEXTURETRANSFORMFLAGS, Value); break; default: EmuLog(LOG_LEVEL::WARNING, "Unkown Xbox D3DTSS Value: %d", XboxState); @@ -520,15 +520,15 @@ void UpdateDeferredTextureStates() } if (EmuD3DDeferredRenderState[XTL::X_D3DRS_POINTSPRITEENABLE - XTL::X_D3DRS_FOGENABLE] == TRUE) { - XTL::IDirect3DBaseTexture *pTexture; + IDirect3DBaseTexture *pTexture; // set the point sprites texture g_pD3DDevice->GetTexture(3, &pTexture); g_pD3DDevice->SetTexture(0, pTexture); // disable all other stages - g_pD3DDevice->SetTextureStageState(1, XTL::D3DTSS_COLOROP, XTL::D3DTOP_DISABLE); - g_pD3DDevice->SetTextureStageState(1, XTL::D3DTSS_ALPHAOP, XTL::D3DTOP_DISABLE); + g_pD3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); + g_pD3DDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); // no need to actually copy here, since it was handled in the loop above } diff --git a/src/core/hle/D3D8/XbState.h b/src/core/hle/D3D8/XbState.h index b7ba5c405..b30c773cc 100644 --- a/src/core/hle/D3D8/XbState.h +++ b/src/core/hle/D3D8/XbState.h @@ -25,6 +25,8 @@ #ifndef XBSTATE_H #define XBSTATE_H +#include "core\hle\D3D8\XbD3D8Types.h" + #define CXBX_D3DRS_UNSUPPORTED (XTL::X_D3DRS_LAST + 1) // XDK version independent renderstate table, containing pointers to the original locations. diff --git a/src/core/hle/D3D8/XbVertexBuffer.cpp b/src/core/hle/D3D8/XbVertexBuffer.cpp index 0e2f2c26a..024b29945 100644 --- a/src/core/hle/D3D8/XbVertexBuffer.cpp +++ b/src/core/hle/D3D8/XbVertexBuffer.cpp @@ -31,8 +31,8 @@ #include "core\kernel\memory-manager\VMManager.h" #include "common\util\hasher.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuXTL.h" -#include "core\hle\D3D8\ResourceTracker.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For g_pD3DDevice +#include "core\hle\D3D8\ResourceTracker.h" #include "core\hle\D3D8\XbPushBuffer.h" // for DxbxFVF_GetNumberOfTextureCoordinates #include "core\hle\D3D8\XbState.h" // For CxbxUpdateNativeD3DResources, etc #include "core\hle\D3D8\XbVertexBuffer.h" @@ -62,7 +62,7 @@ extern UINT g_D3DStreamStrides[X_VSH_MAX_STREAMS]; extern XTL::X_D3DSurface* g_pXboxRenderTarget; extern XTL::X_D3DSurface* g_XboxBackBufferSurface; void *GetDataFromXboxResource(XTL::X_D3DResource *pXboxResource); -bool GetHostRenderTargetDimensions(DWORD* pHostWidth, DWORD* pHostHeight, XTL::IDirect3DSurface* pHostRenderTarget = nullptr); +bool GetHostRenderTargetDimensions(DWORD* pHostWidth, DWORD* pHostHeight, IDirect3DSurface* pHostRenderTarget = nullptr); uint32_t GetPixelContainerWidth(XTL::X_D3DPixelContainer* pPixelContainer); uint32_t GetPixelContainerHeight(XTL::X_D3DPixelContainer* pPixelContainer); @@ -158,8 +158,8 @@ UINT CxbxVertexBufferConverter::GetNbrStreams(CxbxDrawContext *pDrawContext) return 1; } - if(VshHandleIsVertexShader(pDrawContext->XboxVertexShaderHandle)) { - CxbxVertexShaderInfo *pVertexShaderInfo = GetCxbxVertexShaderInfo(pDrawContext->XboxVertexShaderHandle); + if(VshHandleIsVertexShader(g_Xbox_VertexShader_Handle)) { + CxbxVertexShaderInfo *pVertexShaderInfo = GetCxbxVertexShaderInfo(g_Xbox_VertexShader_Handle); if (pVertexShaderInfo) { if (pVertexShaderInfo->NumberOfVertexStreams <= X_VSH_MAX_STREAMS) { return pVertexShaderInfo->NumberOfVertexStreams; @@ -172,7 +172,7 @@ UINT CxbxVertexBufferConverter::GetNbrStreams(CxbxDrawContext *pDrawContext) return CountActiveD3DStreams(); } - if (pDrawContext->XboxVertexShaderHandle) { + if (g_Xbox_VertexShader_Handle) { return CountActiveD3DStreams(); } @@ -240,10 +240,10 @@ void CxbxVertexBufferConverter::ConvertStream UINT uiStream ) { - extern XTL::D3DCAPS g_D3DCaps; + extern D3DCAPS g_D3DCaps; - bool bVshHandleIsFVF = VshHandleIsFVF(pDrawContext->XboxVertexShaderHandle); - DWORD XboxFVF = bVshHandleIsFVF ? pDrawContext->XboxVertexShaderHandle : 0; + bool bVshHandleIsFVF = VshHandleIsFVF(g_Xbox_VertexShader_Handle); + DWORD XboxFVF = bVshHandleIsFVF ? g_Xbox_VertexShader_Handle : 0; // Texture normalization can only be set for FVF shaders bool bNeedTextureNormalization = false; struct { int NrTexCoords; bool bTexIsLinear; int Width; int Height; int Depth; } pActivePixelContainer[XTL::X_D3DTS_STAGECOUNT] = { 0 }; @@ -261,7 +261,7 @@ void CxbxVertexBufferConverter::ConvertStream if (i + 1 <= dwTexN) { pActivePixelContainer[i].NrTexCoords = DxbxFVF_GetNumberOfTextureCoordinates(XboxFVF, i); // TODO : Use GetXboxBaseTexture() - XTL::X_D3DBaseTexture *pXboxBaseTexture = XTL::EmuD3DActiveTexture[i]; + XTL::X_D3DBaseTexture *pXboxBaseTexture = EmuD3DActiveTexture[i]; if (pXboxBaseTexture != xbnullptr) { extern XTL::X_D3DFORMAT GetXboxPixelContainerFormat(const XTL::X_D3DPixelContainer *pXboxPixelContainer); // TODO : Move to XTL-independent header file @@ -301,7 +301,7 @@ void CxbxVertexBufferConverter::ConvertStream UINT uiHostVertexStride = 0; DWORD dwHostVertexDataSize = 0; uint8_t *pHostVertexData = nullptr; - XTL::IDirect3DVertexBuffer *pNewHostVertexBuffer = nullptr; + IDirect3DVertexBuffer *pNewHostVertexBuffer = nullptr; if (pDrawContext->pXboxVertexStreamZeroData != xbnullptr) { // There should only be one stream (stream zero) in this case @@ -413,7 +413,7 @@ void CxbxVertexBufferConverter::ConvertStream dwHostVertexDataSize, D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC, 0, - XTL::D3DPOOL_DEFAULT, + D3DPOOL_DEFAULT, &pNewHostVertexBuffer, nullptr ); @@ -794,8 +794,8 @@ void CxbxVertexBufferConverter::Apply(CxbxDrawContext *pDrawContext) CxbxKrnlCleanup("Unknown primitive type: 0x%.02X\n", pDrawContext->XboxPrimitiveType); m_pVertexShaderInfo = nullptr; - if (VshHandleIsVertexShader(pDrawContext->XboxVertexShaderHandle)) { - m_pVertexShaderInfo = &(GetCxbxVertexShader(pDrawContext->XboxVertexShaderHandle)->VertexShaderInfo); + if (VshHandleIsVertexShader(g_Xbox_VertexShader_Handle)) { + m_pVertexShaderInfo = &(GetCxbxVertexShader(g_Xbox_VertexShader_Handle)->VertexShaderInfo); } pDrawContext->VerticesInBuffer = GetVerticesInBuffer( @@ -845,8 +845,8 @@ VOID EmuFlushIVB() CxbxUpdateNativeD3DResources(); // Parse IVB table with current FVF shader if possible. - bool bFVF = VshHandleIsFVF(g_CurrentXboxVertexShaderHandle); - DWORD dwCurFVF = (bFVF) ? g_CurrentXboxVertexShaderHandle : g_InlineVertexBuffer_FVF; + bool bFVF = VshHandleIsFVF(g_Xbox_VertexShader_Handle); + DWORD dwCurFVF = (bFVF) ? g_Xbox_VertexShader_Handle : g_InlineVertexBuffer_FVF; EmuLog(LOG_LEVEL::DEBUG, "g_InlineVertexBuffer_TableOffset := %d", g_InlineVertexBuffer_TableOffset); @@ -854,7 +854,7 @@ VOID EmuFlushIVB() switch (dwCurFVF & D3DFVF_POSITION_MASK) { case 0: // No position ? if (bFVF) { - EmuLog(LOG_LEVEL::WARNING, "EmuFlushIVB(): g_CurrentXboxVertexShaderHandle isn't a valid FVF - using D3DFVF_XYZRHW instead!"); + EmuLog(LOG_LEVEL::WARNING, "EmuFlushIVB(): g_Xbox_VertexShader_Handle isn't a valid FVF - using D3DFVF_XYZRHW instead!"); dwCurFVF |= D3DFVF_XYZRHW; } else { @@ -995,7 +995,6 @@ VOID EmuFlushIVB() DrawContext.dwVertexCount = g_InlineVertexBuffer_TableOffset; DrawContext.pXboxVertexStreamZeroData = g_InlineVertexBuffer_pData; DrawContext.uiXboxVertexStreamZeroStride = uiStride; - DrawContext.XboxVertexShaderHandle = g_CurrentXboxVertexShaderHandle; HRESULT hRet; @@ -1007,7 +1006,7 @@ VOID EmuFlushIVB() CxbxDrawPrimitiveUP(DrawContext); if (bFVF) { - hRet = g_pD3DDevice->SetFVF(g_CurrentXboxVertexShaderHandle); + hRet = g_pD3DDevice->SetFVF(g_Xbox_VertexShader_Handle); //DEBUG_D3DRESULT(hRet, "g_pD3DDevice->SetVertexShader"); } g_InlineVertexBuffer_TableOffset = 0; // Might not be needed (also cleared in D3DDevice_Begin) diff --git a/src/core/hle/D3D8/XbVertexBuffer.h b/src/core/hle/D3D8/XbVertexBuffer.h index 0ca8d37dd..126c23780 100644 --- a/src/core/hle/D3D8/XbVertexBuffer.h +++ b/src/core/hle/D3D8/XbVertexBuffer.h @@ -24,12 +24,11 @@ // ****************************************************************** #ifndef XBVERTEXBUFFER_H #define XBVERTEXBUFFER_H + +#include #include "Cxbx.h" -//#include // Conflict with io.h - -//#include "core\kernel\support\EmuXTL.h" #include "core\hle\D3D8\XbVertexShader.h" // for CxbxVertexShaderInfo typedef struct _CxbxDrawContext @@ -37,8 +36,6 @@ typedef struct _CxbxDrawContext IN XTL::X_D3DPRIMITIVETYPE XboxPrimitiveType; IN DWORD dwVertexCount; IN DWORD dwStartVertex; // Only D3DDevice_DrawVertices sets this (potentially higher than default 0) - // The current vertex shader, used to identify the streams - IN DWORD XboxVertexShaderHandle; IN PWORD pIndexData; IN DWORD dwIndexBase; IN size_t VerticesInBuffer; @@ -69,7 +66,7 @@ public: bool bCacheIsStreamZeroDrawUP = false; void *pCachedHostVertexStreamZeroData = nullptr; bool bCachedHostVertexStreamZeroDataIsAllocated = false; - XTL::IDirect3DVertexBuffer *pCachedHostVertexBuffer = nullptr; + IDirect3DVertexBuffer *pCachedHostVertexBuffer = nullptr; }; class CxbxVertexBufferConverter @@ -106,16 +103,16 @@ extern DWORD g_InlineVertexBuffer_FVF; extern struct _D3DIVB { - XTL::D3DXVECTOR3 Position; // X_D3DVSDE_POSITION (*) > D3DFVF_XYZ / D3DFVF_XYZRHW + D3DXVECTOR3 Position; // X_D3DVSDE_POSITION (*) > D3DFVF_XYZ / D3DFVF_XYZRHW FLOAT Rhw; // X_D3DVSDE_VERTEX (*) > D3DFVF_XYZ / D3DFVF_XYZRHW FLOAT Blend[4]; // X_D3DVSDE_BLENDWEIGHT > D3DFVF_XYZB1 (and 3 more up to D3DFVF_XYZB4) - XTL::D3DXVECTOR3 Normal; // X_D3DVSDE_NORMAL > D3DFVF_NORMAL - XTL::D3DCOLOR Diffuse; // X_D3DVSDE_DIFFUSE > D3DFVF_DIFFUSE - XTL::D3DCOLOR Specular; // X_D3DVSDE_SPECULAR > D3DFVF_SPECULAR + D3DXVECTOR3 Normal; // X_D3DVSDE_NORMAL > D3DFVF_NORMAL + D3DCOLOR Diffuse; // X_D3DVSDE_DIFFUSE > D3DFVF_DIFFUSE + D3DCOLOR Specular; // X_D3DVSDE_SPECULAR > D3DFVF_SPECULAR FLOAT Fog; // X_D3DVSDE_FOG > D3DFVF_FOG unavailable; TODO : How to handle? - XTL::D3DCOLOR BackDiffuse; // X_D3DVSDE_BACKDIFFUSE > D3DFVF_BACKDIFFUSE unavailable; TODO : How to handle? - XTL::D3DCOLOR BackSpecular; // X_D3DVSDE_BACKSPECULAR > D3DFVF_BACKSPECULAR unavailable; TODO : How to handle? - XTL::D3DXVECTOR4 TexCoord[4]; // X_D3DVSDE_TEXCOORD0 > D3DFVF_TEX1 (and 4 more up to D3DFVF_TEX4) + D3DCOLOR BackDiffuse; // X_D3DVSDE_BACKDIFFUSE > D3DFVF_BACKDIFFUSE unavailable; TODO : How to handle? + D3DCOLOR BackSpecular; // X_D3DVSDE_BACKSPECULAR > D3DFVF_BACKSPECULAR unavailable; TODO : How to handle? + D3DXVECTOR4 TexCoord[4]; // X_D3DVSDE_TEXCOORD0 > D3DFVF_TEX1 (and 4 more up to D3DFVF_TEX4) // (*) X_D3DVSDE_POSITION and X_D3DVSDE_VERTEX both set Position, but Rhw seems optional, // hence, selection for D3DFVF_XYZ or D3DFVF_XYZRHW is rather fuzzy. We DO know that once diff --git a/src/core/hle/D3D8/XbVertexShader.cpp b/src/core/hle/D3D8/XbVertexShader.cpp index 1fadfd7a1..279af71ec 100644 --- a/src/core/hle/D3D8/XbVertexShader.cpp +++ b/src/core/hle/D3D8/XbVertexShader.cpp @@ -31,8 +31,7 @@ #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For g_Xbox_VertexShader_Handle #include "core\hle\D3D8\XbVertexShader.h" #include "XbD3D8Types.h" // For X_D3DVSDE_* @@ -764,72 +763,70 @@ static void VshWriteParameter(VSH_IMD_PARAMETER *pParameter, #define D3DDECLUSAGE_UNSUPPORTED ((D3DDECLUSAGE)-1) -XTL::D3DDECLUSAGE Xb2PCRegisterType +D3DDECLUSAGE Xb2PCRegisterType ( DWORD VertexRegister, BYTE& PCUsageIndex ) { - using namespace XTL; - D3DDECLUSAGE PCRegisterType; PCUsageIndex = 0; switch (VertexRegister) { - case X_D3DVSDE_VERTEX: // -1 + case XTL::X_D3DVSDE_VERTEX: // -1 DbgVshPrintf("D3DVSDE_VERTEX /* xbox ext. */"); PCRegisterType = D3DDECLUSAGE_UNSUPPORTED; break; - case X_D3DVSDE_POSITION: // 0 + case XTL::X_D3DVSDE_POSITION: // 0 DbgVshPrintf("D3DVSDE_POSITION"); PCRegisterType = D3DDECLUSAGE_POSITION; break; - case X_D3DVSDE_BLENDWEIGHT: // 1 + case XTL::X_D3DVSDE_BLENDWEIGHT: // 1 DbgVshPrintf("D3DVSDE_BLENDWEIGHT"); PCRegisterType = D3DDECLUSAGE_BLENDWEIGHT; break; - case X_D3DVSDE_NORMAL: // 2 + case XTL::X_D3DVSDE_NORMAL: // 2 DbgVshPrintf("D3DVSDE_NORMAL"); PCRegisterType = D3DDECLUSAGE_NORMAL; break; - case X_D3DVSDE_DIFFUSE: // 3 + case XTL::X_D3DVSDE_DIFFUSE: // 3 DbgVshPrintf("D3DVSDE_DIFFUSE"); PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 0; break; - case X_D3DVSDE_SPECULAR: // 4 + case XTL::X_D3DVSDE_SPECULAR: // 4 DbgVshPrintf("D3DVSDE_SPECULAR"); PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 1; break; - case X_D3DVSDE_FOG: // 5 + case XTL::X_D3DVSDE_FOG: // 5 DbgVshPrintf("D3DVSDE_FOG"); PCRegisterType = D3DDECLUSAGE_FOG; break; - case X_D3DVSDE_POINTSIZE: // 6 + case XTL::X_D3DVSDE_POINTSIZE: // 6 DbgVshPrintf("D3DVDSE_POINTSIZE"); PCRegisterType = D3DDECLUSAGE_PSIZE; break; - case X_D3DVSDE_BACKDIFFUSE: // 7 + case XTL::X_D3DVSDE_BACKDIFFUSE: // 7 DbgVshPrintf("D3DVSDE_BACKDIFFUSE /* xbox ext. */"); PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 2; break; - case X_D3DVSDE_BACKSPECULAR: // 8 + case XTL::X_D3DVSDE_BACKSPECULAR: // 8 DbgVshPrintf("D3DVSDE_BACKSPECULAR /* xbox ext. */"); PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 3; break; - case X_D3DVSDE_TEXCOORD0: // 9 + case XTL::X_D3DVSDE_TEXCOORD0: // 9 DbgVshPrintf("D3DVSDE_TEXCOORD0"); PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 0; break; - case X_D3DVSDE_TEXCOORD1: // 10 + case XTL::X_D3DVSDE_TEXCOORD1: // 10 DbgVshPrintf("D3DVSDE_TEXCOORD1"); PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 1; break; - case X_D3DVSDE_TEXCOORD2: // 11 + case XTL::X_D3DVSDE_TEXCOORD2: // 11 DbgVshPrintf("D3DVSDE_TEXCOORD2"); PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 2; break; - case X_D3DVSDE_TEXCOORD3: // 12 + case XTL::X_D3DVSDE_TEXCOORD3: // 12 DbgVshPrintf("D3DVSDE_TEXCOORD3"); PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 3; break; @@ -842,11 +839,11 @@ XTL::D3DDECLUSAGE Xb2PCRegisterType return PCRegisterType; } -extern XTL::D3DCAPS g_D3DCaps; +extern D3DCAPS g_D3DCaps; static void VshWriteShader(VSH_XBOX_SHADER *pShader, std::stringstream& pDisassembly, - XTL::D3DVERTEXELEMENT *pRecompiled, + D3DVERTEXELEMENT *pRecompiled, boolean Truncate) { switch(pShader->ShaderHeader.Version) @@ -1477,8 +1474,6 @@ static boolean VshConvertShader(VSH_XBOX_SHADER *pShader, boolean bNoReservedConstants ) { - using namespace XTL; - const DWORD temporaryCount = g_D3DCaps.VS20Caps.NumTemps; boolean RUsage[VSH_MAX_TEMPORARY_REGISTERS] = { FALSE }; @@ -1750,7 +1745,7 @@ protected: CxbxVertexShaderStreamInfo* pCurrentVertexShaderStreamInfo = nullptr; DWORD temporaryCount; bool IsFixedFunction; - XTL::D3DVERTEXELEMENT* pRecompiled; + D3DVERTEXELEMENT* pRecompiled; public: // Output @@ -1759,13 +1754,11 @@ public: private: // VERTEX SHADER - #define DEF_VSH_END 0xFFFFFFFF - #define DEF_VSH_NOP 0x00000000 static DWORD VshGetDeclarationCount(DWORD *pXboxDeclaration) { DWORD Pos = 0; - while (pXboxDeclaration[Pos] != DEF_VSH_END) + while (pXboxDeclaration[Pos] != X_D3DVSD_END()) { Pos++; } @@ -1806,7 +1799,7 @@ private: void VshConvertToken_NOP(DWORD *pXboxToken) { // D3DVSD_NOP - if(*pXboxToken != DEF_VSH_NOP) + if(*pXboxToken != X_D3DVSD_NOP()) { EmuLog(LOG_LEVEL::WARNING, "Token NOP found, but extra parameters are given!"); } @@ -1815,13 +1808,11 @@ private: DWORD VshConvertToken_CONSTMEM(DWORD *pXboxToken) { - using namespace XTL; - // D3DVSD_CONST DbgVshPrintf("\tD3DVSD_CONST("); - XTL::DWORD ConstantAddress = (*pXboxToken & X_D3DVSD_CONSTADDRESSMASK) >> X_D3DVSD_CONSTADDRESSSHIFT; - XTL::DWORD Count = (*pXboxToken & X_D3DVSD_CONSTCOUNTMASK) >> X_D3DVSD_CONSTCOUNTSHIFT; + DWORD ConstantAddress = (*pXboxToken & X_D3DVSD_CONSTADDRESSMASK) >> X_D3DVSD_CONSTADDRESSSHIFT; + DWORD Count = (*pXboxToken & X_D3DVSD_CONSTCOUNTMASK) >> X_D3DVSD_CONSTCOUNTSHIFT; DbgVshPrintf("%d, %d),\n", ConstantAddress, Count); // TODO @@ -1831,13 +1822,12 @@ private: void VshConvertToken_TESSELATOR(DWORD *pXboxToken) { - using namespace XTL; BYTE Index; if(*pXboxToken & X_D3DVSD_MASK_TESSUV) { - XTL::DWORD VertexRegister = VshGetVertexRegister(*pXboxToken); - XTL::DWORD NewVertexRegister = VertexRegister; + DWORD VertexRegister = VshGetVertexRegister(*pXboxToken); + DWORD NewVertexRegister = VertexRegister; DbgVshPrintf("\tD3DVSD_TESSUV("); NewVertexRegister = Xb2PCRegisterType(VertexRegister, Index); @@ -1849,11 +1839,11 @@ private: } else // D3DVSD_TESSNORMAL { - XTL::DWORD VertexRegisterIn = VshGetVertexRegisterIn(*pXboxToken); - XTL::DWORD VertexRegisterOut = VshGetVertexRegister(*pXboxToken); + DWORD VertexRegisterIn = VshGetVertexRegisterIn(*pXboxToken); + DWORD VertexRegisterOut = VshGetVertexRegister(*pXboxToken); - XTL::DWORD NewVertexRegisterIn = VertexRegisterIn; - XTL::DWORD NewVertexRegisterOut = VertexRegisterOut; + DWORD NewVertexRegisterIn = VertexRegisterIn; + DWORD NewVertexRegisterOut = VertexRegisterOut; DbgVshPrintf("\tD3DVSD_TESSNORMAL("); NewVertexRegisterIn = Xb2PCRegisterType(VertexRegisterIn, Index); @@ -1880,8 +1870,6 @@ private: void VshConvertToken_STREAM(DWORD *pXboxToken) { - using namespace XTL; - // D3DVSD_STREAM_TESS if(*pXboxToken & X_D3DVSD_STREAMTESSMASK) { @@ -1891,7 +1879,7 @@ private: { VshEndPreviousStreamPatch(); - XTL::DWORD StreamNumber = VshGetVertexStream(*pXboxToken); + DWORD StreamNumber = VshGetVertexStream(*pXboxToken); // new stream pCurrentVertexShaderStreamInfo = &(pVertexShaderInfoToSet->VertexStreams[StreamNumber]); @@ -1913,21 +1901,17 @@ private: void VshConvertToken_STREAMDATA_SKIP(DWORD *pXboxToken) { - using namespace XTL; - - XTL::WORD SkipCount = (*pXboxToken & X_D3DVSD_SKIPCOUNTMASK) >> X_D3DVSD_SKIPCOUNTSHIFT; + WORD SkipCount = (*pXboxToken & X_D3DVSD_SKIPCOUNTMASK) >> X_D3DVSD_SKIPCOUNTSHIFT; DbgVshPrintf("\tD3DVSD_SKIP(%d),\n", SkipCount); pCurrentVertexShaderStreamInfo->HostVertexStride += (SkipCount * sizeof(DWORD)); } void VshConvertToken_STREAMDATA_SKIPBYTES(DWORD* pXboxToken) { - using namespace XTL; - - XTL::WORD SkipBytesCount = (*pXboxToken & X_D3DVSD_SKIPCOUNTMASK) >> X_D3DVSD_SKIPCOUNTSHIFT; + WORD SkipBytesCount = (*pXboxToken & X_D3DVSD_SKIPCOUNTMASK) >> X_D3DVSD_SKIPCOUNTSHIFT; DbgVshPrintf("\tD3DVSD_SKIPBYTES(%d), /* xbox ext. */\n", SkipBytesCount); - if (SkipBytesCount % sizeof(XTL::DWORD)) { + if (SkipBytesCount % sizeof(DWORD)) { EmuLog(LOG_LEVEL::WARNING, "D3DVSD_SKIPBYTES can't be converted to D3DVSD_SKIP, not divisble by 4."); } @@ -1936,11 +1920,9 @@ private: void VshConvertToken_STREAMDATA_REG(DWORD *pXboxToken) { - using namespace XTL; - - XTL::DWORD VertexRegister = VshGetVertexRegister(*pXboxToken); - XTL::BOOL NeedPatching = FALSE; - XTL::BYTE Index; + DWORD VertexRegister = VshGetVertexRegister(*pXboxToken); + BOOL NeedPatching = FALSE; + BYTE Index; BYTE HostVertexRegisterType; // If this is a fixed-function shader, use Xb2PCRegisterType @@ -1962,48 +1944,48 @@ private: // Add this register to the list of declared registers RegVIsPresentInDeclaration[VertexRegister] = true; - XTL::DWORD XboxVertexElementDataType = (*pXboxToken & X_D3DVSD_DATATYPEMASK) >> X_D3DVSD_DATATYPESHIFT; - XTL::BYTE HostVertexElementDataType = 0; - XTL::WORD HostVertexElementByteSize = 0; + DWORD XboxVertexElementDataType = (*pXboxToken & X_D3DVSD_DATATYPEMASK) >> X_D3DVSD_DATATYPESHIFT; + BYTE HostVertexElementDataType = 0; + WORD HostVertexElementByteSize = 0; switch (XboxVertexElementDataType) { - case X_D3DVSDT_FLOAT1: // 0x12: + case XTL::X_D3DVSDT_FLOAT1: // 0x12: DbgVshPrintf("D3DVSDT_FLOAT1"); HostVertexElementDataType = D3DDECLTYPE_FLOAT1; HostVertexElementByteSize = 1 * sizeof(FLOAT); break; - case X_D3DVSDT_FLOAT2: // 0x22: + case XTL::X_D3DVSDT_FLOAT2: // 0x22: DbgVshPrintf("D3DVSDT_FLOAT2"); HostVertexElementDataType = D3DDECLTYPE_FLOAT2; HostVertexElementByteSize = 2 * sizeof(FLOAT); break; - case X_D3DVSDT_FLOAT3: // 0x32: + case XTL::X_D3DVSDT_FLOAT3: // 0x32: DbgVshPrintf("D3DVSDT_FLOAT3"); HostVertexElementDataType = D3DDECLTYPE_FLOAT3; HostVertexElementByteSize = 3 * sizeof(FLOAT); break; - case X_D3DVSDT_FLOAT4: // 0x42: + case XTL::X_D3DVSDT_FLOAT4: // 0x42: DbgVshPrintf("D3DVSDT_FLOAT4"); HostVertexElementDataType = D3DDECLTYPE_FLOAT4; HostVertexElementByteSize = 4 * sizeof(FLOAT); break; - case X_D3DVSDT_D3DCOLOR: // 0x40: + case XTL::X_D3DVSDT_D3DCOLOR: // 0x40: DbgVshPrintf("D3DVSDT_D3DCOLOR"); HostVertexElementDataType = D3DDECLTYPE_D3DCOLOR; HostVertexElementByteSize = 1 * sizeof(D3DCOLOR); break; - case X_D3DVSDT_SHORT2: // 0x25: + case XTL::X_D3DVSDT_SHORT2: // 0x25: DbgVshPrintf("D3DVSDT_SHORT2"); HostVertexElementDataType = D3DDECLTYPE_SHORT2; - HostVertexElementByteSize = 2 * sizeof(XTL::SHORT); + HostVertexElementByteSize = 2 * sizeof(SHORT); break; - case X_D3DVSDT_SHORT4: // 0x45: + case XTL::X_D3DVSDT_SHORT4: // 0x45: DbgVshPrintf("D3DVSDT_SHORT4"); HostVertexElementDataType = D3DDECLTYPE_SHORT4; - HostVertexElementByteSize = 4 * sizeof(XTL::SHORT); + HostVertexElementByteSize = 4 * sizeof(SHORT); break; - case X_D3DVSDT_NORMSHORT1: // 0x11: + case XTL::X_D3DVSDT_NORMSHORT1: // 0x11: DbgVshPrintf("D3DVSDT_NORMSHORT1 /* xbox ext. */"); if (g_D3DCaps.DeclTypes & D3DDTCAPS_SHORT2N) { HostVertexElementDataType = D3DDECLTYPE_SHORT2N; @@ -2016,7 +1998,7 @@ private: } NeedPatching = TRUE; break; - case X_D3DVSDT_NORMSHORT2: // 0x21: + case XTL::X_D3DVSDT_NORMSHORT2: // 0x21: if (g_D3DCaps.DeclTypes & D3DDTCAPS_SHORT2N) { DbgVshPrintf("D3DVSDT_NORMSHORT2"); HostVertexElementDataType = D3DDECLTYPE_SHORT2N; @@ -2031,7 +2013,7 @@ private: NeedPatching = TRUE; } break; - case X_D3DVSDT_NORMSHORT3: // 0x31: + case XTL::X_D3DVSDT_NORMSHORT3: // 0x31: DbgVshPrintf("D3DVSDT_NORMSHORT3 /* xbox ext. */"); if (g_D3DCaps.DeclTypes & D3DDTCAPS_SHORT4N) { HostVertexElementDataType = D3DDECLTYPE_SHORT4N; @@ -2044,7 +2026,7 @@ private: } NeedPatching = TRUE; break; - case X_D3DVSDT_NORMSHORT4: // 0x41: + case XTL::X_D3DVSDT_NORMSHORT4: // 0x41: if (g_D3DCaps.DeclTypes & D3DDTCAPS_SHORT4N) { DbgVshPrintf("D3DVSDT_NORMSHORT4"); HostVertexElementDataType = D3DDECLTYPE_SHORT4N; @@ -2059,25 +2041,25 @@ private: NeedPatching = TRUE; } break; - case X_D3DVSDT_NORMPACKED3: // 0x16: + case XTL::X_D3DVSDT_NORMPACKED3: // 0x16: DbgVshPrintf("D3DVSDT_NORMPACKED3 /* xbox ext. */"); HostVertexElementDataType = D3DDECLTYPE_FLOAT3; HostVertexElementByteSize = 3 * sizeof(FLOAT); NeedPatching = TRUE; break; - case X_D3DVSDT_SHORT1: // 0x15: + case XTL::X_D3DVSDT_SHORT1: // 0x15: DbgVshPrintf("D3DVSDT_SHORT1 /* xbox ext. */"); HostVertexElementDataType = D3DDECLTYPE_SHORT2; - HostVertexElementByteSize = 2 * sizeof(XTL::SHORT); + HostVertexElementByteSize = 2 * sizeof(SHORT); NeedPatching = TRUE; break; - case X_D3DVSDT_SHORT3: // 0x35: + case XTL::X_D3DVSDT_SHORT3: // 0x35: DbgVshPrintf("D3DVSDT_SHORT3 /* xbox ext. */"); HostVertexElementDataType = D3DDECLTYPE_SHORT4; - HostVertexElementByteSize = 4 * sizeof(XTL::SHORT); + HostVertexElementByteSize = 4 * sizeof(SHORT); NeedPatching = TRUE; break; - case X_D3DVSDT_PBYTE1: // 0x14: + case XTL::X_D3DVSDT_PBYTE1: // 0x14: DbgVshPrintf("D3DVSDT_PBYTE1 /* xbox ext. */"); if (g_D3DCaps.DeclTypes & D3DDTCAPS_UBYTE4N) { HostVertexElementDataType = D3DDECLTYPE_UBYTE4N; @@ -2090,7 +2072,7 @@ private: } NeedPatching = TRUE; break; - case X_D3DVSDT_PBYTE2: // 0x24: + case XTL::X_D3DVSDT_PBYTE2: // 0x24: DbgVshPrintf("D3DVSDT_PBYTE2 /* xbox ext. */"); if (g_D3DCaps.DeclTypes & D3DDTCAPS_UBYTE4N) { HostVertexElementDataType = D3DDECLTYPE_UBYTE4N; @@ -2103,7 +2085,7 @@ private: } NeedPatching = TRUE; break; - case X_D3DVSDT_PBYTE3: // 0x34: + case XTL::X_D3DVSDT_PBYTE3: // 0x34: DbgVshPrintf("D3DVSDT_PBYTE3 /* xbox ext. */"); if (g_D3DCaps.DeclTypes & D3DDTCAPS_UBYTE4N) { HostVertexElementDataType = D3DDECLTYPE_UBYTE4N; @@ -2116,7 +2098,7 @@ private: } NeedPatching = TRUE; break; - case X_D3DVSDT_PBYTE4: // 0x44: + case XTL::X_D3DVSDT_PBYTE4: // 0x44: // Test-case : Panzer if (g_D3DCaps.DeclTypes & D3DDTCAPS_UBYTE4N) { DbgVshPrintf("D3DVSDT_PBYTE4"); @@ -2132,13 +2114,13 @@ private: NeedPatching = TRUE; } break; - case X_D3DVSDT_FLOAT2H: // 0x72: + case XTL::X_D3DVSDT_FLOAT2H: // 0x72: DbgVshPrintf("D3DVSDT_FLOAT2H /* xbox ext. */"); HostVertexElementDataType = D3DDECLTYPE_FLOAT4; HostVertexElementByteSize = 4 * sizeof(FLOAT); NeedPatching = TRUE; break; - case X_D3DVSDT_NONE: // 0x02: + case XTL::X_D3DVSDT_NONE: // 0x02: DbgVshPrintf("D3DVSDT_NONE /* xbox ext. */"); // Ignore token break; @@ -2150,7 +2132,7 @@ private: DbgVshPrintf("),\n"); // On X_D3DVSDT_NONE skip this token - if (XboxVertexElementDataType == X_D3DVSDT_NONE) + if (XboxVertexElementDataType == XTL::X_D3DVSDT_NONE) { return; } @@ -2177,7 +2159,6 @@ private: void VshConvertToken_STREAMDATA(DWORD *pXboxToken) { - using namespace XTL; if (*pXboxToken & X_D3DVSD_MASK_SKIP) { // For D3D9, use D3DDECLTYPE_UNUSED ? @@ -2195,31 +2176,29 @@ private: DWORD VshRecompileToken(DWORD *pXboxToken) { - using namespace XTL; - - XTL::DWORD Step = 1; + DWORD Step = 1; switch(VshGetTokenType(*pXboxToken)) { - case X_D3DVSD_TOKEN_NOP: + case XTL::X_D3DVSD_TOKEN_NOP: VshConvertToken_NOP(pXboxToken); break; - case X_D3DVSD_TOKEN_STREAM: + case XTL::X_D3DVSD_TOKEN_STREAM: { VshConvertToken_STREAM(pXboxToken); break; } - case X_D3DVSD_TOKEN_STREAMDATA: + case XTL::X_D3DVSD_TOKEN_STREAMDATA: { VshConvertToken_STREAMDATA(pXboxToken); break; } - case X_D3DVSD_TOKEN_TESSELLATOR: + case XTL::X_D3DVSD_TOKEN_TESSELLATOR: { VshConvertToken_TESSELATOR(pXboxToken); break; } - case X_D3DVSD_TOKEN_CONSTMEM: + case XTL::X_D3DVSD_TOKEN_CONSTMEM: { Step = VshConvertToken_CONSTMEM(pXboxToken); break; @@ -2280,10 +2259,8 @@ private: } public: - XTL::D3DVERTEXELEMENT *Convert(DWORD* pXboxDeclaration, bool bIsFixedFunction, CxbxVertexShaderInfo* pCxbxVertexShaderInfo) + D3DVERTEXELEMENT *Convert(DWORD* pXboxDeclaration, bool bIsFixedFunction, CxbxVertexShaderInfo* pCxbxVertexShaderInfo) { - using namespace XTL; - // Get a preprocessed copy of the original Xbox Vertex Declaration auto pXboxVertexDeclarationCopy = RemoveXboxDeclarationRedefinition(pXboxDeclaration); @@ -2313,7 +2290,7 @@ public: DbgVshPrintf("DWORD dwVSHDecl[] =\n{\n"); auto pXboxToken = pXboxVertexDeclarationCopy; - while (*pXboxToken != DEF_VSH_END) + while (*pXboxToken != X_D3DVSD_END()) { if ((uint8_t*)pRecompiled >= pRecompiledBufferOverflow) { DbgVshPrintf("Detected buffer-overflow, breaking out...\n"); @@ -2344,7 +2321,7 @@ public: } }; -XTL::D3DVERTEXELEMENT *EmuRecompileVshDeclaration +D3DVERTEXELEMENT *EmuRecompileVshDeclaration ( DWORD *pXboxDeclaration, bool bIsFixedFunction, @@ -2355,7 +2332,7 @@ XTL::D3DVERTEXELEMENT *EmuRecompileVshDeclaration { XboxVertexDeclarationConverter Converter; - XTL::D3DVERTEXELEMENT* pHostVertexElements = Converter.Convert(pXboxDeclaration, bIsFixedFunction, pCxbxVertexShaderInfo); + D3DVERTEXELEMENT* pHostVertexElements = Converter.Convert(pXboxDeclaration, bIsFixedFunction, pCxbxVertexShaderInfo); *pXboxDeclarationCount = Converter.XboxDeclarationCount; *pHostDeclarationSize = Converter.HostDeclarationSize; @@ -2368,15 +2345,13 @@ extern HRESULT EmuRecompileVshFunction ( DWORD *pXboxFunction, bool bNoReservedConstants, - XTL::D3DVERTEXELEMENT *pRecompiledDeclaration, + D3DVERTEXELEMENT *pRecompiledDeclaration, bool *pbUseDeclarationOnly, DWORD *pXboxFunctionSize, - XTL::LPD3DXBUFFER *ppRecompiledShader + LPD3DXBUFFER *ppRecompiledShader ) { - using namespace XTL; - - X_VSH_SHADER_HEADER *pXboxVertexShaderHeader = (X_VSH_SHADER_HEADER*)pXboxFunction; + XTL::X_VSH_SHADER_HEADER *pXboxVertexShaderHeader = (XTL::X_VSH_SHADER_HEADER*)pXboxFunction; DWORD *pToken; boolean EOI = false; VSH_XBOX_SHADER *pShader = (VSH_XBOX_SHADER*)calloc(1, sizeof(VSH_XBOX_SHADER)); @@ -2420,7 +2395,7 @@ extern HRESULT EmuRecompileVshFunction { RegVIsUsedByShader.fill(false); - for (pToken = (DWORD*)((uint8_t*)pXboxFunction + sizeof(X_VSH_SHADER_HEADER)); !EOI; pToken += X_VSH_INSTRUCTION_SIZE) + for (pToken = (DWORD*)((uint8_t*)pXboxFunction + sizeof(XTL::X_VSH_SHADER_HEADER)); !EOI; pToken += X_VSH_INSTRUCTION_SIZE) { VSH_SHADER_INSTRUCTION Inst; @@ -2538,8 +2513,8 @@ boolean VshHandleIsValidShader(DWORD XboxVertexShaderHandle) extern boolean IsValidCurrentShader(void) { // Dxbx addition : There's no need to call - // XTL_EmuIDirect3DDevice_GetVertexShader, just check g_CurrentXboxVertexShaderHandle : - return VshHandleIsValidShader(g_CurrentXboxVertexShaderHandle); + // XTL_EmuIDirect3DDevice_GetVertexShader, just check g_Xbox_VertexShader_Handle : + return VshHandleIsValidShader(g_Xbox_VertexShader_Handle); } CxbxVertexShaderInfo *GetCxbxVertexShaderInfo(DWORD XboxVertexShaderHandle) diff --git a/src/core/hle/D3D8/XbVertexShader.h b/src/core/hle/D3D8/XbVertexShader.h index 5761c7b93..e6ca069dc 100644 --- a/src/core/hle/D3D8/XbVertexShader.h +++ b/src/core/hle/D3D8/XbVertexShader.h @@ -25,11 +25,7 @@ #ifndef XBVERTEXSHADER_H #define XBVERTEXSHADER_H -//#include "Cxbx.h" -//#include "core\hle\D3D8\XbVertexBuffer.h" // for CxbxVertexShaderStreamInfo -namespace XTL { - #include "core\hle\D3D8\XbD3D8Types.h" // for X_VSH_MAX_ATTRIBUTES -} +#include "core\hle\D3D8\XbD3D8Types.h" // for X_VSH_MAX_ATTRIBUTES // Host vertex shader counts #define VSH_MAX_TEMPORARY_REGISTERS 32 @@ -88,8 +84,8 @@ typedef struct _CxbxVertexShader // The resulting host variables DWORD HostFVF; // Flexible Vertex Format (used when there's no host vertex shader) - XTL::IDirect3DVertexShader* pHostVertexShader; // if nullptr, use SetFVF(HostFVF); - XTL::IDirect3DVertexDeclaration* pHostVertexDeclaration; + IDirect3DVertexShader* pHostVertexShader; // if nullptr, use SetFVF(HostFVF); + IDirect3DVertexDeclaration* pHostVertexDeclaration; // Needed for dynamic stream patching CxbxVertexShaderInfo VertexShaderInfo; @@ -97,7 +93,7 @@ typedef struct _CxbxVertexShader CxbxVertexShader; // recompile xbox vertex shader declaration -extern XTL::D3DVERTEXELEMENT *EmuRecompileVshDeclaration +extern D3DVERTEXELEMENT *EmuRecompileVshDeclaration ( DWORD *pXboxDeclaration, bool bIsFixedFunction, @@ -111,10 +107,10 @@ extern HRESULT EmuRecompileVshFunction ( DWORD *pXboxFunction, bool bNoReservedConstants, - XTL::D3DVERTEXELEMENT *pRecompiledDeclaration, + D3DVERTEXELEMENT *pRecompiledDeclaration, bool *pbUseDeclarationOnly, DWORD *pXboxFunctionSize, - XTL::LPD3DXBUFFER *ppRecompiledShader + LPD3DXBUFFER *ppRecompiledShader ); extern void FreeVertexDynamicPatch(CxbxVertexShader *pVertexShader); diff --git a/src/core/hle/DSOUND/DirectSound/DirectSound.cpp b/src/core/hle/DSOUND/DirectSound/DirectSound.cpp index a2c134e55..f365a0447 100644 --- a/src/core/hle/DSOUND/DirectSound/DirectSound.cpp +++ b/src/core/hle/DSOUND/DirectSound/DirectSound.cpp @@ -37,9 +37,9 @@ namespace xboxkrnl { #include #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" #include "EmuShared.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For D3D_OK +#include "core\hle\DSOUND\DirectSound\DirectSound.hpp" #include "common\Settings.hpp" #include "Logging.h" diff --git a/src/core/hle/DSOUND/DirectSound/DirectSound.hpp b/src/core/hle/DSOUND/DirectSound/DirectSound.hpp index 6091ad0c2..d2d7b9f94 100644 --- a/src/core/hle/DSOUND/DirectSound/DirectSound.hpp +++ b/src/core/hle/DSOUND/DirectSound/DirectSound.hpp @@ -25,12 +25,9 @@ // ****************************************************************** #ifndef EMUDSOUND_H #define EMUDSOUND_H - -#undef FIELD_OFFSET // prevent macro redefinition warnings - -#include + #include "core\kernel\init\CxbxKrnl.h" -#include "..\XbDSoundTypes.h" +#include "core\hle\DSOUND\XbDSoundTypes.h" #ifdef __cplusplus extern "C" { @@ -42,6 +39,11 @@ void CxbxInitAudio(); } #endif +namespace XTL { + +#undef FIELD_OFFSET // prevent macro redefinition warnings +#include // TODO: FIXME after global namespace XTL issue is resolved. + // ****************************************************************** // * X_CDirectSound // ****************************************************************** @@ -1702,5 +1704,9 @@ HRESULT WINAPI EMUPATCH(IDirectSoundStream_Use3DVoiceData) X_CDirectSoundStream* pThis, DWORD a2 ); + +} // end of extern "C" + +} // end of namespace XTL + #endif -} diff --git a/src/core/hle/DSOUND/DirectSound/DirectSoundLogging.cpp b/src/core/hle/DSOUND/DirectSound/DirectSoundLogging.cpp index 154749cc0..a5016a8d7 100644 --- a/src/core/hle/DSOUND/DirectSound/DirectSoundLogging.cpp +++ b/src/core/hle/DSOUND/DirectSound/DirectSoundLogging.cpp @@ -26,10 +26,7 @@ #include "Logging.h" #include "DirectSoundLogging.hpp" #include - -namespace XTL { #include "..\XbDSoundTypes.h" -} FLAGS2STR_START(DS_BCAPS) FLAG2STR(DSBCAPS_PRIMARYBUFFER) diff --git a/src/core/hle/DSOUND/XbDSoundLogging.cpp b/src/core/hle/DSOUND/XbDSoundLogging.cpp index 72f027b08..708648a19 100644 --- a/src/core/hle/DSOUND/XbDSoundLogging.cpp +++ b/src/core/hle/DSOUND/XbDSoundLogging.cpp @@ -26,6 +26,7 @@ #include // Temporary placeholder until XbDSoundTypes.h is cross-platform + filled in the blanks #include "Logging.h" #include "XbDSoundLogging.hpp" + // For XTL::DSBUFFERDESC and XTL::DSSTREAMDESC temporary usage extern LOGRENDER_HEADER(WAVEFORMATEX) extern LOGRENDER_HEADER(D3DVECTOR) diff --git a/src/core/hle/DSOUND/XbDSoundLogging.hpp b/src/core/hle/DSOUND/XbDSoundLogging.hpp index 085b52383..04ed4e5c7 100644 --- a/src/core/hle/DSOUND/XbDSoundLogging.hpp +++ b/src/core/hle/DSOUND/XbDSoundLogging.hpp @@ -26,9 +26,10 @@ #define XBDSOUNDLOGGING_H #include "Logging.h" -namespace XTL { #include "XbDSoundTypes.h" +namespace XTL { + // TODO: Everything, only small portions had been implemented. // DSound flag/enum diff --git a/src/core/hle/DSOUND/XbDSoundTypes.h b/src/core/hle/DSOUND/XbDSoundTypes.h index 0fa71df51..1ce82727b 100644 --- a/src/core/hle/DSOUND/XbDSoundTypes.h +++ b/src/core/hle/DSOUND/XbDSoundTypes.h @@ -26,8 +26,10 @@ #ifndef XBDSOUNDTYPES_H #define XBDSOUNDTYPES_H -#include // TODO: FIXME after global XTL namespace issue is resolved. -// TODO: Port PC dsound.h to xbox edition here base on preivous research. +namespace XTL { + +#include // TODO: FIXME after global namespace XTL issue is resolved. +// TODO: Port PC dsound.h to xbox edition here base on previous research. // TODO: Also need to use fixed size to able support cross-platform without extra work. // Such as uint32_t, uint16_t, etc. @@ -356,4 +358,7 @@ struct X_DSVOICEPROPS { LONG lI3DL2DirectVolume; LONG lI3DL2RoomVolume; }; + +} // end of namespace XTL + #endif diff --git a/src/core/hle/Intercept.cpp b/src/core/hle/Intercept.cpp index 48f9e1bcb..61642d1f5 100644 --- a/src/core/hle/Intercept.cpp +++ b/src/core/hle/Intercept.cpp @@ -37,8 +37,6 @@ #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" -#include "core\kernel\support\EmuXTL.h" #include "core\hle\D3D8\XbState.h" // For EmuD3DDeferredTextureState #include "EmuShared.h" #include "common\CxbxDebugger.h" @@ -419,11 +417,11 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader) CSimpleIniA symbolCacheData; if (std::experimental::filesystem::exists(filename.c_str())) { - std::printf("Found Symbol Cache File: %08X.ini\n", uiHash); + std::printf("Found Symbol Cache File: %08llX.ini\n", uiHash); symbolCacheData.LoadFile(filename.c_str()); - xdkVersion = symbolCacheData.GetLongValue(section_libs, sect_libs_keys.BuildVersion, /*Default=*/0); + xdkVersion = (uint16_t)symbolCacheData.GetLongValue(section_libs, sect_libs_keys.BuildVersion, /*Default=*/0); // Verify the version of the cache file against the Symbol Database version hash const uint32_t SymbolDatabaseVersionHash = symbolCacheData.GetLongValue(section_info, sect_info_keys.SymbolDatabaseVersionHash, /*Default=*/0); diff --git a/src/core/hle/Patches.cpp b/src/core/hle/Patches.cpp index 201c424e0..4966bd9c4 100644 --- a/src/core/hle/Patches.cpp +++ b/src/core/hle/Patches.cpp @@ -28,7 +28,8 @@ #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9/Direct3D9.h" +#include "core\hle\DSOUND\DirectSound\DirectSound.hpp" #include "Patches.hpp" #include "Intercept.hpp" diff --git a/src/core/hle/XACTENG/XactEng.cpp b/src/core/hle/XACTENG/XactEng.cpp index 14e77dbb3..4e6b8ca5f 100644 --- a/src/core/hle/XACTENG/XactEng.cpp +++ b/src/core/hle/XACTENG/XactEng.cpp @@ -33,12 +33,11 @@ namespace xboxkrnl #include }; -#include "core\kernel\init\/CxbxKrnl.h" +#include "core\kernel\init\CxbxKrnl.h" #include "common\Logging.h" #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" #include "EmuShared.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\XACTENG\XactEng.h" #include "core\kernel\memory-manager\VMManager.h" #include diff --git a/src/core/hle/XACTENG/XactEng.h b/src/core/hle/XACTENG/XactEng.h index e4dd4bceb..81a4e74c2 100644 --- a/src/core/hle/XACTENG/XactEng.h +++ b/src/core/hle/XACTENG/XactEng.h @@ -26,12 +26,14 @@ #define EMUXACTENG_H #include "common\xbe\Xbe.h" +#include "core\hle\XAPI\Xapi.h" // For EMUPATCH #undef FIELD_OFFSET // prevent macro redefinition warnings #include #include +namespace XTL { // ****************************************************************** // * XACT Interfaces @@ -343,4 +345,6 @@ HRESULT WINAPI EMUPATCH(IXACTEngine_UnRegisterWaveBank) X_XACTWaveBank* pWaveBank ); +} // end of namespace XTL + #endif diff --git a/src/core/hle/XAPI/Xapi.cpp b/src/core/hle/XAPI/Xapi.cpp index a69599620..d4f39775b 100644 --- a/src/core/hle/XAPI/Xapi.cpp +++ b/src/core/hle/XAPI/Xapi.cpp @@ -42,13 +42,12 @@ namespace xboxkrnl #include "core\kernel\support\Emu.h" #include "core\kernel\exports\EmuKrnl.h" // For DefaultLaunchDataPage #include "core\kernel\support\EmuFile.h" -#include "core\kernel\support\EmuFS.h" -#include "core\kernel\support\EmuXTL.h" #include "EmuShared.h" #include "core\hle\Intercept.hpp" #include "vsbc\CxbxVSBC.h" #include "Windef.h" #include +#include "core\hle\XAPI\Xapi.h" #include "core\hle\XAPI\XapiCxbxr.h" bool g_bCxbxVSBCLoaded = false; @@ -72,7 +71,7 @@ std::atomic g_bIsDevicesInitializing = true; std::atomic g_bIsDevicesEmulating = false; //global bridge for xbox controller to host, 4 elements for 4 ports. -X_CONTROLLER_HOST_BRIDGE g_XboxControllerHostBridge[4] = { +CXBX_CONTROLLER_HOST_BRIDGE g_XboxControllerHostBridge[4] = { { NULL, PORT_INVALID, XBOX_INPUT_DEVICE::DEVICE_INVALID, nullptr, false, false, false, { 0, 0, 0, 0, 0 } }, { NULL, PORT_INVALID, XBOX_INPUT_DEVICE::DEVICE_INVALID, nullptr, false, false, false, { 0, 0, 0, 0, 0 } }, { NULL, PORT_INVALID, XBOX_INPUT_DEVICE::DEVICE_INVALID, nullptr, false, false, false, { 0, 0, 0, 0, 0 } }, @@ -454,7 +453,7 @@ VOID WINAPI XTL::EMUPATCH(XInputClose) { LOG_FUNC_ONE_ARG(hDevice); - PX_CONTROLLER_HOST_BRIDGE Device = (PX_CONTROLLER_HOST_BRIDGE)hDevice; + PCXBX_CONTROLLER_HOST_BRIDGE Device = (PCXBX_CONTROLLER_HOST_BRIDGE)hDevice; int Port = Device->XboxPort; if (g_XboxControllerHostBridge[Port].hXboxDevice == hDevice) { Device->hXboxDevice = NULL; @@ -491,7 +490,7 @@ DWORD WINAPI XTL::EMUPATCH(XInputGetCapabilities) LOG_FUNC_END; DWORD ret = ERROR_DEVICE_NOT_CONNECTED; - PX_CONTROLLER_HOST_BRIDGE Device = (PX_CONTROLLER_HOST_BRIDGE)hDevice; + PCXBX_CONTROLLER_HOST_BRIDGE Device = (PCXBX_CONTROLLER_HOST_BRIDGE)hDevice; int Port = Device->XboxPort; if (g_XboxControllerHostBridge[Port].hXboxDevice == hDevice && !g_XboxControllerHostBridge[Port].bPendingRemoval) { pCapabilities->SubType = g_XboxControllerHostBridge[Port].XboxDeviceInfo.ucSubType; @@ -563,13 +562,13 @@ void EmuSBCGetState(XTL::PX_SBC_GAMEPAD pSBCGamepad, XTL::PXINPUT_GAMEPAD pXIGam } //restore Toggle Switches. - pSBCGamepad->wButtons[0] |= (XboxSBCGamepad.wButtons[0] & (X_SBC_GAMEPAD_W0_COCKPITHATCH | X_SBC_GAMEPAD_W0_IGNITION)); + pSBCGamepad->wButtons[0] |= (XboxSBCGamepad.wButtons[0] & (CXBX_SBC_GAMEPAD_W0_COCKPITHATCH | CXBX_SBC_GAMEPAD_W0_IGNITION)); - pSBCGamepad->wButtons[2] |= (XboxSBCGamepad.wButtons[2]&( X_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL - | X_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY - | X_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE - | X_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL - | X_SBC_GAMEPAD_W2_TOGGLEVTLOCATION)); + pSBCGamepad->wButtons[2] |= (XboxSBCGamepad.wButtons[2]&( CXBX_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL + | CXBX_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY + | CXBX_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE + | CXBX_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL + | CXBX_SBC_GAMEPAD_W2_TOGGLEVTLOCATION)); // Analog Sticks @@ -578,151 +577,151 @@ void EmuSBCGetState(XTL::PX_SBC_GAMEPAD pSBCGamepad, XTL::PXINPUT_GAMEPAD pXIGam pSBCGamepad->sRotationLever = 0;//(pXIGamepad->wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER) ? 255 : 0; pSBCGamepad->sSightChangeX = pXIGamepad->sThumbLX; pSBCGamepad->sSightChangeY = pXIGamepad->sThumbLY; - pSBCGamepad->wLeftPedal = ((SHORT)(pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_LEFT_TRIGGER]))<<8; + pSBCGamepad->wLeftPedal = ((SHORT)(pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_LEFT_TRIGGER]))<<8; pSBCGamepad->wMiddlePedal=0;// = (pXIGamepad->wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER) ? 255 : 0; - pSBCGamepad->wRightPedal = (SHORT)(pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_RIGHT_TRIGGER])<<8; + pSBCGamepad->wRightPedal = (SHORT)(pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_RIGHT_TRIGGER])<<8; pSBCGamepad->ucTunerDial=0;//low nibble // Digital Buttons - if (pXIGamepad->bAnalogButtons [X_XINPUT_GAMEPAD_A]>0) { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_RIGHTJOYMAINWEAPON; + if (pXIGamepad->bAnalogButtons [CXBX_XINPUT_GAMEPAD_A]>0) { + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_RIGHTJOYMAINWEAPON; } else { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_RIGHTJOYMAINWEAPON; + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_RIGHTJOYMAINWEAPON; } - if (pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_B]>0) { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_RIGHTJOYFIRE; + if (pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_B]>0) { + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_RIGHTJOYFIRE; } else { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_RIGHTJOYFIRE; + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_RIGHTJOYFIRE; } - if (pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_X]>0) { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_RIGHTJOYLOCKON; + if (pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_X]>0) { + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_RIGHTJOYLOCKON; } else { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_RIGHTJOYLOCKON; + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_RIGHTJOYLOCKON; } - if (pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_Y]>0) { - pSBCGamepad->wButtons[1] |= X_SBC_GAMEPAD_W1_WEAPONCONMAGAZINE; + if (pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_Y]>0) { + pSBCGamepad->wButtons[1] |= CXBX_SBC_GAMEPAD_W1_WEAPONCONMAGAZINE; } else { - pSBCGamepad->wButtons[1] &= ~X_SBC_GAMEPAD_W1_WEAPONCONMAGAZINE; + pSBCGamepad->wButtons[1] &= ~CXBX_SBC_GAMEPAD_W1_WEAPONCONMAGAZINE; } //GearLever 1~5 for gear 1~5, 7~13 for gear R,N,1~5, 15 for gear R. we use the continues range from 7~13 - if (pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_WHITE]>0) {//Left Shouder, Gear Down + if (pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_WHITE]>0) {//Left Shouder, Gear Down if (pSBCGamepad->ucGearLever >7) { pSBCGamepad->ucGearLever-- ; } } - if (pXIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_BLACK]>0) {//Right Shouder, Gear Up + if (pXIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_BLACK]>0) {//Right Shouder, Gear Up if (pSBCGamepad->ucGearLever < 13) { pSBCGamepad->ucGearLever ++; } } //OLD_XINPUT /* //not used, don't duplicate the handling for same setting of pXIGamepad's members, later one will over write privous one. - if (pXIGamepad->wButtons & X_XINPUT_GAMEPAD_START) { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_START; + if (pXIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_START) { + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_START; } else { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_START; + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_START; } */ - if (pXIGamepad->wButtons & X_XINPUT_GAMEPAD_LEFT_THUMB) {//Center Sight Change - pSBCGamepad->wButtons[2] |= X_SBC_GAMEPAD_W2_LEFTJOYSIGHTCHANGE; + if (pXIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_LEFT_THUMB) {//Center Sight Change + pSBCGamepad->wButtons[2] |= CXBX_SBC_GAMEPAD_W2_LEFTJOYSIGHTCHANGE; } else { - pSBCGamepad->wButtons[2] &= ~X_SBC_GAMEPAD_W2_LEFTJOYSIGHTCHANGE; + pSBCGamepad->wButtons[2] &= ~CXBX_SBC_GAMEPAD_W2_LEFTJOYSIGHTCHANGE; } //OLD_XINPUT /* //not used - if (pXIGamepad->wButtons & X_XINPUT_GAMEPAD_RIGHT_THUMB) { - pSBCGamepad->wButtons |= X_XINPUT_GAMEPAD_RIGHT_THUMB; + if (pXIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_RIGHT_THUMB) { + pSBCGamepad->wButtons |= CXBX_XINPUT_GAMEPAD_RIGHT_THUMB; } else { - pSBCGamepad->wButtons &= ~X_XINPUT_GAMEPAD_RIGHT_THUMB; + pSBCGamepad->wButtons &= ~CXBX_XINPUT_GAMEPAD_RIGHT_THUMB; } */ //additional input from 2nd input, default using directinput - if (pDIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_A]>0) { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_START; + if (pDIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_A]>0) { + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_START; } else { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_START; + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_START; } // Iginition is Toggle Switch - if (pDIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_B]>0) { - if (pSBCGamepad->wButtons[0] & X_SBC_GAMEPAD_W0_IGNITION) { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_IGNITION; + if (pDIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_B]>0) { + if (pSBCGamepad->wButtons[0] & CXBX_SBC_GAMEPAD_W0_IGNITION) { + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_IGNITION; } else { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_IGNITION; + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_IGNITION; } } - if (pDIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_X]>0) { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_EJECT; + if (pDIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_X]>0) { + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_EJECT; } else { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_EJECT; + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_EJECT; } // CockpitHatch is Toggle Switch - if (pDIGamepad->bAnalogButtons[X_XINPUT_GAMEPAD_Y]>0) { - if (pSBCGamepad->wButtons[0] & X_SBC_GAMEPAD_W0_COCKPITHATCH) { - pSBCGamepad->wButtons[0] &= ~X_SBC_GAMEPAD_W0_COCKPITHATCH; + if (pDIGamepad->bAnalogButtons[CXBX_XINPUT_GAMEPAD_Y]>0) { + if (pSBCGamepad->wButtons[0] & CXBX_SBC_GAMEPAD_W0_COCKPITHATCH) { + pSBCGamepad->wButtons[0] &= ~CXBX_SBC_GAMEPAD_W0_COCKPITHATCH; } else { - pSBCGamepad->wButtons[0] |= X_SBC_GAMEPAD_W0_COCKPITHATCH; + pSBCGamepad->wButtons[0] |= CXBX_SBC_GAMEPAD_W0_COCKPITHATCH; } } - if (pDIGamepad->wButtons & X_XINPUT_GAMEPAD_BACK) {//Toggle Switch ToggleFilterControl - if (pSBCGamepad->wButtons[2] & X_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL) { - pSBCGamepad->wButtons[2] &= ~X_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL; + if (pDIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_BACK) {//Toggle Switch ToggleFilterControl + if (pSBCGamepad->wButtons[2] & CXBX_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL) { + pSBCGamepad->wButtons[2] &= ~CXBX_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL; } else { - pSBCGamepad->wButtons[2] |= X_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL; + pSBCGamepad->wButtons[2] |= CXBX_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL; } } - if (pDIGamepad->wButtons & X_XINPUT_GAMEPAD_DPAD_UP) {//Toggle Switch ToggleOxygenSupply - if (pSBCGamepad->wButtons[2] & X_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY) { - pSBCGamepad->wButtons[2] &= ~X_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY; + if (pDIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_DPAD_UP) {//Toggle Switch ToggleOxygenSupply + if (pSBCGamepad->wButtons[2] & CXBX_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY) { + pSBCGamepad->wButtons[2] &= ~CXBX_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY; } else { - pSBCGamepad->wButtons[2] |= X_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY; + pSBCGamepad->wButtons[2] |= CXBX_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY; } } - if (pDIGamepad->wButtons & X_XINPUT_GAMEPAD_DPAD_DOWN) {//Toggle Switch ToggleBuffreMaterial - if (pSBCGamepad->wButtons[2] & X_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL) { - pSBCGamepad->wButtons[2] &= ~X_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL; + if (pDIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_DPAD_DOWN) {//Toggle Switch ToggleBuffreMaterial + if (pSBCGamepad->wButtons[2] & CXBX_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL) { + pSBCGamepad->wButtons[2] &= ~CXBX_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL; } else { - pSBCGamepad->wButtons[2] |= X_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL; + pSBCGamepad->wButtons[2] |= CXBX_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL; } } - if (pDIGamepad->wButtons & X_XINPUT_GAMEPAD_DPAD_LEFT) {//Toggle Switch ToggleVTLocation - if (pSBCGamepad->wButtons[2] & X_SBC_GAMEPAD_W2_TOGGLEVTLOCATION) { - pSBCGamepad->wButtons[2] &= ~X_SBC_GAMEPAD_W2_TOGGLEVTLOCATION; + if (pDIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_DPAD_LEFT) {//Toggle Switch ToggleVTLocation + if (pSBCGamepad->wButtons[2] & CXBX_SBC_GAMEPAD_W2_TOGGLEVTLOCATION) { + pSBCGamepad->wButtons[2] &= ~CXBX_SBC_GAMEPAD_W2_TOGGLEVTLOCATION; } else { - pSBCGamepad->wButtons[2] |= X_SBC_GAMEPAD_W2_TOGGLEVTLOCATION; + pSBCGamepad->wButtons[2] |= CXBX_SBC_GAMEPAD_W2_TOGGLEVTLOCATION; } } - if (pDIGamepad->wButtons & X_XINPUT_GAMEPAD_DPAD_RIGHT) {//Toggle Switch ToggleFuelFlowRate - if (pSBCGamepad->wButtons[2] & X_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE) { - pSBCGamepad->wButtons[2] &= ~X_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE; + if (pDIGamepad->wButtons & CXBX_XINPUT_GAMEPAD_DPAD_RIGHT) {//Toggle Switch ToggleFuelFlowRate + if (pSBCGamepad->wButtons[2] & CXBX_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE) { + pSBCGamepad->wButtons[2] &= ~CXBX_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE; } else { - pSBCGamepad->wButtons[2] |= X_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE; + pSBCGamepad->wButtons[2] |= CXBX_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE; } } //reserve the SBCGamepad to keep the status of GearLever and Toggole Switches. @@ -745,7 +744,7 @@ DWORD WINAPI XTL::EMUPATCH(XInputGetState) LOG_FUNC_END; DWORD ret = ERROR_DEVICE_NOT_CONNECTED; - PX_CONTROLLER_HOST_BRIDGE Device = (PX_CONTROLLER_HOST_BRIDGE)hDevice; + PCXBX_CONTROLLER_HOST_BRIDGE Device = (PCXBX_CONTROLLER_HOST_BRIDGE)hDevice; int Port = Device->XboxPort; if (g_XboxControllerHostBridge[Port].hXboxDevice == hDevice) { if (!g_XboxControllerHostBridge[Port].bPendingRemoval) { @@ -778,7 +777,7 @@ DWORD WINAPI XTL::EMUPATCH(XInputSetState) LOG_FUNC_ARG(pFeedback) LOG_FUNC_END; - PX_CONTROLLER_HOST_BRIDGE Device = (PX_CONTROLLER_HOST_BRIDGE)hDevice; + PCXBX_CONTROLLER_HOST_BRIDGE Device = (PCXBX_CONTROLLER_HOST_BRIDGE)hDevice; int Port = Device->XboxPort; if (g_XboxControllerHostBridge[Port].hXboxDevice == hDevice && !g_XboxControllerHostBridge[Port].bPendingRemoval) { pFeedback->Header.dwStatus = ERROR_IO_PENDING; diff --git a/src/core/hle/XAPI/Xapi.h b/src/core/hle/XAPI/Xapi.h index 864a413e5..44abb2dd6 100644 --- a/src/core/hle/XAPI/Xapi.h +++ b/src/core/hle/XAPI/Xapi.h @@ -24,6 +24,8 @@ // ****************************************************************** #ifndef XAPI_H #define XAPI_H + +namespace XTL { // ****************************************************************** // * calling conventions @@ -840,5 +842,7 @@ DWORD WINAPI EMUPATCH(XCalculateSignatureEnd) ); //*/ // +s + +} // end of namespace XTL #endif diff --git a/src/core/hle/XAPI/XapiCxbxr.h b/src/core/hle/XAPI/XapiCxbxr.h index 14d9b2d99..4d0b5781e 100644 --- a/src/core/hle/XAPI/XapiCxbxr.h +++ b/src/core/hle/XAPI/XapiCxbxr.h @@ -23,7 +23,7 @@ // * // ****************************************************************** -// This file contains Xapi variables which are not part of the Xbox Xapi but are used by Cxbxr. They are prefixed with X_ to further distinguish them. +// This file contains Xapi variables which are not part of the Xbox Xapi but are used by Cxbxr. They are prefixed with CXBX_ to further distinguish them. #ifndef XAPI_CXBXR_H #define XAPI_CXBXR_H @@ -32,7 +32,7 @@ // * XINPUT_DEVICE_INFO // ****************************************************************** -typedef struct _X_XINPUT_DEVICE_INFO +typedef struct _CXBX_XINPUT_DEVICE_INFO { UCHAR ucType; //xbox controller type @@ -41,13 +41,13 @@ typedef struct _X_XINPUT_DEVICE_INFO UCHAR ucFeedbackSize; //xbox controller feedback size in bytes, not include FeedbackHeader DWORD dwPacketNumber; } -X_XINPUT_DEVICE_INFO, *PX_XINPUT_DEVICE_INFO; +CXBX_XINPUT_DEVICE_INFO, *PCXBX_XINPUT_DEVICE_INFO; //this structure is for use of tracking the xbox controllers assigned to 4 ports. // ****************************************************************** -// * X_CONTROLLER_HOST_BRIDGE +// * CXBX_CONTROLLER_HOST_BRIDGE // ****************************************************************** -typedef struct _X_CONTROLLER_HOST_BRIDGE +typedef struct _CXBX_CONTROLLER_HOST_BRIDGE { HANDLE hXboxDevice; //xbox device handle to this device, we use the address of this bridge as the handle, only set after opened. cleared after closed. int XboxPort; //xbox port# for this xbox controller @@ -56,120 +56,120 @@ typedef struct _X_CONTROLLER_HOST_BRIDGE bool bPendingRemoval; bool bSignaled; bool bIoInProgress; - X_XINPUT_DEVICE_INFO XboxDeviceInfo; + CXBX_XINPUT_DEVICE_INFO XboxDeviceInfo; } -X_CONTROLLER_HOST_BRIDGE, *PX_CONTROLLER_HOST_BRIDGE; +CXBX_CONTROLLER_HOST_BRIDGE, *PCXBX_CONTROLLER_HOST_BRIDGE; // ****************************************************************** // * offsets into analog button array // ****************************************************************** -#define X_XINPUT_GAMEPAD_A 0 -#define X_XINPUT_GAMEPAD_B 1 -#define X_XINPUT_GAMEPAD_X 2 -#define X_XINPUT_GAMEPAD_Y 3 -#define X_XINPUT_GAMEPAD_BLACK 4 -#define X_XINPUT_GAMEPAD_WHITE 5 -#define X_XINPUT_GAMEPAD_LEFT_TRIGGER 6 -#define X_XINPUT_GAMEPAD_RIGHT_TRIGGER 7 +#define CXBX_XINPUT_GAMEPAD_A 0 +#define CXBX_XINPUT_GAMEPAD_B 1 +#define CXBX_XINPUT_GAMEPAD_X 2 +#define CXBX_XINPUT_GAMEPAD_Y 3 +#define CXBX_XINPUT_GAMEPAD_BLACK 4 +#define CXBX_XINPUT_GAMEPAD_WHITE 5 +#define CXBX_XINPUT_GAMEPAD_LEFT_TRIGGER 6 +#define CXBX_XINPUT_GAMEPAD_RIGHT_TRIGGER 7 // ****************************************************************** // * masks for digital buttons // ****************************************************************** -#define X_XINPUT_GAMEPAD_DPAD_UP 0x00000001 -#define X_XINPUT_GAMEPAD_DPAD_DOWN 0x00000002 -#define X_XINPUT_GAMEPAD_DPAD_LEFT 0x00000004 -#define X_XINPUT_GAMEPAD_DPAD_RIGHT 0x00000008 -#define X_XINPUT_GAMEPAD_START 0x00000010 -#define X_XINPUT_GAMEPAD_BACK 0x00000020 -#define X_XINPUT_GAMEPAD_LEFT_THUMB 0x00000040 -#define X_XINPUT_GAMEPAD_RIGHT_THUMB 0x00000080 +#define CXBX_XINPUT_GAMEPAD_DPAD_UP 0x00000001 +#define CXBX_XINPUT_GAMEPAD_DPAD_DOWN 0x00000002 +#define CXBX_XINPUT_GAMEPAD_DPAD_LEFT 0x00000004 +#define CXBX_XINPUT_GAMEPAD_DPAD_RIGHT 0x00000008 +#define CXBX_XINPUT_GAMEPAD_START 0x00000010 +#define CXBX_XINPUT_GAMEPAD_BACK 0x00000020 +#define CXBX_XINPUT_GAMEPAD_LEFT_THUMB 0x00000040 +#define CXBX_XINPUT_GAMEPAD_RIGHT_THUMB 0x00000080 // ****************************************************************** // * masks for digital buttons of X_SBC_GAMEPAD // ****************************************************************** -#define X_SBC_GAMEPAD_W0_RIGHTJOYMAINWEAPON 0x0001 -#define X_SBC_GAMEPAD_W0_RIGHTJOYFIRE 0x0002 -#define X_SBC_GAMEPAD_W0_RIGHTJOYLOCKON 0x0004 -#define X_SBC_GAMEPAD_W0_EJECT 0x0008 -#define X_SBC_GAMEPAD_W0_COCKPITHATCH 0x0010 -#define X_SBC_GAMEPAD_W0_IGNITION 0x0020 -#define X_SBC_GAMEPAD_W0_START 0x0040 -#define X_SBC_GAMEPAD_W0_MULTIMONOPENCLOSE 0x0080 -#define X_SBC_GAMEPAD_W0_MULTIMONMAPZOOMINOUT 0x0100 -#define X_SBC_GAMEPAD_W0_MULTIMONMODESELECT 0x0200 -#define X_SBC_GAMEPAD_W0_MULTIMONSUBMONITOR 0x0400 -#define X_SBC_GAMEPAD_W0_MAINMONZOOMIN 0x0800 -#define X_SBC_GAMEPAD_W0_MAINMONZOOMOUT 0x1000 -#define X_SBC_GAMEPAD_W0_FUNCTIONFSS 0x2000 -#define X_SBC_GAMEPAD_W0_FUNCTIONMANIPULATOR 0x4000 -#define X_SBC_GAMEPAD_W0_FUNCTIONLINECOLORCHANGE 0x8000 -#define X_SBC_GAMEPAD_W1_WASHING 0x0001 -#define X_SBC_GAMEPAD_W1_EXTINGUISHER 0x0002 -#define X_SBC_GAMEPAD_W1_CHAFF 0x0004 -#define X_SBC_GAMEPAD_W1_FUNCTIONTANKDETACH 0x0008 -#define X_SBC_GAMEPAD_W1_FUNCTIONOVERRIDE 0x0010 -#define X_SBC_GAMEPAD_W1_FUNCTIONNIGHTSCOPE 0x0020 -#define X_SBC_GAMEPAD_W1_FUNCTIONF1 0x0040 -#define X_SBC_GAMEPAD_W1_FUNCTIONF2 0x0080 -#define X_SBC_GAMEPAD_W1_FUNCTIONF3 0x0100 -#define X_SBC_GAMEPAD_W1_WEAPONCONMAIN 0x0200 -#define X_SBC_GAMEPAD_W1_WEAPONCONSUB 0x0400 -#define X_SBC_GAMEPAD_W1_WEAPONCONMAGAZINE 0x0800 -#define X_SBC_GAMEPAD_W1_COMM1 0x1000 -#define X_SBC_GAMEPAD_W1_COMM2 0x2000 -#define X_SBC_GAMEPAD_W1_COMM3 0x4000 -#define X_SBC_GAMEPAD_W1_COMM4 0x8000 -#define X_SBC_GAMEPAD_W2_COMM5 0x0001 -#define X_SBC_GAMEPAD_W2_LEFTJOYSIGHTCHANGE 0x0002 -#define X_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL 0x0004 -#define X_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY 0x0008 -#define X_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE 0x0010 -#define X_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL 0x0020 -#define X_SBC_GAMEPAD_W2_TOGGLEVTLOCATION 0x0040 +#define CXBX_SBC_GAMEPAD_W0_RIGHTJOYMAINWEAPON 0x0001 +#define CXBX_SBC_GAMEPAD_W0_RIGHTJOYFIRE 0x0002 +#define CXBX_SBC_GAMEPAD_W0_RIGHTJOYLOCKON 0x0004 +#define CXBX_SBC_GAMEPAD_W0_EJECT 0x0008 +#define CXBX_SBC_GAMEPAD_W0_COCKPITHATCH 0x0010 +#define CXBX_SBC_GAMEPAD_W0_IGNITION 0x0020 +#define CXBX_SBC_GAMEPAD_W0_START 0x0040 +#define CXBX_SBC_GAMEPAD_W0_MULTIMONOPENCLOSE 0x0080 +#define CXBX_SBC_GAMEPAD_W0_MULTIMONMAPZOOMINOUT 0x0100 +#define CXBX_SBC_GAMEPAD_W0_MULTIMONMODESELECT 0x0200 +#define CXBX_SBC_GAMEPAD_W0_MULTIMONSUBMONITOR 0x0400 +#define CXBX_SBC_GAMEPAD_W0_MAINMONZOOMIN 0x0800 +#define CXBX_SBC_GAMEPAD_W0_MAINMONZOOMOUT 0x1000 +#define CXBX_SBC_GAMEPAD_W0_FUNCTIONFSS 0x2000 +#define CXBX_SBC_GAMEPAD_W0_FUNCTIONMANIPULATOR 0x4000 +#define CXBX_SBC_GAMEPAD_W0_FUNCTIONLINECOLORCHANGE 0x8000 +#define CXBX_SBC_GAMEPAD_W1_WASHING 0x0001 +#define CXBX_SBC_GAMEPAD_W1_EXTINGUISHER 0x0002 +#define CXBX_SBC_GAMEPAD_W1_CHAFF 0x0004 +#define CXBX_SBC_GAMEPAD_W1_FUNCTIONTANKDETACH 0x0008 +#define CXBX_SBC_GAMEPAD_W1_FUNCTIONOVERRIDE 0x0010 +#define CXBX_SBC_GAMEPAD_W1_FUNCTIONNIGHTSCOPE 0x0020 +#define CXBX_SBC_GAMEPAD_W1_FUNCTIONF1 0x0040 +#define CXBX_SBC_GAMEPAD_W1_FUNCTIONF2 0x0080 +#define CXBX_SBC_GAMEPAD_W1_FUNCTIONF3 0x0100 +#define CXBX_SBC_GAMEPAD_W1_WEAPONCONMAIN 0x0200 +#define CXBX_SBC_GAMEPAD_W1_WEAPONCONSUB 0x0400 +#define CXBX_SBC_GAMEPAD_W1_WEAPONCONMAGAZINE 0x0800 +#define CXBX_SBC_GAMEPAD_W1_COMM1 0x1000 +#define CXBX_SBC_GAMEPAD_W1_COMM2 0x2000 +#define CXBX_SBC_GAMEPAD_W1_COMM3 0x4000 +#define CXBX_SBC_GAMEPAD_W1_COMM4 0x8000 +#define CXBX_SBC_GAMEPAD_W2_COMM5 0x0001 +#define CXBX_SBC_GAMEPAD_W2_LEFTJOYSIGHTCHANGE 0x0002 +#define CXBX_SBC_GAMEPAD_W2_TOGGLEFILTERCONTROL 0x0004 +#define CXBX_SBC_GAMEPAD_W2_TOGGLEOXYGENSUPPLY 0x0008 +#define CXBX_SBC_GAMEPAD_W2_TOGGLEFUELFLOWRATE 0x0010 +#define CXBX_SBC_GAMEPAD_W2_TOGGLEBUFFREMATERIAL 0x0020 +#define CXBX_SBC_GAMEPAD_W2_TOGGLEVTLOCATION 0x0040 // ****************************************************************** // * enum for feedback status variables of X_SBC_FEEDBACK, it's a byte array after FeedbackHeader, each variable take 1 nibble, that's half byte. // ****************************************************************** -#define X_SBC_FEEDBACK_EMERGENCYEJECT 0 -#define X_SBC_FEEDBACK_COCKPITHATCH 1 -#define X_SBC_FEEDBACK_IGNITION 2 -#define X_SBC_FEEDBACK_START 3 -#define X_SBC_FEEDBACK_OPENCLOSE 4 -#define X_SBC_FEEDBACK_MAPZOOMINOUT 5 -#define X_SBC_FEEDBACK_MODESELECT 6 -#define X_SBC_FEEDBACK_SUBMONITORMODESELECT 7 -#define X_SBC_FEEDBACK_MAINMONITORZOOMIN 8 -#define X_SBC_FEEDBACK_MAINMONITORZOOMOUT 9 -#define X_SBC_FEEDBACK_FORECASTSHOOTINGSYSTEM 10 -#define X_SBC_FEEDBACK_MANIPULATOR 11 -#define X_SBC_FEEDBACK_LINECOLORCHANGE 12 -#define X_SBC_FEEDBACK_WASHING 13 -#define X_SBC_FEEDBACK_EXTINGUISHER 14 -#define X_SBC_FEEDBACK_CHAFF 15 -#define X_SBC_FEEDBACK_TANKDETACH 16 -#define X_SBC_FEEDBACK_OVERRIDE 17 -#define X_SBC_FEEDBACK_NIGHTSCOPE 18 -#define X_SBC_FEEDBACK_F1 19 -#define X_SBC_FEEDBACK_F2 20 -#define X_SBC_FEEDBACK_F3 21 -#define X_SBC_FEEDBACK_MAINWEAPONCONTROL 22 -#define X_SBC_FEEDBACK_SUBWEAPONCONTROL 23 -#define X_SBC_FEEDBACK_MAGAZINECHANGE 24 -#define X_SBC_FEEDBACK_COMM1 25 -#define X_SBC_FEEDBACK_COMM2 26 -#define X_SBC_FEEDBACK_COMM3 27 -#define X_SBC_FEEDBACK_COMM4 28 -#define X_SBC_FEEDBACK_COMM5 29 -#define X_SBC_FEEDBACK_UNKNOWN 30 -#define X_SBC_FEEDBACK_GEARR 31 -#define X_SBC_FEEDBACK_GEARN 32 -#define X_SBC_FEEDBACK_GEAR1 33 -#define X_SBC_FEEDBACK_GEAR2 34 -#define X_SBC_FEEDBACK_GEAR3 35 -#define X_SBC_FEEDBACK_GEAR4 36 -#define X_SBC_FEEDBACK_GEAR5 37 +#define CXBX_SBC_FEEDBACK_EMERGENCYEJECT 0 +#define CXBX_SBC_FEEDBACK_COCKPITHATCH 1 +#define CXBX_SBC_FEEDBACK_IGNITION 2 +#define CXBX_SBC_FEEDBACK_START 3 +#define CXBX_SBC_FEEDBACK_OPENCLOSE 4 +#define CXBX_SBC_FEEDBACK_MAPZOOMINOUT 5 +#define CXBX_SBC_FEEDBACK_MODESELECT 6 +#define CXBX_SBC_FEEDBACK_SUBMONITORMODESELECT 7 +#define CXBX_SBC_FEEDBACK_MAINMONITORZOOMIN 8 +#define CXBX_SBC_FEEDBACK_MAINMONITORZOOMOUT 9 +#define CXBX_SBC_FEEDBACK_FORECASTSHOOTINGSYSTEM 10 +#define CXBX_SBC_FEEDBACK_MANIPULATOR 11 +#define CXBX_SBC_FEEDBACK_LINECOLORCHANGE 12 +#define CXBX_SBC_FEEDBACK_WASHING 13 +#define CXBX_SBC_FEEDBACK_EXTINGUISHER 14 +#define CXBX_SBC_FEEDBACK_CHAFF 15 +#define CXBX_SBC_FEEDBACK_TANKDETACH 16 +#define CXBX_SBC_FEEDBACK_OVERRIDE 17 +#define CXBX_SBC_FEEDBACK_NIGHTSCOPE 18 +#define CXBX_SBC_FEEDBACK_F1 19 +#define CXBX_SBC_FEEDBACK_F2 20 +#define CXBX_SBC_FEEDBACK_F3 21 +#define CXBX_SBC_FEEDBACK_MAINWEAPONCONTROL 22 +#define CXBX_SBC_FEEDBACK_SUBWEAPONCONTROL 23 +#define CXBX_SBC_FEEDBACK_MAGAZINECHANGE 24 +#define CXBX_SBC_FEEDBACK_COMM1 25 +#define CXBX_SBC_FEEDBACK_COMM2 26 +#define CXBX_SBC_FEEDBACK_COMM3 27 +#define CXBX_SBC_FEEDBACK_COMM4 28 +#define CXBX_SBC_FEEDBACK_COMM5 29 +#define CXBX_SBC_FEEDBACK_UNKNOWN 30 +#define CXBX_SBC_FEEDBACK_GEARR 31 +#define CXBX_SBC_FEEDBACK_GEARN 32 +#define CXBX_SBC_FEEDBACK_GEAR1 33 +#define CXBX_SBC_FEEDBACK_GEAR2 34 +#define CXBX_SBC_FEEDBACK_GEAR3 35 +#define CXBX_SBC_FEEDBACK_GEAR4 36 +#define CXBX_SBC_FEEDBACK_GEAR5 37 -#define X_SBC_FEEDBACK_MAX 38 +#define CXBX_SBC_FEEDBACK_MAX 38 #endif diff --git a/src/core/hle/XGRAPHIC/XGraphic.cpp b/src/core/hle/XGRAPHIC/XGraphic.cpp index ae56c99af..bc93a099a 100644 --- a/src/core/hle/XGRAPHIC/XGraphic.cpp +++ b/src/core/hle/XGRAPHIC/XGraphic.cpp @@ -31,10 +31,11 @@ #include #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" #include "common\Logging.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\kernel\init\CxbxKrnl.h" // For CxbxKrnlCleanup() +#include "core\hle\XAPI\Xapi.h" // For EMUPATCH #include "core\hle\D3D8\XbD3D8Logging.h" // for log rendering of X_D3DFORMAT, etc. +#include "core\hle\XGRAPHIC\XGraphic.h" // ****************************************************************** // * patch: XGIsSwizzledFormat diff --git a/src/core/hle/XGRAPHIC/XGraphic.h b/src/core/hle/XGRAPHIC/XGraphic.h index a7538e28d..85fd01bc6 100644 --- a/src/core/hle/XGRAPHIC/XGraphic.h +++ b/src/core/hle/XGRAPHIC/XGraphic.h @@ -24,6 +24,10 @@ // ****************************************************************** #ifndef XGRAPHIC_H #define XGRAPHIC_H + +#include "core\hle\D3D8\XbD3D8Types.h" + +namespace XTL { typedef struct _XGPOINT3D { @@ -110,5 +114,7 @@ HRESULT WINAPI EMUPATCH(XFONT_OpenBitmapFontFromMemory) unsigned uFontDataSize, void **ppFont ); + +} // end of namespace XTL #endif diff --git a/src/core/hle/XONLINE/XOnline.cpp b/src/core/hle/XONLINE/XOnline.cpp deleted file mode 100644 index 8c00d63a5..000000000 --- a/src/core/hle/XONLINE/XOnline.cpp +++ /dev/null @@ -1,298 +0,0 @@ -// This is an open source non-commercial project. Dear PVS-Studio, please check it. -// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com -// ****************************************************************** -// * -// * This file is part of the Cxbx project. -// * -// * Cxbx and Cxbe are free software; you can redistribute them -// * and/or modify them under the terms of the GNU General Public -// * License as published by the Free Software Foundation; either -// * version 2 of the license, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have recieved a copy of the GNU General Public License -// * along with this program; see the file COPYING. -// * If not, write to the Free Software Foundation, Inc., -// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA. -// * -// * (c) 2002-2003 Aaron Robinson -// * -// * All rights reserved -// * -// ****************************************************************** - -#define LOG_PREFIX CXBXR_MODULE::XONLINE - -#include "core\kernel\support\Emu.h" -#include "common\Logging.h" -#include "core\kernel\support\EmuFS.h" -#include "core\kernel\support\EmuXTL.h" - -/* -// ****************************************************************** -// * patch: WSAStartup -// ****************************************************************** -int WINAPI XTL::EMUPATCH(WSAStartup) -( - WORD wVersionRequested, - WSADATA *lpWSAData -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(wVersionRequested) - LOG_FUNC_ARG(lpWSAData) - LOG_FUNC_END; - - // Prevent this function from failing by requesting a version of Winsock that - // we know for sure is actually supported on Windows. This also fixes one error - // in the 4920 dashboard. - int ret = WSAStartup(MAKEWORD(2,2) /*wVersionRequested, lpWSAData); - - RETURN(ret); -} - -/* -// ****************************************************************** -// * patch: XNetStartup -// ****************************************************************** -INT WINAPI XTL::EMUPATCH(XNetStartup) -( - const PVOID pDummy -) -{ - - - LOG_FUNC_ONE_ARG(pDummy); - - // Fake Successfull...hehehe...sucker...hehehehehe - INT ret = 0; - - RETURN(ret); -} - - -// ****************************************************************** -// * patch: This::Emusocket -// ****************************************************************** -SOCKET WINAPI XTL::EMUPATCH(socket) -( - int af, - int type, - int protocol -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(af) - LOG_FUNC_ARG(type) - LOG_FUNC_ARG(protocol) - LOG_FUNC_END; - - SOCKET ret = socket(af, type, protocol); - - RETURN(ret); -} - -// ****************************************************************** -// * patch: This::Emuconnect -// ****************************************************************** -int WINAPI XTL::EMUPATCH(connect) -( - SOCKET s, - const struct sockaddr FAR *name, - int namelen -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(s) - LOG_FUNC_ARG(name) - LOG_FUNC_ARG(namelen) - LOG_FUNC_END; - - int ret = connect(s, name, namelen); - - RETURN(ret); -} - -// ****************************************************************** -// * patch: This::Emusend -// ****************************************************************** -int WINAPI XTL::EMUPATCH(send) -( - SOCKET s, - const char FAR *buf, - int len, - int flags -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(s) - LOG_FUNC_ARG(buf) - LOG_FUNC_ARG(len) - LOG_FUNC_ARG(flags) - LOG_FUNC_END; - - int ret = send(s, buf, len, flags); - - RETURN(ret); -} - -// ****************************************************************** -// * patch: This::Emurecv -// ****************************************************************** -int WINAPI XTL::EMUPATCH(recv) -( - SOCKET s, - char FAR *buf, - int len, - int flags -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(s) - LOG_FUNC_ARG(buf) - LOG_FUNC_ARG(len) - LOG_FUNC_ARG(flags) - LOG_FUNC_END; - - int ret = recv(s, buf, len, flags); - - RETURN(ret); -} - -// ****************************************************************** -// * patch: This::Emubind -// ****************************************************************** -int WINAPI XTL::EMUPATCH(bind) -( - SOCKET s, - const struct sockaddr FAR *name, - int namelen -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(s) - LOG_FUNC_ARG(name) - LOG_FUNC_ARG(namelen) - LOG_FUNC_END; - - // TODO: Host-To-Network order if necessary (probably not?) - - int ret = bind(s, name, namelen); - - RETURN(ret); -} - -// ****************************************************************** -// * patch: This::Emulisten -// ****************************************************************** -int WINAPI XTL::EMUPATCH(listen) -( - SOCKET s, - int backlog -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(s) - LOG_FUNC_ARG(backlog) - LOG_FUNC_END; - - // TODO: Host-To-Network order if necessary (probably not?) - - int ret = listen(s, backlog); - - RETURN(ret); -} - -// ****************************************************************** -// * patch: This::Emuioctlsocket -// ****************************************************************** -int WINAPI XTL::EMUPATCH(ioctlsocket) -( - SOCKET s, - long cmd, - u_long FAR *argp -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(s) - LOG_FUNC_ARG(cmd) - LOG_FUNC_ARG(argp) - LOG_FUNC_END; - - int ret = ioctlsocket(s, cmd, argp); - - RETURN(ret); -} -*/ - -// ****************************************************************** -// * patch: XOnlineLaunchNewImage -// ****************************************************************** -HRESULT WINAPI XOnlineLaunchNewImage -( - LPCSTR lpImagePath, - LPVOID pLaunchData -) -{ - LOG_FUNC_BEGIN - LOG_FUNC_ARG(lpImagePath) - LOG_FUNC_ARG(pLaunchData) - LOG_FUNC_END; - - // TODO: Launch another .xbe from Cxbx someday? - - HRESULT ret = E_FAIL; - - RETURN(ret); -} - -/* -// ****************************************************************** -// * patch: XOnlineLogon -// ****************************************************************** -HRESULT WINAPI XTL::EMUPATCH(XOnlineLogon) -( - VOID* pUsers, - DWORD* pdwServiceIDs, - DWORD dwServices, - HANDLE hEvent, - HANDLE pHandle -) -{ - - - LOG_FUNC_BEGIN - LOG_FUNC_ARG(pUsers) - LOG_FUNC_ARG(pdwServiceIDs) - LOG_FUNC_ARG(dwServices) - LOG_FUNC_ARG(hEvent) - LOG_FUNC_ARG(pHandle) - LOG_FUNC_END; - - // TODO: What will it take to log on to Xbox Live? - - HRESULT ret = HRESULT(0x80151000L); // XONLINE_E_LOGON_NO_NETWORK_CONNECTION - - RETURN(ret); -} -*/ diff --git a/src/core/hle/XONLINE/XOnline.h b/src/core/hle/XONLINE/XOnline.h index 0ed96f2cc..632dade71 100644 --- a/src/core/hle/XONLINE/XOnline.h +++ b/src/core/hle/XONLINE/XOnline.h @@ -22,8 +22,12 @@ // * All rights reserved // * // ****************************************************************** -#ifndef XONLINE_H -#define XONLINE_H +#if 0 // XOnline.h isn't used, but below is still useful documentation. + +#include "core\kernel\support\Emu.h" +#include "core\hle\XAPI\Xapi.h" // For EMUPATCH + +namespace XTL { // ****************************************************************** // * patch: WSAStartup @@ -119,4 +123,6 @@ int WINAPI EMUPATCH(ioctlsocket) u_long FAR *argp ); +} // end of namespace XTL + #endif diff --git a/src/core/kernel/exports/EmuKrnl.cpp b/src/core/kernel/exports/EmuKrnl.cpp index deebb38eb..58034af82 100644 --- a/src/core/kernel/exports/EmuKrnl.cpp +++ b/src/core/kernel/exports/EmuKrnl.cpp @@ -36,14 +36,12 @@ namespace xboxkrnl #include #include #include -//#include #include "Logging.h" #include "EmuKrnlLogging.h" #include "EmuKrnl.h" // for HalSystemInterrupts #include "EmuKrnlKi.h" // for KiLockDispatcherDatabase #include "core\kernel\init\CxbxKrnl.h" -#include "core\kernel\support\EmuXTL.h" // prevent name collisions namespace NtDll diff --git a/src/core/kernel/exports/EmuKrnlAv.cpp b/src/core/kernel/exports/EmuKrnlAv.cpp index 7ec98cb27..33f69c397 100644 --- a/src/core/kernel/exports/EmuKrnlAv.cpp +++ b/src/core/kernel/exports/EmuKrnlAv.cpp @@ -44,7 +44,7 @@ namespace NtDll }; #include "core\kernel\support\Emu.h" // For EmuLog(LOG_LEVEL::WARNING, ) -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" #include "devices\x86\EmuX86.h" #include "EmuKrnlAvModes.h" diff --git a/src/core/kernel/exports/EmuKrnlKe.cpp b/src/core/kernel/exports/EmuKrnlKe.cpp index 75cbad848..87648d0f1 100644 --- a/src/core/kernel/exports/EmuKrnlKe.cpp +++ b/src/core/kernel/exports/EmuKrnlKe.cpp @@ -2080,9 +2080,9 @@ XBSYSAPI EXPORTNUM(158) xboxkrnl::NTSTATUS NTAPI xboxkrnl::KeWaitForMultipleObje //WaitStatus = (NTSTATUS)KiSwapThread(); - if (WaitStatus == STATUS_USER_APC) { + //if (WaitStatus == STATUS_USER_APC) { // TODO: KiDeliverUserApc(); - } + //} // If the thread was not awakened for an APC, return the Wait Status //if (WaitStatus != STATUS_KERNEL_APC) { diff --git a/src/core/kernel/exports/EmuKrnlLogging.cpp b/src/core/kernel/exports/EmuKrnlLogging.cpp index 8b9dd93d3..22d074213 100644 --- a/src/core/kernel/exports/EmuKrnlLogging.cpp +++ b/src/core/kernel/exports/EmuKrnlLogging.cpp @@ -34,15 +34,6 @@ namespace xboxkrnl }; -//#include -//#include -//#include -// -//#include // for DWORD -//#include // for std::stringstream -//#include // For std::cout -//#include // For std::setw - #include "Logging.h" #include "EmuKrnlLogging.h" #include "core\kernel\init\CxbxKrnl.h" diff --git a/src/core/kernel/exports/EmuKrnlLogging.h b/src/core/kernel/exports/EmuKrnlLogging.h index cd3ab2c4c..7cc019b4b 100644 --- a/src/core/kernel/exports/EmuKrnlLogging.h +++ b/src/core/kernel/exports/EmuKrnlLogging.h @@ -25,8 +25,6 @@ #ifndef _EMU_KERNEL_LOGGING_H #define _EMU_KERNEL_LOGGING_H -#pragma once - // prevent name collisions namespace xboxkrnl { diff --git a/src/core/kernel/exports/EmuKrnlPhy.cpp b/src/core/kernel/exports/EmuKrnlPhy.cpp index 966cb3436..135d9d76b 100644 --- a/src/core/kernel/exports/EmuKrnlPhy.cpp +++ b/src/core/kernel/exports/EmuKrnlPhy.cpp @@ -36,14 +36,12 @@ namespace xboxkrnl #include #include #include -//#include #include "Logging.h" #include "EmuKrnlLogging.h" #include "EmuKrnl.h" // for HalSystemInterrupts #include "EmuKrnlKi.h" // for KiLockDispatcherDatabase #include "core/kernel/init/CxbxKrnl.h" -#include "core/kernel/support/EmuXTL.h" #include "devices/Xbox.h" // prevent name collisions diff --git a/src/core/kernel/exports/EmuKrnlPs.cpp b/src/core/kernel/exports/EmuKrnlPs.cpp index a2a8d6dbd..f9214d0da 100644 --- a/src/core/kernel/exports/EmuKrnlPs.cpp +++ b/src/core/kernel/exports/EmuKrnlPs.cpp @@ -42,7 +42,6 @@ namespace xboxkrnl #include "core\kernel\init\CxbxKrnl.h" // For CxbxKrnl_TLS #include "core\kernel\support\Emu.h" // For EmuLog(LOG_LEVEL::WARNING, ) #include "core\kernel\support\EmuFS.h" // For EmuGenerateFS -#include "core\kernel\support\EmuXTL.h" // prevent name collisions namespace NtDll @@ -101,8 +100,6 @@ void InitXboxThread(DWORD_PTR cores) } // PsCreateSystemThread proxy procedure -#pragma warning(push) -#pragma warning(disable: 4731) // disable ebp modification warning // Dxbx Note : The signature of PCSTProxy should conform to System.TThreadFunc ! static unsigned int WINAPI PCSTProxy ( @@ -159,7 +156,6 @@ static unsigned int WINAPI PCSTProxy return 0; // will never be reached } -#pragma warning(pop) // Placeholder system function, instead of XapiThreadStartup void PspSystemThreadStartup diff --git a/src/core/kernel/init/CxbxKrnl.cpp b/src/core/kernel/init/CxbxKrnl.cpp index 9baebfac8..b8865f4d7 100644 --- a/src/core/kernel/init/CxbxKrnl.cpp +++ b/src/core/kernel/init/CxbxKrnl.cpp @@ -41,12 +41,13 @@ namespace xboxkrnl #include "core\kernel\support\Emu.h" #include "devices\x86\EmuX86.h" #include "core\kernel\support\EmuFile.h" -#include "core\kernel\support\EmuFS.h" +#include "core\kernel\support\EmuFS.h" // EmuInitFS #include "EmuEEPROM.h" // For CxbxRestoreEEPROM, EEPROM, XboxFactoryGameRegion #include "core\kernel\exports\EmuKrnl.h" #include "core\kernel\exports\EmuKrnlKi.h" #include "EmuShared.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For CxbxInitWindow, EmuD3DInit +#include "core\hle\DSOUND\DirectSound\DirectSound.hpp" // For CxbxInitAudio #include "core\hle\Intercept.hpp" #include "ReservedMemory.h" // For virtual_memory_placeholder #include "core\kernel\memory-manager\VMManager.h" @@ -526,35 +527,8 @@ void CxbxPopupMessageEx(CXBXR_MODULE cxbxr_module, LOG_LEVEL level, CxbxMsgDlgIc void PrintCurrentConfigurationLog() { - // Print environment information - { - // Get Windows Version - DWORD dwVersion = 0; - DWORD dwMajorVersion = 0; - DWORD dwMinorVersion = 0; - DWORD dwBuild = 0; - - // TODO: GetVersion is deprecated but we use it anyway (for now) - // The correct solution is to use GetProductInfo but that function - // requires more logic to parse the response, and I didn't feel - // like building it just yet :P - dwVersion = GetVersion(); - - dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); - dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); - - // Get the build number. - if (dwVersion < 0x80000000) { - dwBuild = (DWORD)(HIWORD(dwVersion)); - } - - printf("------------------------ENVIRONMENT DETAILS-------------------------\n"); - if (g_bIsWine) { - printf("Wine %s\n", wine_get_version()); - printf("Presenting as Windows %d.%d (%d)\n", dwMajorVersion, dwMinorVersion, dwBuild); - } else { - printf("Windows %d.%d (%d)\n", dwMajorVersion, dwMinorVersion, dwBuild); - } + if (g_bIsWine) { + printf("Running under Wine Version %s \n", wine_get_version()); } // HACK: For API TRace.. @@ -885,7 +859,7 @@ void ImportLibraries(XbeImportEntry *pImportDirectory) MapThunkTable((uint32_t *)pImportDirectory->ThunkAddr, Cxbx_LibXbdmThunkTable); } else { - printf("LOAD : Skipping unrecognized import library : %s\n", LibName.c_str()); + wprintf(L"LOAD : Skipping unrecognized import library : %s\n", LibName.c_str()); } pImportDirectory++; @@ -1358,15 +1332,15 @@ __declspec(noreturn) void CxbxKrnlInit printf("[0x%X] INIT: Debug Trace Enabled.\n", GetCurrentThreadId()); printf("[0x%X] INIT: CxbxKrnlInit\n" "(\n" - " hwndParent : 0x%.08X\n" - " pTLSData : 0x%.08X\n" - " pTLS : 0x%.08X\n" - " pLibraryVersion : 0x%.08X\n" + " hwndParent : 0x%.08p\n" + " pTLSData : 0x%.08p\n" + " pTLS : 0x%.08p\n" + " pLibraryVersion : 0x%.08p\n" " DebugConsole : 0x%.08X\n" " DebugFilename : \"%s\"\n" - " pXBEHeader : 0x%.08X\n" - " pXBEHeaderSize : 0x%.08X\n" - " Entry : 0x%.08X\n" + " pXBEHeader : 0x%.08p\n" + " dwXBEHeaderSize : 0x%.08X\n" + " Entry : 0x%.08p\n" ");\n", GetCurrentThreadId(), CxbxKrnl_hEmuParent, pTLSData, pTLS, pLibraryVersion, DbgMode, szDebugFilename, pXbeHeader, dwXbeHeaderSize, Entry); #else @@ -1545,7 +1519,7 @@ __declspec(noreturn) void CxbxKrnlInit // initialize graphics EmuLogEx(LOG_PREFIX_INIT, LOG_LEVEL::DEBUG, "Initializing render window.\n"); - XTL::CxbxInitWindow(true); + CxbxInitWindow(true); // Now process the boot flags to see if there are any special conditions to handle if (BootFlags & BOOT_EJECT_PENDING) {} // TODO @@ -1560,7 +1534,7 @@ __declspec(noreturn) void CxbxKrnlInit if (BootFlags & BOOT_SKIP_ANIMATION) {} // TODO if (BootFlags & BOOT_RUN_DASHBOARD) {} // TODO - XTL::CxbxInitAudio(); + CxbxInitAudio(); EmuHLEIntercept(pXbeHeader); @@ -1581,7 +1555,7 @@ __declspec(noreturn) void CxbxKrnlInit if (!bLLE_GPU) { EmuLogEx(LOG_PREFIX_INIT, LOG_LEVEL::DEBUG, "Initializing Direct3D.\n"); - XTL::EmuD3DInit(); + EmuD3DInit(); } if (CxbxDebugger::CanReport()) diff --git a/src/core/kernel/support/Emu.cpp b/src/core/kernel/support/Emu.cpp index 082232595..33bf662d5 100644 --- a/src/core/kernel/support/Emu.cpp +++ b/src/core/kernel/support/Emu.cpp @@ -34,8 +34,6 @@ namespace xboxkrnl #include "core\kernel\init\CxbxKrnl.h" #include "Emu.h" #include "devices\x86\EmuX86.h" -#include "EmuFS.h" -#include "EmuXTL.h" #include "EmuShared.h" #include "core\hle\Intercept.hpp" #include "CxbxDebugger.h" @@ -54,7 +52,7 @@ volatile bool g_bPrintfOn = true; bool g_DisablePixelShaders = false; bool g_UseAllCores = false; bool g_SkipRdtscPatching = false; -int g_RenderScaleFactor = 1.0f; +int g_RenderScaleFactor = 1; // Delta added to host SystemTime, used in KiClockIsr and KeSetSystemTime // This shouldn't need to be atomic, but because raising the IRQL to high lv in KeSetSystemTime doesn't really stop KiClockIsr from running, @@ -424,9 +422,9 @@ void EmuPrintStackTrace(PCONTEXT ContextRecord) SymGetModuleInfo64(g_CurrentProcessHandle, frame.AddrPC.Offset, &module); if(module.ModuleName) - printf(" %2d: %-8s 0x%.08X", i, module.ModuleName, frame.AddrPC.Offset); + printf(" %2d: %-8s 0x%.08llX", i, module.ModuleName, frame.AddrPC.Offset); else - printf(" %2d: %8c 0x%.08X", i, ' ', frame.AddrPC.Offset); + printf(" %2d: %8c 0x%.08llX", i, ' ', frame.AddrPC.Offset); BYTE symbol[sizeof(SYMBOL_INFO) + SYMBOL_MAXLEN] = { 0 }; std::string symbolName = ""; @@ -453,7 +451,7 @@ void EmuPrintStackTrace(PCONTEXT ContextRecord) } if (!symbolName.empty()) - printf(" %s+0x%.04X\n", symbolName.c_str(), dwDisplacement); + printf(" %s+0x%.04llX\n", symbolName.c_str(), dwDisplacement); else printf("\n"); } diff --git a/src/core/kernel/support/EmuFS.cpp b/src/core/kernel/support/EmuFS.cpp index bd4e33d7e..5be54822b 100644 --- a/src/core/kernel/support/EmuFS.cpp +++ b/src/core/kernel/support/EmuFS.cpp @@ -34,15 +34,16 @@ namespace xboxkrnl }; #include "core\kernel\exports\EmuKrnl.h" // For InitializeListHead(), etc. -#include "core\kernel\exports\EmuKrnlKe.h" -#include "EmuFS.h" +#include "core\kernel\exports\EmuKrnlKe.h" +#include "core\kernel\support\EmuFS.h" // For fs_instruction_t #include "core\kernel\init\CxbxKrnl.h" #include "core\kernel\memory-manager\VMManager.h" #include "Logging.h" #undef FIELD_OFFSET // prevent macro redefinition warnings #include -#include +#include +#include // NT_TIB (Thread Information Block) offsets - see https://www.microsoft.com/msj/archive/S2CE.aspx #define TIB_ExceptionList offsetof(NT_TIB, ExceptionList) // = 0x00/0 diff --git a/src/core/kernel/support/EmuFile.cpp b/src/core/kernel/support/EmuFile.cpp index 138047472..0cd0c7ed0 100644 --- a/src/core/kernel/support/EmuFile.cpp +++ b/src/core/kernel/support/EmuFile.cpp @@ -43,8 +43,6 @@ #include -//#include "Logging.h" // For hex4() - // Default Xbox Partition Table #define PE_PARTFLAGS_IN_USE 0x80000000 #define XBOX_SWAPPART1_LBA_START 0x400 diff --git a/src/core/kernel/support/EmuXTL.h b/src/core/kernel/support/EmuXTL.h deleted file mode 100644 index c11dcb6b8..000000000 --- a/src/core/kernel/support/EmuXTL.h +++ /dev/null @@ -1,46 +0,0 @@ -// ****************************************************************** -// * -// * This file is part of the Cxbx project. -// * -// * Cxbx and Cxbe are free software; you can redistribute them -// * and/or modify them under the terms of the GNU General Public -// * License as published by the Free Software Foundation; either -// * version 2 of the license, or (at your option) any later version. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have recieved a copy of the GNU General Public License -// * along with this program; see the file COPYING. -// * If not, write to the Free Software Foundation, Inc., -// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA. -// * -// * (c) 2002-2003 Aaron Robinson -// * -// * All rights reserved -// * -// ****************************************************************** -#ifndef EMUXTL_H -#define EMUXTL_H - -#include // Needed for EmuDSound.h file, must be outside of XTL namespace. -#include - -namespace XTL -{ - #include "core\hle\XAPI\Xapi.h" - #include "core\hle\D3D8\Direct3D9/Direct3D9.h" - #include "core\hle\DSOUND\DirectSound\DirectSound.hpp" - #include "core\hle\XONLINE\XOnline.h" - #include "core\hle\XGRAPHIC\XGraphic.h" - #include "core\hle\XACTENG\XactEng.h" -} - -extern XTL::IDirect3DDevice *g_pD3DDevice; -extern DWORD g_CurrentXboxVertexShaderHandle; -extern XTL::X_PixelShader* g_D3DActivePixelShader; -extern BOOL g_bIsFauxFullscreen; - -#endif diff --git a/src/devices/EmuNVNet.cpp b/src/devices/EmuNVNet.cpp index 5f8268332..5533fa5a9 100644 --- a/src/devices/EmuNVNet.cpp +++ b/src/devices/EmuNVNet.cpp @@ -671,8 +671,9 @@ void PrintPacket(void* buffer, size_t length) size_t payloadLength = length - sizeof(ethernet_header); // TODO: If we support the EtherType, decode it, otherwise, just dump the raw payload - switch (ntohs(header->protocol)) { - default: + //switch (ntohs(header->protocol)) + { + // default: PrintRawPayload(payloadPtr, payloadLength); } } diff --git a/src/devices/usb/Hub.cpp b/src/devices/usb/Hub.cpp index 03acf9b39..3253d136c 100644 --- a/src/devices/usb/Hub.cpp +++ b/src/devices/usb/Hub.cpp @@ -391,9 +391,9 @@ void Hub::UsbHub_HandleControl(XboxDeviceState* dev, USBPacket* p, port = &m_HubState->ports[n]; EmuLog(LOG_LEVEL::DEBUG, "GetPortStatus -> Address 0x%X, wIndex %d, wPortStatus %d, wPortChange %d", m_HubState->dev.Addr, index, port->wPortStatus, port->wPortChange); - data[0] = port->wPortStatus; + data[0] = port->wPortStatus & 0xFF; data[1] = port->wPortStatus >> 8; - data[2] = port->wPortChange; + data[2] = port->wPortChange & 0xFF; data[3] = port->wPortChange >> 8; p->ActualLength = 4; break; @@ -522,7 +522,7 @@ void Hub::UsbHub_HandleData(XboxDeviceState* dev, USBPacket* p) USBHubPort* port; unsigned int status; uint8_t buf[4]; - int i, n; + size_t i, n; status = 0; for (i = 0; i < NUM_PORTS; i++) { port = &m_HubState->ports[i]; diff --git a/src/devices/usb/OHCI.cpp b/src/devices/usb/OHCI.cpp index dd61fa92e..4b8a40526 100644 --- a/src/devices/usb/OHCI.cpp +++ b/src/devices/usb/OHCI.cpp @@ -430,7 +430,8 @@ bool OHCI::OHCI_WriteIsoTD(xbaddr Paddr, OHCI_ISO_TD* td) bool OHCI::OHCI_CopyTDBuffer(OHCI_TD* Td, uint8_t* Buffer, int Length, bool bIsWrite) { - uint32_t ptr, n; + uint32_t ptr; + int n; // Figure out if we are crossing a 4K page boundary ptr = Td->CurrentBufferPointer; @@ -460,7 +461,8 @@ bool OHCI::OHCI_CopyTDBuffer(OHCI_TD* Td, uint8_t* Buffer, int Length, bool bIsW bool OHCI::OHCI_CopyIsoTDBuffer(uint32_t start_addr, uint32_t end_addr, uint8_t* Buffer, int Length, bool bIsWrite) { - uint32_t ptr, n; + uint32_t ptr; + int n; ptr = start_addr; n = 0x1000 - (ptr & 0xFFF); @@ -1287,7 +1289,7 @@ uint32_t OHCI::OHCI_GetFrameRemaining() return m_Registers.HcFmRemaining & OHCI_FMR_FRT; } - ticks = Muldiv64(1, ticks, m_TicksPerUsbTick); + ticks = Muldiv64(1, (uint32_t)ticks, (uint32_t)m_TicksPerUsbTick); frame = static_cast((m_Registers.HcFmInterval & OHCI_FMI_FI) - ticks); return (m_Registers.HcFmRemaining & OHCI_FMR_FRT) | frame; @@ -1564,7 +1566,7 @@ void OHCI::OHCI_ProcessLists(int completion) int OHCI::OHCI_ServiceIsoTD(OHCI_ED* ed, int completion) { int dir; - size_t len = 0; + int len = 0; #ifdef DEBUG_ISOCH const char* str = nullptr; #endif diff --git a/src/devices/usb/USBDevice.cpp b/src/devices/usb/USBDevice.cpp index 6005f4148..50b16bf41 100644 --- a/src/devices/usb/USBDevice.cpp +++ b/src/devices/usb/USBDevice.cpp @@ -417,7 +417,7 @@ void USBDevice::DoTokenIn(XboxDeviceState* s, USBPacket* p) case SETUP_STATE_DATA: if (s->SetupBuffer[0] & USB_DIR_IN) { - int len = s->SetupLength - s->SetupIndex; + size_t len = s->SetupLength - s->SetupIndex; if (len > p->IoVec.Size) { len = p->IoVec.Size; } @@ -454,7 +454,7 @@ void USBDevice::DoTokenOut(XboxDeviceState* s, USBPacket* p) case SETUP_STATE_DATA: if (!(s->SetupBuffer[0] & USB_DIR_IN)) { - int len = s->SetupLength - s->SetupIndex; + size_t len = s->SetupLength - s->SetupIndex; if (len > p->IoVec.Size) { len = p->IoVec.Size; } @@ -1008,7 +1008,7 @@ int USBDevice::USBDesc_HandleStandardGetDescriptor(XboxDeviceState* dev, USBPack } if (ret > 0) { - if (ret > len) { + if ((size_t)ret > len) { ret = len; } std::memcpy(dest, buf, ret); @@ -1211,7 +1211,7 @@ int USBDevice::USB_ReadStringDesc(XboxDeviceState* dev, int index, uint8_t* dest // computed by subtracting two from the value of the first byte of the descriptor" bLength = std::strlen(str) * 2 + 2; - dest[0] = bLength; + dest[0] = bLength & 0xFF; dest[1] = USB_DT_STRING; i = 0; pos = 2; while (pos + 1 < bLength && pos + 1 < len) { diff --git a/src/devices/video/EmuNV2A_PRMCIO.cpp b/src/devices/video/EmuNV2A_PRMCIO.cpp index a045df1d1..0496f9169 100644 --- a/src/devices/video/EmuNV2A_PRMCIO.cpp +++ b/src/devices/video/EmuNV2A_PRMCIO.cpp @@ -49,7 +49,7 @@ DEVICE_READ32(PRMCIO) break; default: DEBUG_READ32_UNHANDLED(PRMCIO); - printf("vga: UNHANDLED ADDR %s\n", addr); + printf("vga: UNHANDLED ADDR %x\n", addr); break; } diff --git a/src/devices/video/EmuNV2A_PTIMER.cpp b/src/devices/video/EmuNV2A_PTIMER.cpp index b8ed6ca62..073e653b7 100644 --- a/src/devices/video/EmuNV2A_PTIMER.cpp +++ b/src/devices/video/EmuNV2A_PTIMER.cpp @@ -44,7 +44,7 @@ static uint64_t ptimer_get_clock(NV2AState * d) uint64_t time = std::chrono::duration_cast(std::chrono::high_resolution_clock::now().time_since_epoch()).count(); return Muldiv64(Muldiv64(time, - d->pramdac.core_clock_freq, // TODO : Research how this can be updated to accept uint64_t + (uint32_t)d->pramdac.core_clock_freq, // TODO : Research how this can be updated to accept uint64_t NANOSECONDS_PER_SECOND), // Was CLOCKS_PER_SEC d->ptimer.denominator, d->ptimer.numerator); diff --git a/src/devices/video/nv2a.cpp b/src/devices/video/nv2a.cpp index d3b4cc2f2..a44816eb8 100644 --- a/src/devices/video/nv2a.cpp +++ b/src/devices/video/nv2a.cpp @@ -55,7 +55,6 @@ namespace xboxkrnl #include "core\kernel\init\CxbxKrnl.h" // For XBOX_MEMORY_SIZE, DWORD, etc #include "core\kernel\support\Emu.h" -#include "core\kernel\support\EmuFS.h" #include "core\kernel\exports\EmuKrnl.h" #include "core\hle\Intercept.hpp" #include "Logging.h" @@ -1157,7 +1156,7 @@ void CxbxReserveNV2AMemory(NV2AState *d) return; } - printf("[0x%.4X] INIT: Allocated %d MiB of Xbox NV2A PRAMIN memory at 0x%.8X to 0x%.8X\n", + printf("[0x%.4X] INIT: Allocated %d MiB of Xbox NV2A PRAMIN memory at 0x%.8p to 0x%.8p\n", GetCurrentThreadId(), d->pramin.ramin_size / ONE_MB, d->pramin.ramin_ptr, d->pramin.ramin_ptr + d->pramin.ramin_size - 1); } diff --git a/src/devices/video/nv2a_int.h b/src/devices/video/nv2a_int.h index 662724894..41dbdf5cc 100644 --- a/src/devices/video/nv2a_int.h +++ b/src/devices/video/nv2a_int.h @@ -75,9 +75,9 @@ typedef uint32_t value_t; // Compatibility; Cxbx values are uint32_t (xqemu and #endif // GCC implementation of FFS -static int ffs(register int valu) +static int ffs(int valu) { - register int bit; + int bit; if (valu == 0) return 0; diff --git a/src/devices/x86/EmuX86.cpp b/src/devices/x86/EmuX86.cpp index d9fb634f9..5a96d8908 100644 --- a/src/devices/x86/EmuX86.cpp +++ b/src/devices/x86/EmuX86.cpp @@ -125,7 +125,7 @@ uint32_t EmuX86_Mem_Read(xbaddr addr, int size) return 0; } } - __except (true) { + __except (true) { // TODO : EXCEPTION_EXECUTE_HANDLER instead of true? EmuLog(LOG_LEVEL::WARNING, "EmuX86_Mem_Read Failed (0x%08X, %d)", addr, size); return 0; } @@ -150,7 +150,7 @@ void EmuX86_Mem_Write(xbaddr addr, uint32_t value, int size) return; } } - __except (true) { + __except (true) { // TODO : EXCEPTION_EXECUTE_HANDLER instead of true? EmuLog(LOG_LEVEL::WARNING, "EmuX86_Mem_Write Failed (0x%08X, 0x%08X, %d)", addr, value, size); } } diff --git a/src/gui/DbgConsole.cpp b/src/gui/DbgConsole.cpp index 29ee658d9..a7d3937d4 100644 --- a/src/gui/DbgConsole.cpp +++ b/src/gui/DbgConsole.cpp @@ -30,7 +30,6 @@ #include "core\kernel\support\Emu.h" #include "DbgConsole.h" #include "core\hle\D3D8\ResourceTracker.h" -#include "core\kernel\support\EmuXTL.h" #include diff --git a/src/gui/DlgEepromConfig.cpp b/src/gui/DlgEepromConfig.cpp index 349571cf2..c4ee878d4 100644 --- a/src/gui/DlgEepromConfig.cpp +++ b/src/gui/DlgEepromConfig.cpp @@ -25,13 +25,6 @@ // * // ****************************************************************** - -// prevent name collisions -namespace xboxkrnl -{ - #include // For XC_VALUE_INDEX and XBOX_EEPROM -}; - #include #include "EmuEEPROM.h" // For EEPROMInfo, EEPROMInfos #include "core\kernel\init\CxbxKrnl.h" diff --git a/src/gui/DlgVideoConfig.cpp b/src/gui/DlgVideoConfig.cpp index 8dbf37309..c654da3e7 100644 --- a/src/gui/DlgVideoConfig.cpp +++ b/src/gui/DlgVideoConfig.cpp @@ -33,7 +33,7 @@ #include "DlgVideoConfig.h" #include "ResCxbx.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For IDirect3D /*! windows dialog procedure */ static INT_PTR CALLBACK DlgVideoConfigProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -45,7 +45,7 @@ static VOID RefreshDirect3DDevice(); static VOID RefreshRenderResolution(); /*! direct3d instance */ -static XTL::IDirect3D *g_pDirect3D = 0; +static IDirect3D *g_pDirect3D = nullptr; /*! video configuration */ static Settings::s_video g_XBVideo; /*! changes flag */ @@ -61,7 +61,7 @@ static HWND g_hVideoResolution = NULL; /*! handle to scale factor window*/ static HWND g_hRenderResolution = NULL; -#pragma optimize("", off); +#pragma optimize("", off) VOID ShowVideoConfig(HWND hwnd) { @@ -73,7 +73,7 @@ VOID ShowVideoConfig(HWND hwnd) /*! initialize direct3d */ { - g_pDirect3D = XTL::Direct3DCreate(D3D_SDK_VERSION); + g_pDirect3D = Direct3DCreate(D3D_SDK_VERSION); if(g_pDirect3D == 0) { goto cleanup; } @@ -115,7 +115,7 @@ INT_PTR CALLBACK DlgVideoConfigProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPAR for(uint32_t v=0;vGetAdapterIdentifier(v, D3DENUM_NO_WHQL_LEVEL, &adapterIdentifier); SendMessage(g_hDisplayAdapter, CB_ADDSTRING, 0, (LPARAM)adapterIdentifier.Description); @@ -288,7 +288,7 @@ VOID RefreshDisplayAdapter() /*! generate list of device types */ { /*! device types */ - static const XTL::D3DDEVTYPE devType[2] = { XTL::D3DDEVTYPE_HAL, XTL::D3DDEVTYPE_REF }; + static const D3DDEVTYPE devType[2] = { D3DDEVTYPE_HAL, D3DDEVTYPE_REF }; /*! human readable device types */ static const char *szDevType[2] = { "Direct3D HAL (Hardware Accelerated)", "Direct3D REF (Software)" }; @@ -299,7 +299,7 @@ VOID RefreshDisplayAdapter() /*! step through devices types */ for(uint32_t d=0;d<2;d++) { - XTL::D3DCAPS Caps; + D3DCAPS Caps; /*! verify device is available */ if(g_pDirect3D->GetDeviceCaps(g_XBVideo.adapter, devType[d], &Caps) == D3D_OK) @@ -346,7 +346,7 @@ VOID RefreshDirect3DDevice() { uint32_t dwAdapterModeCount = g_pDirect3D->GetAdapterModeCount( g_XBVideo.adapter - , XTL::D3DFMT_X8R8G8B8 + , D3DFMT_X8R8G8B8 ); SendMessage(g_hVideoResolution, CB_ADDSTRING, 0, (LPARAM)"Automatic (Default)"); @@ -356,27 +356,27 @@ VOID RefreshDirect3DDevice() { const char *szFormat = ""; - XTL::D3DDISPLAYMODE displayMode; + D3DDISPLAYMODE displayMode; g_pDirect3D->EnumAdapterModes( g_XBVideo.adapter, - XTL::D3DFMT_X8R8G8B8, + D3DFMT_X8R8G8B8, v, &displayMode ); switch(displayMode.Format) { - case XTL::D3DFMT_X1R5G5B5: + case D3DFMT_X1R5G5B5: szFormat = "16bit x1r5g5b5"; break; - case XTL::D3DFMT_R5G6B5: + case D3DFMT_R5G6B5: szFormat = "16bit r5g6r5"; break; - case XTL::D3DFMT_X8R8G8B8: + case D3DFMT_X8R8G8B8: szFormat = "32bit x8r8g8b8"; break; - case XTL::D3DFMT_A8R8G8B8: + case D3DFMT_A8R8G8B8: szFormat = "32bit a8r8g8b8"; break; default: diff --git a/src/gui/DlgVirtualSBCFeedback.cpp b/src/gui/DlgVirtualSBCFeedback.cpp index c0c2eff96..93782ee2d 100644 --- a/src/gui/DlgVirtualSBCFeedback.cpp +++ b/src/gui/DlgVirtualSBCFeedback.cpp @@ -26,7 +26,6 @@ // ****************************************************************** #include "stdafx.h" -//#include "CxbxKrnl/EmuShared.h" #include "DlgVirtualSBCFeedback.h" #include "CxbxKrnl/EmuXapi.h" #include "Winuser.h" diff --git a/src/gui/WndMain.cpp b/src/gui/WndMain.cpp index 66cf41e1d..b827203e4 100644 --- a/src/gui/WndMain.cpp +++ b/src/gui/WndMain.cpp @@ -40,7 +40,7 @@ #include "DlgLoggingConfig.h" #include "common\xbe\XbePrinter.h" // For DumpInformation #include "EmuShared.h" -#include "core\kernel\support\EmuXTL.h" +#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For CxbxSetPixelContainerHeader #include "core\hle\D3D8\XbConvert.h" // For EmuPC2XB_D3DFormat #include "common\Settings.hpp" @@ -1489,19 +1489,19 @@ void WndMain::LoadGameLogo() switch (*(DWORD*)pSection) { case MAKEFOURCC('D', 'D', 'S', ' '): { DDS_HEADER *pDDSHeader = (DDS_HEADER *)(pSection + sizeof(DWORD)); - XTL::D3DFORMAT Format = XTL::D3DFMT_UNKNOWN; + D3DFORMAT Format = D3DFMT_UNKNOWN; if (pDDSHeader->ddspf.dwFlags & DDPF_FOURCC) { switch (pDDSHeader->ddspf.dwFourCC) { - case MAKEFOURCC('D', 'X', 'T', '1'): Format = XTL::D3DFMT_DXT1; break; - case MAKEFOURCC('D', 'X', 'T', '3'): Format = XTL::D3DFMT_DXT3; break; - case MAKEFOURCC('D', 'X', 'T', '5'): Format = XTL::D3DFMT_DXT5; break; + case MAKEFOURCC('D', 'X', 'T', '1'): Format = D3DFMT_DXT1; break; + case MAKEFOURCC('D', 'X', 'T', '3'): Format = D3DFMT_DXT3; break; + case MAKEFOURCC('D', 'X', 'T', '5'): Format = D3DFMT_DXT5; break; } } else { // TODO : Determine D3D format based on pDDSHeader->ddspf.dwABitMask, .dwRBitMask, .dwGBitMask and .dwBBitMask } - if (Format == XTL::D3DFMT_UNKNOWN) + if (Format == D3DFMT_UNKNOWN) return; ImageData = (uint8_t *)(pSection + sizeof(DWORD) + pDDSHeader->dwSize); @@ -1509,14 +1509,14 @@ void WndMain::LoadGameLogo() //gameLogoWidth = pDDSHeader->dwWidth; // TODO : Use PixelCopy code here to decode. For now, fake it : - XTL::CxbxSetPixelContainerHeader(&XboxPixelContainer, + CxbxSetPixelContainerHeader(&XboxPixelContainer, 0, // Common - could be X_D3DCOMMON_TYPE_TEXTURE - (XTL::UINT)pDDSHeader->dwWidth, - (XTL::UINT)pDDSHeader->dwHeight, + (UINT)pDDSHeader->dwWidth, + (UINT)pDDSHeader->dwHeight, 1, EmuPC2XB_D3DFormat(Format), 2, - (XTL::UINT)pDDSHeader->dwPitchOrLinearSize); + (UINT)pDDSHeader->dwPitchOrLinearSize); break; } case MAKEFOURCC('X', 'P', 'R', '0'): @@ -1539,7 +1539,7 @@ void WndMain::LoadGameLogo() } } - void *bitmapData = XTL::ConvertD3DTextureToARGB(pXboxPixelContainer, ImageData, &gameLogoWidth, &gameLogoHeight); + void *bitmapData = ConvertD3DTextureToARGB(pXboxPixelContainer, ImageData, &gameLogoWidth, &gameLogoHeight); if (!bitmapData) return; @@ -2222,7 +2222,7 @@ void WndMain::StartEmulation(HWND hwndParent, DebuggerState LocalDebuggerState / g_EmuShared->SetDebuggingFlag(&AttachLocalDebugger); std::string szProcArgsBuffer; - XTL::CxbxConvertArgToString(szProcArgsBuffer, szExeFileName, m_XbeFilename, hwndParent, g_Settings->m_core.KrnlDebugMode, g_Settings->m_core.szKrnlDebug); + CxbxConvertArgToString(szProcArgsBuffer, szExeFileName, m_XbeFilename, hwndParent, g_Settings->m_core.KrnlDebugMode, g_Settings->m_core.szKrnlDebug); if (AttachLocalDebugger) { @@ -2232,7 +2232,7 @@ void WndMain::StartEmulation(HWND hwndParent, DebuggerState LocalDebuggerState / // TODO: Set a configuration variable for this. For now it will be within the same folder as Cxbx.exe std::string szProcDbgArgsBuffer = "cxbxr-debugger.exe " + szProcArgsBuffer; - if (!XTL::CxbxExec(szProcDbgArgsBuffer, &m_hDebuggerProc, true)) { + if (!CxbxExec(szProcDbgArgsBuffer, &m_hDebuggerProc, true)) { MessageBox(m_hwnd, "Failed to start emulation with the debugger.\n\nYou will need to build CxbxDebugger manually.", "Cxbx-Reloaded", MB_ICONSTOP | MB_OK); printf("WndMain: %s debugger shell failed.\n", m_Xbe->m_szAsciiTitle); @@ -2245,7 +2245,7 @@ void WndMain::StartEmulation(HWND hwndParent, DebuggerState LocalDebuggerState / } else { - if (!XTL::CxbxExec(szProcArgsBuffer, nullptr, false)) { + if (!CxbxExec(szProcArgsBuffer, nullptr, false)) { MessageBox(m_hwnd, "Emulation failed.\n\n If this message repeats, the Xbe is not supported.", "Cxbx-Reloaded", MB_ICONSTOP | MB_OK); printf("WndMain: %s shell failed.\n", m_Xbe->m_szAsciiTitle); diff --git a/src/vsbc/CxbxVSBC.cpp b/src/vsbc/CxbxVSBC.cpp index 5730249f4..86ff30a14 100644 --- a/src/vsbc/CxbxVSBC.cpp +++ b/src/vsbc/CxbxVSBC.cpp @@ -8,7 +8,6 @@ // #include "CxbxVSBC.h" -//#include "../CxbxKrnl/EmuXapi.h" #include #include "DlgVirtualSBCFeedback.h" diff --git a/src/vsbc/CxbxVSBC.h b/src/vsbc/CxbxVSBC.h index 359f42c81..962869fa6 100644 --- a/src/vsbc/CxbxVSBC.h +++ b/src/vsbc/CxbxVSBC.h @@ -1,10 +1,11 @@ +#pragma once + #ifdef CXBXVSBC_EXPORTS #define CXBXVSBC_API __declspec(dllexport) #else #define CXBXVSBC_API __declspec(dllimport) -#endif#pragma once -//#include -//#include "../CxbxKrnl/EmuXapi.h" +#endif + #ifndef X_XONTROLLER_HOST_BRIDGE_HOSTTYPE_VIRTUAL_SBC #define X_XONTROLLER_HOST_BRIDGE_HOSTTYPE_VIRTUAL_SBC 0x80 #endif diff --git a/src/vsbc/DlgVirtualSBCFeedback.cpp b/src/vsbc/DlgVirtualSBCFeedback.cpp index caf6901cf..62085737f 100644 --- a/src/vsbc/DlgVirtualSBCFeedback.cpp +++ b/src/vsbc/DlgVirtualSBCFeedback.cpp @@ -26,9 +26,7 @@ // ****************************************************************** #include "stdafx.h" -//#include "CxbxKrnl/EmuShared.h" #include "DlgVirtualSBCFeedback.h" -//#include "../CxbxKrnl/EmuXapi.h" #include "Winuser.h" #include "Windowsx.h" #include "Commctrl.h"