aboutsummaryrefslogtreecommitdiff
path: root/README
blob: a53a78a2036e2c71aac0e457719647496405009f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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 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
- [ ] 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
- [ ] movie support


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.