Added command line option to start in fullscreen mode.

This commit is contained in:
TomW 2015-11-02 18:05:23 +00:00
commit 8e9adf91de
4 changed files with 108 additions and 5 deletions

View file

@ -48,7 +48,7 @@ uint64_t timer_read()
return 0;
}
int main()
int main(int argc, char *argv[])
{
int frames = 0;
int c, d;
@ -59,7 +59,7 @@ int main()
install_int_ex(onesec, BPS_TO_TIMER(1));
midi_init();
initpc();
initpc(argc, argv);
d = romset;
for (c = 0; c < ROM_MAX; c++)

View file

@ -478,3 +478,4 @@ void onesec();
void resetpc_cad();
extern int start_in_fullscreen;

View file

@ -36,6 +36,7 @@
#include "vid_voodoo.h"
#include "video.h"
int start_in_fullscreen = 0;
int frame = 0;
int cdrom_enabled;
@ -189,9 +190,10 @@ void pc_reset()
// video_init();
}
void initpc()
void initpc(int argc, char *argv[])
{
char *p;
int c;
// allegro_init();
get_executable_name(pcempath,511);
pclog("executable_name = %s\n", pcempath);
@ -199,6 +201,20 @@ void initpc()
*p=0;
pclog("path = %s\n", pcempath);
for (c = 1; c < argc; c++)
{
if (!strcasecmp(argv[c], "--help"))
{
printf("PCem command line options :\n\n");
printf("-fullscreen - start in fullscreen mode\n");
exit(-1);
}
else if (!strcasecmp(argv[c], "--fullscreen"))
{
start_in_fullscreen = 1;
}
}
keyboard_init();
mouse_init();
joystick_init();

View file

@ -391,6 +391,77 @@ void get_registry_key_map()
pclog("Done preparing!\n");
}
static char **argv;
static int argc;
static char *argbuf;
static void process_command_line()
{
char *cmdline;
int argc_max;
int i, q;
cmdline = GetCommandLine();
i = strlen(cmdline) + 1;
argbuf = malloc(i);
memcpy(argbuf, cmdline, i);
argc = 0;
argc_max = 64;
argv = malloc(sizeof(char *) * argc_max);
if (!argv)
{
free(argbuf);
return;
}
i = 0;
/* parse commandline into argc/argv format */
while (argbuf[i])
{
while (argbuf[i] == ' ')
i++;
if (argbuf[i])
{
if ((argbuf[i] == '\'') || (argbuf[i] == '"'))
{
q = argbuf[i++];
if (!argbuf[i])
break;
}
else
q = 0;
argv[argc++] = &argbuf[i];
if (argc >= argc_max)
{
argc_max += 64;
argv = realloc(argv, sizeof(char *) * argc_max);
if (!argv)
{
free(argbuf);
return;
}
}
while ((argbuf[i]) && ((q) ? (argbuf[i] != q) : (argbuf[i] != ' ')))
i++;
if (argbuf[i])
{
argbuf[i] = 0;
i++;
}
pclog("Arg %i - %s\n",argc-1,argv[argc-1]);
}
}
argv[argc] = NULL;
}
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
@ -403,6 +474,8 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
int c, d;
LARGE_INTEGER qpc_freq;
process_command_line();
hinstance=hThisInstance;
/* The Window structure */
wincl.hInstance = hThisInstance;
@ -470,7 +543,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
ghwnd=hwnd;
initpc();
initpc(argc, argv);
vid_apis[0][vid_api].init(ghwnd);
@ -568,7 +641,20 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
// setrefresh(100);
// ShowCursor(TRUE);
if (start_in_fullscreen)
{
startblit();
mouse_close();
vid_apis[0][vid_api].close();
video_fullscreen = 1;
vid_apis[1][vid_api].init(ghwnd);
mouse_init();
leave_fullscreen_flag = 0;
endblit();
device_force_redraw();
}
/* Run the message loop. It will run until GetMessage() returns 0 */
while (!quited)
{