diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-09-11 19:26:35 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-09-11 19:26:35 -0700 |
commit | 98cea1dba54cfd7ea8e8753076acd0bb79604e0b (patch) | |
tree | ea131bee7fb5e238436647fe62c7ab1eb7f3e3ee /blastem.c | |
parent | 4d20ddd615f7f07ec56d70ee90f2c61d76a7ad7f (diff) |
Fix argument handling so that the rom filename does not need to be specified first
Diffstat (limited to 'blastem.c')
-rw-r--r-- | blastem.c | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -1,6 +1,6 @@ /* Copyright 2013 Michael Pavone - This file is part of BlastEm. + This file is part of BlastEm. BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. */ #include "68kinst.h" @@ -1731,7 +1731,7 @@ void detect_region() int main(int argc, char ** argv) { if (argc < 2) { - fputs("Usage: blastem ROMFILE [OPTIONS] [WIDTH] [HEIGHT]\n", stderr); + fputs("Usage: blastem [OPTIONS] ROMFILE [WIDTH] [HEIGHT]\n", stderr); return 1; } config = load_config(argv[0]); @@ -1741,6 +1741,8 @@ int main(int argc, char ** argv) int debug = 0; int ym_log = 0; int loaded = 0; + uint8_t force_version = 0; + char * romfname = NULL; FILE *address_log = NULL; char * statefile = NULL; uint8_t fullscreen = 0; @@ -1773,15 +1775,15 @@ int main(int argc, char ** argv) { case 'j': case 'J': - version_reg = NO_DISK | JAP; + force_version = NO_DISK | JAP; break; case 'u': case 'U': - version_reg = NO_DISK | USA; + force_version = NO_DISK | USA; break; case 'e': case 'E': - version_reg = NO_DISK | EUR; + force_version = NO_DISK | EUR; break; default: fprintf(stderr, "'%c' is not a valid region character for the -r option\n", argv[i][0]); @@ -1801,7 +1803,7 @@ int main(int argc, char ** argv) break; case 'h': puts( - "Usage: blastem ROMFILE [OPTIONS] [WIDTH] [HEIGHT]\n" + "Usage: blastem [OPTIONS] ROMFILE [WIDTH] [HEIGHT]\n" "Options:\n" " -h Print this help text\n" " -r (J|U|E) Force region to Japan, US or Europe respectively\n" @@ -1820,9 +1822,10 @@ int main(int argc, char ** argv) } } else if (!loaded) { if(!load_rom(argv[i])) { - fprintf(stderr, "Failed to open %s for reading\n", argv[1]); + fprintf(stderr, "Failed to open %s for reading\n", argv[i]); return 1; } + romfname = argv[i]; loaded = 1; } else if (width < 0) { width = atoi(argv[i]); @@ -1834,6 +1837,9 @@ int main(int argc, char ** argv) fputs("You must specify a ROM filename!\n", stderr); return 1; } + if (force_version) { + version_reg = force_version; + } update_title(); int def_width = 0; char *config_width = tern_find_ptr(config, "videowidth"); @@ -1883,9 +1889,9 @@ int main(int argc, char ** argv) gen.psg = &p_context; genesis = &gen; - int fname_size = strlen(argv[1]); + int fname_size = strlen(romfname); sram_filename = malloc(fname_size+6); - memcpy(sram_filename, argv[1], fname_size); + memcpy(sram_filename, romfname, fname_size); int i; for (i = fname_size-1; fname_size >= 0; --i) { if (sram_filename[i] == '.') { |