From 84801d18b9885c6d70914c67a76d8ac8e3b2b20d Mon Sep 17 00:00:00 2001 From: crecher Date: Mon, 12 Oct 2026 16:41:11 +0200 Subject: i changed my mind i like markdown --- README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..49ebf61 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# nes emulator in go + +im trying to make it somewhat commented so yeah :D + +### TODO: +#### emulator base +- [x] cpu passing nestest +- [x] cart package (iNES parser, mapper 0) + +#### system bus (nes package) +- [/] Bus type: 2KB RAM mirrored through $1FFF, PPU regs $2000-$3FFF (mirrored every 8), APU/IO $4000-$4017, cart $4020+ (APU still missing) +- [ ] OAM DMA at $4014 (stalls CPU 513/514 cycles) +- [x] reuse it in nestest_test.go instead of the test-only bus +- [ ] CPU stall hook and proper IRQ/NMI line (polled between instructions) - PPU currently fires NMI straight from Console.Step, see its doc comment + +#### ppu, background +- [x] registers $2000-$2007 and v/t/x/w latch logic +- [x] nametables with mirroring, palettes, buffered $2007 reads (pattern tables go through the mapper already) +- [x] 341 dots x 262 lines timing, 3 dots per CPU cycle, odd-frame skip dot +- [x] vblank flag and edge-triggered NMI, including the $2002 set-dot race window (see ppu/registers.go's readStatus) +- [ ] background shift-register pixel pipeline, PPUMASK clipping +- [ ] 256x240 framebuffer and RGB palette + +#### frontend and input +- [ ] cmd/gones sdl2 gui (veandco/go-sdl2): window, framebuffer texture, one frame per 1/60s, vsync +- [ ] sdl2 audio output (queue or callback) +- [ ] controller $4016/$4017 strobe and shift register, keyboard mapping + +#### ppu, sprites +- [ ] OAM, per-scanline evaluation, 8-sprite limit, 8x8 and 8x16, flip, priority +- [ ] sprite-0 hit + +#### more mappers +- [ ] MMC1 (1), UxROM (2), CNROM (3), AxROM (7) +- [ ] MMC3 (4) with scanline IRQ +- [ ] battery-backed save files + +#### apu +- [ ] pulse x2, triangle, noise, DMC, frame counter, mixer +- [ ] resampling and audio output + +#### accuracy +- [ ] implement all unofficial instructions +- [ ] run accuracycoin and blargg's CPU, PPU, APU and MMC3 test ROMs + +#### polish +- [ ] save states, pause/reset, fullscreen, gamepad +- [ ] headless mode with framebuffer-hash regression tests +- [ ] movie support +- [ ] (maybe) tas tools + + +### testing: +run `go test ./...` to run all tests + +`tests/testdata/nestest.nes` and `tests/testdata/nestest.log` are by kevin horton (kevtris), included for testing only. -- cgit v1.2.3