Ben Kurtovic 7bbf32f52c | vor 9 Jahren | |
---|---|---|
roms | vor 10 Jahren | |
src | vor 9 Jahren | |
.gitignore | vor 10 Jahren | |
LICENSE | vor 9 Jahren | |
README.md | vor 9 Jahren | |
crater.c | vor 9 Jahren | |
makefile | vor 9 Jahren |
crater is an emulator for the Sega Game Gear, written in C.
While the internet is full of emulators for retro game systems, writing one is nevertheless a fun learning project.
crater is named after 31 Crateris, a star that was – for a short time in 1974 – misidentified as a moon of Mercury. Mercury was Sega’s codename for the Game Gear during development.
Only OS X and Linux are tested. You’ll need a decent compiler that supports C11
(clang preferred) and SDL 2. Using Homebrew, you can brew install sdl2
; using
apt, you can apt-get install libsdl2-dev
.
Run make
to create ./crater
. To build the development version with debug
symbols (they can exist simultaneously), run make DEBUG=1
, which creates
./crater-dev
.
Running ./crater
without arguments will display a list of ROM images located
in the roms/
directory, and then ask the user to pick one, or enter their own
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
.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
the current version.
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.