--- /dev/null
+#include "rosdraw.h"
+
+HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
+{
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ This->HELMemoryAvilable = HEL_GRAPHIC_MEMORY_MAX;
+
+ This->mCallbacks.HELDD.dwFlags = DDHAL_CB32_DESTROYDRIVER;
+ This->mCallbacks.HELDD.DestroyDriver = HelDdDestroyDriver;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_CREATESURFACE;
+ This->mCallbacks.HELDD.CreateSurface = HelDdCreateSurface;
+
+ // DDHAL_CB32_
+ //This->mCallbacks.HELDD.SetColorKey = HelDdSetColorKey;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_SETMODE;
+ This->mCallbacks.HELDD.SetMode = HelDdSetMode;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_WAITFORVERTICALBLANK;
+ This->mCallbacks.HELDD.WaitForVerticalBlank = HelDdWaitForVerticalBlank;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_CANCREATESURFACE;
+ This->mCallbacks.HELDD.CanCreateSurface = HelDdCanCreateSurface;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_CREATEPALETTE;
+ This->mCallbacks.HELDD.CreatePalette = HelDdCreatePalette;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_GETSCANLINE;
+ This->mCallbacks.HELDD.GetScanLine = HelDdGetScanLine;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_SETEXCLUSIVEMODE;
+ This->mCallbacks.HELDD.SetExclusiveMode = HelDdSetExclusiveMode;
+
+ This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_FLIPTOGDISURFACE;
+ This->mCallbacks.HELDD.FlipToGDISurface = HelDdFlipToGDISurface;
+
+ return DD_OK;
+}
extern DDPIXELFORMAT pixelformats[];\r
extern DWORD pixelformatsCount;\r
\r
-DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd)\r
+/*\r
+ * Direct Draw Callbacks \r
+ */\r
+ \r
+DWORD CALLBACK HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver)\r
{\r
- DWORD count;\r
- \r
- // FIXME check the HAL pixelformat table if it exists \r
-\r
- // FIXME check how big the surface in byte and report it can be create or not \r
- // if we got egunt with HEL memmory \r
+ DX_STUB;\r
+}\r
\r
- \r
- // HEL only support 16bits & 15bits Z-Buffer\r
- if ((pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) && \r
- (pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY))\r
- { \r
- pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;\r
- \r
- if (DDSD_ZBUFFERBITDEPTH & pccsd->lpDDSurfaceDesc->dwFlags)\r
- { \r
- if (pccsd->lpDDSurfaceDesc->dwZBufferBitDepth == 16)\r
- {\r
- pccsd->ddRVal = DD_OK;\r
- }\r
- }\r
- else\r
- { \r
- if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwZBufferBitDepth == 16)\r
- {\r
- pccsd->ddRVal = DD_OK;\r
- }\r
- } \r
- return DDHAL_DRIVER_HANDLED;\r
- }\r
+DWORD CALLBACK HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface)\r
+{\r
+ DX_STUB;\r
+}\r
\r
- // Check diffent pixel format \r
- if (pccsd->bIsDifferentPixelFormat)\r
- {\r
- //if(pccsd->ddpfPixelFormat.dwFlags & DDPF_FOURCC)\r
- if(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & 0)\r
- { \r
- switch (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC)\r
- {\r
- //case FOURCC_YUV422: \r
- case 0: \r
- // FIXME check if display is 8bmp or not if it return DDERR_INVALIDPIXELFORMAT\r
- pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYUVBitCount = 16;\r
- pccsd->ddRVal = DD_OK; \r
- return DDHAL_DRIVER_HANDLED;\r
+/*\r
+DWORD CALLBACK HelDdSetColorKey(LPDDHAL_SETCOLORKEYDATA lpSetColorKey)\r
+{\r
+ DX_STUB;\r
+}\r
+*/\r
\r
- default: \r
- pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;\r
- return DDHAL_DRIVER_HANDLED;\r
- }\r
+DWORD CALLBACK HelDdSetMode(LPDDHAL_SETMODEDATA SetMode)\r
+{\r
+ DX_STUB;\r
+}\r
\r
- }\r
- else if((pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_TEXTURE))\r
- { \r
- for(count=0;count< pixelformatsCount ;count++)\r
- {\r
- if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags != pixelformats->dwFlags)\r
- {\r
- continue;\r
- }\r
+DWORD CALLBACK HelDdWaitForVerticalBlank(LPDDHAL_WAITFORVERTICALBLANKDATA lpWaitForVerticalBlank)\r
+{\r
+ DX_STUB;\r
+}\r
\r
- if (!(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & (DDPF_YUV | DDPF_FOURCC)))\r
- {\r
- if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount != pixelformats->dwRGBBitCount ) \r
- {\r
- continue;\r
- }\r
- }\r
+DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA lpCanCreateSurface)\r
+{\r
+ DX_STUB;\r
+}\r
\r
- if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_RGB)\r
- {\r
- if ((pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask != pixelformats->dwRBitMask) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask != pixelformats->dwGBitMask) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask != pixelformats->dwBBitMask) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRGBAlphaBitMask != pixelformats->dwRGBAlphaBitMask))\r
- { \r
- continue;\r
- }\r
- }\r
+DWORD CALLBACK HelDdCreatePalette(LPDDHAL_CREATEPALETTEDATA lpCreatePalette)\r
+{\r
+ DX_STUB;\r
+}\r
\r
- if (pccsd->lpDDSurfaceDesc->dwFlags & DDPF_YUV) \r
- {\r
- if ((pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC != pixelformats->dwFourCC) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYUVBitCount != pixelformats->dwYUVBitCount) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYBitMask != pixelformats->dwYBitMask) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwUBitMask != pixelformats->dwUBitMask) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwVBitMask != pixelformats->dwVBitMask) ||\r
- (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYUVAlphaBitMask != pixelformats->dwYUVAlphaBitMask))\r
- {\r
- continue;\r
- }\r
- }\r
- else if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_FOURCC)\r
- {\r
- \r
- if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC != pixelformats->dwFourCC)\r
- {\r
- continue;\r
- }\r
- } \r
- if (pccsd->lpDDSurfaceDesc->dwFlags & DDPF_ZPIXELS)\r
- {\r
- if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRGBZBitMask != pixelformats->dwRGBZBitMask)\r
- {\r
- continue;\r
- }\r
- }\r
- \r
- pccsd->ddRVal = DD_OK; \r
- return DDHAL_DRIVER_HANDLED;\r
- } \r
+DWORD CALLBACK HelDdGetScanLine(LPDDHAL_GETSCANLINEDATA lpGetScanLine)\r
+{\r
+ DX_STUB;\r
+}\r
\r
- // for did not found a pixel format \r
- pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT; \r
- return DDHAL_DRIVER_HANDLED;\r
- } \r
- } \r
- \r
- // no diffent pixel format was found so we return OK\r
- pccsd->ddRVal = DD_OK;\r
- return DDHAL_DRIVER_HANDLED; \r
+DWORD CALLBACK HelDdSetExclusiveMode(LPDDHAL_SETEXCLUSIVEMODEDATA lpSetExclusiveMode)\r
+{\r
+ DX_WINDBG_trace();\r
+ DX_STUB_str("Not implement yet, return DD_OK for not bsod\n");\r
+ return DD_OK;\r
}\r
\r
-DWORD CALLBACK HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface)\r
+DWORD CALLBACK HelDdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA lpFlipToGDISurface)\r
{\r
- DX_STUB;\r
+ DX_STUB;\r
}\r
+\r