first working api is GetCaps for HAL. rember we do not support HEL, and we are missing GdiEntry2 in ros, so it will not working in reactos until gdientry2 are inplace.
Modified: trunk/reactos/lib/ddraw/hal/ddraw.c
Modified: trunk/reactos/lib/ddraw/main/ddraw.c

Modified: trunk/reactos/lib/ddraw/hal/ddraw.c
--- trunk/reactos/lib/ddraw/hal/ddraw.c	2005-10-23 19:18:39 UTC (rev 18721)
+++ trunk/reactos/lib/ddraw/hal/ddraw.c	2005-10-23 19:24:42 UTC (rev 18722)
@@ -80,18 +80,50 @@
 		return 1;
 	}
 		
-	/* fill some extra data */	
-	This->DirectDrawGlobal.vmiData.dwDisplayWidth = This->Width;
-	This->DirectDrawGlobal.vmiData.dwDisplayHeight = This->Height;
-	This->DirectDrawGlobal.vmiData.lDisplayPitch =  This->Width * This->Bpp/8;
-	This->DirectDrawGlobal.vmiData.dwOffscreenAlign = 64;
-	This->DirectDrawGlobal.vmiData.dwOverlayAlign = 64;
-	This->DirectDrawGlobal.vmiData.dwTextureAlign = 64;
-	This->DirectDrawGlobal.vmiData.dwZBufferAlign = 64;
-	This->DirectDrawGlobal.vmiData.dwAlphaAlign = 64;
-	//This->DirectDrawGlobal.vmiData.ddpfDisplay; // This has to be filled
+	/* Copy HalInfo to DirectDrawGlobal */
 
-	This->DirectDrawGlobal.ddCaps = This->HalInfo.ddCaps;
+	/* have not check where it should go into yet  
+       LPDDHAL_DDCALLBACKS		lpDDCallbacks;
+       LPDDHAL_DDSURFACECALLBACKS	lpDDSurfaceCallbacks;
+       LPDDHAL_DDPALETTECALLBACKS	lpDDPaletteCallbacks;
+     */
+    
+	RtlCopyMemory(&This->DirectDrawGlobal.vmiData,&This->HalInfo.vmiData,sizeof(VIDMEMINFO));
+	RtlCopyMemory(&This->DirectDrawGlobal.ddCaps,&This->HalInfo.ddCaps,sizeof(DDCORECAPS));
+	This->DirectDrawGlobal.dwMonitorFrequency = This->HalInfo.dwMonitorFrequency;
+        
+    /* have not check where it should go into yet
+	   LPDDHAL_GETDRIVERINFO	GetDriverInfo;
+    */
+
+    This->DirectDrawGlobal.dwModeIndex = This->HalInfo.dwModeIndex;
+
+	/* have not check where it should go into yet
+       LPDWORD			lpdwFourCC;
+     */
+
+    This->DirectDrawGlobal.dwNumModes =  This->HalInfo.dwNumModes;
+    This->DirectDrawGlobal.lpModeInfo =  This->HalInfo.lpModeInfo;
+
+	/* have not check where it should go into yet
+       DWORD			    dwFlags;
+	*/
+
+	/* Unsure which of these two for lpPDevice 
+      This->DirectDrawGlobal.dwPDevice = This->HalInfo.lpPDevice;
+	  This->lpDriverHandle = This->HalInfo.lpPDevice;
+	*/
+
+    This->DirectDrawGlobal.hInstance = This->HalInfo.hInstance;    
+    
+	/* have not check where it should go into yet
+       ULONG_PTR			lpD3DGlobalDriverData;
+       ULONG_PTR			lpD3DHALCallbacks;
+       LPDDHAL_DDEXEBUFCALLBACKS	lpDDExeBufCallbacks;
+    */ 
+	
+
+	
 	This->DirectDrawGlobal.lpDDCBtmp->HALDD = This->DirectDrawGlobal.lpDDCBtmp->cbDDCallbacks;
 	This->DirectDrawGlobal.lpDDCBtmp->HALDDSurface = This->DirectDrawGlobal.lpDDCBtmp->cbDDSurfaceCallbacks;
 	This->DirectDrawGlobal.lpDDCBtmp->HALDDExeBuf = This->DirectDrawGlobal.lpDDCBtmp->cbDDExeBufCallbacks;

Modified: trunk/reactos/lib/ddraw/main/ddraw.c
--- trunk/reactos/lib/ddraw/main/ddraw.c	2005-10-23 19:18:39 UTC (rev 18721)
+++ trunk/reactos/lib/ddraw/main/ddraw.c	2005-10-23 19:24:42 UTC (rev 18722)
@@ -223,7 +223,25 @@
 HRESULT WINAPI Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
 			LPDDCAPS pHELCaps) 
 {
-	DX_STUB;
+	DWORD status = DD_FALSE;
+	IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
+
+	if (pDriverCaps != NULL) 
+	{
+	  RtlCopyMemory(pDriverCaps,&This->DirectDrawGlobal.ddCaps,sizeof(DDCORECAPS));
+	  status = DD_OK;
+	}
+
+	if (pHELCaps != NULL) 
+	{
+	  RtlCopyMemory(pDriverCaps,&This->DirectDrawGlobal.ddHELCaps,sizeof(DDCORECAPS));
+	  status = DD_OK;
+	}
+
+	/* Both caps mixed ?? */
+	/* DDCORECAPS ddBothCaps; */
+	
+	return status;
 }
 
 HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD)