Files
rnes/STATE.md
T

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