Color Depth configuration is now entirely automatic

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2162 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
mcmartin
2006-01-11 08:33:52 +00:00
parent 5028c9852a
commit e8b462a54a
13 changed files with 102 additions and 183 deletions
+1
View File
@@ -1,4 +1,5 @@
Changes towards version 0.5: Changes towards version 0.5:
- Color depth is now determined entirely automatically - Michael
- Text input is now available in languages other than English - Text input is now available in languages other than English
(UCS/Unicode; SDL does not support Unicode input on Windows yet; (UCS/Unicode; SDL does not support Unicode input on Windows yet;
you must have proper font chars installed -- see translations) - Alex you must have proper font chars installed -- see translations) - Alex
+1 -1
View File
@@ -132,7 +132,7 @@ typedef struct tfb_dc_signal
typedef struct tfb_dc_reinit_video typedef struct tfb_dc_reinit_video
{ {
int driver, flags, width, height, bpp; int driver, flags, width, height;
} TFB_DrawCommand_ReinitVideo; } TFB_DrawCommand_ReinitVideo;
typedef struct tfb_drawcommand typedef struct tfb_drawcommand
+1 -1
View File
@@ -55,7 +55,7 @@ enum
extern int GfxFlags; extern int GfxFlags;
void TFB_PreInit (void); void TFB_PreInit (void);
int TFB_InitGraphics (int driver, int flags, int width, int height, int bpp); int TFB_InitGraphics (int driver, int flags, int width, int height);
void TFB_UninitGraphics (void); void TFB_UninitGraphics (void);
void TFB_ProcessEvents (void); void TFB_ProcessEvents (void);
+24 -7
View File
@@ -69,11 +69,10 @@ ReInit_Screen (SDL_Surface **screen, SDL_Surface *template, int w, int h)
return *screen == 0 ? -1 : 0; return *screen == 0 ? -1 : 0;
} }
int static int
TFB_GL_ConfigureVideo (int driver, int flags, int width, int height, int bpp) AttemptColorDepth (int flags, int width, int height, int bpp)
{ {
int i, videomode_flags, texture_width, texture_height; int videomode_flags;
GraphicsDriver = driver;
ScreenColorDepth = bpp; ScreenColorDepth = bpp;
ScreenWidthActual = width; ScreenWidthActual = width;
ScreenHeightActual = height; ScreenHeightActual = height;
@@ -125,13 +124,31 @@ TFB_GL_ConfigureVideo (int driver, int flags, int width, int height, int bpp)
} }
else else
{ {
fprintf (stderr, "Set the resolution to: %ix%ix%i\n", fprintf (stderr, "Set the resolution to: %ix%ix%i (surface reports %ix%ix%i)\n",
width, height, bpp,
SDL_GetVideoSurface()->w, SDL_GetVideoSurface()->h, SDL_GetVideoSurface()->w, SDL_GetVideoSurface()->h,
SDL_GetVideoSurface()->format->BitsPerPixel); SDL_GetVideoSurface()->format->BitsPerPixel);
fprintf (stderr, "OpenGL renderer: %s version: %s\n", fprintf (stderr, "OpenGL renderer: %s version: %s\n",
glGetString (GL_RENDERER), glGetString (GL_VERSION)); glGetString (GL_RENDERER), glGetString (GL_VERSION));
} }
return 0;
}
int
TFB_GL_ConfigureVideo (int driver, int flags, int width, int height)
{
int i, texture_width, texture_height;
GraphicsDriver = driver;
if (AttemptColorDepth (flags, width, height, 32) &&
AttemptColorDepth (flags, width, height, 24) &&
AttemptColorDepth (flags, width, height, 16))
{
fprintf (stderr, "Couldn't set any OpenGL %ix%i video mode!\n",
width, height);
return -1;
}
if (format_conv_surf) if (format_conv_surf)
SDL_FreeSurface (format_conv_surf); SDL_FreeSurface (format_conv_surf);
@@ -210,7 +227,7 @@ TFB_GL_ConfigureVideo (int driver, int flags, int width, int height, int bpp)
} }
int int
TFB_GL_InitGraphics (int driver, int flags, int width, int height, int bpp) TFB_GL_InitGraphics (int driver, int flags, int width, int height)
{ {
char VideoName[256]; char VideoName[256];
@@ -224,7 +241,7 @@ TFB_GL_InitGraphics (int driver, int flags, int width, int height, int bpp)
ScreenWidth = 320; ScreenWidth = 320;
ScreenHeight = 240; ScreenHeight = 240;
if (TFB_GL_ConfigureVideo (driver, flags, width, height, bpp)) if (TFB_GL_ConfigureVideo (driver, flags, width, height))
{ {
fprintf (stderr, "Could not initialize video: " fprintf (stderr, "Could not initialize video: "
"no fallback at start of program!\n"); "no fallback at start of program!\n");
+2 -2
View File
@@ -21,8 +21,8 @@
#include "libs/graphics/sdl/sdl_common.h" #include "libs/graphics/sdl/sdl_common.h"
int TFB_GL_InitGraphics (int driver, int flags, int width, int height, int bpp); int TFB_GL_InitGraphics (int driver, int flags, int width, int height);
int TFB_GL_ConfigureVideo (int driver, int flags, int width, int height, int bpp); int TFB_GL_ConfigureVideo (int driver, int flags, int width, int height);
void TFB_GL_UploadTransitionScreen (void); void TFB_GL_UploadTransitionScreen (void);
void TFB_GL_SwapBuffers (int force_full_redraw); void TFB_GL_SwapBuffers (int force_full_redraw);
+9 -8
View File
@@ -53,14 +53,12 @@ ReInit_Screen (SDL_Surface **screen, SDL_Surface *template, int w, int h)
} }
int int
TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height, TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height)
int bpp)
{ {
int i, videomode_flags; int i, videomode_flags;
SDL_Surface *temp_surf; SDL_Surface *temp_surf;
GraphicsDriver = driver; GraphicsDriver = driver;
ScreenColorDepth = bpp;
// must use SDL_SWSURFACE, HWSURFACE doesn't work properly // must use SDL_SWSURFACE, HWSURFACE doesn't work properly
// with fades/scaling // with fades/scaling
@@ -85,13 +83,15 @@ TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height,
if (flags & TFB_GFXFLAGS_FULLSCREEN) if (flags & TFB_GFXFLAGS_FULLSCREEN)
videomode_flags |= SDL_FULLSCREEN; videomode_flags |= SDL_FULLSCREEN;
/* We'll ask for a 32bpp frame, but it doesn't really matter, because we've set
SDL_ANYFORMAT */
SDL_Video = SDL_SetVideoMode (ScreenWidthActual, ScreenHeightActual, SDL_Video = SDL_SetVideoMode (ScreenWidthActual, ScreenHeightActual,
bpp, videomode_flags); 32, videomode_flags);
if (SDL_Video == NULL) if (SDL_Video == NULL)
{ {
fprintf (stderr, "Couldn't set %ix%ix%i video mode: %s\n", fprintf (stderr, "Couldn't set %ix%i video mode: %s\n",
ScreenWidthActual, ScreenHeightActual, bpp, ScreenWidthActual, ScreenHeightActual,
SDL_GetError ()); SDL_GetError ());
return -1; return -1;
} }
@@ -100,6 +100,7 @@ TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height,
fprintf (stderr, "Set the resolution to: %ix%ix%i\n", fprintf (stderr, "Set the resolution to: %ix%ix%i\n",
SDL_GetVideoSurface()->w, SDL_GetVideoSurface()->h, SDL_GetVideoSurface()->w, SDL_GetVideoSurface()->h,
SDL_GetVideoSurface()->format->BitsPerPixel); SDL_GetVideoSurface()->format->BitsPerPixel);
ScreenColorDepth = SDL_GetVideoSurface()->format->BitsPerPixel;
} }
// Create a 32bpp surface in a compatible format which will supply // Create a 32bpp surface in a compatible format which will supply
@@ -173,7 +174,7 @@ TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height,
} }
int int
TFB_Pure_InitGraphics (int driver, int flags, int width, int height, int bpp) TFB_Pure_InitGraphics (int driver, int flags, int width, int height)
{ {
char VideoName[256]; char VideoName[256];
@@ -193,7 +194,7 @@ TFB_Pure_InitGraphics (int driver, int flags, int width, int height, int bpp)
ScreenWidth = 320; ScreenWidth = 320;
ScreenHeight = 240; ScreenHeight = 240;
if (TFB_Pure_ConfigureVideo (driver, flags, width, height, bpp)) if (TFB_Pure_ConfigureVideo (driver, flags, width, height))
{ {
fprintf (stderr, "Could not initialize video: " fprintf (stderr, "Could not initialize video: "
"no fallback at start of program!\n"); "no fallback at start of program!\n");
+2 -2
View File
@@ -21,8 +21,8 @@
#include "libs/graphics/sdl/sdl_common.h" #include "libs/graphics/sdl/sdl_common.h"
int TFB_Pure_InitGraphics (int driver, int flags, int width, int height, int bpp); int TFB_Pure_InitGraphics (int driver, int flags, int width, int height);
int TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height, int bpp); int TFB_Pure_ConfigureVideo (int driver, int flags, int width, int height);
void TFB_Pure_SwapBuffers (int force_full_redraw); void TFB_Pure_SwapBuffers (int force_full_redraw);
#endif #endif
+11 -20
View File
@@ -76,7 +76,7 @@ TFB_PreInit (void)
} }
int int
TFB_ReInitGraphics (int driver, int flags, int width, int height, int bpp) TFB_ReInitGraphics (int driver, int flags, int width, int height)
{ {
int result; int result;
char caption[200]; char caption[200];
@@ -86,17 +86,17 @@ TFB_ReInitGraphics (int driver, int flags, int width, int height, int bpp)
if (driver == TFB_GFXDRIVER_SDL_OPENGL) if (driver == TFB_GFXDRIVER_SDL_OPENGL)
{ {
#ifdef HAVE_OPENGL #ifdef HAVE_OPENGL
result = TFB_GL_ConfigureVideo (driver, flags, width, height, bpp); result = TFB_GL_ConfigureVideo (driver, flags, width, height);
#else #else
driver = TFB_GFXDRIVER_SDL_PURE; driver = TFB_GFXDRIVER_SDL_PURE;
fprintf (stderr, "OpenGL support not compiled in, so using pure " fprintf (stderr, "OpenGL support not compiled in, so using pure "
"sdl driver\n"); "sdl driver\n");
result = TFB_Pure_ConfigureVideo (driver, flags, width, height, bpp); result = TFB_Pure_ConfigureVideo (driver, flags, width, height);
#endif #endif
} }
else else
{ {
result = TFB_Pure_ConfigureVideo (driver, flags, width, height, bpp); result = TFB_Pure_ConfigureVideo (driver, flags, width, height);
} }
sprintf (caption, "The Ur-Quan Masters v%d.%d.%d%s", sprintf (caption, "The Ur-Quan Masters v%d.%d.%d%s",
@@ -113,33 +113,27 @@ TFB_ReInitGraphics (int driver, int flags, int width, int height, int bpp)
} }
int int
TFB_InitGraphics (int driver, int flags, int width, int height, int bpp) TFB_InitGraphics (int driver, int flags, int width, int height)
{ {
int result; int result;
char caption[200]; char caption[200];
if (bpp != 15 && bpp != 16 && bpp != 24 && bpp != 32)
{
fprintf(stderr, "Fatal error: bpp of %d not supported\n", bpp);
exit(-1);
}
GfxFlags = flags; GfxFlags = flags;
if (driver == TFB_GFXDRIVER_SDL_OPENGL) if (driver == TFB_GFXDRIVER_SDL_OPENGL)
{ {
#ifdef HAVE_OPENGL #ifdef HAVE_OPENGL
result = TFB_GL_InitGraphics (driver, flags, width, height, bpp); result = TFB_GL_InitGraphics (driver, flags, width, height);
#else #else
driver = TFB_GFXDRIVER_SDL_PURE; driver = TFB_GFXDRIVER_SDL_PURE;
fprintf (stderr, "OpenGL support not compiled in, so using pure " fprintf (stderr, "OpenGL support not compiled in, so using pure "
"sdl driver\n"); "sdl driver\n");
result = TFB_Pure_InitGraphics (driver, flags, width, height, bpp); result = TFB_Pure_InitGraphics (driver, flags, width, height);
#endif #endif
} }
else else
{ {
result = TFB_Pure_InitGraphics (driver, flags, width, height, bpp); result = TFB_Pure_InitGraphics (driver, flags, width, height);
} }
sprintf (caption, "The Ur-Quan Masters v%d.%d.%d%s", sprintf (caption, "The Ur-Quan Masters v%d.%d.%d%s",
@@ -791,15 +785,12 @@ TFB_FlushGraphics () // Only call from main thread!!
case TFB_DRAWCOMMANDTYPE_REINITVIDEO: case TFB_DRAWCOMMANDTYPE_REINITVIDEO:
{ {
int oldDriver = GraphicsDriver; int oldDriver = GraphicsDriver;
int oldBpp = ScreenColorDepth;
if (TFB_ReInitGraphics (DC.data.reinitvideo.driver, DC.data.reinitvideo.flags, if (TFB_ReInitGraphics (DC.data.reinitvideo.driver, DC.data.reinitvideo.flags,
DC.data.reinitvideo.width, DC.data.reinitvideo.height, DC.data.reinitvideo.width, DC.data.reinitvideo.height))
DC.data.reinitvideo.bpp))
{ {
fprintf (stderr, "Could not provide requested mode: reverting to last known driver and bpp.\n"); fprintf (stderr, "Could not provide requested mode: reverting to last known driver.\n");
if (TFB_ReInitGraphics (oldDriver, DC.data.reinitvideo.flags, if (TFB_ReInitGraphics (oldDriver, DC.data.reinitvideo.flags,
DC.data.reinitvideo.width, DC.data.reinitvideo.height, DC.data.reinitvideo.width, DC.data.reinitvideo.height))
oldBpp))
{ {
fprintf (stderr, "Couldn't reinit at that point either. Your video has been somehow tied in knots.\n"); fprintf (stderr, "Couldn't reinit at that point either. Your video has been somehow tied in knots.\n");
exit (-1); exit (-1);
+1 -3
View File
@@ -216,8 +216,7 @@ TFB_DrawScreen_WaitForSignal (void)
} }
void void
TFB_DrawScreen_ReinitVideo (int driver, int flags, int width, int height, TFB_DrawScreen_ReinitVideo (int driver, int flags, int width, int height)
int bpp)
{ {
TFB_DrawCommand DrawCommand; TFB_DrawCommand DrawCommand;
DrawCommand.Type = TFB_DRAWCOMMANDTYPE_REINITVIDEO; DrawCommand.Type = TFB_DRAWCOMMANDTYPE_REINITVIDEO;
@@ -225,7 +224,6 @@ TFB_DrawScreen_ReinitVideo (int driver, int flags, int width, int height,
DrawCommand.data.reinitvideo.flags = flags; DrawCommand.data.reinitvideo.flags = flags;
DrawCommand.data.reinitvideo.width = width; DrawCommand.data.reinitvideo.width = width;
DrawCommand.data.reinitvideo.height = height; DrawCommand.data.reinitvideo.height = height;
DrawCommand.data.reinitvideo.bpp = bpp;
TFB_EnqueueDrawCommand(&DrawCommand); TFB_EnqueueDrawCommand(&DrawCommand);
} }
+1 -1
View File
@@ -103,7 +103,7 @@ void TFB_DrawScreen_CopyToImage (TFB_Image *img, PRECT lpRect, SCREEN src);
void TFB_DrawScreen_DeleteImage (TFB_Image *img); void TFB_DrawScreen_DeleteImage (TFB_Image *img);
void TFB_DrawScreen_DeleteData (void *); void TFB_DrawScreen_DeleteData (void *);
void TFB_DrawScreen_WaitForSignal (void); void TFB_DrawScreen_WaitForSignal (void);
void TFB_DrawScreen_ReinitVideo (int driver, int flags, int width, int height, int bpp); void TFB_DrawScreen_ReinitVideo (int driver, int flags, int width, int height);
void TFB_DrawScreen_SetPalette (int paletteIndex, int r, int g, int b); void TFB_DrawScreen_SetPalette (int paletteIndex, int r, int g, int b);
TFB_Image *TFB_DrawImage_New (TFB_Canvas canvas); TFB_Image *TFB_DrawImage_New (TFB_Canvas canvas);
+45 -100
View File
@@ -254,23 +254,6 @@ static CHOICE_OPTION driver_opts[] = {
} }, } },
}; };
static CHOICE_OPTION bpp_opts[] = {
{ "16",
{ "16-bit color depth.",
"",
""
} },
{ "24",
{ "24-bit color depth.",
"",
""
} },
{ "32",
{ "32-bit color depth.",
"",
""
} } };
static CHOICE_OPTION fullscreen_opts[] = { static CHOICE_OPTION fullscreen_opts[] = {
{ "Windowed", { "Windowed",
{ "Display everything in a window.", { "Display everything in a window.",
@@ -311,7 +294,6 @@ static CHOICE_OPTION adriver_opts[] = {
static WIDGET_CHOICE cmdline_opts[] = { static WIDGET_CHOICE cmdline_opts[] = {
{ CHOICE_PREFACE, "Resolution", RES_OPTS, 3, res_opts, 0, 0}, { CHOICE_PREFACE, "Resolution", RES_OPTS, 3, res_opts, 0, 0},
{ CHOICE_PREFACE, "Use Framebuffer?", 2, 2, driver_opts, 0, 0}, { CHOICE_PREFACE, "Use Framebuffer?", 2, 2, driver_opts, 0, 0},
{ CHOICE_PREFACE, "Color depth", 3, 3, bpp_opts, 0, 0 },
{ CHOICE_PREFACE, "Scaler", 6, 3, scaler_opts, 0, 0 }, { CHOICE_PREFACE, "Scaler", 6, 3, scaler_opts, 0, 0 },
{ CHOICE_PREFACE, "Scanlines", 2, 3, scanlines_opts, 0, 0 }, { CHOICE_PREFACE, "Scanlines", 2, 3, scanlines_opts, 0, 0 },
{ CHOICE_PREFACE, "Menu Style", 2, 2, menu_opts, 0, 0 }, { CHOICE_PREFACE, "Menu Style", 2, 2, menu_opts, 0, 0 },
@@ -386,38 +368,37 @@ static WIDGET *main_widgets[] = {
static WIDGET *graphics_widgets[] = { static WIDGET *graphics_widgets[] = {
(WIDGET *)(&cmdline_opts[0]), (WIDGET *)(&cmdline_opts[0]),
(WIDGET *)(&cmdline_opts[11]), (WIDGET *)(&cmdline_opts[10]),
(WIDGET *)(&cmdline_opts[2]),
(WIDGET *)(&cmdline_opts[3]), (WIDGET *)(&cmdline_opts[3]),
(WIDGET *)(&cmdline_opts[4]),
(WIDGET *)(&prev_button) }; (WIDGET *)(&prev_button) };
static WIDGET *audio_widgets[] = { static WIDGET *audio_widgets[] = {
(WIDGET *)(&sliders_opts[0]), (WIDGET *)(&sliders_opts[0]),
(WIDGET *)(&sliders_opts[1]), (WIDGET *)(&sliders_opts[1]),
(WIDGET *)(&sliders_opts[2]), (WIDGET *)(&sliders_opts[2]),
(WIDGET *)(&cmdline_opts[15]), (WIDGET *)(&cmdline_opts[14]),
(WIDGET *)(&cmdline_opts[10]), (WIDGET *)(&cmdline_opts[9]),
(WIDGET *)(&prev_button) }; (WIDGET *)(&prev_button) };
static WIDGET *engine_widgets[] = { static WIDGET *engine_widgets[] = {
(WIDGET *)(&cmdline_opts[4]),
(WIDGET *)(&cmdline_opts[5]), (WIDGET *)(&cmdline_opts[5]),
(WIDGET *)(&cmdline_opts[6]), (WIDGET *)(&cmdline_opts[6]),
(WIDGET *)(&cmdline_opts[7]), (WIDGET *)(&cmdline_opts[7]),
(WIDGET *)(&cmdline_opts[8]), (WIDGET *)(&cmdline_opts[8]),
(WIDGET *)(&cmdline_opts[9]), (WIDGET *)(&cmdline_opts[13]),
(WIDGET *)(&cmdline_opts[14]), (WIDGET *)(&cmdline_opts[11]),
(WIDGET *)(&cmdline_opts[12]), (WIDGET *)(&cmdline_opts[17]),
(WIDGET *)(&cmdline_opts[18]),
(WIDGET *)(&prev_button) }; (WIDGET *)(&prev_button) };
static WIDGET *advanced_widgets[] = { static WIDGET *advanced_widgets[] = {
#ifdef HAVE_OPENGL #ifdef HAVE_OPENGL
(WIDGET *)(&cmdline_opts[1]), (WIDGET *)(&cmdline_opts[1]),
#endif #endif
(WIDGET *)(&cmdline_opts[2]), (WIDGET *)(&cmdline_opts[12]),
(WIDGET *)(&cmdline_opts[13]), (WIDGET *)(&cmdline_opts[15]),
(WIDGET *)(&cmdline_opts[16]), (WIDGET *)(&cmdline_opts[16]),
(WIDGET *)(&cmdline_opts[17]),
(WIDGET *)(&prev_button) }; (WIDGET *)(&prev_button) };
@@ -479,9 +460,9 @@ static WIDGET_MENU_SCREEN advanced_menu = {
"Advanced Options", "Advanced Options",
{ {0, 0}, NULL }, { {0, 0}, NULL },
#ifdef HAVE_OPENGL #ifdef HAVE_OPENGL
6, advanced_widgets,
#else
5, advanced_widgets, 5, advanced_widgets,
#else
4, advanced_widgets,
#endif #endif
0 }; 0 };
@@ -609,23 +590,22 @@ SetDefaults (void)
} }
cmdline_opts[0].selected = opts.res; cmdline_opts[0].selected = opts.res;
cmdline_opts[1].selected = opts.driver; cmdline_opts[1].selected = opts.driver;
cmdline_opts[2].selected = opts.depth; cmdline_opts[2].selected = opts.scaler;
cmdline_opts[3].selected = opts.scaler; cmdline_opts[3].selected = opts.scanlines;
cmdline_opts[4].selected = opts.scanlines; cmdline_opts[4].selected = opts.menu;
cmdline_opts[5].selected = opts.menu; cmdline_opts[5].selected = opts.text;
cmdline_opts[6].selected = opts.text; cmdline_opts[6].selected = opts.cscan;
cmdline_opts[7].selected = opts.cscan; cmdline_opts[7].selected = opts.scroll;
cmdline_opts[8].selected = opts.scroll; cmdline_opts[8].selected = opts.subtitles;
cmdline_opts[9].selected = opts.subtitles; cmdline_opts[9].selected = opts.music;
cmdline_opts[10].selected = opts.music; cmdline_opts[10].selected = opts.fullscreen;
cmdline_opts[11].selected = opts.fullscreen; cmdline_opts[11].selected = opts.intro;
cmdline_opts[12].selected = opts.intro; cmdline_opts[12].selected = opts.fps;
cmdline_opts[13].selected = opts.fps; cmdline_opts[13].selected = opts.meleezoom;
cmdline_opts[14].selected = opts.meleezoom; cmdline_opts[14].selected = opts.stereo;
cmdline_opts[15].selected = opts.stereo; cmdline_opts[15].selected = opts.adriver;
cmdline_opts[16].selected = opts.adriver; cmdline_opts[16].selected = opts.aquality;
cmdline_opts[17].selected = opts.aquality; cmdline_opts[17].selected = opts.shield;
cmdline_opts[18].selected = opts.shield;
sliders_opts[0].value = opts.musicvol; sliders_opts[0].value = opts.musicvol;
sliders_opts[1].value = opts.sfxvol; sliders_opts[1].value = opts.sfxvol;
@@ -638,23 +618,22 @@ PropagateResults (void)
GLOBALOPTS opts; GLOBALOPTS opts;
opts.res = cmdline_opts[0].selected; opts.res = cmdline_opts[0].selected;
opts.driver = cmdline_opts[1].selected; opts.driver = cmdline_opts[1].selected;
opts.depth = cmdline_opts[2].selected; opts.scaler = cmdline_opts[2].selected;
opts.scaler = cmdline_opts[3].selected; opts.scanlines = cmdline_opts[3].selected;
opts.scanlines = cmdline_opts[4].selected; opts.menu = cmdline_opts[4].selected;
opts.menu = cmdline_opts[5].selected; opts.text = cmdline_opts[5].selected;
opts.text = cmdline_opts[6].selected; opts.cscan = cmdline_opts[6].selected;
opts.cscan = cmdline_opts[7].selected; opts.scroll = cmdline_opts[7].selected;
opts.scroll = cmdline_opts[8].selected; opts.subtitles = cmdline_opts[8].selected;
opts.subtitles = cmdline_opts[9].selected; opts.music = cmdline_opts[9].selected;
opts.music = cmdline_opts[10].selected; opts.fullscreen = cmdline_opts[10].selected;
opts.fullscreen = cmdline_opts[11].selected; opts.intro = cmdline_opts[11].selected;
opts.intro = cmdline_opts[12].selected; opts.fps = cmdline_opts[12].selected;
opts.fps = cmdline_opts[13].selected; opts.meleezoom = cmdline_opts[13].selected;
opts.meleezoom = cmdline_opts[14].selected; opts.stereo = cmdline_opts[14].selected;
opts.stereo = cmdline_opts[15].selected; opts.adriver = cmdline_opts[15].selected;
opts.adriver = cmdline_opts[16].selected; opts.aquality = cmdline_opts[16].selected;
opts.aquality = cmdline_opts[17].selected; opts.shield = cmdline_opts[17].selected;
opts.shield = cmdline_opts[18].selected;
opts.musicvol = sliders_opts[0].value; opts.musicvol = sliders_opts[0].value;
opts.sfxvol = sliders_opts[1].value; opts.sfxvol = sliders_opts[1].value;
@@ -832,22 +811,6 @@ GetGlobalOptions (GLOBALOPTS *opts)
opts->aquality = OPTVAL_MEDIUM; opts->aquality = OPTVAL_MEDIUM;
} }
switch (ScreenColorDepth)
{
case 16:
opts->depth = OPTVAL_16;
break;
case 24:
opts->depth = OPTVAL_24;
break;
case 32:
opts->depth = OPTVAL_32;
break;
default:
opts->depth = OPTVAL_32+1;
break;
}
/* Work out resolution. On the way, try to guess a good default /* Work out resolution. On the way, try to guess a good default
* for config.alwaysgl, then overwrite it if it was set previously. */ * for config.alwaysgl, then overwrite it if it was set previously. */
opts->driver = OPTVAL_PURE_IF_POSSIBLE; opts->driver = OPTVAL_PURE_IF_POSSIBLE;
@@ -937,7 +900,6 @@ SetGlobalOptions (GLOBALOPTS *opts)
int NewGfxFlags = GfxFlags; int NewGfxFlags = GfxFlags;
int NewWidth = ScreenWidthActual; int NewWidth = ScreenWidthActual;
int NewHeight = ScreenHeightActual; int NewHeight = ScreenHeightActual;
int NewDepth = ScreenColorDepth;
int NewDriver = GraphicsDriver; int NewDriver = GraphicsDriver;
NewGfxFlags &= ~TFB_GFXFLAGS_SCALE_ANY; NewGfxFlags &= ~TFB_GFXFLAGS_SCALE_ANY;
@@ -976,24 +938,8 @@ SetGlobalOptions (GLOBALOPTS *opts)
break; break;
} }
switch (opts->depth) {
case OPTVAL_16:
NewDepth = 16;
break;
case OPTVAL_24:
NewDepth = 24;
break;
case OPTVAL_32:
NewDepth = 32;
break;
default:
fprintf (stderr, "Can't Happen: Impossible value for BPP\n");
break;
}
res_PutInteger ("config.reswidth", NewWidth); res_PutInteger ("config.reswidth", NewWidth);
res_PutInteger ("config.resheight", NewHeight); res_PutInteger ("config.resheight", NewHeight);
res_PutInteger ("config.bpp", NewDepth);
res_PutBoolean ("config.alwaysgl", opts->driver == OPTVAL_ALWAYS_GL); res_PutBoolean ("config.alwaysgl", opts->driver == OPTVAL_ALWAYS_GL);
res_PutBoolean ("config.usegl", NewDriver == TFB_GFXDRIVER_SDL_OPENGL); res_PutBoolean ("config.usegl", NewDriver == TFB_GFXDRIVER_SDL_OPENGL);
@@ -1039,12 +985,11 @@ SetGlobalOptions (GLOBALOPTS *opts)
if ((NewWidth != ScreenWidthActual) || if ((NewWidth != ScreenWidthActual) ||
(NewHeight != ScreenHeightActual) || (NewHeight != ScreenHeightActual) ||
(NewDepth != ScreenColorDepth) ||
(NewDriver != GraphicsDriver) || (NewDriver != GraphicsDriver) ||
(NewGfxFlags != GfxFlags)) (NewGfxFlags != GfxFlags))
{ {
FlushGraphics (); FlushGraphics ();
TFB_DrawScreen_ReinitVideo (NewDriver, NewGfxFlags, NewWidth, NewHeight, NewDepth); TFB_DrawScreen_ReinitVideo (NewDriver, NewGfxFlags, NewWidth, NewHeight);
FlushGraphics (); FlushGraphics ();
} }
optSubtitles = (opts->subtitles == OPTVAL_ENABLED) ? TRUE : FALSE; optSubtitles = (opts->subtitles == OPTVAL_ENABLED) ? TRUE : FALSE;
-7
View File
@@ -63,19 +63,12 @@ typedef enum {
OPTVAL_HIGH OPTVAL_HIGH
} OPT_AQUALITYTYPE; } OPT_AQUALITYTYPE;
typedef enum {
OPTVAL_16,
OPTVAL_24,
OPTVAL_32
} OPT_DEPTH;
typedef struct globalopts_struct { typedef struct globalopts_struct {
OPT_SCALETYPE scaler; OPT_SCALETYPE scaler;
OPT_RESTYPE res; OPT_RESTYPE res;
OPT_DRIVERTYPE driver; OPT_DRIVERTYPE driver;
OPT_ADRIVERTYPE adriver; OPT_ADRIVERTYPE adriver;
OPT_AQUALITYTYPE aquality; OPT_AQUALITYTYPE aquality;
OPT_DEPTH depth;
OPT_ENABLABLE fullscreen, subtitles, scanlines, fps, stereo; OPT_ENABLABLE fullscreen, subtitles, scanlines, fps, stereo;
OPT_CONSOLETYPE music, menu, text, cscan, scroll, intro, meleezoom, shield; OPT_CONSOLETYPE music, menu, text, cscan, scroll, intro, meleezoom, shield;
int speechvol, musicvol, sfxvol; int speechvol, musicvol, sfxvol;
+4 -31
View File
@@ -58,7 +58,6 @@ struct options_struct {
int soundFlags; int soundFlags;
int width; int width;
int height; int height;
int bpp;
const char *configDir; const char *configDir;
const char *contentDir; const char *contentDir;
const char **addons; const char **addons;
@@ -107,7 +106,6 @@ main (int argc, char *argv[])
/* .soundFlags = */ audio_QUALITY_MEDIUM, /* .soundFlags = */ audio_QUALITY_MEDIUM,
/* .width = */ 640, /* .width = */ 640,
/* .height = */ 480, /* .height = */ 480,
/* .bpp = */ 32,
/* .configDir = */ NULL, /* .configDir = */ NULL,
/* .contentDir = */ NULL, /* .contentDir = */ NULL,
/* .addons = */ NULL, /* .addons = */ NULL,
@@ -185,10 +183,6 @@ main (int argc, char *argv[])
{ {
options.height = res_GetInteger ("config.resheight"); options.height = res_GetInteger ("config.resheight");
} }
if (res_HasKey ("config.bpp"))
{
options.bpp = res_GetInteger ("config.bpp");
}
if (res_HasKey ("config.alwaysgl")) if (res_HasKey ("config.alwaysgl"))
{ {
if (res_GetBoolean ("config.alwaysgl")) if (res_GetBoolean ("config.alwaysgl"))
@@ -317,17 +311,17 @@ main (int argc, char *argv[])
} }
if (res_HasKey ("config.musicvol")) if (res_HasKey ("config.musicvol"))
{ {
int err = parseVolume(res_GetString ("config.musicvol"), parseVolume(res_GetString ("config.musicvol"),
&options.musicVolumeScale, "music volume"); &options.musicVolumeScale, "music volume");
} }
if (res_HasKey ("config.sfxvol")) if (res_HasKey ("config.sfxvol"))
{ {
int err = parseVolume(res_GetString ("config.sfxvol"), parseVolume(res_GetString ("config.sfxvol"),
&options.sfxVolumeScale, "SFX volume"); &options.sfxVolumeScale, "SFX volume");
} }
if (res_HasKey ("config.speechvol")) if (res_HasKey ("config.speechvol"))
{ {
int err = parseVolume(res_GetString ("config.speechvol"), parseVolume(res_GetString ("config.speechvol"),
&options.speechVolumeScale, "speech volume"); &options.speechVolumeScale, "speech volume");
} }
@@ -377,7 +371,7 @@ main (int argc, char *argv[])
SYNC_CLASS_TOPLEVEL | SYNC_CLASS_VIDEO); SYNC_CLASS_TOPLEVEL | SYNC_CLASS_VIDEO);
TFB_InitGraphics (options.gfxDriver, options.gfxFlags, TFB_InitGraphics (options.gfxDriver, options.gfxFlags,
options.width, options.height, options.bpp); options.width, options.height);
if (options.gammaSet) if (options.gammaSet)
TFB_SetGamma (options.gamma); TFB_SetGamma (options.gamma);
InitColorMaps (); InitColorMaps ();
@@ -419,7 +413,6 @@ static const char *optString = "+r:d:foc:b:spC:n:?hM:S:T:m:q:ug:l:i:v";
static struct option longOptions[] = static struct option longOptions[] =
{ {
{"res", 1, NULL, 'r'}, {"res", 1, NULL, 'r'},
{"bpp", 1, NULL, 'd'},
{"fullscreen", 0, NULL, 'f'}, {"fullscreen", 0, NULL, 'f'},
{"opengl", 0, NULL, 'o'}, {"opengl", 0, NULL, 'o'},
{"scale", 1, NULL, 'c'}, {"scale", 1, NULL, 'c'},
@@ -531,25 +524,6 @@ parseOptions(int argc, char *argv[], struct options_struct *options)
options->height = height; options->height = height;
break; break;
} }
case 'd':
{
int bpp;
int err = parseIntOption(optarg, &bpp, "bpp");
if (err)
{
badArg = TRUE;
break;
}
if (bpp != 8 && bpp != 16 && bpp != 24 && bpp != 32)
{
fprintf (stderr, "Error: Invalid value specified for "
"bpp; it should be either 8, 16, 24, or 32.\n");
badArg = TRUE;
break;
}
options->bpp = bpp;
break;
}
case 'f': case 'f':
options->gfxFlags |= TFB_GFXFLAGS_FULLSCREEN; options->gfxFlags |= TFB_GFXFLAGS_FULLSCREEN;
break; break;
@@ -861,7 +835,6 @@ usage (FILE *out, const struct options_struct *defaultOptions)
fprintf (out, "Options:\n"); fprintf (out, "Options:\n");
fprintf (out, " -r, --res=WIDTHxHEIGHT (default 640x480, bigger " fprintf (out, " -r, --res=WIDTHxHEIGHT (default 640x480, bigger "
"works only with --opengl)\n"); "works only with --opengl)\n");
fprintf (out, " -d, --bpp=BITSPERPIXEL (default 32)\n");
fprintf (out, " -f, --fullscreen (default off)\n"); fprintf (out, " -f, --fullscreen (default off)\n");
fprintf (out, " -o, --opengl (default off)\n"); fprintf (out, " -o, --opengl (default off)\n");
fprintf (out, " -c, --scale=MODE (bilinear, biadapt, biadv, triscan, " fprintf (out, " -c, --scale=MODE (bilinear, biadapt, biadv, triscan, "