CPU memory map: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
(Don't give the idea that the vectors are some separate area of memory, just data at the end of cart space) |
No edit summary |
||
Line 22: | Line 22: | ||
*$6000-$7FFF = Battery Backed Save or Work RAM | *$6000-$7FFF = Battery Backed Save or Work RAM | ||
*$8000-$FFF9 = Usual ROM, commonly with Mapper Registers (see MMC1 and UxROM for example) | *$8000-$FFF9 = Usual ROM, commonly with Mapper Registers (see [[MMC1]] and [[UxROM]] for example) | ||
The CPU expects three addresses called "vectors" in fixed places at the end of the cartridge space, like so: | The CPU expects three addresses called "vectors" in fixed places at the end of the cartridge space, like so: |
Revision as of 00:57, 1 March 2013
Addr | Size | Device |
---|---|---|
$0000 | $0800 | 2KB internal RAM |
$0800 | $0800 | Mirrors of $0000-$07FF |
$1000 | $0800 | |
$1800 | $0800 | |
$2000 | $0008 | NES PPU registers |
$2008 | $1FF8 | Mirrors of $2000 every 8 bytes |
$4000 | $0018 | NES APU and I/O registers |
$4018 | $BFE8 | Cartridge Space: PRG-ROM, PRG-RAM, and Mapper Registers (See Note) |
Note: Most Common Boards address ROM and Save/Work RAM in this format, Especially in Common INES mappers:
- $6000-$7FFF = Battery Backed Save or Work RAM
- $8000-$FFF9 = Usual ROM, commonly with Mapper Registers (see MMC1 and UxROM for example)
The CPU expects three addresses called "vectors" in fixed places at the end of the cartridge space, like so:
- $FFFA-$FFFB = NMI vector
- $FFFC-$FFFD = Reset vector
- $FFFE-$FFFF = IRQ/BRK vector
Any mapper that switches $E000-$FFF9 will switch $FFFA-$FFFF along with it. If a mapper doesn't fix $C000-$FFFF to the last bank or use some sort of reset detection, the vectors need to be stored in all banks.