2A03 CPU memory map
2A03 CPU is a
6502-compatible CPU without the decimal mode (CLD and SED do nothing). It has an on-die
sound generator, very limited
DMA capability, and an
input device controller that can be accessed through the
2A03 registers.
__________________________________________
0000| System RAM |
|__________________________________________|
0800| Mirrors of $0000-$07ff |
|__________________________________________|
2000| NES PPU registers |
|__________________________________________|
2008| Mirrors of $2000-$2007 |
|__________________________________________|
4000| 2A03 registers |
|__________________________________________|
4018| Area controlled by mapper |
| Some of the more complex mappers' |
| registers appear here. |
|__________________________________________|
6000| Extra work RAM on cartridge |
| Some boards power this RAM with a |
| battery to allow for saving the game. |
| Other boards may map ROM here. |
|__________________________________________|
8000| Cartridge program ROM |
|__________________________________________|
2C02 PPU memory map
2C02 PPU is a
character generator with
sprites, designed by Nintendo specifically for the NES.
__________________________________________
0000| Pattern table 0 |
|__________________________________________|
1000| Pattern table 1 |
|__________________________________________| _____ _____
2000| Nametable 0 | | | |
|__________________________________________| | 0 | 1 |
2400| Nametable 1 | |_____|_____|
|__________________________________________| | | |
2800| Nametable 2 | | 2 | 3 |
|__________________________________________| |_____|_____|
2c00| Nametable 3 |
|__________________________________________|
3000| Mirror of $2000-$2eff |
|__________________________________________|
3f00| Palette |
|__________________________________________|
3f20| Mirrors of $3f00-$3f1f |
|__________________________________________|
The NES PPU has enough RAM for two nametables (0 and 3); it brings some PPU nametable address lines to the cart edge so that the cart can decide whether to map 0 onto 2 and 1 onto 3 (vertical mirroring as in Super Mario Brothers and Contra) or 0 onto 1 and 2 onto 3 (horizontal mirroring as in Kid Icarus and Ikari), all screens to either 0 or 3 (as in many Rare games such as Battletoads and Jeopardy!), or all screens to RAM on the cartridge (as in Gauntlet). Split-screen games that scroll in all four directions (such as Super Mario Brothers 3 and Kirby's Adventure) often use vertical or one-screen mirroring (with a small amount of screen corruption at the sides due to tiles wrapping around the sides) and stick the status bar in some random unused area of the screen.