Eventually, this will be a fully featured Gameboy/Gameboy Color emulator written in Rust.
- High quality, thoroughly documented, and performant code, useful as a learning resource for Gameboy emulation.
- Cycle accuracy with various original hardware models for accurate emulation.
- Full-featured debugging interface
Well let's be real, I'm writing this because I want to. But here's some post-rationalization:
- Some of the most highly accurate emulators, lke BGB & Beaten Dying Moon, are not open source and thus not very useful for learning about Gameboy emulator development.
- Other high quality emulators, like Sameboy, mooneye-gb, etc, suffer from either a) overengineered code that is difficult to read, or b) C++ that is difficult (for me, and I'm sure many others) to reason about.
- Initial implementation of CPU, PPU, APU, serial, interrupts, etc.
- Save states
- Frame / cycle rewinding
- Remove all panics and do graceful error handling
- Web-based debugger
- Memory viewer/editor
- Jump to location
- CPU+HW register viewer/editor
- Breakpoints
- Break
- Step forward
- Step frame
- Step backward
- VRAM viewer
- Load symbol map
- Cart memory bank controllers
- MBC1
- MBC2
- MBC3
- MBC5
- MBC7
- PPU cycle accuracy
- Blargg test suite
- instr_timing
- mem_timing
- cpu_instrs
- dmg_sound
- oam_bug
- mooneye-gb test suite
- acceptance
- acceptance/bits
- acceptance/instr
- acceptance/oam_dma
- acceptance/ppu
- acceptance/serial
- with skipped bootrom
- with real bootrom
- acceptance/timer
- mbc1
- mealybug-tearoom test suite
- GBC implementation
- Bootrom + skip
- RAM banking
- VRAM banking
- KEY1 register mode select
- CGB palettes
- VRAM DMA
- BG Map attributes
- Infra port?
- PCM registers
- SGB implementation
- Bootrom + skip
- SGB command packet protocol
- SGB border
- SGB color palettes