aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorcrecher <crecher@crecher.net>2026-10-12 16:41:11 +0200
committercrecher <crecher@crecher.net>2026-10-12 16:41:11 +0200
commit84801d18b9885c6d70914c67a76d8ac8e3b2b20d (patch)
treef5e6c2ba2b2a7738a22226ca19b7562832cbce8a /README.md
parent0be10a289132f7ed9b42d5949db844227075e7ce (diff)
downloadgones-84801d18b9885c6d70914c67a76d8ac8e3b2b20d.tar.gz
gones-84801d18b9885c6d70914c67a76d8ac8e3b2b20d.zip
i changed my mind i like markdown
Diffstat (limited to 'README.md')
-rw-r--r--README.md56
1 files changed, 56 insertions, 0 deletions
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.