Skip to content

Commit 36b3cd4

Browse files
committed
Add cli options to force fullscreen or windowed
1 parent 051c64b commit 36b3cd4

4 files changed

Lines changed: 41 additions & 5 deletions

File tree

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,13 @@ Don't hesitate to report bugs or ask for new features by [opening an issue](http
6969

7070
### Command Line Usage
7171
```
72-
gearboy [rom_file] [symbol_file]
72+
gearboy [options] [rom_file] [symbol_file]
73+
74+
Options:
75+
-f, --fullscreen Start in fullscreen mode
76+
-w, --windowed Start in windowed mode with menu visible
77+
-v, --version Display version information
78+
-h, --help Display this help message
7379
```
7480

7581
## Build Instructions

platforms/desktop-shared/application.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,25 @@ static void render(void);
5050
static void frame_throttle(void);
5151
static void save_window_size(void);
5252

53-
int application_init(const char* rom_file, const char* symbol_file)
53+
int application_init(const char* rom_file, const char* symbol_file, bool force_fullscreen, bool force_windowed)
5454
{
5555
Log("\n%s", GEARBOY_TITLE_ASCII);
5656
Log("%s %s Desktop App", GEARBOY_TITLE, GEARBOY_VERSION);
5757

5858
config_init();
5959
config_read();
6060

61+
if (force_fullscreen)
62+
{
63+
config_emulator.fullscreen = true;
64+
config_emulator.show_menu = false;
65+
}
66+
else if (force_windowed)
67+
{
68+
config_emulator.fullscreen = false;
69+
config_emulator.show_menu = true;
70+
}
71+
6172
int ret = sdl_init();
6273
emu_init();
6374

platforms/desktop-shared/application.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ EXTERN float application_display_scale;
3636
EXTERN SDL_version application_sdl_build_version;
3737
EXTERN SDL_version application_sdl_link_version;
3838

39-
EXTERN int application_init(const char* rom_file, const char* symbol_file);
39+
EXTERN int application_init(const char* rom_file, const char* symbol_file, bool force_fullscreen, bool force_windowed);
4040
EXTERN void application_destroy(void);
4141
EXTERN void application_mainloop(void);
4242
EXTERN void application_trigger_quit(void);

platforms/desktop-shared/main.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ int main(int argc, char* argv[])
2525
char* rom_file = NULL;
2626
char* symbol_file = NULL;
2727
bool show_usage = false;
28+
bool force_fullscreen = false;
29+
bool force_windowed = false;
2830
int ret = 0;
2931

3032
for (int i = 0; i < argc; i++)
@@ -42,6 +44,14 @@ int main(int argc, char* argv[])
4244
printf("Author: Ignacio Sánchez (drhelius)\n");
4345
return 0;
4446
}
47+
else if ((strcmp(argv[i], "-f") == 0) || (strcmp(argv[i], "--fullscreen") == 0))
48+
{
49+
force_fullscreen = true;
50+
}
51+
else if ((strcmp(argv[i], "-w") == 0) || (strcmp(argv[i], "--windowed") == 0))
52+
{
53+
force_windowed = true;
54+
}
4555
else if (argv[i][0] == '-')
4656
{
4757
show_usage = true;
@@ -68,11 +78,20 @@ int main(int argc, char* argv[])
6878

6979
if (show_usage)
7080
{
71-
printf("Usage: %s [rom_file] [symbol_file]\n", argv[0]);
81+
printf("Usage: %s [options] [rom_file] [symbol_file]\n", argv[0]);
82+
printf("Options:\n");
83+
printf(" -f, --fullscreen Start in fullscreen mode\n");
84+
printf(" -w, --windowed Start in windowed mode with menu visible\n");
85+
printf(" -v, --version Display version information\n");
86+
printf(" -h, --help Display this help message\n");
7287
return ret;
7388
}
7489

75-
ret = application_init(rom_file, symbol_file);
90+
// Don't allow both fullscreen and windowed at the same time
91+
if (force_fullscreen && force_windowed)
92+
force_fullscreen = false;
93+
94+
ret = application_init(rom_file, symbol_file, force_fullscreen, force_windowed);
7695

7796
if (ret == 0)
7897
application_mainloop();

0 commit comments

Comments
 (0)