TODO
====
- mapper 4 (MMC3) for SMB3, kirby
- save states maybe?
- DMC channel (sample playback, not sure if i need this)
- the ppu timing is probably wrong, some games might break

DONE
====
- cpu opcodes (ALL of them, took forever)
- ppu background rendering
- sprite rendering + sprite zero
- controller input (the strobe thing was confusing)
- nametable mirroring fix
- scrolling!! SMB actually scrolls now
- mapper 1 (MMC1) - zelda, metroid, mega man 2 all work
- APU sound! pulse, triangle, noise channels working

BUGS I KNOW ABOUT
==================
- some sprites look glitchy
- no sprite overflow limit (8 per scanline)
- DMA timing is wrong but doesnt seem to matter??
- single-screen mirroring not implemented
- audio buffer is janky, might crackle sometimes