reformed gameboy emulator in golang with revised structure
Screenshots:
Test Pass Checklist:
Blargg:
- 01-special.gb
- 02-interrupts.gb
- 03-op sp, hl.gb
- 04-op r, imm.gb
- 05-op rp.gb
- 06-ld r, r.gb
- 07-jr, jp, call, ret, rst.gb
- 08-misc instrs.gb
- 09-op r,r .gb
- 10-bit ops.gb
- 11-op a, (hl).gb
- cpu_instrs.gb
- instr_timing.gb
tests:
- boot_regs-dmgABC.gb
instr:
- daa.gb
MBC1:
- bits_bank1.gb
- bits_bank2.gb
- bits_mode.gb
- bits-ramg.gb
- multicart_rom_8Mb.gb
- ram_64kb.gb
- ram_256kb.gb
- rom_1Mb.gb
- rom_2Mb.gb
- rom_4Mb.gb
- rom_8Mb.gb
- rom_16Mb.gb
- ram_512kb.gb
TODO:
- Interrupts
- Timers
- Proper joypad functionality
- OAM + DMA
- finish off MBC1
- More interactive VRAM viewer
- play/pause/step functionality
- add emulator window that can be "popped out" of the main window to play the emulator on any screen
- be able to easily change the size of the game window
- pixel fifo
- full restructure of emulator for optimization
- audio
- add more debugging features, live preview of background/window with frame, sprite properties etc.
Usage:
To compile RoseGB in the terminal, type go build
and use ./rosegb path-to-file
to run
use the flag -skip-bootrom
if you don't own a copy of the dmg bootrom