aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9fa3119
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+nes emulator in go
+
+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+
+- [ ] OAM DMA at $4014 (stalls CPU 513/514 cycles)
+- [ ] reuse it in nestest_test.go instead of the test-only bus
+- [ ] CPU stall hook and proper IRQ/NMI line (polled between instructions)
+
+ppu, background
+- [ ] registers $2000-$2007 and v/t/x/w latch logic
+- [ ] nametables with mirroring, pattern tables, palettes, buffered $2007 reads
+- [ ] 341 dots x 262 lines timing, 3 dots per CPU cycle
+- [ ] vblank flag and NMI
+- [ ] 256x240 framebuffer and RGB palette
+
+frontend and input
+- [ ] cmd/gones with Ebitengine, one frame per 1/60s
+- [ ] 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
+- [ ] missing unofficial NOPs
+- [ ] run blargg's CPU, PPU, APU and MMC3 test ROMs
+- [ ] decide whether to go cycle-stepped
+
+polish
+- [ ] save states, pause/reset, fullscreen, gamepad
+- [ ] headless mode with framebuffer-hash regression tests
+
+
+testing:
+run "go test ./..." to run all test, "go test ./... -v" for verbose
+
+disclaimer:
+not affiliated with or endorsed by nintendo. no commercial roms are included, bring your own. (i dont want to get shot by nintendo :D)
+tests/testdata/nestest.nes and nestest.log are by kevin horton (kevtris), included for testing only.
+provided as is, without warranty.