bugfixes
authornotaz <notasas@gmail.com>
Mon, 4 Feb 2008 17:56:43 +0000 (17:56 +0000)
committernotaz <notasas@gmail.com>
Mon, 4 Feb 2008 17:56:43 +0000 (17:56 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@347 be3aeb3a-fb24-0410-a615-afba39da0efa

platform/win32/GenaDrive/Direct.cpp
platform/win32/GenaDrive/Main.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
index 4fbbf02..724c454 100644 (file)
@@ -11,6 +11,7 @@ int lock_to_1_1 = 1;
 int MainWidth=720,MainHeight=480;\r
 \r
 static HMENU mdisplay = 0;\r
+static unsigned char *rom_data = NULL;\r
 \r
 static void UpdateRect()\r
 {\r
@@ -24,7 +25,6 @@ static void UpdateRect()
 static void LoadROM(const char *cmdpath)\r
 {\r
   static char rompath[MAX_PATH] = { 0, };\r
-  static unsigned char *rom_data = NULL;\r
   unsigned char *rom_data_new = NULL;\r
   unsigned int rom_size = 0;\r
   pm_file *rom = NULL;\r
@@ -106,7 +106,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
             lock_to_1_1=0;\r
             CheckMenuItem(mdisplay, 1104, MF_UNCHECKED);\r
           }\r
-          LoopWait=0;\r
+          if (rom_data != NULL) LoopWait=0;\r
           return 0;\r
         case 1104:\r
           lock_to_1_1=!lock_to_1_1;\r
@@ -181,7 +181,7 @@ static int FrameInit()
   InsertMenu(mmain, -1, MF_BYPOSITION|MF_STRING|MF_POPUP, (UINT_PTR) mfile, "&File");\r
   InsertMenu(mmain, -1, MF_BYPOSITION|MF_STRING|MF_POPUP, (UINT_PTR) mdisplay, "&Display");\r
 //  InsertMenu(mmain, -1, MF_BYPOSITION|MF_STRING|MF_POPUP, 1200, "&Config");\r
-  InsertMenu(mmain, -1, MF_BYPOSITION|MF_STRING|MF_POPUP, 1300, "&About");\r
+  InsertMenu(mmain, -1, MF_BYPOSITION|MF_STRING, 1300, "&About");\r
 \r
   // Create the window:\r
   FrameWnd=CreateWindow(wc.lpszClassName,"PicoDrive " VERSION,style|WS_VISIBLE,\r