1.3 KiB
1.3 KiB
Status
Done
- Repo set up, backed up the original game ROMs to roms/backup (gitignored, stays local)
- Got a full set of CPU test ROMs in roms/test/cpu: kevtris nestest (with reference log) plus the blargg suite (instr tests, timing, interrupts, dummy reads, reset checks)
- Cartridge module done and working (src/cartridge.rs):
- iNES header parser (magic, PRG/CHR sizes, mapper, mirroring, flags)
- Mapper 0 (NROM) support only: 16KB PRG mirroring, 32KB direct, CHR-ROM and CHR-RAM (zeroed 8KB buffer)
- read_prg/read_chr/write_chr with debug_assert guards
- Split from_file (thin I/O wrapper) / parse_data (pure parser) for testability
- 8 unit tests, all passing (header, PRG mapping, error cases, CHR-RAM roundtrip)
Next
- CPU (6502 core) - biggest remaining piece for this milestone
- Then bus to connect CPU to RAM/cartridge
- Verify CPU with nestest log diff + blargg suite before any graphics
- GUI (egui + winit) and PPU come after the CPU milestone
Decisions
- No external dependencies yet, keeping it pure std until the GUI milestone
- GUI choice: egui + winit (decided, not yet used)
- Scope: cartridge + CPU first, verified headless before graphics
- Mapper 0 first, other mappers (MMC1, CNROM) implemented after CPU works
- Test ROMs are homebrew/open, no ethics issue; game backups stay in gitignored roms/backup