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.