@@ -11,7 +11,7 @@ Why? | |||||
While the internet is full of emulators for retro game systems, writing one is | While the internet is full of emulators for retro game systems, writing one is | ||||
nevertheless a fun learning project. | nevertheless a fun learning project. | ||||
Crater is named after [31 Crateris][crateris], a star that was – for a short | |||||
crater is named after [31 Crateris][crateris], a star that was – for a short | |||||
time in 1974 – misidentified as [a moon of Mercury][moon]. Mercury was Sega's | time in 1974 – misidentified as [a moon of Mercury][moon]. Mercury was Sega's | ||||
codename for the Game Gear during development. | codename for the Game Gear during development. | ||||
@@ -39,5 +39,19 @@ ROM path. You can provide a path directly with `./crater path/to/rom`. | |||||
Add or symlink ROMs to `roms/` at your leisure. Note that they should end in | Add or symlink ROMs to `roms/` at your leisure. Note that they should end in | ||||
`.gg` or `.bin`. | `.gg` or `.bin`. | ||||
Add `--fullscreen` (`-f`) to enable fullscreen mode, or `--scale <n>` | |||||
(`-s <n>`) to scale the game screen by an integer factor. | |||||
`./crater -h` gives (fairly basic) command-line usage, and `./crater -v` gives | `./crater -h` gives (fairly basic) command-line usage, and `./crater -v` gives | ||||
the current version. | the current version. | ||||
### Advanced options | |||||
crater supports several advanced features. Add `--debug` (`-g`) to display | |||||
detailed information about emulation state while running, including register | |||||
values and memory contents. You can also pause emulation to set breakpoints and | |||||
change state. | |||||
`--assemble <input> <output>` (`-a`) converts z80 assembly source code into a | |||||
`.gg` binary that can be run by crater. `--disassemble <input> <output>` (`-d`) | |||||
executes the opposite operation. |
@@ -18,7 +18,25 @@ | |||||
/* Print command-line help/usage. */ | /* Print command-line help/usage. */ | ||||
static void print_help(const char *arg1) | static void print_help(const char *arg1) | ||||
{ | { | ||||
printf("%s [--help|-h] [--version|-v] [rom_path]\n", arg1); | |||||
printf("%s [-h] [-v] [-f] [-s <n>] [<rom_path>] ...\n" | |||||
"\n" | |||||
"basic options:\n" | |||||
" -h, --help show this help message and exit\n" | |||||
" -v, --version show crater's version number and exit\n" | |||||
" -f, --fullscreen enable fullscreen mode\n" | |||||
" -s, --scale <n> scale the game screen by an integer factor\n" | |||||
" (applies to windowed mode only)\n" | |||||
" <rom_path> path to the rom file to execute; if not given, will look\n" | |||||
" in the roms/ directory and prompt the user\n" | |||||
"\n" | |||||
"advanced options:\n" | |||||
" -g, --debug display information about emulation state while running,\n" | |||||
" including register and memory values; can also pause\n" | |||||
" emulation, set breakpoints, and change state\n" | |||||
" -a, --assemble <in> <out> convert z80 assembly source code into a\n" | |||||
" binary file that can be run by crater\n" | |||||
" -d, --disassemble <in> <out> convert a binary file into z80 assembly code\n", | |||||
arg1); | |||||
} | } | ||||
/* Print crater's version. */ | /* Print crater's version. */ | ||||
@@ -47,6 +65,11 @@ static void parse_args(int argc, char *argv[]) | |||||
} else if (!strcmp(arg, "v") || !strcmp(arg, "version")) { | } else if (!strcmp(arg, "v") || !strcmp(arg, "version")) { | ||||
print_version(); | print_version(); | ||||
exit(0); | exit(0); | ||||
// f fullscreen | |||||
// s scale | |||||
// g debug | |||||
// a assemble | |||||
// d disassemble | |||||
} else { | } else { | ||||
FATAL("unknown argument: %s", argv[i]) | FATAL("unknown argument: %s", argv[i]) | ||||
} | } | ||||