tweaking win32 port
[picodrive.git] / platform / win32 / GenaDrive / Direct.cpp
index b6f4285..8277bce 100644 (file)
@@ -21,7 +21,8 @@ int DirectInit()
 {\r
   D3DPRESENT_PARAMETERS d3dpp; \r
   D3DDISPLAYMODE mode;\r
-  int i=0,ret=0;\r
+  D3DDEVTYPE dt = D3DDEVTYPE_HAL;\r
+  int i,u,ret=0;\r
 \r
   memset(&d3dpp,0,sizeof(d3dpp));\r
   memset(&mode,0,sizeof(mode));\r
@@ -44,25 +45,21 @@ int DirectInit()
 #endif\r
 \r
   // Try to create a device with hardware vertex processing:\r
-  for (i=0;i<4;i++)\r
+  for (u=0;u<2;u++)\r
   {\r
-    int behave=D3DCREATE_HARDWARE_VERTEXPROCESSING;\r
-\r
-#ifdef _XBOX\r
-    if (i==1)\r
+    for (i=0;i<4;i++)\r
     {\r
-      // If 60Hz didn't work, try PAL 50Hz instead:\r
-      d3dpp.FullScreen_RefreshRateInHz=0;\r
-      d3dpp.BackBufferHeight=MainHeight=576;\r
-    }\r
-#endif\r
+      int behave=D3DCREATE_HARDWARE_VERTEXPROCESSING;\r
 \r
-    // Try software vertex processing:\r
-    if (i==2) behave=D3DCREATE_MIXED_VERTEXPROCESSING;\r
-    if (i==3) behave=D3DCREATE_SOFTWARE_VERTEXPROCESSING;\r
+      // Try software vertex processing:\r
+      if (i==1) behave=D3DCREATE_MIXED_VERTEXPROCESSING;\r
+      if (i==2) behave=D3DCREATE_SOFTWARE_VERTEXPROCESSING;\r
 \r
-    Direct3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,FrameWnd,behave,&d3dpp,&Device);\r
+      Direct3D->CreateDevice(D3DADAPTER_DEFAULT,dt,FrameWnd,behave,&d3dpp,&Device);\r
+      if (Device) break;\r
+    }\r
     if (Device) break;\r
+    dt = D3DDEVTYPE_REF;\r
   }\r
 \r
   if (Device==NULL) return 1;\r
@@ -184,12 +181,14 @@ static int SetupMatrices()
 int DirectScreen()\r
 {\r
   unsigned char *lock=NULL;\r
+  int ret;\r
 \r
   // Copy the screen to the screen texture:\r
 #ifdef _XBOX\r
   TexScreenSwizzle();\r
 #else\r
-  TexScreenLinear();\r
+  ret=TexScreenLinear();\r
+  if (ret) dprintf2("TexScreenLinear failed\n");\r
 #endif\r
 \r
   SetupMatrices();\r
@@ -197,14 +196,19 @@ int DirectScreen()
   MakeVertexList();\r
 \r
   // Copy vertices in:\r
-  VertexBuffer->Lock(0,sizeof(VertexList),&lock,0); if (lock==NULL) return 1;\r
+  VertexBuffer->Lock(0,sizeof(VertexList),&lock,0);\r
+  if (lock==NULL) { dprintf2("VertexBuffer->Lock failed\n"); return 1; }\r
   memcpy(lock,VertexList,sizeof(VertexList));\r
   VertexBuffer->Unlock();\r
 \r
-  Device->SetTexture(0,TexScreen);\r
-  Device->SetStreamSource(0,VertexBuffer,sizeof(CustomVertex));\r
-  Device->SetVertexShader(D3DFVF_CUSTOMVERTEX);\r
-  Device->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);\r
-  \r
+  ret=Device->SetTexture(0,TexScreen);\r
+  if (ret) dprintf2("SetTexture failed\n");\r
+  ret=Device->SetStreamSource(0,VertexBuffer,sizeof(CustomVertex));\r
+  if (ret) dprintf2("SetStreamSource failed\n");\r
+  ret=Device->SetVertexShader(D3DFVF_CUSTOMVERTEX);\r
+  if (ret) dprintf2("SetVertexShader failed\n");\r
+  ret=Device->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);\r
+  if (ret) dprintf2("DrawPrimitive failed\n");\r
+\r
   return 0;\r
 }\r