|
Eh, I sense a few typos:
0000-1FFF - 2KB of RAM * 0000-07FF - RAM * 0800-0FFF - Mirror of RAM * 1000-17FF - Mirror of RAM * 1800-1FFF - Mirror of RAM 2000-3FFF - PPU I/O interface * 2000-2007 - I/O registers * 2008-200F - Mirror of I/O registers * ... * 3FF8-3FFF - Mirror of I/O registers 4000-4017 - CPU/APU I/O interface * 4000-4013 - APU input registers * 4014 - Sprite DMA macro (write $XX and it reads 256 bytes from $XX00-$XXFF and writes each one to $2004) * 4015 - APU control register * 4016-4017 - Controller I/O (and APU IRQ control) 4018-FFFF - Not mapped internally (i.e. bounced to cartridge) * 6000-7FFF - If the cartridge has an extra 8KB RAM chip (not CHR RAM), it goes here * 8000-FFFF - PRG ROM usually (well, pretty much always) gets mapped here
SPR-RAM and VRAM (nametables) data are dedicated to holding graphics rendering information, so they don't really count as general-purpose memory. I/O registers also do not count, since they generally can *not* be used to store arbitrary data - you sent commands and retrieve status data through them (the APU registers 4000-4013 are not even readable). CPU registers don't count either, since using them to store permanent data would not be feasible.
Effectively, the NES has 2048 bytes of 'general purpose' memory, and 4352 bytes of 'total' memory (not including registers).
-- Quietust P.S. If you don't get this note, let me know and I'll write you another.
|