a gameboy emulator for funsies
Games are playable at 60 FPS. CPU cycle accuracy, but memory timings not correct. No audio.
$ gogo-gb --help
gogo-gb is a scrappy Game Boy emulator written in the Go programming language.
This is a side-project for fun with indeterminate goals and not a stable emulator.
Usage:
gogo-gb [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
inspect Inspect cartridges, emulator internals, etc.
run Run a cartridge
Flags:
-h, --help help for gogo-gb
--log string Path to log file. Default/empty implies stdout
Use "gogo-gb [command] --help" for more information about a command.
- Pass all of Blargg's
cpu_instrs
ROMs (verified viagameboy-doctor
) - Implement MBC1
- Implement MBC5
- Implement MBC3 (w/o RTC)
- Implement serial port (w/ option to log to console)
- Implement timer
- Pass Blargg's
instr_timing.gb
ROM (manually verified) - Implement a basic interactive debugger
- Implement LCD
- Implement PPU, VRAM, OAM, etc.
- Implement Joypad
- Implement SRAM save & restore
- Achieve ~60 FPS
- Implement
watch
in debugger for memory & register changes - Implement RTC for MBC3
- Implement PPU registers debugging
- Implement GBC
- Pass
dmg-acid2
test ROM - Implement Sound/APU
Just being realistic about my likelihood of getting to these:
- Pass Blargg's
mem_timing
ROMs (manually verified) - Pass Blargg's
mem_timing-2
ROMs (manually verified) - FIFO-based rendering PPU (currently scanline)
- Implement emulation for every known DMG bug
- Implement SGB mode
- Implement MBC2
- Implement MBC6
- Implement MBC7
- Implement MBC1M, MMM01, other multicarts, or Hudson carts
- Implement (any) accessories