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.

Log in or register to write something here or to contact authors.