DEADSOFTWARE

Fix resolution detecting, add vsync
[d2df-sdl.git] / src / game / g_options.pas
index 1f3bd4881e0f9f7e5d4e8d5032d5c11bb6695caf..e732eed074c4687773a1de38e1925a08366c0e2d 100644 (file)
@@ -162,13 +162,26 @@ var
   percentage: Integer;
 begin
   (* Display 0 = Primary display *)
-  SDL_GetDesktopDisplayMode(0, @display);
+  if SDL_GetDesktopDisplayMode(0, @display) <> 0 then
+  begin
+    display.format := SDL_PIXELFORMAT_UNKNOWN;
+    display.w := 640;
+    display.h := 480;
+    display.refresh_rate := 0;
+    display.driverdata := nil
+  end;
   {$IF DEFINED(ANDROID)}
     gScreenWidth := display.w;
     gScreenHeight := display.h;
-    //gBPP := SDL_BITSPERPIXEL(dispaly.format);
-    gBPP := 32;
+    gBPP := SDL_BITSPERPIXEL(dispaly.format);
+    if gBPP = 0 then gBPP := 32;
     gFullScreen := True; (* rotation not allowed? *)
+  {$ELSEIF DEFINED(GO32V2)}
+    gScreenWidth := display.w;
+    gScreenHeight := display.h;
+    gBPP := SDL_BITSPERPIXEL(display.format);
+    if gBPP = 0 then gBPP := 8;
+    gFullScreen := False; (* Do not change videomode twice *)
   {$ELSE}
     (* Window must be smaller than display *)
     closest.w := display.w;
@@ -615,10 +628,10 @@ begin
   ReadBoolean(g_touch_alt, 'Alt');
 
   section := 'Game';
-  ReadInteger(i, 'MaxParticles', 1000, 50000); g_GFX_SetMax(i);
-  ReadInteger(i, 'MaxShells', 300, 600); g_Shells_SetMax(i);
-  ReadInteger(i, 'MaxGibs', 150, 500); g_Gibs_SetMax(i);
-  ReadInteger(i, 'MaxCorpses', 20, 100); g_Corpses_SetMax(i);
+  ReadInteger(i, 'MaxParticles', 0, 50000); g_GFX_SetMax(i);
+  ReadInteger(i, 'MaxShells', 0, 600); g_Shells_SetMax(i);
+  ReadInteger(i, 'MaxGibs', 0, 500); g_Gibs_SetMax(i);
+  ReadInteger(i, 'MaxCorpses', 0, 100); g_Corpses_SetMax(i);
   ReadInteger(i, 'GibsCount');
   case i of
     0: gGibsCount := 0;
@@ -1063,5 +1076,6 @@ begin
 end;
 
 initialization
+  Randomize;
   machine := Random(10000)
 end.