bugfixes
[picodrive.git] / platform / win32 / GenaDrive / Direct.cpp
index a726acb..b8112d3 100644 (file)
@@ -58,7 +58,7 @@ static int DirectDrawInit()
 \r
   // Create the backbuffer surface\r
   ddsd.dwFlags        = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;\r
-  ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;\r
+  ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;\r
   ddsd.dwWidth        = EmuWidth;\r
   ddsd.dwHeight       = EmuHeight;\r
 \r
@@ -110,6 +110,20 @@ static int DirectScreenDDraw()
       dst = (int *)((char *)dst + sd.lPitch);\r
     }\r
   }\r
+  else if (sd.ddpfPixelFormat.dwRGBBitCount == 24) /* wine uses this for me */\r
+  {\r
+    void *dst = sd.lpSurface;\r
+    for (y = 0; y < EmuHeight; y++)\r
+    {\r
+      unsigned char *dst1 = (unsigned char *) dst;\r
+      for (x = 0; x < EmuWidth; x++, dst1 += 3)\r
+      {\r
+        int s = *ps++;\r
+       dst1[2] = (s&0xf800)>>8; dst1[1] = (s&0x07e0)>>3; dst1[0] = s<<3; // BGR\r
+      }\r
+      dst = (void *)((char *)dst + sd.lPitch);\r
+    }\r
+  }\r
   else if (sd.ddpfPixelFormat.dwRGBBitCount == 16)\r
   {\r
     unsigned short *dst = (unsigned short *)sd.lpSurface;\r