diff --git a/reactos/dll/directx/d3d9/d3d9.rbuild b/reactos/dll/directx/d3d9/d3d9.rbuild
index a908ac4c1ac..913f0742f19 100644
--- a/reactos/dll/directx/d3d9/d3d9.rbuild
+++ b/reactos/dll/directx/d3d9/d3d9.rbuild
@@ -20,6 +20,8 @@
d3d9_caps.c
d3d9_device.c
d3d9_swapchain.c
+ d3d9_puredevice.c
+ d3d9_haldevice.c
adapter.c
device.c
format.c
diff --git a/reactos/dll/directx/d3d9/d3d9_device.c b/reactos/dll/directx/d3d9/d3d9_device.c
index 376658eedbb..c763724ce0a 100644
--- a/reactos/dll/directx/d3d9/d3d9_device.c
+++ b/reactos/dll/directx/d3d9/d3d9_device.c
@@ -15,18 +15,18 @@
#define UNLOCK_D3DDEVICE9() if (This->bLockDevice) LeaveCriticalSection(&This->CriticalSection);
/* Convert a IDirect3D9 pointer safely to the internal implementation struct */
-LPDIRECT3DDEVICE9_INT impl_from_IDirect3DDevice9(LPDIRECT3DDEVICE9 iface)
+static LPDIRECT3DDEVICE9_INT IDirect3DDevice9ToImpl(LPDIRECT3DDEVICE9 iface)
{
- if (IsBadWritePtr(iface, sizeof(LPDIRECT3DDEVICE9_INT)))
+ if (NULL == iface)
return NULL;
return (LPDIRECT3DDEVICE9_INT)((ULONG_PTR)iface - FIELD_OFFSET(DIRECT3DDEVICE9_INT, lpVtbl));
}
/* IDirect3DDevice9: IUnknown implementation */
-static HRESULT WINAPI IDirect3DDevice9Impl_QueryInterface(LPDIRECT3DDEVICE9 iface, REFIID riid, void** ppvObject)
+HRESULT WINAPI IDirect3DDevice9Base_QueryInterface(LPDIRECT3DDEVICE9 iface, REFIID riid, void** ppvObject)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirect3DDevice9))
{
@@ -39,17 +39,17 @@ static HRESULT WINAPI IDirect3DDevice9Impl_QueryInterface(LPDIRECT3DDEVICE9 ifac
return E_NOINTERFACE;
}
-static ULONG WINAPI IDirect3DDevice9Impl_AddRef(LPDIRECT3DDEVICE9 iface)
+ULONG WINAPI IDirect3DDevice9Base_AddRef(LPDIRECT3DDEVICE9 iface)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
ULONG ref = InterlockedIncrement(&This->lRefCnt);
return ref;
}
-static ULONG WINAPI IDirect3DDevice9Impl_Release(LPDIRECT3DDEVICE9 iface)
+ULONG WINAPI IDirect3DDevice9Base_Release(LPDIRECT3DDEVICE9 iface)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
ULONG ref = InterlockedDecrement(&This->lRefCnt);
if (ref == 0)
@@ -72,7 +72,7 @@ static ULONG WINAPI IDirect3DDevice9Impl_Release(LPDIRECT3DDEVICE9 iface)
}
/* IDirect3D9Device interface */
-static HRESULT WINAPI IDirect3DDevice9Impl_TestCooperativeLevel(LPDIRECT3DDEVICE9 iface)
+HRESULT WINAPI IDirect3DDevice9Base_TestCooperativeLevel(LPDIRECT3DDEVICE9 iface)
{
UNIMPLEMENTED
@@ -83,7 +83,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_TestCooperativeLevel(LPDIRECT3DDEVICE
* @name IDirect3DDevice9::GetAvailableTextureMem
* @implemented
*
-* The function IDirect3DDevice9Impl_GetAvailableTextureMem returns a pointer to the IDirect3D9 object
+* The function IDirect3DDevice9Base_GetAvailableTextureMem returns a pointer to the IDirect3D9 object
* that created this device.
*
* @param LPDIRECT3D iface
@@ -94,12 +94,12 @@ static HRESULT WINAPI IDirect3DDevice9Impl_TestCooperativeLevel(LPDIRECT3DDEVICE
* to the nearest MB. Applications should NOT use this as an exact number.
*
*/
-static UINT WINAPI IDirect3DDevice9Impl_GetAvailableTextureMem(LPDIRECT3DDEVICE9 iface)
+UINT WINAPI IDirect3DDevice9Base_GetAvailableTextureMem(LPDIRECT3DDEVICE9 iface)
{
UINT AvailableTextureMemory = 0;
D3D9_GETAVAILDRIVERMEMORYDATA d3d9GetAvailDriverMemoryData;
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
memset(&d3d9GetAvailDriverMemoryData, 0, sizeof(d3d9GetAvailDriverMemoryData));
@@ -116,7 +116,7 @@ static UINT WINAPI IDirect3DDevice9Impl_GetAvailableTextureMem(LPDIRECT3DDEVICE9
return AvailableTextureMemory;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_EvictManagedResources(LPDIRECT3DDEVICE9 iface)
+HRESULT WINAPI IDirect3DDevice9Base_EvictManagedResources(LPDIRECT3DDEVICE9 iface)
{
UNIMPLEMENTED
@@ -127,7 +127,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_EvictManagedResources(LPDIRECT3DDEVIC
* @name IDirect3DDevice9::GetDirect3D
* @implemented
*
-* The function IDirect3DDevice9Impl_GetDirect3D returns a pointer to the IDirect3D9 object
+* The function IDirect3DDevice9Base_GetDirect3D returns a pointer to the IDirect3D9 object
* that created this device.
*
* @param LPDIRECT3D iface
@@ -141,13 +141,13 @@ static HRESULT WINAPI IDirect3DDevice9Impl_EvictManagedResources(LPDIRECT3DDEVIC
* If ppD3D9 is a bad pointer, the return value will be D3DERR_INVALIDCALL.
*
*/
-static HRESULT WINAPI IDirect3DDevice9Impl_GetDirect3D(LPDIRECT3DDEVICE9 iface, IDirect3D9** ppD3D9)
+HRESULT WINAPI IDirect3DDevice9Base_GetDirect3D(LPDIRECT3DDEVICE9 iface, IDirect3D9** ppD3D9)
{
IDirect3D9* pDirect3D9;
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
- if (IsBadWritePtr(ppD3D9, sizeof(IDirect3D9*)))
+ if (NULL == ppD3D9)
{
DPRINT1("Invalid ppD3D9 parameter specified");
UNLOCK_D3DDEVICE9();
@@ -166,7 +166,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDirect3D(LPDIRECT3DDEVICE9 iface,
* @name IDirect3DDevice9::GetDeviceCaps
* @implemented
*
-* The function IDirect3DDevice9Impl_GetDeviceCaps fills the pCaps argument with the
+* The function IDirect3DDevice9Base_GetDeviceCaps fills the pCaps argument with the
* capabilities of the device.
*
* @param LPDIRECT3D iface
@@ -180,12 +180,12 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDirect3D(LPDIRECT3DDEVICE9 iface,
* If pCaps is a bad pointer the return value will be D3DERR_INVALIDCALL.
*
*/
-static HRESULT WINAPI IDirect3DDevice9Impl_GetDeviceCaps(LPDIRECT3DDEVICE9 iface, D3DCAPS9* pCaps)
+HRESULT WINAPI IDirect3DDevice9Base_GetDeviceCaps(LPDIRECT3DDEVICE9 iface, D3DCAPS9* pCaps)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
- if (IsBadWritePtr(pCaps, sizeof(D3DCAPS9)))
+ if (NULL == pCaps)
{
DPRINT1("Invalid pCaps parameter specified");
UNLOCK_D3DDEVICE9();
@@ -202,7 +202,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDeviceCaps(LPDIRECT3DDEVICE9 iface
* @name IDirect3DDevice9::GetDisplayMode
* @implemented
*
-* The function IDirect3DDevice9Impl_GetDisplayMode fills the pMode argument with the
+* The function IDirect3DDevice9Base_GetDisplayMode fills the pMode argument with the
* display mode for the specified swap chain.
*
* @param LPDIRECT3D iface
@@ -220,9 +220,9 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDeviceCaps(LPDIRECT3DDEVICE9 iface
* If iSwapChain is out of range or pMode is a bad pointer, the return value will be D3DERR_INVALIDCALL.
*
*/
-static HRESULT WINAPI IDirect3DDevice9Impl_GetDisplayMode(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DDISPLAYMODE* pMode)
+HRESULT WINAPI IDirect3DDevice9Base_GetDisplayMode(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DDISPLAYMODE* pMode)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
if (iSwapChain >= IDirect3DDevice9_GetNumberOfSwapChains(iface))
@@ -232,7 +232,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDisplayMode(LPDIRECT3DDEVICE9 ifac
return D3DERR_INVALIDCALL;
}
- if (IsBadWritePtr(pMode, sizeof(D3DDISPLAYMODE)))
+ if (NULL == pMode)
{
DPRINT1("Invalid pMode parameter specified");
UNLOCK_D3DDEVICE9();
@@ -252,7 +252,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDisplayMode(LPDIRECT3DDEVICE9 ifac
* @name IDirect3DDevice9::GetCreationParameters
* @implemented
*
-* The function IDirect3DDevice9Impl_GetCreationParameters fills the pParameters argument with the
+* The function IDirect3DDevice9Base_GetCreationParameters fills the pParameters argument with the
* parameters the device was created with.
*
* @param LPDIRECT3D iface
@@ -267,12 +267,12 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetDisplayMode(LPDIRECT3DDEVICE9 ifac
* If pParameters is a bad pointer, the return value will be D3DERR_INVALIDCALL.
*
*/
-static HRESULT WINAPI IDirect3DDevice9Impl_GetCreationParameters(LPDIRECT3DDEVICE9 iface, D3DDEVICE_CREATION_PARAMETERS* pParameters)
+HRESULT WINAPI IDirect3DDevice9Base_GetCreationParameters(LPDIRECT3DDEVICE9 iface, D3DDEVICE_CREATION_PARAMETERS* pParameters)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
- if (IsBadWritePtr(pParameters, sizeof(D3DDEVICE_CREATION_PARAMETERS)))
+ if (NULL == pParameters)
{
DPRINT1("Invalid pParameters parameter specified");
UNLOCK_D3DDEVICE9();
@@ -288,26 +288,26 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetCreationParameters(LPDIRECT3DDEVIC
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_SetCursorProperties(LPDIRECT3DDEVICE9 iface, UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap)
+HRESULT WINAPI IDirect3DDevice9Base_SetCursorProperties(LPDIRECT3DDEVICE9 iface, UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap)
{
UNIMPLEMENTED
return D3D_OK;
}
-static void WINAPI IDirect3DDevice9Impl_SetCursorPosition(LPDIRECT3DDEVICE9 iface, int X, int Y, DWORD Flags)
+VOID WINAPI IDirect3DDevice9Base_SetCursorPosition(LPDIRECT3DDEVICE9 iface, int X, int Y, DWORD Flags)
{
UNIMPLEMENTED
}
-static BOOL WINAPI IDirect3DDevice9Impl_ShowCursor(LPDIRECT3DDEVICE9 iface, BOOL bShow)
+BOOL WINAPI IDirect3DDevice9Base_ShowCursor(LPDIRECT3DDEVICE9 iface, BOOL bShow)
{
UNIMPLEMENTED
return TRUE;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateAdditionalSwapChain(LPDIRECT3DDEVICE9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** ppSwapChain)
+HRESULT WINAPI IDirect3DDevice9Base_CreateAdditionalSwapChain(LPDIRECT3DDEVICE9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** ppSwapChain)
{
UNIMPLEMENTED
@@ -318,7 +318,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_CreateAdditionalSwapChain(LPDIRECT3DD
* @name IDirect3DDevice9::GetSwapChain
* @implemented
*
-* The function IDirect3DDevice9Impl_GetSwapChain returns a pointer to a swap chain object.
+* The function IDirect3DDevice9Base_GetSwapChain returns a pointer to a swap chain object.
*
* @param LPDIRECT3D iface
* Pointer to the IDirect3DDevice9 object returned from IDirect3D9::CreateDevice()
@@ -336,12 +336,12 @@ static HRESULT WINAPI IDirect3DDevice9Impl_CreateAdditionalSwapChain(LPDIRECT3DD
* will be D3DERR_INVALIDCALL.
*
*/
-static HRESULT WINAPI IDirect3DDevice9Impl_GetSwapChain(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, IDirect3DSwapChain9** ppSwapChain)
+HRESULT WINAPI IDirect3DDevice9Base_GetSwapChain(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, IDirect3DSwapChain9** ppSwapChain)
{
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
- if (IsBadWritePtr(ppSwapChain, sizeof(IDirect3DSwapChain9*)))
+ if (NULL == ppSwapChain)
{
DPRINT1("Invalid ppSwapChain parameter specified");
UNLOCK_D3DDEVICE9();
@@ -376,7 +376,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetSwapChain(LPDIRECT3DDEVICE9 iface,
* @name IDirect3DDevice9::GetNumberOfSwapChains
* @implemented
*
-* The function IDirect3DDevice9Impl_GetNumberOfSwapChains returns the number of swap chains
+* The function IDirect3DDevice9Base_GetNumberOfSwapChains returns the number of swap chains
* created by IDirect3D9::CreateDevice().
*
* @param LPDIRECT3D iface
@@ -389,11 +389,11 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetSwapChain(LPDIRECT3DDEVICE9 iface,
* IDirect3DDevice9::CreateAdditionalSwapChain() method.
*
*/
-static UINT WINAPI IDirect3DDevice9Impl_GetNumberOfSwapChains(LPDIRECT3DDEVICE9 iface)
+UINT WINAPI IDirect3DDevice9Base_GetNumberOfSwapChains(LPDIRECT3DDEVICE9 iface)
{
UINT NumSwapChains;
- LPDIRECT3DDEVICE9_INT This = impl_from_IDirect3DDevice9(iface);
+ LPDIRECT3DDEVICE9_INT This = IDirect3DDevice9ToImpl(iface);
LOCK_D3DDEVICE9();
NumSwapChains = This->NumAdaptersInDevice;
@@ -402,846 +402,145 @@ static UINT WINAPI IDirect3DDevice9Impl_GetNumberOfSwapChains(LPDIRECT3DDEVICE9
return NumSwapChains;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_Reset(LPDIRECT3DDEVICE9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters)
+HRESULT WINAPI IDirect3DDevice9Base_Reset(LPDIRECT3DDEVICE9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_Present(LPDIRECT3DDEVICE9 iface, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
+HRESULT WINAPI IDirect3DDevice9Base_Present(LPDIRECT3DDEVICE9 iface, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_GetBackBuffer(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer)
+HRESULT WINAPI IDirect3DDevice9Base_GetBackBuffer(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_GetRasterStatus(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus)
+HRESULT WINAPI IDirect3DDevice9Base_GetRasterStatus(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_SetDialogBoxMode(LPDIRECT3DDEVICE9 iface, BOOL bEnableDialogs)
+HRESULT WINAPI IDirect3DDevice9Base_SetDialogBoxMode(LPDIRECT3DDEVICE9 iface, BOOL bEnableDialogs)
{
UNIMPLEMENTED
return D3D_OK;
}
-static void WINAPI IDirect3DDevice9Impl_SetGammaRamp(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp)
+VOID WINAPI IDirect3DDevice9Base_SetGammaRamp(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp)
{
UNIMPLEMENTED
}
-static void WINAPI IDirect3DDevice9Impl_GetGammaRamp(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DGAMMARAMP* pRamp)
+VOID WINAPI IDirect3DDevice9Base_GetGammaRamp(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DGAMMARAMP* pRamp)
{
UNIMPLEMENTED
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateTexture(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateTexture(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateVolumeTexture(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateVolumeTexture(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateCubeTexture(LPDIRECT3DDEVICE9 iface, UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateCubeTexture(LPDIRECT3DDEVICE9 iface, UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateVertexBuffer(LPDIRECT3DDEVICE9 iface, UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateVertexBuffer(LPDIRECT3DDEVICE9 iface, UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateIndexBuffer(LPDIRECT3DDEVICE9 iface, UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateIndexBuffer(LPDIRECT3DDEVICE9 iface, UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateRenderTarget(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateRenderTarget(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateDepthStencilSurface(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateDepthStencilSurface(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_UpdateSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint)
+HRESULT WINAPI IDirect3DDevice9Base_UpdateSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_UpdateTexture(LPDIRECT3DDEVICE9 iface, IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture)
+HRESULT WINAPI IDirect3DDevice9Base_UpdateTexture(LPDIRECT3DDEVICE9 iface, IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderTargetData(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface)
+HRESULT WINAPI IDirect3DDevice9Base_GetRenderTargetData(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_GetFrontBufferData(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, IDirect3DSurface9* pDestSurface)
+HRESULT WINAPI IDirect3DDevice9Base_GetFrontBufferData(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, IDirect3DSurface9* pDestSurface)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_StretchRect(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter)
+HRESULT WINAPI IDirect3DDevice9Base_StretchRect(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_ColorFill(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color)
+HRESULT WINAPI IDirect3DDevice9Base_ColorFill(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color)
{
UNIMPLEMENTED
return D3D_OK;
}
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateOffscreenPlainSurface(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
+HRESULT WINAPI IDirect3DDevice9Base_CreateOffscreenPlainSurface(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
{
UNIMPLEMENTED
return D3D_OK;
}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetRenderTarget(LPDIRECT3DDEVICE9 iface, DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderTarget(LPDIRECT3DDEVICE9 iface, DWORD RenderTargetIndex,IDirect3DSurface9** ppRenderTarget)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetDepthStencilSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pNewZStencil)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetDepthStencilSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9** ppZStencilSurface)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_BeginScene(LPDIRECT3DDEVICE9 iface)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_EndScene(LPDIRECT3DDEVICE9 iface)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_Clear(LPDIRECT3DDEVICE9 iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_MultiplyTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetViewport(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetViewport(LPDIRECT3DDEVICE9 iface, D3DVIEWPORT9* pViewport)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetMaterial(LPDIRECT3DDEVICE9 iface, CONST D3DMATERIAL9* pMaterial)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetMaterial(LPDIRECT3DDEVICE9 iface, D3DMATERIAL9* pMaterial)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST D3DLIGHT9* pLight)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, D3DLIGHT9* pLight)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_LightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL Enable)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetLightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL* pEnable)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST float* pPlane)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, float* pPlane)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD* pValue)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateStateBlock(LPDIRECT3DDEVICE9 iface, D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_BeginStateBlock(LPDIRECT3DDEVICE9 iface)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_EndStateBlock(LPDIRECT3DDEVICE9 iface, IDirect3DStateBlock9** ppSB)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetClipStatus(LPDIRECT3DDEVICE9 iface, CONST D3DCLIPSTATUS9* pClipStatus)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetClipStatus(LPDIRECT3DDEVICE9 iface, D3DCLIPSTATUS9* pClipStatus)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetTexture(LPDIRECT3DDEVICE9 iface, DWORD Stage, IDirect3DBaseTexture9** ppTexture)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetTexture(LPDIRECT3DDEVICE9 iface, DWORD Stage, IDirect3DBaseTexture9* pTexture)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_ValidateDevice(LPDIRECT3DDEVICE9 iface, DWORD* pNumPasses)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetPaletteEntries(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber, CONST PALETTEENTRY* pEntries)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetPaletteEntries(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber, PALETTEENTRY* pEntries)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetCurrentTexturePalette(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetCurrentTexturePalette(LPDIRECT3DDEVICE9 iface, UINT* pPaletteNumber)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetScissorRect(LPDIRECT3DDEVICE9 iface, CONST RECT* pRect)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetScissorRect(LPDIRECT3DDEVICE9 iface, RECT* pRect)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface, BOOL bSoftware)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static BOOL WINAPI IDirect3DDevice9Impl_GetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface)
-{
- UNIMPLEMENTED
-
- return TRUE;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetNPatchMode(LPDIRECT3DDEVICE9 iface, float nSegments)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static float WINAPI IDirect3DDevice9Impl_GetNPatchMode(LPDIRECT3DDEVICE9 iface)
-{
- UNIMPLEMENTED
-
- return 0.0f;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DrawPrimitive(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DrawPrimitiveUP(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DrawIndexedPrimitiveUP(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_ProcessVertices(LPDIRECT3DDEVICE9 iface, UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateVertexDeclaration(LPDIRECT3DDEVICE9 iface, CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexDeclaration(LPDIRECT3DDEVICE9 iface, IDirect3DVertexDeclaration9* pDecl)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexDeclaration(LPDIRECT3DDEVICE9 iface, IDirect3DVertexDeclaration9** ppDecl)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetFVF(LPDIRECT3DDEVICE9 iface, DWORD FVF)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetFVF(LPDIRECT3DDEVICE9 iface, DWORD* pFVF)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateVertexShader(LPDIRECT3DDEVICE9 iface, CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9* pShader)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9** ppShader)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* pOffsetInBytes, UINT* pStride)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,UINT Setting)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, UINT* pSetting)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetIndices(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9* pIndexData)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetIndices(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9** ppIndexData)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_CreatePixelShader(LPDIRECT3DDEVICE9 iface, CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9* pShader)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9** ppShader)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_SetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DrawRectPatch(LPDIRECT3DDEVICE9 iface, UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DrawTriPatch(LPDIRECT3DDEVICE9 iface, UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_DeletePatch(LPDIRECT3DDEVICE9 iface, UINT Handle)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-static HRESULT WINAPI IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery)
-{
- UNIMPLEMENTED
-
- return D3D_OK;
-}
-
-IDirect3DDevice9Vtbl Direct3DDevice9_Vtbl =
-{
- /* IUnknown */
- IDirect3DDevice9Impl_QueryInterface,
- IDirect3DDevice9Impl_AddRef,
- IDirect3DDevice9Impl_Release,
-
- /* IDirect3D9Device */
- IDirect3DDevice9Impl_TestCooperativeLevel,
- IDirect3DDevice9Impl_GetAvailableTextureMem,
- IDirect3DDevice9Impl_EvictManagedResources,
- IDirect3DDevice9Impl_GetDirect3D,
- IDirect3DDevice9Impl_GetDeviceCaps,
- IDirect3DDevice9Impl_GetDisplayMode,
- IDirect3DDevice9Impl_GetCreationParameters,
- IDirect3DDevice9Impl_SetCursorProperties,
- IDirect3DDevice9Impl_SetCursorPosition,
- IDirect3DDevice9Impl_ShowCursor,
- IDirect3DDevice9Impl_CreateAdditionalSwapChain,
- IDirect3DDevice9Impl_GetSwapChain,
- IDirect3DDevice9Impl_GetNumberOfSwapChains,
- IDirect3DDevice9Impl_Reset,
- IDirect3DDevice9Impl_Present,
- IDirect3DDevice9Impl_GetBackBuffer,
- IDirect3DDevice9Impl_GetRasterStatus,
- IDirect3DDevice9Impl_SetDialogBoxMode,
- IDirect3DDevice9Impl_SetGammaRamp,
- IDirect3DDevice9Impl_GetGammaRamp,
- IDirect3DDevice9Impl_CreateTexture,
- IDirect3DDevice9Impl_CreateVolumeTexture,
- IDirect3DDevice9Impl_CreateCubeTexture,
- IDirect3DDevice9Impl_CreateVertexBuffer,
- IDirect3DDevice9Impl_CreateIndexBuffer,
- IDirect3DDevice9Impl_CreateRenderTarget,
- IDirect3DDevice9Impl_CreateDepthStencilSurface,
- IDirect3DDevice9Impl_UpdateSurface,
- IDirect3DDevice9Impl_UpdateTexture,
- IDirect3DDevice9Impl_GetRenderTargetData,
- IDirect3DDevice9Impl_GetFrontBufferData,
- IDirect3DDevice9Impl_StretchRect,
- IDirect3DDevice9Impl_ColorFill,
- IDirect3DDevice9Impl_CreateOffscreenPlainSurface,
- IDirect3DDevice9Impl_SetRenderTarget,
- IDirect3DDevice9Impl_GetRenderTarget,
- IDirect3DDevice9Impl_SetDepthStencilSurface,
- IDirect3DDevice9Impl_GetDepthStencilSurface,
- IDirect3DDevice9Impl_BeginScene,
- IDirect3DDevice9Impl_EndScene,
- IDirect3DDevice9Impl_Clear,
- IDirect3DDevice9Impl_SetTransform,
- IDirect3DDevice9Impl_GetTransform,
- IDirect3DDevice9Impl_MultiplyTransform,
- IDirect3DDevice9Impl_SetViewport,
- IDirect3DDevice9Impl_GetViewport,
- IDirect3DDevice9Impl_SetMaterial,
- IDirect3DDevice9Impl_GetMaterial,
- IDirect3DDevice9Impl_SetLight,
- IDirect3DDevice9Impl_GetLight,
- IDirect3DDevice9Impl_LightEnable,
- IDirect3DDevice9Impl_GetLightEnable,
- IDirect3DDevice9Impl_SetClipPlane,
- IDirect3DDevice9Impl_GetClipPlane,
- IDirect3DDevice9Impl_SetRenderState,
- IDirect3DDevice9Impl_GetRenderState,
- IDirect3DDevice9Impl_CreateStateBlock,
- IDirect3DDevice9Impl_BeginStateBlock,
- IDirect3DDevice9Impl_EndStateBlock,
- IDirect3DDevice9Impl_SetClipStatus,
- IDirect3DDevice9Impl_GetClipStatus,
- IDirect3DDevice9Impl_GetTexture,
- IDirect3DDevice9Impl_SetTexture,
- IDirect3DDevice9Impl_GetTextureStageState,
- IDirect3DDevice9Impl_SetTextureStageState,
- IDirect3DDevice9Impl_GetSamplerState,
- IDirect3DDevice9Impl_SetSamplerState,
- IDirect3DDevice9Impl_ValidateDevice,
- IDirect3DDevice9Impl_SetPaletteEntries,
- IDirect3DDevice9Impl_GetPaletteEntries,
- IDirect3DDevice9Impl_SetCurrentTexturePalette,
- IDirect3DDevice9Impl_GetCurrentTexturePalette,
- IDirect3DDevice9Impl_SetScissorRect,
- IDirect3DDevice9Impl_GetScissorRect,
- IDirect3DDevice9Impl_SetSoftwareVertexProcessing,
- IDirect3DDevice9Impl_GetSoftwareVertexProcessing,
- IDirect3DDevice9Impl_SetNPatchMode,
- IDirect3DDevice9Impl_GetNPatchMode,
- IDirect3DDevice9Impl_DrawPrimitive,
- IDirect3DDevice9Impl_DrawIndexedPrimitive,
- IDirect3DDevice9Impl_DrawPrimitiveUP,
- IDirect3DDevice9Impl_DrawIndexedPrimitiveUP,
- IDirect3DDevice9Impl_ProcessVertices,
- IDirect3DDevice9Impl_CreateVertexDeclaration,
- IDirect3DDevice9Impl_SetVertexDeclaration,
- IDirect3DDevice9Impl_GetVertexDeclaration,
- IDirect3DDevice9Impl_SetFVF,
- IDirect3DDevice9Impl_GetFVF,
- IDirect3DDevice9Impl_CreateVertexShader,
- IDirect3DDevice9Impl_SetVertexShader,
- IDirect3DDevice9Impl_GetVertexShader,
- IDirect3DDevice9Impl_SetVertexShaderConstantF,
- IDirect3DDevice9Impl_GetVertexShaderConstantF,
- IDirect3DDevice9Impl_SetVertexShaderConstantI,
- IDirect3DDevice9Impl_GetVertexShaderConstantI,
- IDirect3DDevice9Impl_SetVertexShaderConstantB,
- IDirect3DDevice9Impl_GetVertexShaderConstantB,
- IDirect3DDevice9Impl_SetStreamSource,
- IDirect3DDevice9Impl_GetStreamSource,
- IDirect3DDevice9Impl_SetStreamSourceFreq,
- IDirect3DDevice9Impl_GetStreamSourceFreq,
- IDirect3DDevice9Impl_SetIndices,
- IDirect3DDevice9Impl_GetIndices,
- IDirect3DDevice9Impl_CreatePixelShader,
- IDirect3DDevice9Impl_SetPixelShader,
- IDirect3DDevice9Impl_GetPixelShader,
- IDirect3DDevice9Impl_SetPixelShaderConstantF,
- IDirect3DDevice9Impl_GetPixelShaderConstantF,
- IDirect3DDevice9Impl_SetPixelShaderConstantI,
- IDirect3DDevice9Impl_GetPixelShaderConstantI,
- IDirect3DDevice9Impl_SetPixelShaderConstantB,
- IDirect3DDevice9Impl_GetPixelShaderConstantB,
- IDirect3DDevice9Impl_DrawRectPatch,
- IDirect3DDevice9Impl_DrawTriPatch,
- IDirect3DDevice9Impl_DeletePatch,
- IDirect3DDevice9Impl_CreateQuery,
-};
-
diff --git a/reactos/dll/directx/d3d9/d3d9_device.h b/reactos/dll/directx/d3d9/d3d9_device.h
index 5dd82327cba..2eca346cab9 100644
--- a/reactos/dll/directx/d3d9/d3d9_device.h
+++ b/reactos/dll/directx/d3d9/d3d9_device.h
@@ -10,17 +10,64 @@
#include "d3d9_common.h"
#include
+#include
#include "d3d9_private.h"
#include "d3d9_swapchain.h"
#include "d3d9_surface.h"
-extern struct IDirect3DDevice9Vtbl Direct3DDevice9_Vtbl;
+#if !defined(__cplusplus) || defined(CINTERFACE)
+typedef struct _IDirect3DDevice9Vtbl_INT
+{
+ struct IDirect3DDevice9Vtbl PublicInterface;
+
+ HRESULT (WINAPI *SetRenderStateWorker)(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value); // Value = D3DDEGREETYPE Degree );
+ HRESULT (WINAPI *SetTextureStageStateI)(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value);
+ HRESULT (WINAPI *SetSamplerStateI)(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value);
+ HRESULT (WINAPI *SetMaterial)(LPDIRECT3DDEVICE9 iface, CONST D3DMATERIAL9* pMaterial);
+ HRESULT (WINAPI *SetVertexShader)(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9* pShader);
+ HRESULT (WINAPI *SetVertexShaderConstantF)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount);
+ HRESULT (WINAPI *SetVertexShaderConstantI)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount);
+ HRESULT (WINAPI *SetVertexShaderConstantB)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount);
+ HRESULT (WINAPI *SetPixelShader)(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9* pShader);
+ HRESULT (WINAPI *SetPixelShaderConstantF)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount);
+ HRESULT (WINAPI *SetPixelShaderConstantI)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount);
+ HRESULT (WINAPI *SetPixelShaderConstantB)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount);
+ HRESULT (WINAPI *SetFVF)(LPDIRECT3DDEVICE9 iface, DWORD FVF);
+ HRESULT (WINAPI *SetTexture)(LPDIRECT3DDEVICE9 iface, DWORD Stage,IDirect3DBaseTexture9* pTexture);
+ HRESULT (WINAPI *SetIndices)(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9* pIndexData);
+ HRESULT (WINAPI *SetStreamSource)(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride);
+ HRESULT (WINAPI *SetStreamSourceFreq)(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,UINT Setting);
+ VOID (WINAPI *UpdateRenderState)(LPDIRECT3DDEVICE9 iface, DWORD Unknown1, DWORD Unknown2);
+ HRESULT (WINAPI *SetTransform)(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix);
+ HRESULT (WINAPI *MultiplyTransform)(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*);
+ HRESULT (WINAPI *SetClipPlane)(LPDIRECT3DDEVICE9 iface, DWORD Index,CONST float* pPlane);
+ VOID (WINAPI *UpdateDriverState)(LPDIRECT3DDEVICE9 iface);
+ HRESULT (WINAPI *SetViewport)(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport);
+ VOID (WINAPI *SetStreamSourceInt)(LPDIRECT3DDEVICE9 iface, LPVOID UnknownStreamData);
+ HRESULT (WINAPI *SetPixelShaderConstantFWorker)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount);
+ HRESULT (WINAPI *SetPixelShaderConstantIWorker)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount);
+ HRESULT (WINAPI *SetPixelShaderConstantBWorker)(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount);
+ VOID (WINAPI *DrawPrimitiveWorker)(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount);
+ HRESULT (WINAPI *SetLight)(LPDIRECT3DDEVICE9 iface, DWORD Index,CONST D3DLIGHT9*);
+ HRESULT (WINAPI *LightEnable)(LPDIRECT3DDEVICE9 iface, DWORD Index,BOOL Enable);
+ HRESULT (WINAPI *SetRenderStateInt)(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value ); // Value = D3DDEGREETYPE Degree );
+ HRESULT (WINAPI *DrawPrimitiveUPInt)(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount);
+ HRESULT (WINAPI *Clear)(LPDIRECT3DDEVICE9 iface, DWORD Count,CONST D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil);
+ VOID (WINAPI *DrawPrimitivesWorker)(LPDIRECT3DDEVICE9 iface);
+ VOID (WINAPI *UpdateVertexShader)(LPDIRECT3DDEVICE9 iface);
+ HRESULT (WINAPI *ValidateDrawCall)(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT Unknown1, UINT Unknown2, UINT Unknown3, INT Unknown4, UINT Unknown5, INT Unknown6);
+ HRESULT (WINAPI *Init)(LPDIRECT3DDEVICE9 iface);
+ VOID (WINAPI *InitState)(LPDIRECT3DDEVICE9 iface, INT State);
+ VOID (WINAPI *Destroy)(LPDIRECT3DDEVICE9 iface);
+ VOID (WINAPI *VirtualDestructor)(LPDIRECT3DDEVICE9 iface);
+} IDirect3DDevice9Vtbl_INT;
+#endif
typedef struct _D3D9HeapTexture
{
/* 0x0000 */ DWORD dwUnknown00;
-/* 0x0004 */ DWORD dwUnknown04;
-/* 0x0008 */ LPDWORD pUnknown08;
+/* 0x0004 */ DWORD dwUnknown04; // 0x400
+/* 0x0008 */ LPDWORD pUnknown08; // malloc(dwUnknown04 * 2)
} D3D9HeapTexture;
typedef struct _D3D9ResourceManager
@@ -57,7 +104,7 @@ typedef struct _D3D9Cursor
typedef struct _Direct3DDevice9_INT
{
-/* 0x0000 */ struct IDirect3DDevice9Vtbl* lpVtbl;
+/* 0x0000 */ struct _IDirect3DDevice9Vtbl_INT* lpVtbl;
/* 0x0004 */ CRITICAL_SECTION CriticalSection;
#ifdef D3D_DEBUG_INFO
/* N/A - 0x001c */ DWORD dbg0004;
@@ -77,7 +124,7 @@ typedef struct _Direct3DDevice9_INT
#endif
/* 0x001c - 0x0054 */ BOOL bLockDevice;
/* 0x0020 - 0x0058 */ DWORD dwProcessId;
-/* 0x0024 - 0x005c */ struct _D3D9PUREDEVICE* lpThis;
+/* 0x0024 - 0x005c */ IUnknown* pUnknown;
/* 0x0028 - 0x0060 */ DWORD dwDXVersion;
/* 0x002c - 0x0064 */ DWORD unknown000011;
/* 0x0030 - 0x0068 */ LONG lRefCnt;
@@ -91,8 +138,8 @@ typedef struct _Direct3DDevice9_INT
/* 0x0050 - 0x0088 */ D3DDISPLAYMODE CurrentDisplayMode[D3D9_INT_MAX_NUM_ADAPTERS];
/* 0x0110 - 0x0148 */ DWORD AdapterIndexInGroup[D3D9_INT_MAX_NUM_ADAPTERS];
/* 0x0140 - 0x0178 */ D3D9_DEVICEDATA DeviceData[D3D9_INT_MAX_NUM_ADAPTERS];
-/* 0x1df0 - 0x1e28 */ LPDIRECT3DSWAPCHAIN9_INT pSwapChains[D3D9_INT_MAX_NUM_ADAPTERS];
-/* 0x1e20 */ LPDIRECT3DSWAPCHAIN9_INT pSwapChains2[D3D9_INT_MAX_NUM_ADAPTERS];
+/* 0x1df0 - 0x1e28 */ LPDIRECT3DSWAPCHAIN9_INT pSwapChains[D3D9_INT_MAX_NUM_ADAPTERS];
+/* 0x1e20 - 0x1e58 */ LPDIRECT3DSWAPCHAIN9_INT pSwapChains2[D3D9_INT_MAX_NUM_ADAPTERS];
/* 0x1e50 */ D3D9BaseSurface* pRenderTargetList;
/* 0x1e54 */ DWORD unknown001941;
/* 0x1e58 */ DWORD unknown001942;
@@ -157,1318 +204,45 @@ typedef struct _Direct3DDevice9_INT
/* 0x1f44 */ DWORD unknown002001;
} DIRECT3DDEVICE9_INT, FAR* LPDIRECT3DDEVICE9_INT;
-typedef struct _D3D9PUREDEVICE
-{
-/* 0x0000 - 0x0000 */ DIRECT3DDEVICE9_INT BaseDevice;
-/* 0x1f48 */ DWORD unknown002002;
-/* 0x1f4c */ DWORD unknown002003;
-/* 0x1f50 */ DWORD unknown002004;
-/* 0x1f54 */ DWORD unknown002005;
-/* 0x1f58 */ DWORD unknown002006;
-/* 0x1f5c */ DWORD unknown002007;
-/* 0x1f60 */ DWORD unknown002008;
-/* 0x1f64 */ DWORD unknown002009;
-/* 0x1f68 */ DWORD unknown002010;
-/* 0x1f6c */ DWORD unknown002011;
-/* 0x1f70 */ DWORD unknown002012;
-/* 0x1f74 */ DWORD unknown002013;
-/* 0x1f78 */ DWORD unknown002014;
-/* 0x1f7c */ DWORD unknown002015;
-/* 0x1f80 */ DWORD unknown002016;
-/* 0x1f84 */ DWORD unknown002017;
-/* 0x1f88 */ DWORD unknown002018;
-/* 0x1f8c */ DWORD unknown002019;
-/* 0x1f90 */ DWORD unknown002020;
-/* 0x1f94 */ DWORD unknown002021;
-/* 0x1f98 */ DWORD unknown002022;
-/* 0x1f9c */ DWORD unknown002023;
-/* 0x1fa0 */ DWORD unknown002024;
-/* 0x1fa4 */ DWORD unknown002025;
-/* 0x1fa8 - 0x1fe0 */ DWORD unknown002026;
-/* 0x1fac */ DWORD unknown002027;
-/* 0x1fb0 */ DWORD unknown002028;
-/* 0x1fb4 */ DWORD unknown002029;
-/* 0x1fb8 */ DWORD unknown002030;
-/* 0x1fbc */ DWORD unknown002031;
-/* 0x1fc0 */ DWORD unknown002032;
-/* 0x1fc4 */ DWORD unknown002033;
-/* 0x1fc8 */ DWORD unknown002034;
-/* 0x1fcc */ DWORD unknown002035;
-/* 0x1fd0 */ DWORD unknown002036;
-/* 0x1fd4 */ DWORD unknown002037;
-/* 0x1fd8 */ DWORD unknown002038;
-/* 0x1fdc */ DWORD unknown002039;
-/* 0x1fe0 */ DWORD unknown002040;
-/* 0x1fe4 */ DWORD unknown002041;
-/* 0x1fe8 */ DWORD unknown002042;
-/* 0x1fec */ DWORD unknown002043;
-/* 0x1ff0 */ DWORD unknown002044;
-/* 0x1ff4 */ DWORD unknown002045;
-/* 0x1ff8 */ DWORD unknown002046;
-/* 0x1ffc */ DWORD unknown002047;
-/* 0x2000 */ DWORD unknown002048;
-/* 0x2004 */ DWORD unknown002049;
-/* 0x2008 */ DWORD unknown002050;
-/* 0x200c */ DWORD unknown002051;
-/* 0x2010 */ DWORD unknown002052;
-/* 0x2014 */ DWORD unknown002053;
-/* 0x2018 */ DWORD unknown002054;
-/* 0x201c */ DWORD unknown002055;
-/* 0x2020 */ DWORD unknown002056;
-/* 0x2024 */ DWORD unknown002057;
-/* 0x2028 */ DWORD unknown002058;
-/* 0x202c */ DWORD unknown002059;
-/* 0x2030 */ DWORD unknown002060;
-/* 0x2034 */ DWORD unknown002061;
-/* 0x2038 */ DWORD unknown002062;
-/* 0x203c */ DWORD unknown002063;
-/* 0x2040 */ DWORD unknown002064;
-/* 0x2044 */ DWORD unknown002065;
-/* 0x2048 */ DWORD unknown002066;
-/* 0x204c */ DWORD unknown002067;
-/* 0x2050 */ DWORD unknown002068;
-/* 0x2054 */ DWORD unknown002069;
-/* 0x2058 */ DWORD unknown002070;
-/* 0x205c */ DWORD unknown002071;
-/* 0x2060 */ DWORD unknown002072;
-/* 0x2064 */ DWORD unknown002073;
-/* 0x2068 */ DWORD unknown002074;
-/* 0x206c */ DWORD unknown002075;
-/* 0x2070 */ DWORD unknown002076;
-/* 0x2074 */ DWORD unknown002077;
-/* 0x2078 */ DWORD unknown002078;
-/* 0x207c */ DWORD unknown002079;
-/* 0x2080 */ DWORD unknown002080;
-/* 0x2084 */ DWORD unknown002081;
-/* 0x2088 */ DWORD unknown002082;
-/* 0x208c */ DWORD unknown002083;
-/* 0x2090 */ DWORD unknown002084;
-/* 0x2094 */ DWORD unknown002085;
-/* 0x2098 */ DWORD unknown002086;
-/* 0x209c */ DWORD unknown002087;
-/* 0x20a0 */ DWORD unknown002088;
-/* 0x20a4 */ DWORD unknown002089;
-/* 0x20a8 */ DWORD unknown002090;
-/* 0x20ac */ DWORD unknown002091;
-/* 0x20b0 */ DWORD unknown002092;
-/* 0x20b4 */ DWORD unknown002093;
-/* 0x20b8 */ DWORD unknown002094;
-/* 0x20bc */ DWORD unknown002095;
-/* 0x20c0 */ DWORD unknown002096;
-/* 0x20c4 */ DWORD unknown002097;
-/* 0x20c8 */ DWORD unknown002098;
-/* 0x20cc */ DWORD unknown002099;
-/* 0x20d0 */ DWORD unknown002100;
-/* 0x20d4 */ DWORD unknown002101;
-/* 0x20d8 */ DWORD unknown002102;
-/* 0x20dc */ DWORD unknown002103;
-/* 0x20e0 */ DWORD unknown002104;
-/* 0x20e4 */ DWORD unknown002105;
-/* 0x20e8 */ DWORD unknown002106;
-/* 0x20ec */ DWORD unknown002107;
-/* 0x20f0 */ DWORD unknown002108;
-/* 0x20f4 */ DWORD unknown002109;
-/* 0x20f8 */ DWORD unknown002110;
-/* 0x20fc */ DWORD unknown002111;
-/* 0x2100 */ DWORD unknown002112;
-/* 0x2104 */ DWORD unknown002113;
-/* 0x2108 */ DWORD unknown002114;
-/* 0x210c */ DWORD unknown002115;
-/* 0x2110 */ DWORD unknown002116;
-/* 0x2114 */ DWORD unknown002117;
-/* 0x2118 */ DWORD unknown002118;
-/* 0x211c */ DWORD unknown002119;
-/* 0x2120 */ DWORD unknown002120;
-/* 0x2124 */ DWORD unknown002121;
-/* 0x2128 */ DWORD unknown002122;
-/* 0x212c */ DWORD unknown002123;
-/* 0x2130 */ DWORD unknown002124;
-/* 0x2134 */ DWORD unknown002125;
-/* 0x2138 */ DWORD unknown002126;
-/* 0x213c */ DWORD unknown002127;
-/* 0x2140 */ DWORD unknown002128;
-/* 0x2144 */ DWORD unknown002129;
-/* 0x2148 */ DWORD unknown002130;
-/* 0x214c */ DWORD unknown002131;
-/* 0x2150 */ DWORD unknown002132;
-/* 0x2154 */ DWORD unknown002133;
-/* 0x2158 */ DWORD unknown002134;
-/* 0x215c */ DWORD unknown002135;
-/* 0x2160 */ DWORD unknown002136;
-/* 0x2164 */ DWORD unknown002137;
-/* 0x2168 */ DWORD unknown002138;
-/* 0x216c */ DWORD unknown002139;
-/* 0x2170 */ DWORD unknown002140;
-/* 0x2174 */ DWORD unknown002141;
-/* 0x2178 */ DWORD unknown002142;
-/* 0x217c */ DWORD unknown002143;
-/* 0x2180 */ DWORD unknown002144;
-/* 0x2184 */ DWORD unknown002145;
-/* 0x2188 */ DWORD unknown002146;
-/* 0x218c */ DWORD unknown002147;
-/* 0x2190 */ DWORD unknown002148;
-/* 0x2194 */ DWORD unknown002149;
-/* 0x2198 */ DWORD unknown002150;
-/* 0x219c */ DWORD unknown002151;
-/* 0x21a0 */ DWORD unknown002152;
-/* 0x21a4 */ DWORD unknown002153;
-/* 0x21a8 */ DWORD unknown002154;
-/* 0x21ac */ DWORD unknown002155;
-/* 0x21b0 */ DWORD unknown002156;
-/* 0x21b4 */ DWORD unknown002157;
-/* 0x21b8 */ DWORD unknown002158;
-/* 0x21bc */ DWORD unknown002159;
-/* 0x21c0 */ DWORD unknown002160;
-/* 0x21c4 */ DWORD unknown002161;
-/* 0x21c8 */ DWORD unknown002162;
-/* 0x21cc */ DWORD unknown002163;
-/* 0x21d0 */ DWORD unknown002164;
-/* 0x21d4 */ DWORD unknown002165;
-/* 0x21d8 */ DWORD unknown002166;
-/* 0x21dc */ DWORD unknown002167;
-/* 0x21e0 */ DWORD unknown002168;
-/* 0x21e4 */ DWORD unknown002169;
-/* 0x21e8 */ DWORD unknown002170;
-/* 0x21ec */ DWORD unknown002171;
-/* 0x21f0 */ DWORD unknown002172;
-/* 0x21f4 */ DWORD unknown002173;
-/* 0x21f8 */ DWORD unknown002174;
-/* 0x21fc */ DWORD unknown002175;
-/* 0x2200 */ DWORD unknown002176;
-/* 0x2204 */ DWORD unknown002177;
-/* 0x2208 */ DWORD unknown002178;
-/* 0x220c */ DWORD unknown002179;
-/* 0x2210 */ DWORD unknown002180;
-/* 0x2214 */ DWORD unknown002181;
-/* 0x2218 */ DWORD unknown002182;
-/* 0x221c */ DWORD unknown002183;
-/* 0x2220 */ DWORD unknown002184;
-/* 0x2224 */ DWORD unknown002185;
-/* 0x2228 */ DWORD unknown002186;
-/* 0x222c */ DWORD unknown002187;
-/* 0x2230 */ DWORD unknown002188;
-/* 0x2234 */ DWORD unknown002189;
-/* 0x2238 */ DWORD unknown002190;
-/* 0x223c */ DWORD unknown002191;
-/* 0x2240 */ DWORD unknown002192;
-/* 0x2244 */ DWORD unknown002193;
-/* 0x2248 */ DWORD unknown002194;
-/* 0x224c */ DWORD unknown002195;
-/* 0x2250 */ DWORD unknown002196;
-/* 0x2254 */ DWORD unknown002197;
-/* 0x2258 */ DWORD unknown002198;
-/* 0x225c */ DWORD unknown002199;
-/* 0x2260 */ DWORD unknown002200;
-/* 0x2264 */ DWORD unknown002201;
-/* 0x2268 */ DWORD unknown002202;
-/* 0x226c */ DWORD unknown002203;
-/* 0x2270 */ DWORD unknown002204;
-/* 0x2274 */ DWORD unknown002205;
-/* 0x2278 */ DWORD unknown002206;
-/* 0x227c */ DWORD unknown002207;
-/* 0x2280 */ DWORD unknown002208;
-/* 0x2284 */ DWORD unknown002209;
-/* 0x2288 */ DWORD unknown002210;
-/* 0x228c */ DWORD unknown002211;
-/* 0x2290 */ DWORD unknown002212;
-/* 0x2294 */ DWORD unknown002213;
-/* 0x2298 */ DWORD unknown002214;
-/* 0x229c */ DWORD unknown002215;
-/* 0x22a0 */ DWORD unknown002216;
-/* 0x22a4 */ DWORD unknown002217;
-/* 0x22a8 */ DWORD unknown002218;
-/* 0x22ac */ DWORD unknown002219;
-/* 0x22b0 */ DWORD unknown002220;
-/* 0x22b4 */ DWORD unknown002221;
-/* 0x22b8 */ DWORD unknown002222;
-/* 0x22bc */ DWORD unknown002223;
-/* 0x22c0 */ DWORD unknown002224;
-/* 0x22c4 */ DWORD unknown002225;
-/* 0x22c8 */ DWORD unknown002226;
-/* 0x22cc */ DWORD unknown002227;
-/* 0x22d0 */ DWORD unknown002228;
-/* 0x22d4 */ DWORD unknown002229;
-/* 0x22d8 */ DWORD unknown002230;
-/* 0x22dc */ DWORD unknown002231;
-/* 0x22e0 */ DWORD unknown002232;
-/* 0x22e4 */ DWORD unknown002233;
-/* 0x22e8 */ DWORD unknown002234;
-/* 0x22ec */ DWORD unknown002235;
-/* 0x22f0 */ DWORD unknown002236;
-/* 0x22f4 */ DWORD unknown002237;
-/* 0x22f8 */ DWORD unknown002238;
-/* 0x22fc */ DWORD unknown002239;
-/* 0x2300 */ DWORD unknown002240;
-/* 0x2304 */ DWORD unknown002241;
-/* 0x2308 */ DWORD unknown002242;
-/* 0x230c */ DWORD unknown002243;
-/* 0x2310 */ DWORD unknown002244;
-/* 0x2314 */ DWORD unknown002245;
-/* 0x2318 */ DWORD unknown002246;
-/* 0x231c */ DWORD unknown002247;
-/* 0x2320 */ DWORD unknown002248;
-/* 0x2324 */ DWORD unknown002249;
-/* 0x2328 */ DWORD unknown002250;
-/* 0x232c */ DWORD unknown002251;
-/* 0x2330 */ DWORD unknown002252;
-/* 0x2334 */ DWORD unknown002253;
-/* 0x2338 */ DWORD unknown002254;
-/* 0x233c */ DWORD unknown002255;
-/* 0x2340 */ DWORD unknown002256;
-/* 0x2344 */ DWORD unknown002257;
-/* 0x2348 */ DWORD unknown002258;
-/* 0x234c */ DWORD unknown002259;
-/* 0x2350 */ DWORD unknown002260;
-/* 0x2354 */ DWORD unknown002261;
-/* 0x2358 */ DWORD unknown002262;
-/* 0x235c */ DWORD unknown002263;
-/* 0x2360 */ DWORD unknown002264;
-/* 0x2364 */ DWORD unknown002265;
-/* 0x2368 */ DWORD unknown002266;
-/* 0x236c */ DWORD unknown002267;
-/* 0x2370 */ DWORD unknown002268;
-/* 0x2374 */ DWORD unknown002269;
-/* 0x2378 */ DWORD unknown002270;
-/* 0x237c */ DWORD unknown002271;
-/* 0x2380 */ DWORD unknown002272;
-/* 0x2384 */ DWORD unknown002273;
-/* 0x2388 */ DWORD unknown002274;
-/* 0x238c */ DWORD unknown002275;
-/* 0x2390 */ DWORD unknown002276;
-/* 0x2394 */ DWORD unknown002277;
-/* 0x2398 */ DWORD unknown002278;
-/* 0x239c */ DWORD unknown002279;
-/* 0x23a0 */ DWORD unknown002280;
-/* 0x23a4 */ DWORD unknown002281;
-/* 0x23a8 */ DWORD unknown002282;
-/* 0x23ac */ DWORD unknown002283;
-/* 0x23b0 */ DWORD unknown002284;
-/* 0x23b4 */ DWORD unknown002285;
-/* 0x23b8 */ DWORD unknown002286;
-/* 0x23bc */ DWORD unknown002287;
-/* 0x23c0 */ DWORD unknown002288;
-/* 0x23c4 */ DWORD unknown002289;
-/* 0x23c8 */ DWORD unknown002290;
-/* 0x23cc */ DWORD unknown002291;
-/* 0x23d0 */ DWORD unknown002292;
-/* 0x23d4 */ DWORD unknown002293;
-/* 0x23d8 */ DWORD unknown002294;
-/* 0x23dc */ DWORD unknown002295;
-/* 0x23e0 */ DWORD unknown002296;
-/* 0x23e4 */ DWORD unknown002297;
-/* 0x23e8 */ DWORD unknown002298;
-/* 0x23ec */ DWORD unknown002299;
-/* 0x23f0 */ DWORD unknown002300;
-/* 0x23f4 */ DWORD unknown002301;
-/* 0x23f8 */ DWORD unknown002302;
-/* 0x23fc */ DWORD unknown002303;
-/* 0x2400 */ DWORD unknown002304;
-/* 0x2404 */ DWORD unknown002305;
-/* 0x2408 */ DWORD unknown002306;
-/* 0x240c */ DWORD unknown002307;
-/* 0x2410 */ DWORD unknown002308;
-/* 0x2414 */ DWORD unknown002309;
-/* 0x2418 */ DWORD unknown002310;
-/* 0x241c */ DWORD unknown002311;
-/* 0x2420 */ DWORD unknown002312;
-/* 0x2424 */ DWORD unknown002313;
-/* 0x2428 */ DWORD unknown002314;
-/* 0x242c */ DWORD unknown002315;
-/* 0x2430 */ DWORD unknown002316;
-/* 0x2434 */ DWORD unknown002317;
-} D3D9PUREDEVICE, FAR *LPD3D9PUREDEVICE;
+/* IUnknown interface */
+HRESULT WINAPI IDirect3DDevice9Base_QueryInterface(LPDIRECT3DDEVICE9 iface, REFIID riid, void** ppvObject);
+ULONG WINAPI IDirect3DDevice9Base_AddRef(LPDIRECT3DDEVICE9 iface);
+ULONG WINAPI IDirect3DDevice9Base_Release(LPDIRECT3DDEVICE9 iface);
-typedef struct _D3D9HALDEVICE
-{
-/* 0x0000 */ D3D9PUREDEVICE PureDevice;
-#ifdef D3D_DEBUG_INFO
-/* N/A - 0x0004 */ DWORD dbg0004;
-/* N/A - 0x0008 */ DWORD dbg0008;
-/* N/A - 0x000c */ DWORD dbg000c;
-/* N/A - 0x0010 */ DWORD dbg0010;
-/* N/A - 0x0014 */ DWORD dbg0014;
-/* N/A - 0x0018 */ DWORD dbg0018;
-/* N/A - 0x001c */ DWORD dbg001c;
-/* N/A - 0x0020 */ DWORD dbg0020;
-/* N/A - 0x0024 */ DWORD dbg0024;
-/* N/A - 0x0028 */ DWORD dbg0028;
-/* N/A - 0x002c */ DWORD dbg002c;
-/* N/A - 0x0030 */ DWORD dbg0030;
-/* N/A - 0x0034 */ DWORD dbg0034;
-/* N/A - 0x0038 */ DWORD dbg0038;
-#endif
-/* 0x2438 */ DWORD unknown002438;
-/* 0x243c */ DWORD unknown00243c;
-/* 0x2440 */ DWORD unknown002440;
-/* 0x2444 */ DWORD unknown002444;
-/* 0x2448 */ DWORD unknown002448;
-/* 0x244c */ DWORD unknown00244c;
-/* 0x2450 */ DWORD unknown002450;
-/* 0x2454 */ DWORD unknown002454;
-/* 0x2458 */ DWORD unknown002458;
-/* 0x245c */ DWORD unknown00245c;
-/* 0x2460 */ DWORD unknown002460;
-/* 0x2464 */ DWORD unknown002464;
-/* 0x2468 */ DWORD unknown002468;
-/* 0x246c */ DWORD unknown00246c;
-/* 0x2470 */ DWORD unknown002470;
-/* 0x2474 */ DWORD unknown002474;
-/* 0x2478 */ DWORD unknown002478;
-/* 0x247c */ DWORD unknown00247c;
-/* 0x2480 */ DWORD unknown002480;
-/* 0x2484 */ DWORD unknown002484;
-/* 0x2488 */ DWORD unknown002488;
-/* 0x248c */ DWORD unknown00248c;
-/* 0x2490 */ DWORD unknown002490;
-/* 0x2494 */ DWORD unknown002494;
-/* 0x2498 */ DWORD unknown002498;
-/* 0x249c */ DWORD unknown00249c;
-/* 0x24a0 */ DWORD unknown0024a0;
-/* 0x24a4 */ DWORD unknown0024a4;
-/* 0x24a8 */ DWORD unknown0024a8;
-/* 0x24ac */ DWORD unknown0024ac;
-/* 0x24b0 */ DWORD unknown0024b0;
-/* 0x24b4 */ DWORD unknown0024b4;
-/* 0x24b8 */ DWORD unknown0024b8;
-/* 0x24bc */ DWORD unknown0024bc;
-/* 0x24c0 */ DWORD unknown0024c0;
-/* 0x24c4 */ DWORD unknown0024c4;
-/* 0x24c8 */ DWORD unknown0024c8;
-/* 0x24cc */ DWORD unknown0024cc;
-/* 0x24d0 */ DWORD unknown0024d0;
-/* 0x24d4 */ DWORD unknown0024d4;
-/* 0x24d8 */ DWORD unknown0024d8;
-/* 0x24dc */ DWORD unknown0024dc;
-/* 0x24e0 */ DWORD unknown0024e0;
-/* 0x24e4 */ DWORD unknown0024e4;
-/* 0x24e8 */ DWORD unknown0024e8;
-/* 0x24ec */ DWORD unknown0024ec;
-/* 0x24f0 */ DWORD unknown0024f0;
-/* 0x24f4 */ DWORD unknown0024f4;
-/* 0x24f8 */ DWORD unknown0024f8;
-/* 0x24fc */ DWORD unknown0024fc;
-/* 0x2500 */ DWORD unknown002500;
-/* 0x2504 */ DWORD unknown002504;
-/* 0x2508 */ DWORD unknown002508;
-/* 0x250c */ DWORD unknown00250c;
-/* 0x2510 */ DWORD unknown002510;
-/* 0x2514 */ DWORD unknown002514;
-/* 0x2518 */ DWORD unknown002518;
-/* 0x251c */ DWORD unknown00251c;
-/* 0x2520 */ DWORD unknown002520;
-/* 0x2524 */ DWORD unknown002524;
-/* 0x2528 */ DWORD unknown002528;
-/* 0x252c */ DWORD unknown00252c;
-/* 0x2530 */ DWORD unknown002530;
-/* 0x2534 */ DWORD unknown002534;
-/* 0x2538 */ DWORD unknown002538;
-/* 0x253c */ DWORD unknown00253c;
-/* 0x2540 */ DWORD unknown002540;
-/* 0x2544 */ DWORD unknown002544;
-/* 0x2548 */ DWORD unknown002548;
-/* 0x254c */ DWORD unknown00254c;
-/* 0x2550 */ DWORD unknown002550;
-/* 0x2554 */ DWORD unknown002554;
-/* 0x2558 */ DWORD unknown002558;
-/* 0x255c */ DWORD unknown00255c;
-/* 0x2560 */ DWORD unknown002560;
-/* 0x2564 */ DWORD unknown002564;
-/* 0x2568 */ DWORD unknown002568;
-/* 0x256c */ DWORD unknown00256c;
-/* 0x2570 */ DWORD unknown002570;
-/* 0x2574 */ DWORD unknown002574;
-/* 0x2578 */ DWORD unknown002578;
-/* 0x257c */ DWORD unknown00257c;
-/* 0x2580 */ DWORD unknown002580;
-/* 0x2584 */ DWORD unknown002584;
-/* 0x2588 */ DWORD unknown002588;
-/* 0x258c */ DWORD unknown00258c;
-/* 0x2590 */ DWORD unknown002590;
-/* 0x2594 */ DWORD unknown002594;
-/* 0x2598 */ DWORD unknown002598;
-/* 0x259c */ DWORD unknown00259c;
-/* 0x25a0 */ DWORD unknown0025a0;
-/* 0x25a4 */ DWORD unknown0025a4;
-/* 0x25a8 */ DWORD unknown0025a8;
-/* 0x25ac */ DWORD unknown0025ac;
-/* 0x25b0 */ DWORD unknown0025b0;
-/* 0x25b4 */ DWORD unknown0025b4;
-/* 0x25b8 */ DWORD unknown0025b8;
-/* 0x25bc */ DWORD unknown0025bc;
-/* 0x25c0 */ DWORD unknown0025c0;
-/* 0x25c4 */ DWORD unknown0025c4;
-/* 0x25c8 */ DWORD unknown0025c8;
-/* 0x25cc */ DWORD unknown0025cc;
-/* 0x25d0 */ DWORD unknown0025d0;
-/* 0x25d4 */ DWORD unknown0025d4;
-/* 0x25d8 */ DWORD unknown0025d8;
-/* 0x25dc */ DWORD unknown0025dc;
-/* 0x25e0 */ DWORD unknown0025e0;
-/* 0x25e4 */ DWORD unknown0025e4;
-/* 0x25e8 */ DWORD unknown0025e8;
-/* 0x25ec */ DWORD unknown0025ec;
-/* 0x25f0 */ DWORD unknown0025f0;
-/* 0x25f4 */ DWORD unknown0025f4;
-/* 0x25f8 */ DWORD unknown0025f8;
-/* 0x25fc */ DWORD unknown0025fc;
-
-/* 0x2600 */ DWORD unknown002600;
-/* 0x2604 */ DWORD unknown002604;
-/* 0x2608 */ DWORD unknown002608;
-/* 0x260c */ DWORD unknown00260c;
-/* 0x2610 */ DWORD unknown002610;
-/* 0x2614 */ DWORD unknown002614;
-/* 0x2618 */ DWORD unknown002618;
-/* 0x261c */ DWORD unknown00261c;
-/* 0x2620 */ DWORD unknown002620;
-/* 0x2624 */ DWORD unknown002624;
-/* 0x2628 */ DWORD unknown002628;
-/* 0x262c */ DWORD unknown00262c;
-/* 0x2630 */ DWORD unknown002630;
-/* 0x2634 */ DWORD unknown002634;
-/* 0x2638 */ DWORD unknown002638;
-/* 0x263c */ DWORD unknown00263c;
-/* 0x2640 */ DWORD unknown002640;
-/* 0x2644 */ DWORD unknown002644;
-/* 0x2648 */ DWORD unknown002648;
-/* 0x264c */ DWORD unknown00264c;
-/* 0x2650 */ DWORD unknown002650;
-/* 0x2654 */ DWORD unknown002654;
-/* 0x2658 */ DWORD unknown002658;
-/* 0x265c */ DWORD unknown00265c;
-/* 0x2660 */ DWORD unknown002660;
-/* 0x2664 */ DWORD unknown002664;
-/* 0x2668 */ DWORD unknown002668;
-/* 0x266c */ DWORD unknown00266c;
-/* 0x2670 */ DWORD unknown002670;
-/* 0x2674 */ DWORD unknown002674;
-/* 0x2678 */ DWORD unknown002678;
-/* 0x267c */ DWORD unknown00267c;
-/* 0x2680 */ DWORD unknown002680;
-/* 0x2684 */ DWORD unknown002684;
-/* 0x2688 */ DWORD unknown002688;
-/* 0x268c */ DWORD unknown00268c;
-/* 0x2690 */ DWORD unknown002690;
-/* 0x2694 */ DWORD unknown002694;
-/* 0x2698 */ DWORD unknown002698;
-/* 0x269c */ DWORD unknown00269c;
-/* 0x26a0 */ DWORD unknown0026a0;
-/* 0x26a4 */ DWORD unknown0026a4;
-/* 0x26a8 */ DWORD unknown0026a8;
-/* 0x26ac */ DWORD unknown0026ac;
-/* 0x26b0 */ DWORD unknown0026b0;
-/* 0x26b4 */ DWORD unknown0026b4;
-/* 0x26b8 */ DWORD unknown0026b8;
-/* 0x26bc */ DWORD unknown0026bc;
-/* 0x26c0 */ DWORD unknown0026c0;
-/* 0x26c4 */ DWORD unknown0026c4;
-/* 0x26c8 */ DWORD unknown0026c8;
-/* 0x26cc */ DWORD unknown0026cc;
-/* 0x26d0 */ DWORD unknown0026d0;
-/* 0x26d4 */ DWORD unknown0026d4;
-/* 0x26d8 */ DWORD unknown0026d8;
-/* 0x26dc */ DWORD unknown0026dc;
-/* 0x26e0 */ DWORD unknown0026e0;
-/* 0x26e4 */ DWORD unknown0026e4;
-/* 0x26e8 */ DWORD unknown0026e8;
-/* 0x26ec */ DWORD unknown0026ec;
-/* 0x26f0 */ DWORD unknown0026f0;
-/* 0x26f4 */ DWORD unknown0026f4;
-/* 0x26f8 */ DWORD unknown0026f8;
-/* 0x26fc */ DWORD unknown0026fc;
-
-/* 0x2700 */ DWORD unknown002700;
-/* 0x2704 */ DWORD unknown002704;
-/* 0x2708 */ DWORD unknown002708;
-/* 0x270c */ DWORD unknown00270c;
-/* 0x2710 */ DWORD unknown002710;
-/* 0x2714 */ DWORD unknown002714;
-/* 0x2718 */ DWORD unknown002718;
-/* 0x271c */ DWORD unknown00271c;
-/* 0x2720 */ DWORD unknown002720;
-/* 0x2724 */ DWORD unknown002724;
-/* 0x2728 */ DWORD unknown002728;
-/* 0x272c */ DWORD unknown00272c;
-/* 0x2730 */ DWORD unknown002730;
-/* 0x2734 */ DWORD unknown002734;
-/* 0x2738 */ DWORD unknown002738;
-/* 0x273c */ DWORD unknown00273c;
-/* 0x2740 */ DWORD unknown002740;
-/* 0x2744 */ DWORD unknown002744;
-/* 0x2748 */ DWORD unknown002748;
-/* 0x274c */ DWORD unknown00274c;
-/* 0x2750 */ DWORD unknown002750;
-/* 0x2754 */ DWORD unknown002754;
-/* 0x2758 */ DWORD unknown002758;
-/* 0x275c */ DWORD unknown00275c;
-/* 0x2760 */ DWORD unknown002760;
-/* 0x2764 */ DWORD unknown002764;
-/* 0x2768 */ DWORD unknown002768;
-/* 0x276c */ DWORD unknown00276c;
-/* 0x2770 */ DWORD unknown002770;
-/* 0x2774 */ DWORD unknown002774;
-/* 0x2778 */ DWORD unknown002778;
-/* 0x277c */ DWORD unknown00277c;
-/* 0x2780 */ DWORD unknown002780;
-/* 0x2784 */ DWORD unknown002784;
-/* 0x2788 */ DWORD unknown002788;
-/* 0x278c */ DWORD unknown00278c;
-/* 0x2790 */ DWORD unknown002790;
-/* 0x2794 */ DWORD unknown002794;
-/* 0x2798 */ DWORD unknown002798;
-/* 0x279c */ DWORD unknown00279c;
-/* 0x27a0 */ DWORD unknown0027a0;
-/* 0x27a4 */ DWORD unknown0027a4;
-/* 0x27a8 */ DWORD unknown0027a8;
-/* 0x27ac */ DWORD unknown0027ac;
-/* 0x27b0 */ DWORD unknown0027b0;
-/* 0x27b4 */ DWORD unknown0027b4;
-/* 0x27b8 */ DWORD unknown0027b8;
-/* 0x27bc */ DWORD unknown0027bc;
-/* 0x27c0 */ DWORD unknown0027c0;
-/* 0x27c4 */ DWORD unknown0027c4;
-/* 0x27c8 */ DWORD unknown0027c8;
-/* 0x27cc */ DWORD unknown0027cc;
-/* 0x27d0 */ DWORD unknown0027d0;
-/* 0x27d4 */ DWORD unknown0027d4;
-/* 0x27d8 */ DWORD unknown0027d8;
-/* 0x27dc */ DWORD unknown0027dc;
-/* 0x27e0 */ DWORD unknown0027e0;
-/* 0x27e4 */ DWORD unknown0027e4;
-/* 0x27e8 */ DWORD unknown0027e8;
-/* 0x27ec */ DWORD unknown0027ec;
-/* 0x27f0 */ DWORD unknown0027f0;
-/* 0x27f4 */ DWORD unknown0027f4;
-/* 0x27f8 */ DWORD unknown0027f8;
-/* 0x27fc */ DWORD unknown0027fc;
-
-/* 0x2800 */ DWORD unknown002800;
-/* 0x2804 */ DWORD unknown002804;
-/* 0x2808 */ DWORD unknown002808;
-/* 0x280c */ DWORD unknown00280c;
-/* 0x2810 */ DWORD unknown002810;
-/* 0x2814 */ DWORD unknown002814;
-/* 0x2818 */ DWORD unknown002818;
-/* 0x281c */ DWORD unknown00281c;
-/* 0x2820 */ DWORD unknown002820;
-/* 0x2824 */ DWORD unknown002824;
-/* 0x2828 */ DWORD unknown002828;
-/* 0x282c */ DWORD unknown00282c;
-/* 0x2830 */ DWORD unknown002830;
-/* 0x2834 */ DWORD unknown002834;
-/* 0x2838 */ DWORD unknown002838;
-/* 0x283c */ DWORD unknown00283c;
-/* 0x2840 */ DWORD unknown002840;
-/* 0x2844 */ DWORD unknown002844;
-/* 0x2848 */ DWORD unknown002848;
-/* 0x284c */ DWORD unknown00284c;
-/* 0x2850 */ DWORD unknown002850;
-/* 0x2854 */ DWORD unknown002854;
-/* 0x2858 */ DWORD unknown002858;
-/* 0x285c */ DWORD unknown00285c;
-/* 0x2860 */ DWORD unknown002860;
-/* 0x2864 */ DWORD unknown002864;
-/* 0x2868 */ DWORD unknown002868;
-/* 0x286c */ DWORD unknown00286c;
-/* 0x2870 */ DWORD unknown002870;
-/* 0x2874 */ DWORD unknown002874;
-/* 0x2878 */ DWORD unknown002878;
-/* 0x287c */ DWORD unknown00287c;
-/* 0x2880 */ DWORD unknown002880;
-/* 0x2884 */ DWORD unknown002884;
-/* 0x2888 */ DWORD unknown002888;
-/* 0x288c */ DWORD unknown00288c;
-/* 0x2890 */ DWORD unknown002890;
-/* 0x2894 */ DWORD unknown002894;
-/* 0x2898 */ DWORD unknown002898;
-/* 0x289c */ DWORD unknown00289c;
-/* 0x28a0 */ DWORD unknown0028a0;
-/* 0x28a4 */ DWORD unknown0028a4;
-/* 0x28a8 */ DWORD unknown0028a8;
-/* 0x28ac */ DWORD unknown0028ac;
-/* 0x28b0 */ DWORD unknown0028b0;
-/* 0x28b4 */ DWORD unknown0028b4;
-/* 0x28b8 */ DWORD unknown0028b8;
-/* 0x28bc */ DWORD unknown0028bc;
-/* 0x28c0 */ DWORD unknown0028c0;
-/* 0x28c4 */ DWORD unknown0028c4;
-/* 0x28c8 */ DWORD unknown0028c8;
-/* 0x28cc */ DWORD unknown0028cc;
-/* 0x28d0 */ DWORD unknown0028d0;
-/* 0x28d4 */ DWORD unknown0028d4;
-/* 0x28d8 */ DWORD unknown0028d8;
-/* 0x28dc */ DWORD unknown0028dc;
-/* 0x28e0 */ DWORD unknown0028e0;
-/* 0x28e4 */ DWORD unknown0028e4;
-/* 0x28e8 */ DWORD unknown0028e8;
-/* 0x28ec */ DWORD unknown0028ec;
-/* 0x28f0 */ DWORD unknown0028f0;
-/* 0x28f4 */ DWORD unknown0028f4;
-/* 0x28f8 */ DWORD unknown0028f8;
-/* 0x28fc */ DWORD unknown0028fc;
-
-/* 0x2900 */ DWORD unknown002900;
-/* 0x2904 */ DWORD unknown002904;
-/* 0x2908 */ DWORD unknown002908;
-/* 0x290c */ DWORD unknown00290c;
-/* 0x2910 */ DWORD unknown002910;
-/* 0x2914 */ DWORD unknown002914;
-/* 0x2918 */ DWORD unknown002918;
-/* 0x291c */ DWORD unknown00291c;
-/* 0x2920 */ DWORD unknown002920;
-/* 0x2924 */ DWORD unknown002924;
-/* 0x2928 */ DWORD unknown002928;
-/* 0x292c */ DWORD unknown00292c;
-/* 0x2930 */ DWORD unknown002930;
-/* 0x2934 */ DWORD unknown002934;
-/* 0x2938 */ DWORD unknown002938;
-/* 0x293c */ DWORD unknown00293c;
-/* 0x2940 */ DWORD unknown002940;
-/* 0x2944 */ DWORD unknown002944;
-/* 0x2948 */ DWORD unknown002948;
-/* 0x294c */ DWORD unknown00294c;
-/* 0x2950 */ DWORD unknown002950;
-/* 0x2954 */ DWORD unknown002954;
-/* 0x2958 */ DWORD unknown002958;
-/* 0x295c */ DWORD unknown00295c;
-/* 0x2960 */ DWORD unknown002960;
-/* 0x2964 */ DWORD unknown002964;
-/* 0x2968 */ DWORD unknown002968;
-/* 0x296c */ DWORD unknown00296c;
-/* 0x2970 */ DWORD unknown002970;
-/* 0x2974 */ DWORD unknown002974;
-/* 0x2978 */ DWORD unknown002978;
-/* 0x297c */ DWORD unknown00297c;
-/* 0x2980 */ DWORD unknown002980;
-/* 0x2984 */ DWORD unknown002984;
-/* 0x2988 */ DWORD unknown002988;
-/* 0x298c */ DWORD unknown00298c;
-/* 0x2990 */ DWORD unknown002990;
-/* 0x2994 */ DWORD unknown002994;
-/* 0x2998 */ DWORD unknown002998;
-/* 0x299c */ DWORD unknown00299c;
-/* 0x29a0 */ DWORD unknown0029a0;
-/* 0x29a4 */ DWORD unknown0029a4;
-/* 0x29a8 */ DWORD unknown0029a8;
-/* 0x29ac */ DWORD unknown0029ac;
-/* 0x29b0 */ DWORD unknown0029b0;
-/* 0x29b4 */ DWORD unknown0029b4;
-/* 0x29b8 */ DWORD unknown0029b8;
-/* 0x29bc */ DWORD unknown0029bc;
-/* 0x29c0 */ DWORD unknown0029c0;
-/* 0x29c4 */ DWORD unknown0029c4;
-/* 0x29c8 */ DWORD unknown0029c8;
-/* 0x29cc */ DWORD unknown0029cc;
-/* 0x29d0 */ DWORD unknown0029d0;
-/* 0x29d4 */ DWORD unknown0029d4;
-/* 0x29d8 */ DWORD unknown0029d8;
-/* 0x29dc */ DWORD unknown0029dc;
-/* 0x29e0 */ DWORD unknown0029e0;
-/* 0x29e4 */ DWORD unknown0029e4;
-/* 0x29e8 */ DWORD unknown0029e8;
-/* 0x29ec */ DWORD unknown0029ec;
-/* 0x29f0 */ DWORD unknown0029f0;
-/* 0x29f4 */ DWORD unknown0029f4;
-/* 0x29f8 */ DWORD unknown0029f8;
-/* 0x29fc */ DWORD unknown0029fc;
-
-/* 0x2a00 */ DWORD unknown002a00;
-/* 0x2a04 */ DWORD unknown002a04;
-/* 0x2a08 */ DWORD unknown002a08;
-/* 0x2a0c */ DWORD unknown002a0c;
-/* 0x2a10 */ DWORD unknown002a10;
-/* 0x2a14 */ DWORD unknown002a14;
-/* 0x2a18 */ DWORD unknown002a18;
-/* 0x2a1c */ DWORD unknown002a1c;
-/* 0x2a20 */ DWORD unknown002a20;
-/* 0x2a24 */ DWORD unknown002a24;
-/* 0x2a28 */ DWORD unknown002a28;
-/* 0x2a2c */ DWORD unknown002a2c;
-/* 0x2a30 */ DWORD unknown002a30;
-/* 0x2a34 */ DWORD unknown002a34;
-/* 0x2a38 */ DWORD unknown002a38;
-/* 0x2a3c */ DWORD unknown002a3c;
-/* 0x2a40 */ DWORD unknown002a40;
-/* 0x2a44 */ DWORD unknown002a44;
-/* 0x2a48 */ DWORD unknown002a48;
-/* 0x2a4c */ DWORD unknown002a4c;
-/* 0x2a50 */ DWORD unknown002a50;
-/* 0x2a54 */ DWORD unknown002a54;
-/* 0x2a58 */ DWORD unknown002a58;
-/* 0x2a5c */ DWORD unknown002a5c;
-/* 0x2a60 */ DWORD unknown002a60;
-/* 0x2a64 */ DWORD unknown002a64;
-/* 0x2a68 */ DWORD unknown002a68;
-/* 0x2a6c */ DWORD unknown002a6c;
-/* 0x2a70 */ DWORD unknown002a70;
-/* 0x2a74 */ DWORD unknown002a74;
-/* 0x2a78 */ DWORD unknown002a78;
-/* 0x2a7c */ DWORD unknown002a7c;
-/* 0x2a80 */ DWORD unknown002a80;
-/* 0x2a84 */ DWORD unknown002a84;
-/* 0x2a88 */ DWORD unknown002a88;
-/* 0x2a8c */ DWORD unknown002a8c;
-/* 0x2a90 */ DWORD unknown002a90;
-/* 0x2a94 */ DWORD unknown002a94;
-/* 0x2a98 */ DWORD unknown002a98;
-/* 0x2a9c */ DWORD unknown002a9c;
-/* 0x2aa0 */ DWORD unknown002aa0;
-/* 0x2aa4 */ DWORD unknown002aa4;
-/* 0x2aa8 */ DWORD unknown002aa8;
-/* 0x2aac */ DWORD unknown002aac;
-/* 0x2ab0 */ DWORD unknown002ab0;
-/* 0x2ab4 */ DWORD unknown002ab4;
-/* 0x2ab8 */ DWORD unknown002ab8;
-/* 0x2abc */ DWORD unknown002abc;
-/* 0x2ac0 */ DWORD unknown002ac0;
-/* 0x2ac4 */ DWORD unknown002ac4;
-/* 0x2ac8 */ DWORD unknown002ac8;
-/* 0x2acc */ DWORD unknown002acc;
-/* 0x2ad0 */ DWORD unknown002ad0;
-/* 0x2ad4 */ DWORD unknown002ad4;
-/* 0x2ad8 */ DWORD unknown002ad8;
-/* 0x2adc */ DWORD unknown002adc;
-/* 0x2ae0 */ DWORD unknown002ae0;
-/* 0x2ae4 */ DWORD unknown002ae4;
-/* 0x2ae8 */ DWORD unknown002ae8;
-/* 0x2aec */ DWORD unknown002aec;
-/* 0x2af0 */ DWORD unknown002af0;
-/* 0x2af4 */ DWORD unknown002af4;
-/* 0x2af8 */ DWORD unknown002af8;
-/* 0x2afc */ DWORD unknown002afc;
-
-/* 0x2b00 */ DWORD unknown002b00;
-/* 0x2b04 */ DWORD unknown002b04;
-/* 0x2b08 */ DWORD unknown002b08;
-/* 0x2b0c */ DWORD unknown002b0c;
-/* 0x2b10 */ DWORD unknown002b10;
-/* 0x2b14 */ DWORD unknown002b14;
-/* 0x2b18 */ DWORD unknown002b18;
-/* 0x2b1c */ DWORD unknown002b1c;
-/* 0x2b20 */ DWORD unknown002b20;
-/* 0x2b24 */ DWORD unknown002b24;
-/* 0x2b28 */ DWORD unknown002b28;
-/* 0x2b2c */ DWORD unknown002b2c;
-/* 0x2b30 */ DWORD unknown002b30;
-/* 0x2b34 */ DWORD unknown002b34;
-/* 0x2b38 */ DWORD unknown002b38;
-/* 0x2b3c */ DWORD unknown002b3c;
-/* 0x2b40 */ DWORD unknown002b40;
-/* 0x2b44 */ DWORD unknown002b44;
-/* 0x2b48 */ DWORD unknown002b48;
-/* 0x2b4c */ DWORD unknown002b4c;
-/* 0x2b50 */ DWORD unknown002b50;
-/* 0x2b54 */ DWORD unknown002b54;
-/* 0x2b58 */ DWORD unknown002b58;
-/* 0x2b5c */ DWORD unknown002b5c;
-/* 0x2b60 */ DWORD unknown002b60;
-/* 0x2b64 */ DWORD unknown002b64;
-/* 0x2b68 */ DWORD unknown002b68;
-/* 0x2b6c */ DWORD unknown002b6c;
-/* 0x2b70 */ DWORD unknown002b70;
-/* 0x2b74 */ DWORD unknown002b74;
-/* 0x2b78 */ DWORD unknown002b78;
-/* 0x2b7c */ DWORD unknown002b7c;
-/* 0x2b80 */ DWORD unknown002b80;
-/* 0x2b84 */ DWORD unknown002b84;
-/* 0x2b88 */ DWORD unknown002b88;
-/* 0x2b8c */ DWORD unknown002b8c;
-/* 0x2b90 */ DWORD unknown002b90;
-/* 0x2b94 */ DWORD unknown002b94;
-/* 0x2b98 */ DWORD unknown002b98;
-/* 0x2b9c */ DWORD unknown002b9c;
-/* 0x2ba0 */ DWORD unknown002ba0;
-/* 0x2ba4 */ DWORD unknown002ba4;
-/* 0x2ba8 */ DWORD unknown002ba8;
-/* 0x2bac */ DWORD unknown002bac;
-/* 0x2bb0 */ DWORD unknown002bb0;
-/* 0x2bb4 */ DWORD unknown002bb4;
-/* 0x2bb8 */ DWORD unknown002bb8;
-/* 0x2bbc */ DWORD unknown002bbc;
-/* 0x2bc0 */ DWORD unknown002bc0;
-/* 0x2bc4 */ DWORD unknown002bc4;
-/* 0x2bc8 */ DWORD unknown002bc8;
-/* 0x2bcc */ DWORD unknown002bcc;
-/* 0x2bd0 */ DWORD unknown002bd0;
-/* 0x2bd4 */ DWORD unknown002bd4;
-/* 0x2bd8 */ DWORD unknown002bd8;
-/* 0x2bdc */ DWORD unknown002bdc;
-/* 0x2be0 */ DWORD unknown002be0;
-/* 0x2be4 */ DWORD unknown002be4;
-/* 0x2be8 */ DWORD unknown002be8;
-/* 0x2bec */ DWORD unknown002bec;
-/* 0x2bf0 */ DWORD unknown002bf0;
-/* 0x2bf4 */ DWORD unknown002bf4;
-/* 0x2bf8 */ DWORD unknown002bf8;
-/* 0x2bfc */ DWORD unknown002bfc;
-
-/* 0x2c00 */ DWORD unknown002c00;
-/* 0x2c04 */ DWORD unknown002c04;
-/* 0x2c08 */ DWORD unknown002c08;
-/* 0x2c0c */ DWORD unknown002c0c;
-/* 0x2c10 */ DWORD unknown002c10;
-/* 0x2c14 */ DWORD unknown002c14;
-/* 0x2c18 */ DWORD unknown002c18;
-/* 0x2c1c */ DWORD unknown002c1c;
-/* 0x2c20 */ DWORD unknown002c20;
-/* 0x2c24 */ DWORD unknown002c24;
-/* 0x2c28 */ DWORD unknown002c28;
-/* 0x2c2c */ DWORD unknown002c2c;
-/* 0x2c30 */ DWORD unknown002c30;
-/* 0x2c34 */ DWORD unknown002c34;
-/* 0x2c38 */ DWORD unknown002c38;
-/* 0x2c3c */ DWORD unknown002c3c;
-/* 0x2c40 */ DWORD unknown002c40;
-/* 0x2c44 */ DWORD unknown002c44;
-/* 0x2c48 */ DWORD unknown002c48;
-/* 0x2c4c */ DWORD unknown002c4c;
-/* 0x2c50 */ DWORD unknown002c50;
-/* 0x2c54 */ DWORD unknown002c54;
-/* 0x2c58 */ DWORD unknown002c58;
-/* 0x2c5c */ DWORD unknown002c5c;
-/* 0x2c60 */ DWORD unknown002c60;
-/* 0x2c64 */ DWORD unknown002c64;
-/* 0x2c68 */ DWORD unknown002c68;
-/* 0x2c6c */ DWORD unknown002c6c;
-/* 0x2c70 */ DWORD unknown002c70;
-/* 0x2c74 */ DWORD unknown002c74;
-/* 0x2c78 */ DWORD unknown002c78;
-/* 0x2c7c */ DWORD unknown002c7c;
-/* 0x2c80 */ DWORD unknown002c80;
-/* 0x2c84 */ DWORD unknown002c84;
-/* 0x2c88 */ DWORD unknown002c88;
-/* 0x2c8c */ DWORD unknown002c8c;
-/* 0x2c90 */ DWORD unknown002c90;
-/* 0x2c94 */ DWORD unknown002c94;
-/* 0x2c98 */ DWORD unknown002c98;
-/* 0x2c9c */ DWORD unknown002c9c;
-/* 0x2ca0 */ DWORD unknown002ca0;
-/* 0x2ca4 */ DWORD unknown002ca4;
-/* 0x2ca8 */ DWORD unknown002ca8;
-/* 0x2cac */ DWORD unknown002cac;
-/* 0x2cb0 */ DWORD unknown002cb0;
-/* 0x2cb4 */ DWORD unknown002cb4;
-/* 0x2cb8 */ DWORD unknown002cb8;
-/* 0x2cbc */ DWORD unknown002cbc;
-/* 0x2cc0 */ DWORD unknown002cc0;
-/* 0x2cc4 */ DWORD unknown002cc4;
-/* 0x2cc8 */ DWORD unknown002cc8;
-/* 0x2ccc */ DWORD unknown002ccc;
-/* 0x2cd0 */ DWORD unknown002cd0;
-/* 0x2cd4 */ DWORD unknown002cd4;
-/* 0x2cd8 */ DWORD unknown002cd8;
-/* 0x2cdc */ DWORD unknown002cdc;
-/* 0x2ce0 */ DWORD unknown002ce0;
-/* 0x2ce4 */ DWORD unknown002ce4;
-/* 0x2ce8 */ DWORD unknown002ce8;
-/* 0x2cec */ DWORD unknown002cec;
-/* 0x2cf0 */ DWORD unknown002cf0;
-/* 0x2cf4 */ DWORD unknown002cf4;
-/* 0x2cf8 */ DWORD unknown002cf8;
-/* 0x2cfc */ DWORD unknown002cfc;
-
-/* 0x2d00 */ DWORD unknown002d00;
-/* 0x2d04 */ DWORD unknown002d04;
-/* 0x2d08 */ DWORD unknown002d08;
-/* 0x2d0c */ DWORD unknown002d0c;
-/* 0x2d10 */ DWORD unknown002d10;
-/* 0x2d14 */ DWORD unknown002d14;
-/* 0x2d18 */ DWORD unknown002d18;
-/* 0x2d1c */ DWORD unknown002d1c;
-/* 0x2d20 */ DWORD unknown002d20;
-/* 0x2d24 */ DWORD unknown002d24;
-/* 0x2d28 */ DWORD unknown002d28;
-/* 0x2d2c */ DWORD unknown002d2c;
-/* 0x2d30 */ DWORD unknown002d30;
-/* 0x2d34 */ DWORD unknown002d34;
-/* 0x2d38 */ DWORD unknown002d38;
-/* 0x2d3c */ DWORD unknown002d3c;
-/* 0x2d40 */ DWORD unknown002d40;
-/* 0x2d44 */ DWORD unknown002d44;
-/* 0x2d48 */ DWORD unknown002d48;
-/* 0x2d4c */ DWORD unknown002d4c;
-/* 0x2d50 */ DWORD unknown002d50;
-/* 0x2d54 */ DWORD unknown002d54;
-/* 0x2d58 */ DWORD unknown002d58;
-/* 0x2d5c */ DWORD unknown002d5c;
-/* 0x2d60 */ DWORD unknown002d60;
-/* 0x2d64 */ DWORD unknown002d64;
-/* 0x2d68 */ DWORD unknown002d68;
-/* 0x2d6c */ DWORD unknown002d6c;
-/* 0x2d70 */ DWORD unknown002d70;
-/* 0x2d74 */ DWORD unknown002d74;
-/* 0x2d78 */ DWORD unknown002d78;
-/* 0x2d7c */ DWORD unknown002d7c;
-/* 0x2d80 */ DWORD unknown002d80;
-/* 0x2d84 */ DWORD unknown002d84;
-/* 0x2d88 */ DWORD unknown002d88;
-/* 0x2d8c */ DWORD unknown002d8c;
-/* 0x2d90 */ DWORD unknown002d90;
-/* 0x2d94 */ DWORD unknown002d94;
-/* 0x2d98 */ DWORD unknown002d98;
-/* 0x2d9c */ DWORD unknown002d9c;
-/* 0x2da0 */ DWORD unknown002da0;
-/* 0x2da4 */ DWORD unknown002da4;
-/* 0x2da8 */ DWORD unknown002da8;
-/* 0x2dac */ DWORD unknown002dac;
-/* 0x2db0 */ DWORD unknown002db0;
-/* 0x2db4 */ DWORD unknown002db4;
-/* 0x2db8 */ DWORD unknown002db8;
-/* 0x2dbc */ DWORD unknown002dbc;
-/* 0x2dc0 */ DWORD unknown002dc0;
-/* 0x2dc4 */ DWORD unknown002dc4;
-/* 0x2dc8 */ DWORD unknown002dc8;
-/* 0x2dcc */ DWORD unknown002dcc;
-/* 0x2dd0 */ DWORD unknown002dd0;
-/* 0x2dd4 */ DWORD unknown002dd4;
-/* 0x2dd8 */ DWORD unknown002dd8;
-/* 0x2ddc */ DWORD unknown002ddc;
-/* 0x2de0 */ DWORD unknown002de0;
-/* 0x2de4 */ DWORD unknown002de4;
-/* 0x2de8 */ DWORD unknown002de8;
-/* 0x2dec */ DWORD unknown002dec;
-/* 0x2df0 */ DWORD unknown002df0;
-/* 0x2df4 */ DWORD unknown002df4;
-/* 0x2df8 */ DWORD unknown002df8;
-/* 0x2dfc */ DWORD unknown002dfc;
-
-/* 0x2e00 */ DWORD unknown002e00;
-/* 0x2e04 */ DWORD unknown002e04;
-/* 0x2e08 */ DWORD unknown002e08;
-/* 0x2e0c */ DWORD unknown002e0c;
-/* 0x2e10 */ DWORD unknown002e10;
-/* 0x2e14 */ DWORD unknown002e14;
-/* 0x2e18 */ DWORD unknown002e18;
-/* 0x2e1c */ DWORD unknown002e1c;
-/* 0x2e20 */ DWORD unknown002e20;
-/* 0x2e24 */ DWORD unknown002e24;
-/* 0x2e28 */ DWORD unknown002e28;
-/* 0x2e2c */ DWORD unknown002e2c;
-/* 0x2e30 */ DWORD unknown002e30;
-/* 0x2e34 */ DWORD unknown002e34;
-/* 0x2e38 */ DWORD unknown002e38;
-/* 0x2e3c */ DWORD unknown002e3c;
-/* 0x2e40 */ DWORD unknown002e40;
-/* 0x2e44 */ DWORD unknown002e44;
-/* 0x2e48 */ DWORD unknown002e48;
-/* 0x2e4c */ DWORD unknown002e4c;
-/* 0x2e50 */ DWORD unknown002e50;
-/* 0x2e54 */ DWORD unknown002e54;
-/* 0x2e58 */ DWORD unknown002e58;
-/* 0x2e5c */ DWORD unknown002e5c;
-/* 0x2e60 */ DWORD unknown002e60;
-/* 0x2e64 */ DWORD unknown002e64;
-/* 0x2e68 */ DWORD unknown002e68;
-/* 0x2e6c */ DWORD unknown002e6c;
-/* 0x2e70 */ DWORD unknown002e70;
-/* 0x2e74 */ DWORD unknown002e74;
-/* 0x2e78 */ DWORD unknown002e78;
-/* 0x2e7c */ DWORD unknown002e7c;
-/* 0x2e80 */ DWORD unknown002e80;
-/* 0x2e84 */ DWORD unknown002e84;
-/* 0x2e88 */ DWORD unknown002e88;
-/* 0x2e8c */ DWORD unknown002e8c;
-/* 0x2e90 */ DWORD unknown002e90;
-/* 0x2e94 */ DWORD unknown002e94;
-/* 0x2e98 */ DWORD unknown002e98;
-/* 0x2e9c */ DWORD unknown002e9c;
-/* 0x2ea0 */ DWORD unknown002ea0;
-/* 0x2ea4 */ DWORD unknown002ea4;
-/* 0x2ea8 */ DWORD unknown002ea8;
-/* 0x2eac */ DWORD unknown002eac;
-/* 0x2eb0 */ DWORD unknown002eb0;
-/* 0x2eb4 */ DWORD unknown002eb4;
-/* 0x2eb8 */ DWORD unknown002eb8;
-/* 0x2ebc */ DWORD unknown002ebc;
-/* 0x2ec0 */ DWORD unknown002ec0;
-/* 0x2ec4 */ DWORD unknown002ec4;
-/* 0x2ec8 */ DWORD unknown002ec8;
-/* 0x2ecc */ DWORD unknown002ecc;
-/* 0x2ed0 */ DWORD unknown002ed0;
-/* 0x2ed4 */ DWORD unknown002ed4;
-/* 0x2ed8 */ DWORD unknown002ed8;
-/* 0x2edc */ DWORD unknown002edc;
-/* 0x2ee0 */ DWORD unknown002ee0;
-/* 0x2ee4 */ DWORD unknown002ee4;
-/* 0x2ee8 */ DWORD unknown002ee8;
-/* 0x2eec */ DWORD unknown002eec;
-/* 0x2ef0 */ DWORD unknown002ef0;
-/* 0x2ef4 */ DWORD unknown002ef4;
-/* 0x2ef8 */ DWORD unknown002ef8;
-/* 0x2efc */ DWORD unknown002efc;
-
-/* 0x2f00 */ DWORD unknown002f00;
-/* 0x2f04 */ DWORD unknown002f04;
-/* 0x2f08 */ DWORD unknown002f08;
-/* 0x2f0c */ DWORD unknown002f0c;
-/* 0x2f10 */ DWORD unknown002f10;
-/* 0x2f14 */ DWORD unknown002f14;
-/* 0x2f18 */ DWORD unknown002f18;
-/* 0x2f1c */ DWORD unknown002f1c;
-/* 0x2f20 */ DWORD unknown002f20;
-/* 0x2f24 */ DWORD unknown002f24;
-/* 0x2f28 */ DWORD unknown002f28;
-/* 0x2f2c */ DWORD unknown002f2c;
-/* 0x2f30 */ DWORD unknown002f30;
-/* 0x2f34 */ DWORD unknown002f34;
-/* 0x2f38 */ DWORD unknown002f38;
-/* 0x2f3c */ DWORD unknown002f3c;
-/* 0x2f40 */ DWORD unknown002f40;
-/* 0x2f44 */ DWORD unknown002f44;
-/* 0x2f48 */ DWORD unknown002f48;
-/* 0x2f4c */ DWORD unknown002f4c;
-/* 0x2f50 */ DWORD unknown002f50;
-/* 0x2f54 */ DWORD unknown002f54;
-/* 0x2f58 */ DWORD unknown002f58;
-/* 0x2f5c */ DWORD unknown002f5c;
-/* 0x2f60 */ DWORD unknown002f60;
-/* 0x2f64 */ DWORD unknown002f64;
-/* 0x2f68 */ DWORD unknown002f68;
-/* 0x2f6c */ DWORD unknown002f6c;
-/* 0x2f70 */ DWORD unknown002f70;
-/* 0x2f74 */ DWORD unknown002f74;
-/* 0x2f78 */ DWORD unknown002f78;
-/* 0x2f7c */ DWORD unknown002f7c;
-/* 0x2f80 */ DWORD unknown002f80;
-/* 0x2f84 */ DWORD unknown002f84;
-/* 0x2f88 */ DWORD unknown002f88;
-/* 0x2f8c */ DWORD unknown002f8c;
-/* 0x2f90 */ DWORD unknown002f90;
-/* 0x2f94 */ DWORD unknown002f94;
-/* 0x2f98 */ DWORD unknown002f98;
-/* 0x2f9c */ DWORD unknown002f9c;
-/* 0x2fa0 */ DWORD unknown002fa0;
-/* 0x2fa4 */ DWORD unknown002fa4;
-/* 0x2fa8 */ DWORD unknown002fa8;
-/* 0x2fac */ DWORD unknown002fac;
-/* 0x2fb0 */ DWORD unknown002fb0;
-/* 0x2fb4 */ DWORD unknown002fb4;
-/* 0x2fb8 */ DWORD unknown002fb8;
-/* 0x2fbc */ DWORD unknown002fbc;
-/* 0x2fc0 */ DWORD unknown002fc0;
-/* 0x2fc4 */ DWORD unknown002fc4;
-/* 0x2fc8 */ DWORD unknown002fc8;
-/* 0x2fcc */ DWORD unknown002fcc;
-/* 0x2fd0 */ DWORD unknown002fd0;
-/* 0x2fd4 */ DWORD unknown002fd4;
-/* 0x2fd8 */ DWORD unknown002fd8;
-/* 0x2fdc */ DWORD unknown002fdc;
-/* 0x2fe0 */ DWORD unknown002fe0;
-/* 0x2fe4 */ DWORD unknown002fe4;
-/* 0x2fe8 */ DWORD unknown002fe8;
-/* 0x2fec */ DWORD unknown002fec;
-/* 0x2ff0 */ DWORD unknown002ff0;
-/* 0x2ff4 */ DWORD unknown002ff4;
-/* 0x2ff8 */ DWORD unknown002ff8;
-/* 0x2ffc */ DWORD unknown002ffc;
-
-/* 0x3000 */ DWORD unknown003000;
-/* 0x3004 */ DWORD unknown003004;
-/* 0x3008 */ DWORD unknown003008;
-/* 0x300c */ DWORD unknown00300c;
-/* 0x3010 */ DWORD unknown003010;
-/* 0x3014 */ DWORD unknown003014;
-/* 0x3018 */ DWORD unknown003018;
-/* 0x301c */ DWORD unknown00301c;
-/* 0x3020 */ DWORD unknown003020;
-/* 0x3024 */ DWORD unknown003024;
-/* 0x3028 */ DWORD unknown003028;
-/* 0x302c */ DWORD unknown00302c;
-/* 0x3030 */ DWORD unknown003030;
-/* 0x3034 */ DWORD unknown003034;
-/* 0x3038 */ DWORD unknown003038;
-/* 0x303c */ DWORD unknown00303c;
-/* 0x3040 */ DWORD unknown003040;
-/* 0x3044 */ DWORD unknown003044;
-/* 0x3048 */ DWORD unknown003048;
-/* 0x304c */ DWORD unknown00304c;
-/* 0x3050 */ DWORD unknown003050;
-/* 0x3054 */ DWORD unknown003054;
-/* 0x3058 */ DWORD unknown003058;
-/* 0x305c */ DWORD unknown00305c;
-/* 0x3060 */ DWORD unknown003060;
-/* 0x3064 */ DWORD unknown003064;
-/* 0x3068 */ DWORD unknown003068;
-/* 0x306c */ DWORD unknown00306c;
-/* 0x3070 */ DWORD unknown003070;
-/* 0x3074 */ DWORD unknown003074;
-/* 0x3078 */ DWORD unknown003078;
-/* 0x307c */ DWORD unknown00307c;
-/* 0x3080 */ DWORD unknown003080;
-/* 0x3084 */ DWORD unknown003084;
-/* 0x3088 */ DWORD unknown003088;
-/* 0x308c */ DWORD unknown00308c;
-/* 0x3090 */ DWORD unknown003090;
-/* 0x3094 */ DWORD unknown003094;
-/* 0x3098 */ DWORD unknown003098;
-/* 0x309c */ DWORD unknown00309c;
-/* 0x30a0 */ DWORD unknown0030a0;
-/* 0x30a4 */ DWORD unknown0030a4;
-/* 0x30a8 */ DWORD unknown0030a8;
-/* 0x30ac */ DWORD unknown0030ac;
-/* 0x30b0 */ DWORD unknown0030b0;
-/* 0x30b4 */ DWORD unknown0030b4;
-/* 0x30b8 */ DWORD unknown0030b8;
-/* 0x30bc */ DWORD unknown0030bc;
-/* 0x30c0 */ DWORD unknown0030c0;
-/* 0x30c4 */ DWORD unknown0030c4;
-/* 0x30c8 */ DWORD unknown0030c8;
-/* 0x30cc */ DWORD unknown0030cc;
-/* 0x30d0 */ DWORD unknown0030d0;
-/* 0x30d4 */ DWORD unknown0030d4;
-/* 0x30d8 */ DWORD unknown0030d8;
-/* 0x30dc */ DWORD unknown0030dc;
-/* 0x30e0 */ DWORD unknown0030e0;
-/* 0x30e4 */ DWORD unknown0030e4;
-/* 0x30e8 */ DWORD unknown0030e8;
-/* 0x30ec */ DWORD unknown0030ec;
-/* 0x30f0 */ DWORD unknown0030f0;
-/* 0x30f4 */ DWORD unknown0030f4;
-/* 0x30f8 */ DWORD unknown0030f8;
-/* 0x30fc */ DWORD unknown0030fc;
-
-/* 0x3100 */ DWORD unknown003100;
-/* 0x3104 */ DWORD unknown003104;
-/* 0x3108 */ DWORD unknown003108;
-/* 0x310c */ DWORD unknown00310c;
-/* 0x3110 */ DWORD unknown003110;
-/* 0x3114 */ DWORD unknown003114;
-/* 0x3118 */ DWORD unknown003118;
-/* 0x311c */ DWORD unknown00311c;
-/* 0x3120 */ DWORD unknown003120;
-/* 0x3124 */ DWORD unknown003124;
-/* 0x3128 */ DWORD unknown003128;
-/* 0x312c */ DWORD unknown00312c;
-/* 0x3130 */ DWORD unknown003130;
-/* 0x3134 */ DWORD unknown003134;
-/* 0x3138 */ DWORD unknown003138;
-/* 0x313c */ DWORD unknown00313c;
-/* 0x3140 */ DWORD unknown003140;
-/* 0x3144 */ DWORD unknown003144;
-/* 0x3148 */ DWORD unknown003148;
-/* 0x314c */ DWORD unknown00314c;
-/* 0x3150 */ DWORD unknown003150;
-/* 0x3154 */ DWORD unknown003154;
-/* 0x3158 */ DWORD unknown003158;
-/* 0x315c */ DWORD unknown00315c;
-/* 0x3160 */ DWORD unknown003160;
-/* 0x3164 */ DWORD unknown003164;
-/* 0x3168 */ DWORD unknown003168;
-/* 0x316c */ DWORD unknown00316c;
-/* 0x3170 */ DWORD unknown003170;
-/* 0x3174 */ DWORD unknown003174;
-/* 0x3178 */ DWORD unknown003178;
-/* 0x317c */ DWORD unknown00317c;
-/* 0x3180 */ DWORD unknown003180;
-/* 0x3184 */ DWORD unknown003184;
-/* 0x3188 */ DWORD unknown003188;
-/* 0x318c */ DWORD unknown00318c;
-/* 0x3190 */ DWORD unknown003190;
-/* 0x3194 */ DWORD unknown003194;
-/* 0x3198 */ DWORD unknown003198;
-/* 0x319c */ DWORD unknown00319c;
-/* 0x31a0 */ DWORD unknown0031a0;
-/* 0x31a4 */ DWORD unknown0031a4;
-/* 0x31a8 */ DWORD unknown0031a8;
-/* 0x31ac */ DWORD unknown0031ac;
-/* 0x31b0 */ DWORD unknown0031b0;
-/* 0x31b4 */ DWORD unknown0031b4;
-/* 0x31b8 */ DWORD unknown0031b8;
-/* 0x31bc */ DWORD unknown0031bc;
-/* 0x31c0 */ DWORD unknown0031c0;
-/* 0x31c4 */ DWORD unknown0031c4;
-/* 0x31c8 */ DWORD unknown0031c8;
-/* 0x31cc */ DWORD unknown0031cc;
-/* 0x31d0 */ DWORD unknown0031d0;
-/* 0x31d4 */ DWORD unknown0031d4;
-/* 0x31d8 */ DWORD unknown0031d8;
-/* 0x31dc */ DWORD unknown0031dc;
-/* 0x31e0 */ DWORD unknown0031e0;
-/* 0x31e4 */ DWORD unknown0031e4;
-/* 0x31e8 */ DWORD unknown0031e8;
-/* 0x31ec */ DWORD unknown0031ec;
-/* 0x31f0 */ DWORD unknown0031f0;
-/* 0x31f4 */ DWORD unknown0031f4;
-/* 0x31f8 */ DWORD unknown0031f8;
-/* 0x31fc */ DWORD unknown0031fc;
-
-/* 0x3200 */ DWORD unknown003200;
-/* 0x3204 */ DWORD unknown003204;
-/* 0x3208 */ DWORD unknown003208;
-/* 0x320c */ DWORD unknown00320c;
-/* 0x3210 */ DWORD unknown003210;
-/* 0x3214 */ DWORD unknown003214;
-/* 0x3218 */ DWORD unknown003218;
-/* 0x321c */ DWORD unknown00321c;
-/* 0x3220 */ DWORD unknown003220;
-/* 0x3224 */ DWORD unknown003224;
-/* 0x3228 */ DWORD unknown003228;
-/* 0x322c */ DWORD unknown00322c;
-/* 0x3230 */ DWORD unknown003230;
-/* 0x3234 */ DWORD unknown003234;
-/* 0x3238 */ DWORD unknown003238;
-/* 0x323c */ DWORD unknown00323c;
-/* 0x3240 */ DWORD unknown003240;
-/* 0x3244 */ DWORD unknown003244;
-/* 0x3248 */ DWORD unknown003248;
-/* 0x324c */ DWORD unknown00324c;
-/* 0x3250 */ DWORD unknown003250;
-/* 0x3254 */ DWORD unknown003254;
-/* 0x3258 */ DWORD unknown003258;
-/* 0x325c */ DWORD unknown00325c;
-/* 0x3260 */ DWORD unknown003260;
-/* 0x3264 */ DWORD unknown003264;
-/* 0x3268 */ DWORD unknown003268;
-/* 0x326c */ DWORD unknown00326c;
-/* 0x3270 */ DWORD unknown003270;
-/* 0x3274 */ DWORD unknown003274;
-/* 0x3278 */ DWORD unknown003278;
-/* 0x327c */ DWORD unknown00327c;
-/* 0x3280 */ DWORD unknown003280;
-/* 0x3284 */ DWORD unknown003284;
-/* 0x3288 */ DWORD unknown003288;
-/* 0x328c */ DWORD unknown00328c;
-/* 0x3290 */ DWORD unknown003290;
-/* 0x3294 */ DWORD unknown003294;
-/* 0x3298 */ DWORD unknown003298;
-/* 0x329c */ DWORD unknown00329c;
-/* 0x32a0 */ DWORD unknown0032a0;
-/* 0x32a4 */ DWORD unknown0032a4;
-/* 0x32a8 */ DWORD unknown0032a8;
-/* 0x32ac */ DWORD unknown0032ac;
-/* 0x32b0 */ DWORD unknown0032b0;
-/* 0x32b4 */ DWORD unknown0032b4;
-/* 0x32b8 */ DWORD unknown0032b8;
-/* 0x32bc */ DWORD unknown0032bc;
-/* 0x32c0 */ DWORD unknown0032c0;
-/* 0x32c4 */ DWORD unknown0032c4;
-/* 0x32c8 */ DWORD unknown0032c8;
-/* 0x32cc */ DWORD unknown0032cc;
-/* 0x32d0 */ DWORD unknown0032d0;
-/* 0x32d4 */ DWORD unknown0032d4;
-/* 0x32d8 */ DWORD unknown0032d8;
-/* 0x32dc */ DWORD unknown0032dc;
-/* 0x32e0 */ DWORD unknown0032e0;
-/* 0x32e4 */ DWORD unknown0032e4;
-/* 0x32e8 */ DWORD unknown0032e8;
-/* 0x32ec */ DWORD unknown0032ec;
-/* 0x32f0 */ DWORD unknown0032f0;
-/* 0x32f4 */ DWORD unknown0032f4;
-/* 0x32f8 */ DWORD unknown0032f8;
-/* 0x32fc */ DWORD unknown0032fc;
-
-/* 0x3300 */ DWORD unknown003300;
-/* 0x3304 */ DWORD unknown003304;
-/* 0x3308 */ DWORD unknown003308;
-/* 0x330c */ DWORD unknown00330c;
-/* 0x3310 */ DWORD unknown003310;
-/* 0x3314 */ DWORD unknown003314;
-/* 0x3318 */ DWORD unknown003318;
-/* 0x331c */ DWORD unknown00331c;
-/* 0x3320 */ DWORD unknown003320;
-/* 0x3324 */ DWORD unknown003324;
-/* 0x3328 */ DWORD unknown003328;
-/* 0x332c */ DWORD unknown00332c;
-} D3D9HALDEVICE, FAR *LPD3D9HALDEVICE;
+/* IDirect3D9Device public interface */
+HRESULT WINAPI IDirect3DDevice9Base_TestCooperativeLevel(LPDIRECT3DDEVICE9 iface);
+UINT WINAPI IDirect3DDevice9Base_GetAvailableTextureMem(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Base_EvictManagedResources(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Base_GetDirect3D(LPDIRECT3DDEVICE9 iface, IDirect3D9** ppD3D9);
+HRESULT WINAPI IDirect3DDevice9Base_GetDeviceCaps(LPDIRECT3DDEVICE9 iface, D3DCAPS9* pCaps);
+HRESULT WINAPI IDirect3DDevice9Base_GetDisplayMode(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DDISPLAYMODE* pMode);
+HRESULT WINAPI IDirect3DDevice9Base_GetCreationParameters(LPDIRECT3DDEVICE9 iface, D3DDEVICE_CREATION_PARAMETERS* pParameters);
+HRESULT WINAPI IDirect3DDevice9Base_SetCursorProperties(LPDIRECT3DDEVICE9 iface, UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap);
+VOID WINAPI IDirect3DDevice9Base_SetCursorPosition(LPDIRECT3DDEVICE9 iface, int X, int Y, DWORD Flags);
+BOOL WINAPI IDirect3DDevice9Base_ShowCursor(LPDIRECT3DDEVICE9 iface, BOOL bShow);
+HRESULT WINAPI IDirect3DDevice9Base_CreateAdditionalSwapChain(LPDIRECT3DDEVICE9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** ppSwapChain);
+HRESULT WINAPI IDirect3DDevice9Base_GetSwapChain(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, IDirect3DSwapChain9** ppSwapChain);
+UINT WINAPI IDirect3DDevice9Base_GetNumberOfSwapChains(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Base_Reset(LPDIRECT3DDEVICE9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters);
+HRESULT WINAPI IDirect3DDevice9Base_Present(LPDIRECT3DDEVICE9 iface, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion);
+HRESULT WINAPI IDirect3DDevice9Base_GetBackBuffer(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer);
+HRESULT WINAPI IDirect3DDevice9Base_GetRasterStatus(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus);
+HRESULT WINAPI IDirect3DDevice9Base_SetDialogBoxMode(LPDIRECT3DDEVICE9 iface, BOOL bEnableDialogs);
+VOID WINAPI IDirect3DDevice9Base_SetGammaRamp(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp);
+VOID WINAPI IDirect3DDevice9Base_GetGammaRamp(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DGAMMARAMP* pRamp);
+HRESULT WINAPI IDirect3DDevice9Base_CreateTexture(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_CreateVolumeTexture(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_CreateCubeTexture(LPDIRECT3DDEVICE9 iface, UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_CreateVertexBuffer(LPDIRECT3DDEVICE9 iface, UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_CreateIndexBuffer(LPDIRECT3DDEVICE9 iface, UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_CreateRenderTarget(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_CreateDepthStencilSurface(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle);
+HRESULT WINAPI IDirect3DDevice9Base_UpdateSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint);
+HRESULT WINAPI IDirect3DDevice9Base_UpdateTexture(LPDIRECT3DDEVICE9 iface, IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture);
+HRESULT WINAPI IDirect3DDevice9Base_GetRenderTargetData(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface);
+HRESULT WINAPI IDirect3DDevice9Base_GetFrontBufferData(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, IDirect3DSurface9* pDestSurface);
+HRESULT WINAPI IDirect3DDevice9Base_StretchRect(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter);
+HRESULT WINAPI IDirect3DDevice9Base_ColorFill(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color);
+HRESULT WINAPI IDirect3DDevice9Base_CreateOffscreenPlainSurface(LPDIRECT3DDEVICE9 iface, UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle);
#endif /* _D3D9_DEVICE_H_ */
diff --git a/reactos/dll/directx/d3d9/d3d9_haldevice.c b/reactos/dll/directx/d3d9/d3d9_haldevice.c
new file mode 100644
index 00000000000..781573cd8a0
--- /dev/null
+++ b/reactos/dll/directx/d3d9/d3d9_haldevice.c
@@ -0,0 +1,596 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS ReactX
+ * FILE: dll/directx/d3d9/d3d9_haldevice.c
+ * PURPOSE: d3d9.dll internal HAL device functions
+ * PROGRAMERS: Gregor Gullwi
+ */
+#include "d3d9_haldevice.h"
+#include
+
+#define LOCK_D3DDEVICE9() if (This->bLockDevice) EnterCriticalSection(&This->CriticalSection);
+#define UNLOCK_D3DDEVICE9() if (This->bLockDevice) LeaveCriticalSection(&This->CriticalSection);
+
+/* Convert a IDirect3D9 pointer safely to the internal implementation struct */
+/*static LPD3D9HALDEVICE IDirect3DDevice9ToImpl(LPDIRECT3DDEVICE9 iface)
+{
+ if (NULL == iface)
+ return NULL;
+
+ return (LPD3D9HALDEVICE)((ULONG_PTR)iface - FIELD_OFFSET(D3D9HALDEVICE, PureDevice.BaseDevice.lpVtbl));
+}*/
+
+/* IDirect3DDevice9 public interface */
+HRESULT WINAPI IDirect3DDevice9HAL_GetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetMaterial(LPDIRECT3DDEVICE9 iface, D3DMATERIAL9* pMaterial)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, D3DLIGHT9* pLight)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetLightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL* pEnable)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, float* pPlane)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD* pValue)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetClipStatus(LPDIRECT3DDEVICE9 iface, CONST D3DCLIPSTATUS9* pClipStatus)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetClipStatus(LPDIRECT3DDEVICE9 iface, D3DCLIPSTATUS9* pClipStatus)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_ValidateDevice(LPDIRECT3DDEVICE9 iface, DWORD* pNumPasses)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface, BOOL bSoftware)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+BOOL WINAPI IDirect3DDevice9HAL_GetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return TRUE;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_ProcessVertices(LPDIRECT3DDEVICE9 iface, UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9** ppShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9** ppShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_GetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+/* IDirect3DDevice9 private interface */
+HRESULT WINAPI IDirect3DDevice9HAL_SetRenderStateWorker(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetTextureStageStateInt(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetSamplerStateInt(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetMaterialInt(LPDIRECT3DDEVICE9 iface, CONST D3DMATERIAL9* pMaterial)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetVertexShaderInt(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9* pShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetVertexShaderConstantFInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetVertexShaderConstantIInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetVertexShaderConstantBInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderInt(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9* pShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderConstantFInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderConstantIInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderConstantBInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetFVFInt(LPDIRECT3DDEVICE9 iface, DWORD FVF)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetTextureInt(LPDIRECT3DDEVICE9 iface, DWORD Stage,IDirect3DBaseTexture9* pTexture)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetIndicesInt(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9* pIndexData)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetStreamSourceInt(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetStreamSourceFreqInt(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,UINT Setting)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9HAL_UpdateRenderState(LPDIRECT3DDEVICE9 iface, DWORD Unknown1, DWORD Unknown2)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetTransformInt(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_MultiplyTransformInt(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetClipPlaneInt(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST float* pPlane)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9HAL_UpdateDriverState(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetViewportInt(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9HAL_SetStreamSourceWorker(LPDIRECT3DDEVICE9 iface, LPVOID UnknownStreamData)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderConstantFWorker(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderConstantIWorker(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetPixelShaderConstantBWorker(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9HAL_DrawPrimitiveWorker(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetLightInt(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST D3DLIGHT9* pLight)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_LightEnableInt(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL Enable)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_SetRenderStateInt(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_DrawPrimitiveUPInt(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_ClearInt(LPDIRECT3DDEVICE9 iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9HAL_DrawPrimitivesWorker(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+VOID WINAPI IDirect3DDevice9HAL_UpdateVertexShader(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_ValidateDrawCall(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT Unknown1, UINT Unknown2, UINT Unknown3, INT Unknown4, UINT Unknown5, INT Unknown6)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9HAL_Init(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9HAL_InitState(LPDIRECT3DDEVICE9 iface, INT State)
+{
+ UNIMPLEMENTED
+}
+
+VOID WINAPI IDirect3DDevice9HAL_Destroy(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+VOID WINAPI IDirect3DDevice9HAL_VirtualDestructor(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+IDirect3DDevice9Vtbl_INT Direct3DDevice9HAL_Vtbl =
+{
+ {
+ /* IUnknown */
+ IDirect3DDevice9Base_QueryInterface,
+ IDirect3DDevice9Base_AddRef,
+ IDirect3DDevice9Base_Release,
+
+ /* IDirect3DDevice9 public */
+ IDirect3DDevice9Base_TestCooperativeLevel,
+ IDirect3DDevice9Base_GetAvailableTextureMem,
+ IDirect3DDevice9Base_EvictManagedResources,
+ IDirect3DDevice9Base_GetDirect3D,
+ IDirect3DDevice9Base_GetDeviceCaps,
+ IDirect3DDevice9Base_GetDisplayMode,
+ IDirect3DDevice9Base_GetCreationParameters,
+ IDirect3DDevice9Base_SetCursorProperties,
+ IDirect3DDevice9Base_SetCursorPosition,
+ IDirect3DDevice9Base_ShowCursor,
+ IDirect3DDevice9Base_CreateAdditionalSwapChain,
+ IDirect3DDevice9Base_GetSwapChain,
+ IDirect3DDevice9Base_GetNumberOfSwapChains,
+ IDirect3DDevice9Base_Reset,
+ IDirect3DDevice9Base_Present,
+ IDirect3DDevice9Base_GetBackBuffer,
+ IDirect3DDevice9Base_GetRasterStatus,
+ IDirect3DDevice9Base_SetDialogBoxMode,
+ IDirect3DDevice9Base_SetGammaRamp,
+ IDirect3DDevice9Base_GetGammaRamp,
+ IDirect3DDevice9Base_CreateTexture,
+ IDirect3DDevice9Base_CreateVolumeTexture,
+ IDirect3DDevice9Base_CreateCubeTexture,
+ IDirect3DDevice9Base_CreateVertexBuffer,
+ IDirect3DDevice9Base_CreateIndexBuffer,
+ IDirect3DDevice9Base_CreateRenderTarget,
+ IDirect3DDevice9Base_CreateDepthStencilSurface,
+ IDirect3DDevice9Base_UpdateSurface,
+ IDirect3DDevice9Base_UpdateTexture,
+ IDirect3DDevice9Base_GetRenderTargetData,
+ IDirect3DDevice9Base_GetFrontBufferData,
+ IDirect3DDevice9Base_StretchRect,
+ IDirect3DDevice9Base_ColorFill,
+ IDirect3DDevice9Base_CreateOffscreenPlainSurface,
+ IDirect3DDevice9Pure_SetRenderTarget,
+ IDirect3DDevice9Pure_GetRenderTarget,
+ IDirect3DDevice9Pure_SetDepthStencilSurface,
+ IDirect3DDevice9Pure_GetDepthStencilSurface,
+ IDirect3DDevice9Pure_BeginScene,
+ IDirect3DDevice9Pure_EndScene,
+ IDirect3DDevice9Pure_Clear,
+ IDirect3DDevice9Pure_SetTransform,
+ IDirect3DDevice9HAL_GetTransform,
+ IDirect3DDevice9Pure_MultiplyTransform,
+ IDirect3DDevice9Pure_SetViewport,
+ IDirect3DDevice9Pure_GetViewport,
+ IDirect3DDevice9Pure_SetMaterial,
+ IDirect3DDevice9HAL_GetMaterial,
+ IDirect3DDevice9Pure_SetLight,
+ IDirect3DDevice9HAL_GetLight,
+ IDirect3DDevice9Pure_LightEnable,
+ IDirect3DDevice9HAL_GetLightEnable,
+ IDirect3DDevice9Pure_SetClipPlane,
+ IDirect3DDevice9HAL_GetClipPlane,
+ IDirect3DDevice9HAL_SetRenderState,
+ IDirect3DDevice9HAL_GetRenderState,
+ IDirect3DDevice9Pure_CreateStateBlock,
+ IDirect3DDevice9Pure_BeginStateBlock,
+ IDirect3DDevice9Pure_EndStateBlock,
+ IDirect3DDevice9HAL_SetClipStatus,
+ IDirect3DDevice9HAL_GetClipStatus,
+ IDirect3DDevice9Pure_GetTexture,
+ IDirect3DDevice9Pure_SetTexture,
+ IDirect3DDevice9HAL_GetTextureStageState,
+ IDirect3DDevice9Pure_SetTextureStageState,
+ IDirect3DDevice9HAL_GetSamplerState,
+ IDirect3DDevice9Pure_SetSamplerState,
+ IDirect3DDevice9HAL_ValidateDevice,
+ IDirect3DDevice9Pure_SetPaletteEntries,
+ IDirect3DDevice9Pure_GetPaletteEntries,
+ IDirect3DDevice9Pure_SetCurrentTexturePalette,
+ IDirect3DDevice9Pure_GetCurrentTexturePalette,
+ IDirect3DDevice9Pure_SetScissorRect,
+ IDirect3DDevice9Pure_GetScissorRect,
+ IDirect3DDevice9HAL_SetSoftwareVertexProcessing,
+ IDirect3DDevice9HAL_GetSoftwareVertexProcessing,
+ IDirect3DDevice9Pure_SetNPatchMode,
+ IDirect3DDevice9Pure_GetNPatchMode,
+ IDirect3DDevice9Pure_DrawPrimitive,
+ IDirect3DDevice9Pure_DrawIndexedPrimitive,
+ IDirect3DDevice9Pure_DrawPrimitiveUP,
+ IDirect3DDevice9Pure_DrawIndexedPrimitiveUP,
+ IDirect3DDevice9HAL_ProcessVertices,
+ IDirect3DDevice9Pure_CreateVertexDeclaration,
+ IDirect3DDevice9Pure_SetVertexDeclaration,
+ IDirect3DDevice9Pure_GetVertexDeclaration,
+ IDirect3DDevice9Pure_SetFVF,
+ IDirect3DDevice9Pure_GetFVF,
+ IDirect3DDevice9Pure_CreateVertexShader,
+ IDirect3DDevice9Pure_SetVertexShader,
+ IDirect3DDevice9HAL_GetVertexShader,
+ IDirect3DDevice9Pure_SetVertexShaderConstantF,
+ IDirect3DDevice9Pure_GetVertexShaderConstantF,
+ IDirect3DDevice9Pure_SetVertexShaderConstantI,
+ IDirect3DDevice9Pure_GetVertexShaderConstantI,
+ IDirect3DDevice9Pure_SetVertexShaderConstantB,
+ IDirect3DDevice9Pure_GetVertexShaderConstantB,
+ IDirect3DDevice9Pure_SetStreamSource,
+ IDirect3DDevice9Pure_GetStreamSource,
+ IDirect3DDevice9Pure_SetStreamSourceFreq,
+ IDirect3DDevice9Pure_GetStreamSourceFreq,
+ IDirect3DDevice9Pure_SetIndices,
+ IDirect3DDevice9Pure_GetIndices,
+ IDirect3DDevice9Pure_CreatePixelShader,
+ IDirect3DDevice9Pure_SetPixelShader,
+ IDirect3DDevice9HAL_GetPixelShader,
+ IDirect3DDevice9Pure_SetPixelShaderConstantF,
+ IDirect3DDevice9HAL_GetPixelShaderConstantF,
+ IDirect3DDevice9Pure_SetPixelShaderConstantI,
+ IDirect3DDevice9HAL_GetPixelShaderConstantI,
+ IDirect3DDevice9Pure_SetPixelShaderConstantB,
+ IDirect3DDevice9HAL_GetPixelShaderConstantB,
+ IDirect3DDevice9Pure_DrawRectPatch,
+ IDirect3DDevice9Pure_DrawTriPatch,
+ IDirect3DDevice9Pure_DeletePatch,
+ IDirect3DDevice9Pure_CreateQuery,
+ },
+
+ /* IDirect3DDevice9 private */
+ IDirect3DDevice9HAL_SetRenderStateWorker,
+ IDirect3DDevice9HAL_SetTextureStageStateInt,
+ IDirect3DDevice9HAL_SetSamplerStateInt,
+ IDirect3DDevice9HAL_SetMaterialInt,
+ IDirect3DDevice9HAL_SetVertexShaderInt,
+ IDirect3DDevice9HAL_SetVertexShaderConstantFInt,
+ IDirect3DDevice9HAL_SetVertexShaderConstantIInt,
+ IDirect3DDevice9HAL_SetVertexShaderConstantBInt,
+ IDirect3DDevice9HAL_SetPixelShaderInt,
+ IDirect3DDevice9HAL_SetPixelShaderConstantFInt,
+ IDirect3DDevice9HAL_SetPixelShaderConstantIInt,
+ IDirect3DDevice9HAL_SetPixelShaderConstantBInt,
+ IDirect3DDevice9HAL_SetFVFInt,
+ IDirect3DDevice9HAL_SetTextureInt,
+ IDirect3DDevice9HAL_SetIndicesInt,
+ IDirect3DDevice9HAL_SetStreamSourceInt,
+ IDirect3DDevice9HAL_SetStreamSourceFreqInt,
+ IDirect3DDevice9HAL_UpdateRenderState,
+ IDirect3DDevice9HAL_SetTransformInt,
+ IDirect3DDevice9HAL_MultiplyTransformInt,
+ IDirect3DDevice9HAL_SetClipPlaneInt,
+ IDirect3DDevice9HAL_UpdateDriverState,
+ IDirect3DDevice9HAL_SetViewportInt,
+ IDirect3DDevice9HAL_SetStreamSourceWorker,
+ IDirect3DDevice9HAL_SetPixelShaderConstantFWorker,
+ IDirect3DDevice9HAL_SetPixelShaderConstantIWorker,
+ IDirect3DDevice9HAL_SetPixelShaderConstantBWorker,
+ IDirect3DDevice9HAL_DrawPrimitiveWorker,
+ IDirect3DDevice9HAL_SetLightInt,
+ IDirect3DDevice9HAL_LightEnableInt,
+ IDirect3DDevice9HAL_SetRenderStateInt,
+ IDirect3DDevice9HAL_DrawPrimitiveUPInt,
+ IDirect3DDevice9HAL_ClearInt,
+ IDirect3DDevice9HAL_DrawPrimitivesWorker,
+ IDirect3DDevice9HAL_UpdateVertexShader,
+ IDirect3DDevice9HAL_ValidateDrawCall,
+ IDirect3DDevice9HAL_Init,
+ IDirect3DDevice9HAL_InitState,
+ IDirect3DDevice9HAL_Destroy,
+ IDirect3DDevice9HAL_VirtualDestructor,
+};
+
diff --git a/reactos/dll/directx/d3d9/d3d9_haldevice.h b/reactos/dll/directx/d3d9/d3d9_haldevice.h
new file mode 100644
index 00000000000..42e73d990a3
--- /dev/null
+++ b/reactos/dll/directx/d3d9/d3d9_haldevice.h
@@ -0,0 +1,1010 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS ReactX
+ * FILE: dll/directx/d3d9/d3d9_haldevice.h
+ * PURPOSE: d3d9.dll internal HAL device structures
+ * PROGRAMERS: Gregor Gullwi
+ */
+#ifndef _D3D9_HALDEVICE_H_
+#define _D3D9_HALDEVICE_H_
+
+#include "d3d9_puredevice.h"
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+extern IDirect3DDevice9Vtbl_INT Direct3DDevice9HAL_Vtbl;
+#endif
+
+typedef struct _D3D9HALDEVICE
+{
+/* 0x0000 */ D3D9PUREDEVICE PureDevice;
+#ifdef D3D_DEBUG_INFO
+/* N/A - 0x0004 */ DWORD dbg0004;
+/* N/A - 0x0008 */ DWORD dbg0008;
+/* N/A - 0x000c */ DWORD dbg000c;
+/* N/A - 0x0010 */ DWORD dbg0010;
+/* N/A - 0x0014 */ DWORD dbg0014;
+/* N/A - 0x0018 */ DWORD dbg0018;
+/* N/A - 0x001c */ DWORD dbg001c;
+/* N/A - 0x0020 */ DWORD dbg0020;
+/* N/A - 0x0024 */ DWORD dbg0024;
+/* N/A - 0x0028 */ DWORD dbg0028;
+/* N/A - 0x002c */ DWORD dbg002c;
+/* N/A - 0x0030 */ DWORD dbg0030;
+/* N/A - 0x0034 */ DWORD dbg0034;
+/* N/A - 0x0038 */ DWORD dbg0038;
+#endif
+/* 0x2438 */ DWORD unknown002438;
+/* 0x243c */ DWORD unknown00243c;
+/* 0x2440 */ DWORD unknown002440;
+/* 0x2444 */ DWORD unknown002444;
+/* 0x2448 */ DWORD unknown002448;
+/* 0x244c */ DWORD unknown00244c;
+/* 0x2450 */ DWORD unknown002450;
+/* 0x2454 */ DWORD unknown002454;
+/* 0x2458 */ DWORD unknown002458;
+/* 0x245c */ DWORD unknown00245c;
+/* 0x2460 */ DWORD unknown002460;
+/* 0x2464 */ DWORD unknown002464;
+/* 0x2468 */ DWORD unknown002468;
+/* 0x246c */ DWORD unknown00246c;
+/* 0x2470 */ DWORD unknown002470;
+/* 0x2474 */ DWORD unknown002474;
+/* 0x2478 */ DWORD unknown002478;
+/* 0x247c */ DWORD unknown00247c;
+/* 0x2480 */ DWORD unknown002480;
+/* 0x2484 */ DWORD unknown002484;
+/* 0x2488 */ DWORD unknown002488;
+/* 0x248c */ DWORD unknown00248c;
+/* 0x2490 */ DWORD unknown002490;
+/* 0x2494 */ DWORD unknown002494;
+/* 0x2498 */ DWORD unknown002498;
+/* 0x249c */ DWORD unknown00249c;
+/* 0x24a0 */ DWORD unknown0024a0;
+/* 0x24a4 */ DWORD unknown0024a4;
+/* 0x24a8 */ DWORD unknown0024a8;
+/* 0x24ac */ DWORD unknown0024ac;
+/* 0x24b0 */ DWORD unknown0024b0;
+/* 0x24b4 */ DWORD unknown0024b4;
+/* 0x24b8 */ DWORD unknown0024b8;
+/* 0x24bc */ DWORD unknown0024bc;
+/* 0x24c0 */ DWORD unknown0024c0;
+/* 0x24c4 */ DWORD unknown0024c4;
+/* 0x24c8 */ DWORD unknown0024c8;
+/* 0x24cc */ DWORD unknown0024cc;
+/* 0x24d0 */ DWORD unknown0024d0;
+/* 0x24d4 */ DWORD unknown0024d4;
+/* 0x24d8 */ DWORD unknown0024d8;
+/* 0x24dc */ DWORD unknown0024dc;
+/* 0x24e0 */ DWORD unknown0024e0;
+/* 0x24e4 */ DWORD unknown0024e4;
+/* 0x24e8 */ DWORD unknown0024e8;
+/* 0x24ec */ DWORD unknown0024ec;
+/* 0x24f0 */ DWORD unknown0024f0;
+/* 0x24f4 */ DWORD unknown0024f4;
+/* 0x24f8 */ DWORD unknown0024f8;
+/* 0x24fc */ DWORD unknown0024fc;
+/* 0x2500 */ DWORD unknown002500;
+/* 0x2504 */ DWORD unknown002504;
+/* 0x2508 */ DWORD unknown002508;
+/* 0x250c */ DWORD unknown00250c;
+/* 0x2510 */ DWORD unknown002510;
+/* 0x2514 */ DWORD unknown002514;
+/* 0x2518 */ DWORD unknown002518;
+/* 0x251c */ DWORD unknown00251c;
+/* 0x2520 */ DWORD unknown002520;
+/* 0x2524 */ DWORD unknown002524;
+/* 0x2528 */ DWORD unknown002528;
+/* 0x252c */ DWORD unknown00252c;
+/* 0x2530 */ DWORD unknown002530;
+/* 0x2534 */ DWORD unknown002534;
+/* 0x2538 */ DWORD unknown002538;
+/* 0x253c */ DWORD unknown00253c;
+/* 0x2540 */ DWORD unknown002540;
+/* 0x2544 */ DWORD unknown002544;
+/* 0x2548 */ DWORD unknown002548;
+/* 0x254c */ DWORD unknown00254c;
+/* 0x2550 */ DWORD unknown002550;
+/* 0x2554 */ DWORD unknown002554;
+/* 0x2558 */ DWORD unknown002558;
+/* 0x255c */ DWORD unknown00255c;
+/* 0x2560 */ DWORD unknown002560;
+/* 0x2564 */ DWORD unknown002564;
+/* 0x2568 */ DWORD unknown002568;
+/* 0x256c */ DWORD unknown00256c;
+/* 0x2570 */ DWORD unknown002570;
+/* 0x2574 */ DWORD unknown002574;
+/* 0x2578 */ DWORD unknown002578;
+/* 0x257c */ DWORD unknown00257c;
+/* 0x2580 */ DWORD unknown002580;
+/* 0x2584 */ DWORD unknown002584;
+/* 0x2588 */ DWORD unknown002588;
+/* 0x258c */ DWORD unknown00258c;
+/* 0x2590 */ DWORD unknown002590;
+/* 0x2594 */ DWORD unknown002594;
+/* 0x2598 */ DWORD unknown002598;
+/* 0x259c */ DWORD unknown00259c;
+/* 0x25a0 */ DWORD unknown0025a0;
+/* 0x25a4 */ DWORD unknown0025a4;
+/* 0x25a8 */ DWORD unknown0025a8;
+/* 0x25ac */ DWORD unknown0025ac;
+/* 0x25b0 */ DWORD unknown0025b0;
+/* 0x25b4 */ DWORD unknown0025b4;
+/* 0x25b8 */ DWORD unknown0025b8;
+/* 0x25bc */ DWORD unknown0025bc;
+/* 0x25c0 */ DWORD unknown0025c0;
+/* 0x25c4 */ DWORD unknown0025c4;
+/* 0x25c8 */ DWORD unknown0025c8;
+/* 0x25cc */ DWORD unknown0025cc;
+/* 0x25d0 */ DWORD unknown0025d0;
+/* 0x25d4 */ DWORD unknown0025d4;
+/* 0x25d8 */ DWORD unknown0025d8;
+/* 0x25dc */ DWORD unknown0025dc;
+/* 0x25e0 */ DWORD unknown0025e0;
+/* 0x25e4 */ DWORD unknown0025e4;
+/* 0x25e8 */ DWORD unknown0025e8;
+/* 0x25ec */ DWORD unknown0025ec;
+/* 0x25f0 */ DWORD unknown0025f0;
+/* 0x25f4 */ DWORD unknown0025f4;
+/* 0x25f8 */ DWORD unknown0025f8;
+/* 0x25fc */ DWORD unknown0025fc;
+
+/* 0x2600 */ DWORD unknown002600;
+/* 0x2604 */ DWORD unknown002604;
+/* 0x2608 */ DWORD unknown002608;
+/* 0x260c */ DWORD unknown00260c;
+/* 0x2610 */ DWORD unknown002610;
+/* 0x2614 */ DWORD unknown002614;
+/* 0x2618 */ DWORD unknown002618;
+/* 0x261c */ DWORD unknown00261c;
+/* 0x2620 */ DWORD unknown002620;
+/* 0x2624 */ DWORD unknown002624;
+/* 0x2628 */ DWORD unknown002628;
+/* 0x262c */ DWORD unknown00262c;
+/* 0x2630 */ DWORD unknown002630;
+/* 0x2634 */ DWORD unknown002634;
+/* 0x2638 */ DWORD unknown002638;
+/* 0x263c */ DWORD unknown00263c;
+/* 0x2640 */ DWORD unknown002640;
+/* 0x2644 */ DWORD unknown002644;
+/* 0x2648 */ DWORD unknown002648;
+/* 0x264c */ DWORD unknown00264c;
+/* 0x2650 */ DWORD unknown002650;
+/* 0x2654 */ DWORD unknown002654;
+/* 0x2658 */ DWORD unknown002658;
+/* 0x265c */ DWORD unknown00265c;
+/* 0x2660 */ DWORD unknown002660;
+/* 0x2664 */ DWORD unknown002664;
+/* 0x2668 */ DWORD unknown002668;
+/* 0x266c */ DWORD unknown00266c;
+/* 0x2670 */ DWORD unknown002670;
+/* 0x2674 */ DWORD unknown002674;
+/* 0x2678 */ DWORD unknown002678;
+/* 0x267c */ DWORD unknown00267c;
+/* 0x2680 */ DWORD unknown002680;
+/* 0x2684 */ DWORD unknown002684;
+/* 0x2688 */ DWORD unknown002688;
+/* 0x268c */ DWORD unknown00268c;
+/* 0x2690 */ DWORD unknown002690;
+/* 0x2694 */ DWORD unknown002694;
+/* 0x2698 */ DWORD unknown002698;
+/* 0x269c */ DWORD unknown00269c;
+/* 0x26a0 */ DWORD unknown0026a0;
+/* 0x26a4 */ DWORD unknown0026a4;
+/* 0x26a8 */ DWORD unknown0026a8;
+/* 0x26ac */ DWORD unknown0026ac;
+/* 0x26b0 */ DWORD unknown0026b0;
+/* 0x26b4 */ DWORD unknown0026b4;
+/* 0x26b8 */ DWORD unknown0026b8;
+/* 0x26bc */ DWORD unknown0026bc;
+/* 0x26c0 */ DWORD unknown0026c0;
+/* 0x26c4 */ DWORD unknown0026c4;
+/* 0x26c8 */ DWORD unknown0026c8;
+/* 0x26cc */ DWORD unknown0026cc;
+/* 0x26d0 */ DWORD unknown0026d0;
+/* 0x26d4 */ DWORD unknown0026d4;
+/* 0x26d8 */ DWORD unknown0026d8;
+/* 0x26dc */ DWORD unknown0026dc;
+/* 0x26e0 */ DWORD unknown0026e0;
+/* 0x26e4 */ DWORD unknown0026e4;
+/* 0x26e8 */ DWORD unknown0026e8;
+/* 0x26ec */ DWORD unknown0026ec;
+/* 0x26f0 */ DWORD unknown0026f0;
+/* 0x26f4 */ DWORD unknown0026f4;
+/* 0x26f8 */ DWORD unknown0026f8;
+/* 0x26fc */ DWORD unknown0026fc;
+
+/* 0x2700 */ DWORD unknown002700;
+/* 0x2704 */ DWORD unknown002704;
+/* 0x2708 */ DWORD unknown002708;
+/* 0x270c */ DWORD unknown00270c;
+/* 0x2710 */ DWORD unknown002710;
+/* 0x2714 */ DWORD unknown002714;
+/* 0x2718 */ DWORD unknown002718;
+/* 0x271c */ DWORD unknown00271c;
+/* 0x2720 */ DWORD unknown002720;
+/* 0x2724 */ DWORD unknown002724;
+/* 0x2728 */ DWORD unknown002728;
+/* 0x272c */ DWORD unknown00272c;
+/* 0x2730 */ DWORD unknown002730;
+/* 0x2734 */ DWORD unknown002734;
+/* 0x2738 */ DWORD unknown002738;
+/* 0x273c */ DWORD unknown00273c;
+/* 0x2740 */ DWORD unknown002740;
+/* 0x2744 */ DWORD unknown002744;
+/* 0x2748 */ DWORD unknown002748;
+/* 0x274c */ DWORD unknown00274c;
+/* 0x2750 */ DWORD unknown002750;
+/* 0x2754 */ DWORD unknown002754;
+/* 0x2758 */ DWORD unknown002758;
+/* 0x275c */ DWORD unknown00275c;
+/* 0x2760 */ DWORD unknown002760;
+/* 0x2764 */ DWORD unknown002764;
+/* 0x2768 */ DWORD unknown002768;
+/* 0x276c */ DWORD unknown00276c;
+/* 0x2770 */ DWORD unknown002770;
+/* 0x2774 */ DWORD unknown002774;
+/* 0x2778 */ DWORD unknown002778;
+/* 0x277c */ DWORD unknown00277c;
+/* 0x2780 */ DWORD unknown002780;
+/* 0x2784 */ DWORD unknown002784;
+/* 0x2788 */ DWORD unknown002788;
+/* 0x278c */ DWORD unknown00278c;
+/* 0x2790 */ DWORD unknown002790;
+/* 0x2794 */ DWORD unknown002794;
+/* 0x2798 */ DWORD unknown002798;
+/* 0x279c */ DWORD unknown00279c;
+/* 0x27a0 */ DWORD unknown0027a0;
+/* 0x27a4 */ DWORD unknown0027a4;
+/* 0x27a8 */ DWORD unknown0027a8;
+/* 0x27ac */ DWORD unknown0027ac;
+/* 0x27b0 */ DWORD unknown0027b0;
+/* 0x27b4 */ DWORD unknown0027b4;
+/* 0x27b8 */ DWORD unknown0027b8;
+/* 0x27bc */ DWORD unknown0027bc;
+/* 0x27c0 */ DWORD unknown0027c0;
+/* 0x27c4 */ DWORD unknown0027c4;
+/* 0x27c8 */ DWORD unknown0027c8;
+/* 0x27cc */ DWORD unknown0027cc;
+/* 0x27d0 */ DWORD unknown0027d0;
+/* 0x27d4 */ DWORD unknown0027d4;
+/* 0x27d8 */ DWORD unknown0027d8;
+/* 0x27dc */ DWORD unknown0027dc;
+/* 0x27e0 */ DWORD unknown0027e0;
+/* 0x27e4 */ DWORD unknown0027e4;
+/* 0x27e8 */ DWORD unknown0027e8;
+/* 0x27ec */ DWORD unknown0027ec;
+/* 0x27f0 */ DWORD unknown0027f0;
+/* 0x27f4 */ DWORD unknown0027f4;
+/* 0x27f8 */ DWORD unknown0027f8;
+/* 0x27fc */ DWORD unknown0027fc;
+
+/* 0x2800 */ DWORD unknown002800;
+/* 0x2804 */ DWORD unknown002804;
+/* 0x2808 */ DWORD unknown002808;
+/* 0x280c */ DWORD unknown00280c;
+/* 0x2810 */ DWORD unknown002810;
+/* 0x2814 */ DWORD unknown002814;
+/* 0x2818 */ DWORD unknown002818;
+/* 0x281c */ DWORD unknown00281c;
+/* 0x2820 */ DWORD unknown002820;
+/* 0x2824 */ DWORD unknown002824;
+/* 0x2828 */ DWORD unknown002828;
+/* 0x282c */ DWORD unknown00282c;
+/* 0x2830 */ DWORD unknown002830;
+/* 0x2834 */ DWORD unknown002834;
+/* 0x2838 */ DWORD unknown002838;
+/* 0x283c */ DWORD unknown00283c;
+/* 0x2840 */ DWORD unknown002840;
+/* 0x2844 */ DWORD unknown002844;
+/* 0x2848 */ DWORD unknown002848;
+/* 0x284c */ DWORD unknown00284c;
+/* 0x2850 */ DWORD unknown002850;
+/* 0x2854 */ DWORD unknown002854;
+/* 0x2858 */ DWORD unknown002858;
+/* 0x285c */ DWORD unknown00285c;
+/* 0x2860 */ DWORD unknown002860;
+/* 0x2864 */ DWORD unknown002864;
+/* 0x2868 */ DWORD unknown002868;
+/* 0x286c */ DWORD unknown00286c;
+/* 0x2870 */ DWORD unknown002870;
+/* 0x2874 */ DWORD unknown002874;
+/* 0x2878 */ DWORD unknown002878;
+/* 0x287c */ DWORD unknown00287c;
+/* 0x2880 */ DWORD unknown002880;
+/* 0x2884 */ DWORD unknown002884;
+/* 0x2888 */ DWORD unknown002888;
+/* 0x288c */ DWORD unknown00288c;
+/* 0x2890 */ DWORD unknown002890;
+/* 0x2894 */ DWORD unknown002894;
+/* 0x2898 */ DWORD unknown002898;
+/* 0x289c */ DWORD unknown00289c;
+/* 0x28a0 */ DWORD unknown0028a0;
+/* 0x28a4 */ DWORD unknown0028a4;
+/* 0x28a8 */ DWORD unknown0028a8;
+/* 0x28ac */ DWORD unknown0028ac;
+/* 0x28b0 */ DWORD unknown0028b0;
+/* 0x28b4 */ DWORD unknown0028b4;
+/* 0x28b8 */ DWORD unknown0028b8;
+/* 0x28bc */ DWORD unknown0028bc;
+/* 0x28c0 */ DWORD unknown0028c0;
+/* 0x28c4 */ DWORD unknown0028c4;
+/* 0x28c8 */ DWORD unknown0028c8;
+/* 0x28cc */ DWORD unknown0028cc;
+/* 0x28d0 */ DWORD unknown0028d0;
+/* 0x28d4 */ DWORD unknown0028d4;
+/* 0x28d8 */ DWORD unknown0028d8;
+/* 0x28dc */ DWORD unknown0028dc;
+/* 0x28e0 */ DWORD unknown0028e0;
+/* 0x28e4 */ DWORD unknown0028e4;
+/* 0x28e8 */ DWORD unknown0028e8;
+/* 0x28ec */ DWORD unknown0028ec;
+/* 0x28f0 */ DWORD unknown0028f0;
+/* 0x28f4 */ DWORD unknown0028f4;
+/* 0x28f8 */ DWORD unknown0028f8;
+/* 0x28fc */ DWORD unknown0028fc;
+
+/* 0x2900 */ DWORD unknown002900;
+/* 0x2904 */ DWORD unknown002904;
+/* 0x2908 */ DWORD unknown002908;
+/* 0x290c */ DWORD unknown00290c;
+/* 0x2910 */ DWORD unknown002910;
+/* 0x2914 */ DWORD unknown002914;
+/* 0x2918 */ DWORD unknown002918;
+/* 0x291c */ DWORD unknown00291c;
+/* 0x2920 */ DWORD unknown002920;
+/* 0x2924 */ DWORD unknown002924;
+/* 0x2928 */ DWORD unknown002928;
+/* 0x292c */ DWORD unknown00292c;
+/* 0x2930 */ DWORD unknown002930;
+/* 0x2934 */ DWORD unknown002934;
+/* 0x2938 */ DWORD unknown002938;
+/* 0x293c */ DWORD unknown00293c;
+/* 0x2940 */ DWORD unknown002940;
+/* 0x2944 */ DWORD unknown002944;
+/* 0x2948 */ DWORD unknown002948;
+/* 0x294c */ DWORD unknown00294c;
+/* 0x2950 */ DWORD unknown002950;
+/* 0x2954 */ DWORD unknown002954;
+/* 0x2958 */ DWORD unknown002958;
+/* 0x295c */ DWORD unknown00295c;
+/* 0x2960 */ DWORD unknown002960;
+/* 0x2964 */ DWORD unknown002964;
+/* 0x2968 */ DWORD unknown002968;
+/* 0x296c */ DWORD unknown00296c;
+/* 0x2970 */ DWORD unknown002970;
+/* 0x2974 */ DWORD unknown002974;
+/* 0x2978 */ DWORD unknown002978;
+/* 0x297c */ DWORD unknown00297c;
+/* 0x2980 */ DWORD unknown002980;
+/* 0x2984 */ DWORD unknown002984;
+/* 0x2988 */ DWORD unknown002988;
+/* 0x298c */ DWORD unknown00298c;
+/* 0x2990 */ DWORD unknown002990;
+/* 0x2994 */ DWORD unknown002994;
+/* 0x2998 */ DWORD unknown002998;
+/* 0x299c */ DWORD unknown00299c;
+/* 0x29a0 */ DWORD unknown0029a0;
+/* 0x29a4 */ DWORD unknown0029a4;
+/* 0x29a8 */ DWORD unknown0029a8;
+/* 0x29ac */ DWORD unknown0029ac;
+/* 0x29b0 */ DWORD unknown0029b0;
+/* 0x29b4 */ DWORD unknown0029b4;
+/* 0x29b8 */ DWORD unknown0029b8;
+/* 0x29bc */ DWORD unknown0029bc;
+/* 0x29c0 */ DWORD unknown0029c0;
+/* 0x29c4 */ DWORD unknown0029c4;
+/* 0x29c8 */ DWORD unknown0029c8;
+/* 0x29cc */ DWORD unknown0029cc;
+/* 0x29d0 */ DWORD unknown0029d0;
+/* 0x29d4 */ DWORD unknown0029d4;
+/* 0x29d8 */ DWORD unknown0029d8;
+/* 0x29dc */ DWORD unknown0029dc;
+/* 0x29e0 */ DWORD unknown0029e0;
+/* 0x29e4 */ DWORD unknown0029e4;
+/* 0x29e8 */ DWORD unknown0029e8;
+/* 0x29ec */ DWORD unknown0029ec;
+/* 0x29f0 */ DWORD unknown0029f0;
+/* 0x29f4 */ DWORD unknown0029f4;
+/* 0x29f8 */ DWORD unknown0029f8;
+/* 0x29fc */ DWORD unknown0029fc;
+
+/* 0x2a00 */ DWORD unknown002a00;
+/* 0x2a04 */ DWORD unknown002a04;
+/* 0x2a08 */ DWORD unknown002a08;
+/* 0x2a0c */ DWORD unknown002a0c;
+/* 0x2a10 */ DWORD unknown002a10;
+/* 0x2a14 */ DWORD unknown002a14;
+/* 0x2a18 */ DWORD unknown002a18;
+/* 0x2a1c */ DWORD unknown002a1c;
+/* 0x2a20 */ DWORD unknown002a20;
+/* 0x2a24 */ DWORD unknown002a24;
+/* 0x2a28 */ DWORD unknown002a28;
+/* 0x2a2c */ DWORD unknown002a2c;
+/* 0x2a30 */ DWORD unknown002a30;
+/* 0x2a34 */ DWORD unknown002a34;
+/* 0x2a38 */ DWORD unknown002a38;
+/* 0x2a3c */ DWORD unknown002a3c;
+/* 0x2a40 */ DWORD unknown002a40;
+/* 0x2a44 */ DWORD unknown002a44;
+/* 0x2a48 */ DWORD unknown002a48;
+/* 0x2a4c */ DWORD unknown002a4c;
+/* 0x2a50 */ DWORD unknown002a50;
+/* 0x2a54 */ DWORD unknown002a54;
+/* 0x2a58 */ DWORD unknown002a58;
+/* 0x2a5c */ DWORD unknown002a5c;
+/* 0x2a60 */ DWORD unknown002a60;
+/* 0x2a64 */ DWORD unknown002a64;
+/* 0x2a68 */ DWORD unknown002a68;
+/* 0x2a6c */ DWORD unknown002a6c;
+/* 0x2a70 */ DWORD unknown002a70;
+/* 0x2a74 */ DWORD unknown002a74;
+/* 0x2a78 */ DWORD unknown002a78;
+/* 0x2a7c */ DWORD unknown002a7c;
+/* 0x2a80 */ DWORD unknown002a80;
+/* 0x2a84 */ DWORD unknown002a84;
+/* 0x2a88 */ DWORD unknown002a88;
+/* 0x2a8c */ DWORD unknown002a8c;
+/* 0x2a90 */ DWORD unknown002a90;
+/* 0x2a94 */ DWORD unknown002a94;
+/* 0x2a98 */ DWORD unknown002a98;
+/* 0x2a9c */ DWORD unknown002a9c;
+/* 0x2aa0 */ DWORD unknown002aa0;
+/* 0x2aa4 */ DWORD unknown002aa4;
+/* 0x2aa8 */ DWORD unknown002aa8;
+/* 0x2aac */ DWORD unknown002aac;
+/* 0x2ab0 */ DWORD unknown002ab0;
+/* 0x2ab4 */ DWORD unknown002ab4;
+/* 0x2ab8 */ DWORD unknown002ab8;
+/* 0x2abc */ DWORD unknown002abc;
+/* 0x2ac0 */ DWORD unknown002ac0;
+/* 0x2ac4 */ DWORD unknown002ac4;
+/* 0x2ac8 */ DWORD unknown002ac8;
+/* 0x2acc */ DWORD unknown002acc;
+/* 0x2ad0 */ DWORD unknown002ad0;
+/* 0x2ad4 */ DWORD unknown002ad4;
+/* 0x2ad8 */ DWORD unknown002ad8;
+/* 0x2adc */ DWORD unknown002adc;
+/* 0x2ae0 */ DWORD unknown002ae0;
+/* 0x2ae4 */ DWORD unknown002ae4;
+/* 0x2ae8 */ DWORD unknown002ae8;
+/* 0x2aec */ DWORD unknown002aec;
+/* 0x2af0 */ DWORD unknown002af0;
+/* 0x2af4 */ DWORD unknown002af4;
+/* 0x2af8 */ DWORD unknown002af8;
+/* 0x2afc */ DWORD unknown002afc;
+
+/* 0x2b00 */ DWORD unknown002b00;
+/* 0x2b04 */ DWORD unknown002b04;
+/* 0x2b08 */ DWORD unknown002b08;
+/* 0x2b0c */ DWORD unknown002b0c;
+/* 0x2b10 */ DWORD unknown002b10;
+/* 0x2b14 */ DWORD unknown002b14;
+/* 0x2b18 */ DWORD unknown002b18;
+/* 0x2b1c */ DWORD unknown002b1c;
+/* 0x2b20 */ DWORD unknown002b20;
+/* 0x2b24 */ DWORD unknown002b24;
+/* 0x2b28 */ DWORD unknown002b28;
+/* 0x2b2c */ DWORD unknown002b2c;
+/* 0x2b30 */ DWORD unknown002b30;
+/* 0x2b34 */ DWORD unknown002b34;
+/* 0x2b38 */ DWORD unknown002b38;
+/* 0x2b3c */ DWORD unknown002b3c;
+/* 0x2b40 */ DWORD unknown002b40;
+/* 0x2b44 */ DWORD unknown002b44;
+/* 0x2b48 */ DWORD unknown002b48;
+/* 0x2b4c */ DWORD unknown002b4c;
+/* 0x2b50 */ DWORD unknown002b50;
+/* 0x2b54 */ DWORD unknown002b54;
+/* 0x2b58 */ DWORD unknown002b58;
+/* 0x2b5c */ DWORD unknown002b5c;
+/* 0x2b60 */ DWORD unknown002b60;
+/* 0x2b64 */ DWORD unknown002b64;
+/* 0x2b68 */ DWORD unknown002b68;
+/* 0x2b6c */ DWORD unknown002b6c;
+/* 0x2b70 */ DWORD unknown002b70;
+/* 0x2b74 */ DWORD unknown002b74;
+/* 0x2b78 */ DWORD unknown002b78;
+/* 0x2b7c */ DWORD unknown002b7c;
+/* 0x2b80 */ DWORD unknown002b80;
+/* 0x2b84 */ DWORD unknown002b84;
+/* 0x2b88 */ DWORD unknown002b88;
+/* 0x2b8c */ DWORD unknown002b8c;
+/* 0x2b90 */ DWORD unknown002b90;
+/* 0x2b94 */ DWORD unknown002b94;
+/* 0x2b98 */ DWORD unknown002b98;
+/* 0x2b9c */ DWORD unknown002b9c;
+/* 0x2ba0 */ DWORD unknown002ba0;
+/* 0x2ba4 */ DWORD unknown002ba4;
+/* 0x2ba8 */ DWORD unknown002ba8;
+/* 0x2bac */ DWORD unknown002bac;
+/* 0x2bb0 */ DWORD unknown002bb0;
+/* 0x2bb4 */ DWORD unknown002bb4;
+/* 0x2bb8 */ DWORD unknown002bb8;
+/* 0x2bbc */ DWORD unknown002bbc;
+/* 0x2bc0 */ DWORD unknown002bc0;
+/* 0x2bc4 */ DWORD unknown002bc4;
+/* 0x2bc8 */ DWORD unknown002bc8;
+/* 0x2bcc */ DWORD unknown002bcc;
+/* 0x2bd0 */ DWORD unknown002bd0;
+/* 0x2bd4 */ DWORD unknown002bd4;
+/* 0x2bd8 */ DWORD unknown002bd8;
+/* 0x2bdc */ DWORD unknown002bdc;
+/* 0x2be0 */ DWORD unknown002be0;
+/* 0x2be4 */ DWORD unknown002be4;
+/* 0x2be8 */ DWORD unknown002be8;
+/* 0x2bec */ DWORD unknown002bec;
+/* 0x2bf0 */ DWORD unknown002bf0;
+/* 0x2bf4 */ DWORD unknown002bf4;
+/* 0x2bf8 */ DWORD unknown002bf8;
+/* 0x2bfc */ DWORD unknown002bfc;
+
+/* 0x2c00 */ DWORD unknown002c00;
+/* 0x2c04 */ DWORD unknown002c04;
+/* 0x2c08 */ DWORD unknown002c08;
+/* 0x2c0c */ DWORD unknown002c0c;
+/* 0x2c10 */ DWORD unknown002c10;
+/* 0x2c14 */ DWORD unknown002c14;
+/* 0x2c18 */ DWORD unknown002c18;
+/* 0x2c1c */ DWORD unknown002c1c;
+/* 0x2c20 */ DWORD unknown002c20;
+/* 0x2c24 */ DWORD unknown002c24;
+/* 0x2c28 */ DWORD unknown002c28;
+/* 0x2c2c */ DWORD unknown002c2c;
+/* 0x2c30 */ DWORD unknown002c30;
+/* 0x2c34 */ DWORD unknown002c34;
+/* 0x2c38 */ DWORD unknown002c38;
+/* 0x2c3c */ DWORD unknown002c3c;
+/* 0x2c40 */ DWORD unknown002c40;
+/* 0x2c44 */ DWORD unknown002c44;
+/* 0x2c48 */ DWORD unknown002c48;
+/* 0x2c4c */ DWORD unknown002c4c;
+/* 0x2c50 */ DWORD unknown002c50;
+/* 0x2c54 */ DWORD unknown002c54;
+/* 0x2c58 */ DWORD unknown002c58;
+/* 0x2c5c */ DWORD unknown002c5c;
+/* 0x2c60 */ DWORD unknown002c60;
+/* 0x2c64 */ DWORD unknown002c64;
+/* 0x2c68 */ DWORD unknown002c68;
+/* 0x2c6c */ DWORD unknown002c6c;
+/* 0x2c70 */ DWORD unknown002c70;
+/* 0x2c74 */ DWORD unknown002c74;
+/* 0x2c78 */ DWORD unknown002c78;
+/* 0x2c7c */ DWORD unknown002c7c;
+/* 0x2c80 */ DWORD unknown002c80;
+/* 0x2c84 */ DWORD unknown002c84;
+/* 0x2c88 */ DWORD unknown002c88;
+/* 0x2c8c */ DWORD unknown002c8c;
+/* 0x2c90 */ DWORD unknown002c90;
+/* 0x2c94 */ DWORD unknown002c94;
+/* 0x2c98 */ DWORD unknown002c98;
+/* 0x2c9c */ DWORD unknown002c9c;
+/* 0x2ca0 */ DWORD unknown002ca0;
+/* 0x2ca4 */ DWORD unknown002ca4;
+/* 0x2ca8 */ DWORD unknown002ca8;
+/* 0x2cac */ DWORD unknown002cac;
+/* 0x2cb0 */ DWORD unknown002cb0;
+/* 0x2cb4 */ DWORD unknown002cb4;
+/* 0x2cb8 */ DWORD unknown002cb8;
+/* 0x2cbc */ DWORD unknown002cbc;
+/* 0x2cc0 */ DWORD unknown002cc0;
+/* 0x2cc4 */ DWORD unknown002cc4;
+/* 0x2cc8 */ DWORD unknown002cc8;
+/* 0x2ccc */ DWORD unknown002ccc;
+/* 0x2cd0 */ DWORD unknown002cd0;
+/* 0x2cd4 */ DWORD unknown002cd4;
+/* 0x2cd8 */ DWORD unknown002cd8;
+/* 0x2cdc */ DWORD unknown002cdc;
+/* 0x2ce0 */ DWORD unknown002ce0;
+/* 0x2ce4 */ DWORD unknown002ce4;
+/* 0x2ce8 */ DWORD unknown002ce8;
+/* 0x2cec */ DWORD unknown002cec;
+/* 0x2cf0 */ DWORD unknown002cf0;
+/* 0x2cf4 */ DWORD unknown002cf4;
+/* 0x2cf8 */ DWORD unknown002cf8;
+/* 0x2cfc */ DWORD unknown002cfc;
+
+/* 0x2d00 */ DWORD unknown002d00;
+/* 0x2d04 */ DWORD unknown002d04;
+/* 0x2d08 */ DWORD unknown002d08;
+/* 0x2d0c */ DWORD unknown002d0c;
+/* 0x2d10 */ DWORD unknown002d10;
+/* 0x2d14 */ DWORD unknown002d14;
+/* 0x2d18 */ DWORD unknown002d18;
+/* 0x2d1c */ DWORD unknown002d1c;
+/* 0x2d20 */ DWORD unknown002d20;
+/* 0x2d24 */ DWORD unknown002d24;
+/* 0x2d28 */ DWORD unknown002d28;
+/* 0x2d2c */ DWORD unknown002d2c;
+/* 0x2d30 */ DWORD unknown002d30;
+/* 0x2d34 */ DWORD unknown002d34;
+/* 0x2d38 */ DWORD unknown002d38;
+/* 0x2d3c */ DWORD unknown002d3c;
+/* 0x2d40 */ DWORD unknown002d40;
+/* 0x2d44 */ DWORD unknown002d44;
+/* 0x2d48 */ DWORD unknown002d48;
+/* 0x2d4c */ DWORD unknown002d4c;
+/* 0x2d50 */ DWORD unknown002d50;
+/* 0x2d54 */ DWORD unknown002d54;
+/* 0x2d58 */ DWORD unknown002d58;
+/* 0x2d5c */ DWORD unknown002d5c;
+/* 0x2d60 */ DWORD unknown002d60;
+/* 0x2d64 */ DWORD unknown002d64;
+/* 0x2d68 */ DWORD unknown002d68;
+/* 0x2d6c */ DWORD unknown002d6c;
+/* 0x2d70 */ DWORD unknown002d70;
+/* 0x2d74 */ DWORD unknown002d74;
+/* 0x2d78 */ DWORD unknown002d78;
+/* 0x2d7c */ DWORD unknown002d7c;
+/* 0x2d80 */ DWORD unknown002d80;
+/* 0x2d84 */ DWORD unknown002d84;
+/* 0x2d88 */ DWORD unknown002d88;
+/* 0x2d8c */ DWORD unknown002d8c;
+/* 0x2d90 */ DWORD unknown002d90;
+/* 0x2d94 */ DWORD unknown002d94;
+/* 0x2d98 */ DWORD unknown002d98;
+/* 0x2d9c */ DWORD unknown002d9c;
+/* 0x2da0 */ DWORD unknown002da0;
+/* 0x2da4 */ DWORD unknown002da4;
+/* 0x2da8 */ DWORD unknown002da8;
+/* 0x2dac */ DWORD unknown002dac;
+/* 0x2db0 */ DWORD unknown002db0;
+/* 0x2db4 */ DWORD unknown002db4;
+/* 0x2db8 */ DWORD unknown002db8;
+/* 0x2dbc */ DWORD unknown002dbc;
+/* 0x2dc0 */ DWORD unknown002dc0;
+/* 0x2dc4 */ DWORD unknown002dc4;
+/* 0x2dc8 */ DWORD unknown002dc8;
+/* 0x2dcc */ DWORD unknown002dcc;
+/* 0x2dd0 */ DWORD unknown002dd0;
+/* 0x2dd4 */ DWORD unknown002dd4;
+/* 0x2dd8 */ DWORD unknown002dd8;
+/* 0x2ddc */ DWORD unknown002ddc;
+/* 0x2de0 */ DWORD unknown002de0;
+/* 0x2de4 */ DWORD unknown002de4;
+/* 0x2de8 */ DWORD unknown002de8;
+/* 0x2dec */ DWORD unknown002dec;
+/* 0x2df0 */ DWORD unknown002df0;
+/* 0x2df4 */ DWORD unknown002df4;
+/* 0x2df8 */ DWORD unknown002df8;
+/* 0x2dfc */ DWORD unknown002dfc;
+
+/* 0x2e00 */ DWORD unknown002e00;
+/* 0x2e04 */ DWORD unknown002e04;
+/* 0x2e08 */ DWORD unknown002e08;
+/* 0x2e0c */ DWORD unknown002e0c;
+/* 0x2e10 */ DWORD unknown002e10;
+/* 0x2e14 */ DWORD unknown002e14;
+/* 0x2e18 */ DWORD unknown002e18;
+/* 0x2e1c */ DWORD unknown002e1c;
+/* 0x2e20 */ DWORD unknown002e20;
+/* 0x2e24 */ DWORD unknown002e24;
+/* 0x2e28 */ DWORD unknown002e28;
+/* 0x2e2c */ DWORD unknown002e2c;
+/* 0x2e30 */ DWORD unknown002e30;
+/* 0x2e34 */ DWORD unknown002e34;
+/* 0x2e38 */ DWORD unknown002e38;
+/* 0x2e3c */ DWORD unknown002e3c;
+/* 0x2e40 */ DWORD unknown002e40;
+/* 0x2e44 */ DWORD unknown002e44;
+/* 0x2e48 */ DWORD unknown002e48;
+/* 0x2e4c */ DWORD unknown002e4c;
+/* 0x2e50 */ DWORD unknown002e50;
+/* 0x2e54 */ DWORD unknown002e54;
+/* 0x2e58 */ DWORD unknown002e58;
+/* 0x2e5c */ DWORD unknown002e5c;
+/* 0x2e60 */ DWORD unknown002e60;
+/* 0x2e64 */ DWORD unknown002e64;
+/* 0x2e68 */ DWORD unknown002e68;
+/* 0x2e6c */ DWORD unknown002e6c;
+/* 0x2e70 */ DWORD unknown002e70;
+/* 0x2e74 */ DWORD unknown002e74;
+/* 0x2e78 */ DWORD unknown002e78;
+/* 0x2e7c */ DWORD unknown002e7c;
+/* 0x2e80 */ DWORD unknown002e80;
+/* 0x2e84 */ DWORD unknown002e84;
+/* 0x2e88 */ DWORD unknown002e88;
+/* 0x2e8c */ DWORD unknown002e8c;
+/* 0x2e90 */ DWORD unknown002e90;
+/* 0x2e94 */ DWORD unknown002e94;
+/* 0x2e98 */ DWORD unknown002e98;
+/* 0x2e9c */ DWORD unknown002e9c;
+/* 0x2ea0 */ DWORD unknown002ea0;
+/* 0x2ea4 */ DWORD unknown002ea4;
+/* 0x2ea8 */ DWORD unknown002ea8;
+/* 0x2eac */ DWORD unknown002eac;
+/* 0x2eb0 */ DWORD unknown002eb0;
+/* 0x2eb4 */ DWORD unknown002eb4;
+/* 0x2eb8 */ DWORD unknown002eb8;
+/* 0x2ebc */ DWORD unknown002ebc;
+/* 0x2ec0 */ DWORD unknown002ec0;
+/* 0x2ec4 */ DWORD unknown002ec4;
+/* 0x2ec8 */ DWORD unknown002ec8;
+/* 0x2ecc */ DWORD unknown002ecc;
+/* 0x2ed0 */ DWORD unknown002ed0;
+/* 0x2ed4 */ DWORD unknown002ed4;
+/* 0x2ed8 */ DWORD unknown002ed8;
+/* 0x2edc */ DWORD unknown002edc;
+/* 0x2ee0 */ DWORD unknown002ee0;
+/* 0x2ee4 */ DWORD unknown002ee4;
+/* 0x2ee8 */ DWORD unknown002ee8;
+/* 0x2eec */ DWORD unknown002eec;
+/* 0x2ef0 */ DWORD unknown002ef0;
+/* 0x2ef4 */ DWORD unknown002ef4;
+/* 0x2ef8 */ DWORD unknown002ef8;
+/* 0x2efc */ DWORD unknown002efc;
+
+/* 0x2f00 */ DWORD unknown002f00;
+/* 0x2f04 */ DWORD unknown002f04;
+/* 0x2f08 */ DWORD unknown002f08;
+/* 0x2f0c */ DWORD unknown002f0c;
+/* 0x2f10 */ DWORD unknown002f10;
+/* 0x2f14 */ DWORD unknown002f14;
+/* 0x2f18 */ DWORD unknown002f18;
+/* 0x2f1c */ DWORD unknown002f1c;
+/* 0x2f20 */ DWORD unknown002f20;
+/* 0x2f24 */ DWORD unknown002f24;
+/* 0x2f28 */ DWORD unknown002f28;
+/* 0x2f2c */ DWORD unknown002f2c;
+/* 0x2f30 */ DWORD unknown002f30;
+/* 0x2f34 */ DWORD unknown002f34;
+/* 0x2f38 */ DWORD unknown002f38;
+/* 0x2f3c */ DWORD unknown002f3c;
+/* 0x2f40 */ DWORD unknown002f40;
+/* 0x2f44 */ DWORD unknown002f44;
+/* 0x2f48 */ DWORD unknown002f48;
+/* 0x2f4c */ DWORD unknown002f4c;
+/* 0x2f50 */ DWORD unknown002f50;
+/* 0x2f54 */ DWORD unknown002f54;
+/* 0x2f58 */ DWORD unknown002f58;
+/* 0x2f5c */ DWORD unknown002f5c;
+/* 0x2f60 */ DWORD unknown002f60;
+/* 0x2f64 */ DWORD unknown002f64;
+/* 0x2f68 */ DWORD unknown002f68;
+/* 0x2f6c */ DWORD unknown002f6c;
+/* 0x2f70 */ DWORD unknown002f70;
+/* 0x2f74 */ DWORD unknown002f74;
+/* 0x2f78 */ DWORD unknown002f78;
+/* 0x2f7c */ DWORD unknown002f7c;
+/* 0x2f80 */ DWORD unknown002f80;
+/* 0x2f84 */ DWORD unknown002f84;
+/* 0x2f88 */ DWORD unknown002f88;
+/* 0x2f8c */ DWORD unknown002f8c;
+/* 0x2f90 */ DWORD unknown002f90;
+/* 0x2f94 */ DWORD unknown002f94;
+/* 0x2f98 */ DWORD unknown002f98;
+/* 0x2f9c */ DWORD unknown002f9c;
+/* 0x2fa0 */ DWORD unknown002fa0;
+/* 0x2fa4 */ DWORD unknown002fa4;
+/* 0x2fa8 */ DWORD unknown002fa8;
+/* 0x2fac */ DWORD unknown002fac;
+/* 0x2fb0 */ DWORD unknown002fb0;
+/* 0x2fb4 */ DWORD unknown002fb4;
+/* 0x2fb8 */ DWORD unknown002fb8;
+/* 0x2fbc */ DWORD unknown002fbc;
+/* 0x2fc0 */ DWORD unknown002fc0;
+/* 0x2fc4 */ DWORD unknown002fc4;
+/* 0x2fc8 */ DWORD unknown002fc8;
+/* 0x2fcc */ DWORD unknown002fcc;
+/* 0x2fd0 */ DWORD unknown002fd0;
+/* 0x2fd4 */ DWORD unknown002fd4;
+/* 0x2fd8 */ DWORD unknown002fd8;
+/* 0x2fdc */ DWORD unknown002fdc;
+/* 0x2fe0 */ DWORD unknown002fe0;
+/* 0x2fe4 */ DWORD unknown002fe4;
+/* 0x2fe8 */ DWORD unknown002fe8;
+/* 0x2fec */ DWORD unknown002fec;
+/* 0x2ff0 */ DWORD unknown002ff0;
+/* 0x2ff4 */ DWORD unknown002ff4;
+/* 0x2ff8 */ DWORD unknown002ff8;
+/* 0x2ffc */ DWORD unknown002ffc;
+
+/* 0x3000 */ DWORD unknown003000;
+/* 0x3004 */ DWORD unknown003004;
+/* 0x3008 */ DWORD unknown003008;
+/* 0x300c */ DWORD unknown00300c;
+/* 0x3010 */ DWORD unknown003010;
+/* 0x3014 */ DWORD unknown003014;
+/* 0x3018 */ DWORD unknown003018;
+/* 0x301c */ DWORD unknown00301c;
+/* 0x3020 */ DWORD unknown003020;
+/* 0x3024 */ DWORD unknown003024;
+/* 0x3028 */ DWORD unknown003028;
+/* 0x302c */ DWORD unknown00302c;
+/* 0x3030 */ DWORD unknown003030;
+/* 0x3034 */ DWORD unknown003034;
+/* 0x3038 */ DWORD unknown003038;
+/* 0x303c */ DWORD unknown00303c;
+/* 0x3040 */ DWORD unknown003040;
+/* 0x3044 */ DWORD unknown003044;
+/* 0x3048 */ DWORD unknown003048;
+/* 0x304c */ DWORD unknown00304c;
+/* 0x3050 */ DWORD unknown003050;
+/* 0x3054 */ DWORD unknown003054;
+/* 0x3058 */ DWORD unknown003058;
+/* 0x305c */ DWORD unknown00305c;
+/* 0x3060 */ DWORD unknown003060;
+/* 0x3064 */ DWORD unknown003064;
+/* 0x3068 */ DWORD unknown003068;
+/* 0x306c */ DWORD unknown00306c;
+/* 0x3070 */ DWORD unknown003070;
+/* 0x3074 */ DWORD unknown003074;
+/* 0x3078 */ DWORD unknown003078;
+/* 0x307c */ DWORD unknown00307c;
+/* 0x3080 */ DWORD unknown003080;
+/* 0x3084 */ DWORD unknown003084;
+/* 0x3088 */ DWORD unknown003088;
+/* 0x308c */ DWORD unknown00308c;
+/* 0x3090 */ DWORD unknown003090;
+/* 0x3094 */ DWORD unknown003094;
+/* 0x3098 */ DWORD unknown003098;
+/* 0x309c */ DWORD unknown00309c;
+/* 0x30a0 */ DWORD unknown0030a0;
+/* 0x30a4 */ DWORD unknown0030a4;
+/* 0x30a8 */ DWORD unknown0030a8;
+/* 0x30ac */ DWORD unknown0030ac;
+/* 0x30b0 */ DWORD unknown0030b0;
+/* 0x30b4 */ DWORD unknown0030b4;
+/* 0x30b8 */ DWORD unknown0030b8;
+/* 0x30bc */ DWORD unknown0030bc;
+/* 0x30c0 */ DWORD unknown0030c0;
+/* 0x30c4 */ DWORD unknown0030c4;
+/* 0x30c8 */ DWORD unknown0030c8;
+/* 0x30cc */ DWORD unknown0030cc;
+/* 0x30d0 */ DWORD unknown0030d0;
+/* 0x30d4 */ DWORD unknown0030d4;
+/* 0x30d8 */ DWORD unknown0030d8;
+/* 0x30dc */ DWORD unknown0030dc;
+/* 0x30e0 */ DWORD unknown0030e0;
+/* 0x30e4 */ DWORD unknown0030e4;
+/* 0x30e8 */ DWORD unknown0030e8;
+/* 0x30ec */ DWORD unknown0030ec;
+/* 0x30f0 */ DWORD unknown0030f0;
+/* 0x30f4 */ DWORD unknown0030f4;
+/* 0x30f8 */ DWORD unknown0030f8;
+/* 0x30fc */ DWORD unknown0030fc;
+
+/* 0x3100 */ DWORD unknown003100;
+/* 0x3104 */ DWORD unknown003104;
+/* 0x3108 */ DWORD unknown003108;
+/* 0x310c */ DWORD unknown00310c;
+/* 0x3110 */ DWORD unknown003110;
+/* 0x3114 */ DWORD unknown003114;
+/* 0x3118 */ DWORD unknown003118;
+/* 0x311c */ DWORD unknown00311c;
+/* 0x3120 */ DWORD unknown003120;
+/* 0x3124 */ DWORD unknown003124;
+/* 0x3128 */ DWORD unknown003128;
+/* 0x312c */ DWORD unknown00312c;
+/* 0x3130 */ DWORD unknown003130;
+/* 0x3134 */ DWORD unknown003134;
+/* 0x3138 */ DWORD unknown003138;
+/* 0x313c */ DWORD unknown00313c;
+/* 0x3140 */ DWORD unknown003140;
+/* 0x3144 */ DWORD unknown003144;
+/* 0x3148 */ DWORD unknown003148;
+/* 0x314c */ DWORD unknown00314c;
+/* 0x3150 */ DWORD unknown003150;
+/* 0x3154 */ DWORD unknown003154;
+/* 0x3158 */ DWORD unknown003158;
+/* 0x315c */ DWORD unknown00315c;
+/* 0x3160 */ DWORD unknown003160;
+/* 0x3164 */ DWORD unknown003164;
+/* 0x3168 */ DWORD unknown003168;
+/* 0x316c */ DWORD unknown00316c;
+/* 0x3170 */ DWORD unknown003170;
+/* 0x3174 */ DWORD unknown003174;
+/* 0x3178 */ DWORD unknown003178;
+/* 0x317c */ DWORD unknown00317c;
+/* 0x3180 */ DWORD unknown003180;
+/* 0x3184 */ DWORD unknown003184;
+/* 0x3188 */ DWORD unknown003188;
+/* 0x318c */ DWORD unknown00318c;
+/* 0x3190 */ DWORD unknown003190;
+/* 0x3194 */ DWORD unknown003194;
+/* 0x3198 */ DWORD unknown003198;
+/* 0x319c */ DWORD unknown00319c;
+/* 0x31a0 */ DWORD unknown0031a0;
+/* 0x31a4 */ DWORD unknown0031a4;
+/* 0x31a8 */ DWORD unknown0031a8;
+/* 0x31ac */ DWORD unknown0031ac;
+/* 0x31b0 */ DWORD unknown0031b0;
+/* 0x31b4 */ DWORD unknown0031b4;
+/* 0x31b8 */ DWORD unknown0031b8;
+/* 0x31bc */ DWORD unknown0031bc;
+/* 0x31c0 */ DWORD unknown0031c0;
+/* 0x31c4 */ DWORD unknown0031c4;
+/* 0x31c8 */ DWORD unknown0031c8;
+/* 0x31cc */ DWORD unknown0031cc;
+/* 0x31d0 */ DWORD unknown0031d0;
+/* 0x31d4 */ DWORD unknown0031d4;
+/* 0x31d8 */ DWORD unknown0031d8;
+/* 0x31dc */ DWORD unknown0031dc;
+/* 0x31e0 */ DWORD unknown0031e0;
+/* 0x31e4 */ DWORD unknown0031e4;
+/* 0x31e8 */ DWORD unknown0031e8;
+/* 0x31ec */ DWORD unknown0031ec;
+/* 0x31f0 */ DWORD unknown0031f0;
+/* 0x31f4 */ DWORD unknown0031f4;
+/* 0x31f8 */ DWORD unknown0031f8;
+/* 0x31fc */ DWORD unknown0031fc;
+
+/* 0x3200 */ DWORD unknown003200;
+/* 0x3204 */ DWORD unknown003204;
+/* 0x3208 */ DWORD unknown003208;
+/* 0x320c */ DWORD unknown00320c;
+/* 0x3210 */ DWORD unknown003210;
+/* 0x3214 */ DWORD unknown003214;
+/* 0x3218 */ DWORD unknown003218;
+/* 0x321c */ DWORD unknown00321c;
+/* 0x3220 */ DWORD unknown003220;
+/* 0x3224 */ DWORD unknown003224;
+/* 0x3228 */ DWORD unknown003228;
+/* 0x322c */ DWORD unknown00322c;
+/* 0x3230 */ DWORD unknown003230;
+/* 0x3234 */ DWORD unknown003234;
+/* 0x3238 */ DWORD unknown003238;
+/* 0x323c */ DWORD unknown00323c;
+/* 0x3240 */ DWORD unknown003240;
+/* 0x3244 */ DWORD unknown003244;
+/* 0x3248 */ DWORD unknown003248;
+/* 0x324c */ DWORD unknown00324c;
+/* 0x3250 */ DWORD unknown003250;
+/* 0x3254 */ DWORD unknown003254;
+/* 0x3258 */ DWORD unknown003258;
+/* 0x325c */ DWORD unknown00325c;
+/* 0x3260 */ DWORD unknown003260;
+/* 0x3264 */ DWORD unknown003264;
+/* 0x3268 */ DWORD unknown003268;
+/* 0x326c */ DWORD unknown00326c;
+/* 0x3270 */ DWORD unknown003270;
+/* 0x3274 */ DWORD unknown003274;
+/* 0x3278 */ DWORD unknown003278;
+/* 0x327c */ DWORD unknown00327c;
+/* 0x3280 */ DWORD unknown003280;
+/* 0x3284 */ DWORD unknown003284;
+/* 0x3288 */ DWORD unknown003288;
+/* 0x328c */ DWORD unknown00328c;
+/* 0x3290 */ DWORD unknown003290;
+/* 0x3294 */ DWORD unknown003294;
+/* 0x3298 */ DWORD unknown003298;
+/* 0x329c */ DWORD unknown00329c;
+/* 0x32a0 */ DWORD unknown0032a0;
+/* 0x32a4 */ DWORD unknown0032a4;
+/* 0x32a8 */ DWORD unknown0032a8;
+/* 0x32ac */ DWORD unknown0032ac;
+/* 0x32b0 */ DWORD unknown0032b0;
+/* 0x32b4 */ DWORD unknown0032b4;
+/* 0x32b8 */ DWORD unknown0032b8;
+/* 0x32bc */ DWORD unknown0032bc;
+/* 0x32c0 */ DWORD unknown0032c0;
+/* 0x32c4 */ DWORD unknown0032c4;
+/* 0x32c8 */ DWORD unknown0032c8;
+/* 0x32cc */ DWORD unknown0032cc;
+/* 0x32d0 */ DWORD unknown0032d0;
+/* 0x32d4 */ DWORD unknown0032d4;
+/* 0x32d8 */ DWORD unknown0032d8;
+/* 0x32dc */ DWORD unknown0032dc;
+/* 0x32e0 */ DWORD unknown0032e0;
+/* 0x32e4 */ DWORD unknown0032e4;
+/* 0x32e8 */ DWORD unknown0032e8;
+/* 0x32ec */ DWORD unknown0032ec;
+/* 0x32f0 */ DWORD unknown0032f0;
+/* 0x32f4 */ DWORD unknown0032f4;
+/* 0x32f8 */ DWORD unknown0032f8;
+/* 0x32fc */ DWORD unknown0032fc;
+
+/* 0x3300 */ DWORD unknown003300;
+/* 0x3304 */ DWORD unknown003304;
+/* 0x3308 */ DWORD unknown003308;
+/* 0x330c */ DWORD unknown00330c;
+/* 0x3310 */ DWORD unknown003310;
+/* 0x3314 */ DWORD unknown003314;
+/* 0x3318 */ DWORD unknown003318;
+/* 0x331c */ DWORD unknown00331c;
+/* 0x3320 */ DWORD unknown003320;
+/* 0x3324 */ DWORD unknown003324;
+/* 0x3328 */ DWORD unknown003328;
+/* 0x332c */ DWORD unknown00332c;
+} D3D9HALDEVICE, FAR *LPD3D9HALDEVICE;
+
+#endif // _D3D9_HALDEVICE_H_
diff --git a/reactos/dll/directx/d3d9/d3d9_impl.c b/reactos/dll/directx/d3d9/d3d9_impl.c
index 9bb2109883b..b593383c4a3 100644
--- a/reactos/dll/directx/d3d9/d3d9_impl.c
+++ b/reactos/dll/directx/d3d9/d3d9_impl.c
@@ -18,9 +18,9 @@
#define UNLOCK_D3D9() LeaveCriticalSection(&This->d3d9_cs);
/* Convert a IDirect3D9 pointer safely to the internal implementation struct */
-static LPDIRECT3D9_INT impl_from_IDirect3D9(LPDIRECT3D9 iface)
+static LPDIRECT3D9_INT IDirect3D9ToImpl(LPDIRECT3D9 iface)
{
- if (IsBadWritePtr(iface, sizeof(LPDIRECT3D9_INT)))
+ if (NULL == iface)
return NULL;
return (LPDIRECT3D9_INT)((ULONG_PTR)iface - FIELD_OFFSET(DIRECT3D9_INT, lpVtbl));
@@ -29,7 +29,7 @@ static LPDIRECT3D9_INT impl_from_IDirect3D9(LPDIRECT3D9 iface)
/* IDirect3D9: IUnknown implementation */
static HRESULT WINAPI IDirect3D9Impl_QueryInterface(LPDIRECT3D9 iface, REFIID riid, LPVOID* ppvObject)
{
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirect3D9))
{
@@ -44,7 +44,7 @@ static HRESULT WINAPI IDirect3D9Impl_QueryInterface(LPDIRECT3D9 iface, REFIID ri
static ULONG WINAPI IDirect3D9Impl_AddRef(LPDIRECT3D9 iface)
{
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
ULONG ref = InterlockedIncrement(&This->lRefCnt);
return ref;
@@ -52,7 +52,7 @@ static ULONG WINAPI IDirect3D9Impl_AddRef(LPDIRECT3D9 iface)
static ULONG WINAPI IDirect3D9Impl_Release(LPDIRECT3D9 iface)
{
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
ULONG ref = InterlockedDecrement(&This->lRefCnt);
if (ref == 0)
@@ -91,7 +91,7 @@ static UINT WINAPI IDirect3D9Impl_GetAdapterCount(LPDIRECT3D9 iface)
{
UINT NumDisplayAdapters;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
NumDisplayAdapters = This->NumDisplayAdapters;
@@ -130,7 +130,7 @@ static UINT WINAPI IDirect3D9Impl_GetAdapterCount(LPDIRECT3D9 iface)
HRESULT WINAPI IDirect3D9Impl_GetAdapterIdentifier(LPDIRECT3D9 iface, UINT Adapter, DWORD Flags,
D3DADAPTER_IDENTIFIER9* pIdentifier)
{
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -147,7 +147,7 @@ HRESULT WINAPI IDirect3D9Impl_GetAdapterIdentifier(LPDIRECT3D9 iface, UINT Adapt
return D3DERR_INVALIDCALL;
}
- if (IsBadWritePtr(pIdentifier, sizeof(D3DADAPTER_IDENTIFIER9)))
+ if (NULL == pIdentifier)
{
DPRINT1("Invalid pIdentifier parameter specified");
UNLOCK_D3D9();
@@ -193,7 +193,7 @@ static UINT WINAPI IDirect3D9Impl_GetAdapterModeCount(LPDIRECT3D9 iface, UINT Ad
{
UINT AdapterModeCount;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -258,7 +258,7 @@ static HRESULT WINAPI IDirect3D9Impl_EnumAdapterModes(LPDIRECT3D9 iface, UINT Ad
UINT Mode, D3DDISPLAYMODE* pMode)
{
const D3DDISPLAYMODE* pMatchingDisplayFormat;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -268,7 +268,7 @@ static HRESULT WINAPI IDirect3D9Impl_EnumAdapterModes(LPDIRECT3D9 iface, UINT Ad
return D3DERR_INVALIDCALL;
}
- if (IsBadWritePtr(pMode, sizeof(D3DDISPLAYMODE)))
+ if (NULL == pMode)
{
DPRINT1("Invalid pMode parameter specified");
UNLOCK_D3D9();
@@ -329,7 +329,7 @@ static HRESULT WINAPI IDirect3D9Impl_EnumAdapterModes(LPDIRECT3D9 iface, UINT Ad
*/
static HRESULT WINAPI IDirect3D9Impl_GetAdapterDisplayMode(LPDIRECT3D9 iface, UINT Adapter, D3DDISPLAYMODE* pMode)
{
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -339,7 +339,7 @@ static HRESULT WINAPI IDirect3D9Impl_GetAdapterDisplayMode(LPDIRECT3D9 iface, UI
return D3DERR_INVALIDCALL;
}
- if (IsBadWritePtr(pMode, sizeof(D3DDISPLAYMODE)))
+ if (NULL == pMode)
{
DPRINT1("Invalid pMode parameter specified");
UNLOCK_D3D9();
@@ -393,7 +393,7 @@ static HRESULT WINAPI IDirect3D9Impl_CheckDeviceType(LPDIRECT3D9 iface, UINT Ada
{
HRESULT hResult;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -493,7 +493,7 @@ static HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormat(LPDIRECT3D9 iface, UINT A
BOOL bIsTextureRType = FALSE;
HRESULT hResult;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -687,7 +687,7 @@ static HRESULT WINAPI IDirect3D9Impl_CheckDepthStencilMatch(LPDIRECT3D9 iface, U
{
HRESULT hResult;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -756,7 +756,7 @@ static HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormatConversion(LPDIRECT3D9 ifa
D3DFORMAT SourceFormat, D3DFORMAT TargetFormat)
{
HRESULT hResult;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -827,7 +827,7 @@ static HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormatConversion(LPDIRECT3D9 ifa
static HRESULT WINAPI IDirect3D9Impl_GetDeviceCaps(LPDIRECT3D9 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps)
{
HRESULT hResult;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -837,7 +837,7 @@ static HRESULT WINAPI IDirect3D9Impl_GetDeviceCaps(LPDIRECT3D9 iface, UINT Adapt
return D3DERR_INVALIDCALL;
}
- if (IsBadWritePtr(pCaps, sizeof(D3DCAPS9)))
+ if (NULL == pCaps)
{
DPRINT1("Invalid pCaps parameter specified");
UNLOCK_D3D9();
@@ -873,7 +873,7 @@ static HMONITOR WINAPI IDirect3D9Impl_GetAdapterMonitor(LPDIRECT3D9 iface, UINT
{
HMONITOR hAdapterMonitor = NULL;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter < This->NumDisplayAdapters)
@@ -937,7 +937,7 @@ static HRESULT WINAPI IDirect3D9Impl_CreateDevice(LPDIRECT3D9 iface, UINT Adapte
DWORD NumAdaptersToCreate;
HRESULT Ret;
- LPDIRECT3D9_INT This = impl_from_IDirect3D9(iface);
+ LPDIRECT3D9_INT This = IDirect3D9ToImpl(iface);
LOCK_D3D9();
if (Adapter >= This->NumDisplayAdapters)
@@ -1005,7 +1005,7 @@ static HRESULT WINAPI IDirect3D9Impl_CreateDevice(LPDIRECT3D9 iface, UINT Adapte
return D3DERR_INVALIDCALL;
}
- if (IsBadWritePtr(ppReturnedDeviceInterface, sizeof(IDirect3DDevice9*)))
+ if (NULL == ppReturnedDeviceInterface)
{
DPRINT1("Invalid ppReturnedDeviceInterface parameter specified");
UNLOCK_D3D9();
diff --git a/reactos/dll/directx/d3d9/d3d9_puredevice.c b/reactos/dll/directx/d3d9/d3d9_puredevice.c
new file mode 100644
index 00000000000..a70aceeecea
--- /dev/null
+++ b/reactos/dll/directx/d3d9/d3d9_puredevice.c
@@ -0,0 +1,859 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS ReactX
+ * FILE: dll/directx/d3d9/d3d9_puredevice.c
+ * PURPOSE: d3d9.dll internal device functions
+ * PROGRAMERS: Gregor Gullwi
+ */
+#include "d3d9_puredevice.h"
+#include
+
+#define LOCK_D3DDEVICE9() if (This->bLockDevice) EnterCriticalSection(&This->CriticalSection);
+#define UNLOCK_D3DDEVICE9() if (This->bLockDevice) LeaveCriticalSection(&This->CriticalSection);
+
+/* Convert a IDirect3D9 pointer safely to the internal implementation struct */
+/*static LPD3D9PUREDEVICE IDirect3DDevice9ToImpl(LPDIRECT3DDEVICE9 iface)
+{
+ if (NULL == iface)
+ return NULL;
+
+ return (LPD3D9PUREDEVICE)((ULONG_PTR)iface - FIELD_OFFSET(D3D9PUREDEVICE, BaseDevice.lpVtbl));
+}*/
+
+/* IDirect3DDevice9 public interface */
+HRESULT WINAPI IDirect3DDevice9Pure_SetRenderTarget(LPDIRECT3DDEVICE9 iface, DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetRenderTarget(LPDIRECT3DDEVICE9 iface, DWORD RenderTargetIndex,IDirect3DSurface9** ppRenderTarget)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetDepthStencilSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pNewZStencil)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetDepthStencilSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9** ppZStencilSurface)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_BeginScene(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_EndScene(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_Clear(LPDIRECT3DDEVICE9 iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_MultiplyTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetViewport(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetViewport(LPDIRECT3DDEVICE9 iface, D3DVIEWPORT9* pViewport)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetMaterial(LPDIRECT3DDEVICE9 iface, CONST D3DMATERIAL9* pMaterial)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetMaterial(LPDIRECT3DDEVICE9 iface, D3DMATERIAL9* pMaterial)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST D3DLIGHT9* pLight)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, D3DLIGHT9* pLight)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_LightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL Enable)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetLightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL* pEnable)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST float* pPlane)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, float* pPlane)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD* pValue)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_CreateStateBlock(LPDIRECT3DDEVICE9 iface, D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_BeginStateBlock(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_EndStateBlock(LPDIRECT3DDEVICE9 iface, IDirect3DStateBlock9** ppSB)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetClipStatus(LPDIRECT3DDEVICE9 iface, CONST D3DCLIPSTATUS9* pClipStatus)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetClipStatus(LPDIRECT3DDEVICE9 iface, D3DCLIPSTATUS9* pClipStatus)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetTexture(LPDIRECT3DDEVICE9 iface, DWORD Stage, IDirect3DBaseTexture9** ppTexture)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetTexture(LPDIRECT3DDEVICE9 iface, DWORD Stage, IDirect3DBaseTexture9* pTexture)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_ValidateDevice(LPDIRECT3DDEVICE9 iface, DWORD* pNumPasses)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPaletteEntries(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber, CONST PALETTEENTRY* pEntries)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetPaletteEntries(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber, PALETTEENTRY* pEntries)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetCurrentTexturePalette(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetCurrentTexturePalette(LPDIRECT3DDEVICE9 iface, UINT* pPaletteNumber)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetScissorRect(LPDIRECT3DDEVICE9 iface, CONST RECT* pRect)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetScissorRect(LPDIRECT3DDEVICE9 iface, RECT* pRect)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface, BOOL bSoftware)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+BOOL WINAPI IDirect3DDevice9Pure_GetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return TRUE;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetNPatchMode(LPDIRECT3DDEVICE9 iface, float nSegments)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+float WINAPI IDirect3DDevice9Pure_GetNPatchMode(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return 0.0f;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawPrimitive(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawPrimitiveUP(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawIndexedPrimitiveUP(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_ProcessVertices(LPDIRECT3DDEVICE9 iface, UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_CreateVertexDeclaration(LPDIRECT3DDEVICE9 iface, CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexDeclaration(LPDIRECT3DDEVICE9 iface, IDirect3DVertexDeclaration9* pDecl)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexDeclaration(LPDIRECT3DDEVICE9 iface, IDirect3DVertexDeclaration9** ppDecl)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetFVF(LPDIRECT3DDEVICE9 iface, DWORD FVF)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetFVF(LPDIRECT3DDEVICE9 iface, DWORD* pFVF)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_CreateVertexShader(LPDIRECT3DDEVICE9 iface, CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9* pShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9** ppShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* pOffsetInBytes, UINT* pStride)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,UINT Setting)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, UINT* pSetting)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetIndices(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9* pIndexData)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetIndices(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9** ppIndexData)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_CreatePixelShader(LPDIRECT3DDEVICE9 iface, CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9* pShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9** ppShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawRectPatch(LPDIRECT3DDEVICE9 iface, UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawTriPatch(LPDIRECT3DDEVICE9 iface, UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DeletePatch(LPDIRECT3DDEVICE9 iface, UINT Handle)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+/* IDirect3DDevice9 private interface */
+HRESULT WINAPI IDirect3DDevice9Pure_SetRenderStateWorker(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetTextureStageStateInt(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetSamplerStateInt(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetMaterialInt(LPDIRECT3DDEVICE9 iface, CONST D3DMATERIAL9* pMaterial)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderInt(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9* pShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantFInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantIInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantBInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderInt(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9* pShader)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantFInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST float* pConstantData,UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantIInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST int* pConstantData,UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantBInt(LPDIRECT3DDEVICE9 iface, UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetFVFInt(LPDIRECT3DDEVICE9 iface, DWORD FVF)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetTextureInt(LPDIRECT3DDEVICE9 iface, DWORD Stage,IDirect3DBaseTexture9* pTexture)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetIndicesInt(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9* pIndexData)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetStreamSourceInt(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetStreamSourceFreqInt(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,UINT Setting)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9Pure_UpdateRenderState(LPDIRECT3DDEVICE9 iface, DWORD Unknown1, DWORD Unknown2)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetTransformInt(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_MultiplyTransformInt(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetClipPlaneInt(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST float* pPlane)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9Pure_UpdateDriverState(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetViewportInt(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9Pure_SetStreamSourceWorker(LPDIRECT3DDEVICE9 iface, LPVOID UnknownStreamData)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantFWorker(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantIWorker(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantBWorker(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9Pure_DrawPrimitiveWorker(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetLightInt(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST D3DLIGHT9* pLight)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_LightEnableInt(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL Enable)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_SetRenderStateInt(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_DrawPrimitiveUPInt(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_ClearInt(LPDIRECT3DDEVICE9 iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9Pure_DrawPrimitivesWorker(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+VOID WINAPI IDirect3DDevice9Pure_UpdateVertexShader(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_ValidateDrawCall(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT Unknown1, UINT Unknown2, UINT Unknown3, INT Unknown4, UINT Unknown5, INT Unknown6)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+HRESULT WINAPI IDirect3DDevice9Pure_Init(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+
+ return D3D_OK;
+}
+
+VOID WINAPI IDirect3DDevice9Pure_InitState(LPDIRECT3DDEVICE9 iface, INT State)
+{
+ UNIMPLEMENTED
+}
+
+VOID WINAPI IDirect3DDevice9Pure_Destroy(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
+
+VOID WINAPI IDirect3DDevice9Pure_VirtualDestructor(LPDIRECT3DDEVICE9 iface)
+{
+ UNIMPLEMENTED
+}
diff --git a/reactos/dll/directx/d3d9/d3d9_puredevice.h b/reactos/dll/directx/d3d9/d3d9_puredevice.h
new file mode 100644
index 00000000000..fea2d889288
--- /dev/null
+++ b/reactos/dll/directx/d3d9/d3d9_puredevice.h
@@ -0,0 +1,418 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS ReactX
+ * FILE: dll/directx/d3d9/d3d9_haldevice.h
+ * PURPOSE: d3d9.dll internal device structures
+ * PROGRAMERS: Gregor Gullwi
+ */
+#ifndef _D3D9_PUREDEVICE_H_
+#define _D3D9_PUREDEVICE_H_
+
+#include "d3d9_device.h"
+
+typedef struct _D3D9PUREDEVICE
+{
+/* 0x0000 - 0x0000 */ DIRECT3DDEVICE9_INT BaseDevice;
+/* 0x1f48 */ DWORD unknown002002;
+/* 0x1f4c */ DWORD unknown002003;
+/* 0x1f50 */ DWORD unknown002004;
+/* 0x1f54 */ DWORD unknown002005;
+/* 0x1f58 */ DWORD unknown002006;
+/* 0x1f5c */ DWORD unknown002007;
+/* 0x1f60 */ DWORD unknown002008;
+/* 0x1f64 */ DWORD unknown002009;
+/* 0x1f68 */ DWORD unknown002010;
+/* 0x1f6c */ DWORD unknown002011;
+/* 0x1f70 */ DWORD unknown002012;
+/* 0x1f74 */ DWORD unknown002013;
+/* 0x1f78 */ DWORD unknown002014;
+/* 0x1f7c */ DWORD unknown002015;
+/* 0x1f80 */ DWORD unknown002016;
+/* 0x1f84 */ DWORD unknown002017;
+/* 0x1f88 */ DWORD unknown002018;
+/* 0x1f8c */ DWORD unknown002019;
+/* 0x1f90 */ DWORD unknown002020;
+/* 0x1f94 */ DWORD unknown002021;
+/* 0x1f98 */ DWORD unknown002022;
+/* 0x1f9c */ DWORD unknown002023;
+/* 0x1fa0 */ DWORD unknown002024;
+/* 0x1fa4 */ DWORD unknown002025;
+/* 0x1fa8 - 0x1fe0 */ DWORD unknown002026;
+/* 0x1fac */ DWORD unknown002027;
+/* 0x1fb0 */ LPDWORD unknown002028;
+/* 0x1fb4 */ DWORD unknown002029;
+/* 0x1fb8 */ DWORD unknown002030;
+/* 0x1fbc */ DWORD unknown002031;
+/* 0x1fc0 */ DWORD unknown002032;
+/* 0x1fc4 */ DWORD unknown002033;
+/* 0x1fc8 */ DWORD unknown002034;
+/* 0x1fcc */ DWORD unknown002035;
+/* 0x1fd0 */ DWORD unknown002036;
+/* 0x1fd4 */ DWORD unknown002037;
+/* 0x1fd8 */ DWORD unknown002038;
+/* 0x1fdc */ DWORD unknown002039;
+/* 0x1fe0 */ DWORD unknown002040;
+/* 0x1fe4 */ DWORD unknown002041;
+/* 0x1fe8 */ DWORD unknown002042;
+/* 0x1fec */ DWORD unknown002043;
+/* 0x1ff0 */ DWORD unknown002044;
+/* 0x1ff4 */ DWORD unknown002045;
+/* 0x1ff8 */ DWORD unknown002046;
+/* 0x1ffc */ DWORD unknown002047;
+/* 0x2000 */ DWORD unknown002048;
+/* 0x2004 */ DWORD unknown002049;
+/* 0x2008 */ DWORD unknown002050;
+/* 0x200c */ DWORD unknown002051;
+/* 0x2010 */ DWORD unknown002052;
+/* 0x2014 */ DWORD unknown002053;
+/* 0x2018 */ DWORD unknown002054;
+/* 0x201c */ DWORD unknown002055;
+/* 0x2020 */ DWORD unknown002056;
+/* 0x2024 */ DWORD unknown002057;
+/* 0x2028 */ DWORD unknown002058;
+/* 0x202c */ DWORD unknown002059;
+/* 0x2030 */ DWORD unknown002060;
+/* 0x2034 */ DWORD unknown002061;
+/* 0x2038 */ DWORD unknown002062;
+/* 0x203c */ DWORD unknown002063;
+/* 0x2040 */ DWORD unknown002064;
+/* 0x2044 */ DWORD unknown002065;
+/* 0x2048 */ DWORD unknown002066;
+/* 0x204c */ DWORD unknown002067;
+/* 0x2050 */ DWORD unknown002068;
+/* 0x2054 */ DWORD unknown002069;
+/* 0x2058 */ DWORD unknown002070;
+/* 0x205c */ DWORD unknown002071;
+/* 0x2060 */ DWORD unknown002072;
+/* 0x2064 */ DWORD unknown002073;
+/* 0x2068 */ DWORD unknown002074;
+/* 0x206c */ DWORD unknown002075;
+/* 0x2070 */ DWORD unknown002076;
+/* 0x2074 */ DWORD unknown002077;
+/* 0x2078 */ DWORD unknown002078;
+/* 0x207c */ DWORD unknown002079;
+/* 0x2080 */ DWORD unknown002080;
+/* 0x2084 */ DWORD unknown002081;
+/* 0x2088 */ DWORD unknown002082;
+/* 0x208c */ DWORD unknown002083; // SurfaceManager?
+/* 0x2090 */ DWORD unknown002084;
+/* 0x2094 */ DWORD unknown002085;
+/* 0x2098 */ DWORD unknown002086;
+/* 0x209c */ DWORD unknown002087;
+/* 0x20a0 */ DWORD unknown002088;
+/* 0x20a4 */ DWORD unknown002089;
+/* 0x20a8 */ DWORD unknown002090;
+/* 0x20ac */ DWORD unknown002091;
+/* 0x20b0 */ DWORD unknown002092;
+/* 0x20b4 */ DWORD unknown002093;
+/* 0x20b8 */ DWORD unknown002094;
+/* 0x20bc */ DWORD unknown002095;
+/* 0x20c0 */ DWORD unknown002096;
+/* 0x20c4 */ DWORD unknown002097;
+/* 0x20c8 */ DWORD unknown002098;
+/* 0x20cc */ DWORD unknown002099;
+/* 0x20d0 */ DWORD unknown002100; // VSOutputDecl?
+/* 0x20d4 */ DWORD unknown002101;
+/* 0x20d8 */ DWORD unknown002102;
+/* 0x20dc */ DWORD unknown002103;
+/* 0x20e0 */ DWORD unknown002104;
+/* 0x20e4 */ DWORD unknown002105;
+/* 0x20e8 */ DWORD unknown002106;
+/* 0x20ec */ DWORD unknown002107;
+/* 0x20f0 */ DWORD unknown002108;
+/* 0x20f4 */ DWORD unknown002109;
+/* 0x20f8 */ DWORD unknown002110;
+/* 0x20fc */ DWORD unknown002111;
+/* 0x2100 */ DWORD unknown002112;
+/* 0x2104 */ DWORD unknown002113;
+/* 0x2108 */ DWORD unknown002114;
+/* 0x210c */ DWORD unknown002115;
+/* 0x2110 */ DWORD unknown002116;
+/* 0x2114 */ DWORD unknown002117;
+/* 0x2118 */ DWORD unknown002118;
+/* 0x211c */ DWORD unknown002119;
+/* 0x2120 */ DWORD unknown002120;
+/* 0x2124 */ DWORD unknown002121;
+/* 0x2128 */ DWORD unknown002122;
+/* 0x212c */ DWORD unknown002123;
+/* 0x2130 */ DWORD unknown002124;
+/* 0x2134 */ DWORD unknown002125;
+/* 0x2138 */ DWORD unknown002126;
+/* 0x213c */ DWORD unknown002127;
+/* 0x2140 */ DWORD unknown002128;
+/* 0x2144 */ DWORD unknown002129;
+/* 0x2148 */ DWORD unknown002130;
+/* 0x214c */ DWORD unknown002131;
+/* 0x2150 */ DWORD unknown002132;
+/* 0x2154 */ DWORD unknown002133;
+/* 0x2158 */ DWORD unknown002134;
+/* 0x215c */ DWORD unknown002135;
+/* 0x2160 */ DWORD unknown002136;
+/* 0x2164 */ DWORD unknown002137;
+/* 0x2168 */ DWORD unknown002138;
+/* 0x216c */ DWORD unknown002139;
+/* 0x2170 */ DWORD unknown002140;
+/* 0x2174 */ DWORD unknown002141;
+/* 0x2178 */ DWORD unknown002142;
+/* 0x217c */ DWORD unknown002143;
+/* 0x2180 */ DWORD unknown002144;
+/* 0x2184 */ DWORD unknown002145;
+/* 0x2188 */ DWORD unknown002146;
+/* 0x218c */ DWORD unknown002147;
+/* 0x2190 */ DWORD unknown002148;
+/* 0x2194 */ DWORD unknown002149;
+/* 0x2198 */ DWORD unknown002150;
+/* 0x219c */ DWORD unknown002151;
+/* 0x21a0 */ DWORD unknown002152;
+/* 0x21a4 */ DWORD unknown002153;
+/* 0x21a8 */ DWORD unknown002154;
+/* 0x21ac */ DWORD unknown002155;
+/* 0x21b0 */ DWORD unknown002156;
+/* 0x21b4 */ DWORD unknown002157;
+/* 0x21b8 */ DWORD unknown002158;
+/* 0x21bc */ DWORD unknown002159;
+/* 0x21c0 */ DWORD unknown002160;
+/* 0x21c4 */ DWORD unknown002161;
+/* 0x21c8 */ DWORD unknown002162;
+/* 0x21cc */ DWORD unknown002163;
+/* 0x21d0 */ DWORD unknown002164;
+/* 0x21d4 */ DWORD unknown002165;
+/* 0x21d8 */ DWORD unknown002166;
+/* 0x21dc */ DWORD unknown002167;
+/* 0x21e0 */ DWORD unknown002168;
+/* 0x21e4 */ DWORD unknown002169;
+/* 0x21e8 */ DWORD unknown002170;
+/* 0x21ec */ DWORD unknown002171;
+/* 0x21f0 */ DWORD unknown002172;
+/* 0x21f4 */ DWORD unknown002173;
+/* 0x21f8 */ DWORD unknown002174;
+/* 0x21fc */ DWORD unknown002175;
+/* 0x2200 */ DWORD unknown002176;
+/* 0x2204 */ DWORD unknown002177;
+/* 0x2208 */ DWORD unknown002178;
+/* 0x220c */ DWORD unknown002179;
+/* 0x2210 */ DWORD unknown002180;
+/* 0x2214 */ DWORD unknown002181;
+/* 0x2218 */ DWORD unknown002182;
+/* 0x221c */ DWORD unknown002183;
+/* 0x2220 */ DWORD unknown002184;
+/* 0x2224 */ DWORD unknown002185;
+/* 0x2228 */ DWORD unknown002186;
+/* 0x222c */ DWORD unknown002187;
+/* 0x2230 */ DWORD unknown002188;
+/* 0x2234 */ DWORD unknown002189;
+/* 0x2238 */ DWORD unknown002190;
+/* 0x223c */ DWORD unknown002191;
+/* 0x2240 */ DWORD unknown002192;
+/* 0x2244 */ DWORD unknown002193;
+/* 0x2248 */ DWORD unknown002194;
+/* 0x224c */ DWORD unknown002195;
+/* 0x2250 */ DWORD unknown002196;
+/* 0x2254 */ DWORD unknown002197;
+/* 0x2258 */ DWORD unknown002198;
+/* 0x225c */ DWORD unknown002199;
+/* 0x2260 */ DWORD unknown002200;
+/* 0x2264 */ DWORD unknown002201;
+/* 0x2268 */ DWORD unknown002202;
+/* 0x226c */ DWORD unknown002203;
+/* 0x2270 */ DWORD unknown002204;
+/* 0x2274 */ DWORD unknown002205;
+/* 0x2278 */ DWORD unknown002206;
+/* 0x227c */ DWORD unknown002207;
+/* 0x2280 */ DWORD unknown002208;
+/* 0x2284 */ DWORD unknown002209;
+/* 0x2288 */ DWORD unknown002210;
+/* 0x228c */ DWORD unknown002211;
+/* 0x2290 */ DWORD unknown002212;
+/* 0x2294 */ DWORD unknown002213;
+/* 0x2298 */ DWORD unknown002214;
+/* 0x229c */ DWORD unknown002215;
+/* 0x22a0 */ DWORD unknown002216;
+/* 0x22a4 */ DWORD unknown002217;
+/* 0x22a8 */ DWORD unknown002218;
+/* 0x22ac */ DWORD unknown002219;
+/* 0x22b0 */ DWORD unknown002220;
+/* 0x22b4 */ DWORD unknown002221;
+/* 0x22b8 */ DWORD unknown002222;
+/* 0x22bc */ DWORD unknown002223;
+/* 0x22c0 */ DWORD unknown002224;
+/* 0x22c4 */ DWORD unknown002225;
+/* 0x22c8 */ DWORD unknown002226;
+/* 0x22cc */ DWORD unknown002227;
+/* 0x22d0 */ DWORD unknown002228;
+/* 0x22d4 */ DWORD unknown002229;
+/* 0x22d8 */ DWORD unknown002230;
+/* 0x22dc */ DWORD unknown002231;
+/* 0x22e0 */ DWORD unknown002232;
+/* 0x22e4 */ DWORD unknown002233;
+/* 0x22e8 */ DWORD unknown002234;
+/* 0x22ec */ DWORD unknown002235;
+/* 0x22f0 */ DWORD unknown002236;
+/* 0x22f4 */ DWORD unknown002237;
+/* 0x22f8 */ DWORD unknown002238;
+/* 0x22fc */ DWORD unknown002239;
+/* 0x2300 */ DWORD unknown002240;
+/* 0x2304 */ DWORD unknown002241;
+/* 0x2308 */ DWORD unknown002242;
+/* 0x230c */ DWORD unknown002243;
+/* 0x2310 */ DWORD unknown002244;
+/* 0x2314 */ DWORD unknown002245;
+/* 0x2318 */ DWORD unknown002246;
+/* 0x231c */ DWORD unknown002247;
+/* 0x2320 */ DWORD unknown002248;
+/* 0x2324 */ DWORD unknown002249;
+/* 0x2328 */ DWORD unknown002250;
+/* 0x232c */ DWORD unknown002251;
+/* 0x2330 */ DWORD unknown002252;
+/* 0x2334 */ DWORD unknown002253;
+/* 0x2338 */ DWORD unknown002254;
+/* 0x233c */ DWORD unknown002255;
+/* 0x2340 */ DWORD unknown002256;
+/* 0x2344 */ DWORD unknown002257;
+/* 0x2348 */ DWORD unknown002258;
+/* 0x234c */ DWORD unknown002259;
+/* 0x2350 */ DWORD unknown002260;
+/* 0x2354 */ DWORD unknown002261;
+/* 0x2358 */ DWORD unknown002262;
+/* 0x235c */ DWORD unknown002263;
+/* 0x2360 */ DWORD unknown002264;
+/* 0x2364 */ DWORD unknown002265;
+/* 0x2368 */ DWORD unknown002266;
+/* 0x236c */ DWORD unknown002267;
+/* 0x2370 */ DWORD unknown002268;
+/* 0x2374 */ DWORD unknown002269;
+/* 0x2378 */ DWORD unknown002270;
+/* 0x237c */ DWORD unknown002271;
+/* 0x2380 */ DWORD unknown002272;
+/* 0x2384 */ DWORD unknown002273;
+/* 0x2388 */ DWORD unknown002274;
+/* 0x238c */ DWORD unknown002275;
+/* 0x2390 */ DWORD unknown002276;
+/* 0x2394 */ DWORD unknown002277;
+/* 0x2398 */ DWORD unknown002278;
+/* 0x239c */ DWORD unknown002279;
+/* 0x23a0 */ DWORD unknown002280;
+/* 0x23a4 */ DWORD unknown002281;
+/* 0x23a8 */ DWORD unknown002282;
+/* 0x23ac */ DWORD unknown002283;
+/* 0x23b0 */ DWORD unknown002284;
+/* 0x23b4 */ DWORD unknown002285;
+/* 0x23b8 */ DWORD unknown002286;
+/* 0x23bc */ DWORD unknown002287;
+/* 0x23c0 */ DWORD unknown002288;
+/* 0x23c4 */ DWORD unknown002289;
+/* 0x23c8 */ DWORD unknown002290;
+/* 0x23cc */ DWORD unknown002291;
+/* 0x23d0 */ DWORD unknown002292;
+/* 0x23d4 */ DWORD unknown002293;
+/* 0x23d8 */ DWORD unknown002294;
+/* 0x23dc */ DWORD unknown002295;
+/* 0x23e0 */ DWORD unknown002296;
+/* 0x23e4 */ DWORD unknown002297;
+/* 0x23e8 */ DWORD unknown002298;
+/* 0x23ec */ DWORD unknown002299;
+/* 0x23f0 */ DWORD unknown002300;
+/* 0x23f4 */ DWORD unknown002301;
+/* 0x23f8 */ DWORD unknown002302;
+/* 0x23fc */ DWORD unknown002303;
+/* 0x2400 */ DWORD unknown002304;
+/* 0x2404 */ DWORD unknown002305;
+/* 0x2408 */ DWORD unknown002306;
+/* 0x240c */ DWORD unknown002307;
+/* 0x2410 */ DWORD unknown002308;
+/* 0x2414 */ DWORD unknown002309;
+/* 0x2418 */ DWORD unknown002310;
+/* 0x241c */ DWORD unknown002311;
+/* 0x2420 */ DWORD unknown002312;
+/* 0x2424 */ DWORD unknown002313;
+/* 0x2428 */ DWORD unknown002314;
+/* 0x242c */ DWORD unknown002315;
+/* 0x2430 */ DWORD unknown002316;
+/* 0x2434 */ DWORD unknown002317;
+} D3D9PUREDEVICE, FAR *LPD3D9PUREDEVICE;
+
+/* IDirect3D9Device public interface */
+HRESULT WINAPI IDirect3DDevice9Pure_SetRenderTarget(LPDIRECT3DDEVICE9 iface, DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget);
+HRESULT WINAPI IDirect3DDevice9Pure_GetRenderTarget(LPDIRECT3DDEVICE9 iface, DWORD RenderTargetIndex,IDirect3DSurface9** ppRenderTarget);
+HRESULT WINAPI IDirect3DDevice9Pure_SetDepthStencilSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9* pNewZStencil);
+HRESULT WINAPI IDirect3DDevice9Pure_GetDepthStencilSurface(LPDIRECT3DDEVICE9 iface, IDirect3DSurface9** ppZStencilSurface);
+HRESULT WINAPI IDirect3DDevice9Pure_BeginScene(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Pure_EndScene(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Pure_Clear(LPDIRECT3DDEVICE9 iface, DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil);
+HRESULT WINAPI IDirect3DDevice9Pure_SetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix);
+HRESULT WINAPI IDirect3DDevice9Pure_GetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix);
+HRESULT WINAPI IDirect3DDevice9Pure_MultiplyTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix);
+HRESULT WINAPI IDirect3DDevice9Pure_SetViewport(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport);
+HRESULT WINAPI IDirect3DDevice9Pure_GetViewport(LPDIRECT3DDEVICE9 iface, D3DVIEWPORT9* pViewport);
+HRESULT WINAPI IDirect3DDevice9Pure_SetMaterial(LPDIRECT3DDEVICE9 iface, CONST D3DMATERIAL9* pMaterial);
+HRESULT WINAPI IDirect3DDevice9Pure_GetMaterial(LPDIRECT3DDEVICE9 iface, D3DMATERIAL9* pMaterial);
+HRESULT WINAPI IDirect3DDevice9Pure_SetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST D3DLIGHT9* pLight);
+HRESULT WINAPI IDirect3DDevice9Pure_GetLight(LPDIRECT3DDEVICE9 iface, DWORD Index, D3DLIGHT9* pLight);
+HRESULT WINAPI IDirect3DDevice9Pure_LightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL Enable);
+HRESULT WINAPI IDirect3DDevice9Pure_GetLightEnable(LPDIRECT3DDEVICE9 iface, DWORD Index, BOOL* pEnable);
+HRESULT WINAPI IDirect3DDevice9Pure_SetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, CONST float* pPlane);
+HRESULT WINAPI IDirect3DDevice9Pure_GetClipPlane(LPDIRECT3DDEVICE9 iface, DWORD Index, float* pPlane);
+HRESULT WINAPI IDirect3DDevice9Pure_SetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD Value);
+HRESULT WINAPI IDirect3DDevice9Pure_GetRenderState(LPDIRECT3DDEVICE9 iface, D3DRENDERSTATETYPE State, DWORD* pValue);
+HRESULT WINAPI IDirect3DDevice9Pure_CreateStateBlock(LPDIRECT3DDEVICE9 iface, D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB);
+HRESULT WINAPI IDirect3DDevice9Pure_BeginStateBlock(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Pure_EndStateBlock(LPDIRECT3DDEVICE9 iface, IDirect3DStateBlock9** ppSB);
+HRESULT WINAPI IDirect3DDevice9Pure_SetClipStatus(LPDIRECT3DDEVICE9 iface, CONST D3DCLIPSTATUS9* pClipStatus);
+HRESULT WINAPI IDirect3DDevice9Pure_GetClipStatus(LPDIRECT3DDEVICE9 iface, D3DCLIPSTATUS9* pClipStatus);
+HRESULT WINAPI IDirect3DDevice9Pure_GetTexture(LPDIRECT3DDEVICE9 iface, DWORD Stage, IDirect3DBaseTexture9** ppTexture);
+HRESULT WINAPI IDirect3DDevice9Pure_SetTexture(LPDIRECT3DDEVICE9 iface, DWORD Stage, IDirect3DBaseTexture9* pTexture);
+HRESULT WINAPI IDirect3DDevice9Pure_GetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue);
+HRESULT WINAPI IDirect3DDevice9Pure_SetTextureStageState(LPDIRECT3DDEVICE9 iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value);
+HRESULT WINAPI IDirect3DDevice9Pure_GetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue);
+HRESULT WINAPI IDirect3DDevice9Pure_SetSamplerState(LPDIRECT3DDEVICE9 iface, DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value);
+HRESULT WINAPI IDirect3DDevice9Pure_ValidateDevice(LPDIRECT3DDEVICE9 iface, DWORD* pNumPasses);
+HRESULT WINAPI IDirect3DDevice9Pure_SetPaletteEntries(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber, CONST PALETTEENTRY* pEntries);
+HRESULT WINAPI IDirect3DDevice9Pure_GetPaletteEntries(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber, PALETTEENTRY* pEntries);
+HRESULT WINAPI IDirect3DDevice9Pure_SetCurrentTexturePalette(LPDIRECT3DDEVICE9 iface, UINT PaletteNumber);
+HRESULT WINAPI IDirect3DDevice9Pure_GetCurrentTexturePalette(LPDIRECT3DDEVICE9 iface, UINT* pPaletteNumber);
+HRESULT WINAPI IDirect3DDevice9Pure_SetScissorRect(LPDIRECT3DDEVICE9 iface, CONST RECT* pRect);
+HRESULT WINAPI IDirect3DDevice9Pure_GetScissorRect(LPDIRECT3DDEVICE9 iface, RECT* pRect);
+HRESULT WINAPI IDirect3DDevice9Pure_SetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface, BOOL bSoftware);
+BOOL WINAPI IDirect3DDevice9Pure_GetSoftwareVertexProcessing(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Pure_SetNPatchMode(LPDIRECT3DDEVICE9 iface, float nSegments);
+float WINAPI IDirect3DDevice9Pure_GetNPatchMode(LPDIRECT3DDEVICE9 iface);
+HRESULT WINAPI IDirect3DDevice9Pure_DrawPrimitive(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount);
+HRESULT WINAPI IDirect3DDevice9Pure_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount);
+HRESULT WINAPI IDirect3DDevice9Pure_DrawPrimitiveUP(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride);
+HRESULT WINAPI IDirect3DDevice9Pure_DrawIndexedPrimitiveUP(LPDIRECT3DDEVICE9 iface, D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride);
+HRESULT WINAPI IDirect3DDevice9Pure_ProcessVertices(LPDIRECT3DDEVICE9 iface, UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags);
+HRESULT WINAPI IDirect3DDevice9Pure_CreateVertexDeclaration(LPDIRECT3DDEVICE9 iface, CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl);
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexDeclaration(LPDIRECT3DDEVICE9 iface, IDirect3DVertexDeclaration9* pDecl);
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexDeclaration(LPDIRECT3DDEVICE9 iface, IDirect3DVertexDeclaration9** ppDecl);
+HRESULT WINAPI IDirect3DDevice9Pure_SetFVF(LPDIRECT3DDEVICE9 iface, DWORD FVF);
+HRESULT WINAPI IDirect3DDevice9Pure_GetFVF(LPDIRECT3DDEVICE9 iface, DWORD* pFVF);
+HRESULT WINAPI IDirect3DDevice9Pure_CreateVertexShader(LPDIRECT3DDEVICE9 iface, CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader);
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9* pShader);
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShader(LPDIRECT3DDEVICE9 iface, IDirect3DVertexShader9** ppShader);
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount);
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount);
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount);
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount);
+HRESULT WINAPI IDirect3DDevice9Pure_SetVertexShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount);
+HRESULT WINAPI IDirect3DDevice9Pure_GetVertexShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount);
+HRESULT WINAPI IDirect3DDevice9Pure_SetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride);
+HRESULT WINAPI IDirect3DDevice9Pure_GetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* pOffsetInBytes, UINT* pStride);
+HRESULT WINAPI IDirect3DDevice9Pure_SetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber,UINT Setting);
+HRESULT WINAPI IDirect3DDevice9Pure_GetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, UINT* pSetting);
+HRESULT WINAPI IDirect3DDevice9Pure_SetIndices(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9* pIndexData);
+HRESULT WINAPI IDirect3DDevice9Pure_GetIndices(LPDIRECT3DDEVICE9 iface, IDirect3DIndexBuffer9** ppIndexData);
+HRESULT WINAPI IDirect3DDevice9Pure_CreatePixelShader(LPDIRECT3DDEVICE9 iface, CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader);
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9* pShader);
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShader(LPDIRECT3DDEVICE9 iface, IDirect3DPixelShader9** ppShader);
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount);
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShaderConstantF(LPDIRECT3DDEVICE9 iface, UINT StartRegister, float* pConstantData, UINT Vector4fCount);
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount);
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShaderConstantI(LPDIRECT3DDEVICE9 iface, UINT StartRegister, int* pConstantData, UINT Vector4iCount);
+HRESULT WINAPI IDirect3DDevice9Pure_SetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount);
+HRESULT WINAPI IDirect3DDevice9Pure_GetPixelShaderConstantB(LPDIRECT3DDEVICE9 iface, UINT StartRegister, BOOL* pConstantData, UINT BoolCount);
+HRESULT WINAPI IDirect3DDevice9Pure_DrawRectPatch(LPDIRECT3DDEVICE9 iface, UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo);
+HRESULT WINAPI IDirect3DDevice9Pure_DrawTriPatch(LPDIRECT3DDEVICE9 iface, UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo);
+HRESULT WINAPI IDirect3DDevice9Pure_DeletePatch(LPDIRECT3DDEVICE9 iface, UINT Handle);
+HRESULT WINAPI IDirect3DDevice9Pure_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery);
+
+#endif // _D3D9_PUREDEVICE_H_
diff --git a/reactos/dll/directx/d3d9/d3d9_surface.h b/reactos/dll/directx/d3d9/d3d9_surface.h
index b877c4a3b38..2a019811288 100644
--- a/reactos/dll/directx/d3d9/d3d9_surface.h
+++ b/reactos/dll/directx/d3d9/d3d9_surface.h
@@ -3,9 +3,28 @@
#include "d3d9_baseobject.h"
+struct _D3D9BaseSurface;
+
+typedef struct _D3D9BaseSurfaceVtbl
+{
+ HRESULT (*QueryInterface)(struct _D3D9BaseSurface* iface, REFIID riid, LPVOID* ppvObject);
+ ULONG (*AddRef)(struct _D3D9BaseSurface* iface);
+ ULONG (*Release)(struct _D3D9BaseSurface* iface);
+ IDirect3DDevice9* (*GetDevice)(struct _D3D9BaseSurface* iface);
+ HRESULT (*SetPrivateData)(struct _D3D9BaseSurface* iface, REFIID riid, CONST LPVOID pData, DWORD DataSize, DWORD Flags);
+ HRESULT (*GetPrivateData)(struct _D3D9BaseSurface* iface, REFIID riid, LPVOID pData, DWORD* DataSize);
+ HRESULT (*FreePrivateData)(struct _D3D9BaseSurface* iface, REFIID riid);
+ DWORD (*SetPriority)(struct _D3D9BaseSurface* iface, DWORD NewPriority);
+ DWORD (*GetPriority)(struct _D3D9BaseSurface* iface);
+ VOID (*Load)(struct _D3D9BaseSurface* iface);
+ D3DRESOURCETYPE (*GetResourceType)(struct _D3D9BaseSurface* iface);
+
+} ID3D9BaseSurfaceVtbl;
+
+
typedef struct _D3D9BaseSurface
{
-/* 0x0000 */ LPDWORD lpVtbl;
+/* 0x0020 */ ID3D9BaseSurfaceVtbl* lpVtbl;
/* 0x0024 */ D3DFORMAT DisplayFormat2; // Back buffer format?
/* 0x0028 */ DWORD dwUnknown0028; // Constant/ref count? (1)
/* 0x002c */ DWORD dwUnknown002c; // Refresh rate?
diff --git a/reactos/dll/directx/d3d9/d3d9_swapchain.c b/reactos/dll/directx/d3d9/d3d9_swapchain.c
index 661d6ed36f4..72d5cdddd66 100644
--- a/reactos/dll/directx/d3d9/d3d9_swapchain.c
+++ b/reactos/dll/directx/d3d9/d3d9_swapchain.c
@@ -21,7 +21,7 @@
/* Convert a IDirect3DSwapChain9 pointer safely to the internal implementation struct */
static LPDIRECT3DSWAPCHAIN9_INT IDirect3DSwapChain9ToImpl(LPDIRECT3DSWAPCHAIN9 iface)
{
- if (IsBadWritePtr(iface, sizeof(LPDIRECT3DSWAPCHAIN9_INT)))
+ if (NULL == iface)
return NULL;
return (LPDIRECT3DSWAPCHAIN9_INT)((ULONG_PTR)iface - FIELD_OFFSET(Direct3DSwapChain9_INT, lpVtbl));
@@ -110,7 +110,7 @@ static HRESULT WINAPI Direct3DSwapChain9_GetDevice(LPDIRECT3DSWAPCHAIN9 iface, I
LPDIRECT3DSWAPCHAIN9_INT This = IDirect3DSwapChain9ToImpl(iface);
LOCK_D3DDEVICE9();
- if (IsBadWritePtr(ppDevice, sizeof(IDirect3DDevice9**)))
+ if (NULL == ppDevice)
{
DPRINT1("Invalid ppDevice parameter specified");
UNLOCK_D3DDEVICE9();
@@ -151,7 +151,7 @@ static HRESULT WINAPI Direct3DSwapChain9_GetPresentParameters(LPDIRECT3DSWAPCHAI
LPDIRECT3DSWAPCHAIN9_INT This = IDirect3DSwapChain9ToImpl(iface);
LOCK_D3DDEVICE9();
- if (IsBadWritePtr(pPresentationParameters, sizeof(D3DPRESENT_PARAMETERS)))
+ if (NULL == pPresentationParameters)
{
DPRINT1("Invalid pPresentationParameters parameter specified");
UNLOCK_D3DDEVICE9();
diff --git a/reactos/dll/directx/d3d9/device.c b/reactos/dll/directx/d3d9/device.c
index 48ed888fd59..bddd3805732 100644
--- a/reactos/dll/directx/d3d9/device.c
+++ b/reactos/dll/directx/d3d9/device.c
@@ -49,7 +49,7 @@ HRESULT InitD3D9BaseDevice(LPDIRECT3DDEVICE9_INT pThisBaseDevice, LPDIRECT3D9_IN
pThisBaseDevice->pResourceManager = pResourceManager;
- pThisBaseDevice->lpVtbl = &Direct3DDevice9_Vtbl;
+ pThisBaseDevice->lpVtbl = &Direct3DDevice9HAL_Vtbl;
pThisBaseDevice->lRefCnt = 1;
pThisBaseDevice->dwProcessId = GetCurrentThreadId();
pThisBaseDevice->pUnknown = (IUnknown*) &pThisBaseDevice->lpVtbl;
diff --git a/reactos/dll/directx/d3d9/device.h b/reactos/dll/directx/d3d9/device.h
index 88cc105e987..94058177f2f 100644
--- a/reactos/dll/directx/d3d9/device.h
+++ b/reactos/dll/directx/d3d9/device.h
@@ -9,7 +9,7 @@
#ifndef _DEVICE_H_
#define _DEVICE_H_
-#include "d3d9_device.h"
+#include "d3d9_haldevice.h"
HRESULT CreateD3D9HalDevice(LPDIRECT3D9_INT pDirect3D9, UINT Adapter,
HWND hFocusWindow, DWORD BehaviourFlags,