CURSO de ASM 6502 [NES]

Apéndice II - Mapa de memoria de la NES

Por DaRKWiZaRDX

IMPORTANTE: Verás algunos términos aquí que no he explicado en la guía, ya que son cosas internas de la consola y no eran necesarias para aprender el lenguaje, cosas tales como sprites, fondo, pAPU, etc. Si necesitas información sobre estos temas te recomiendo buscar documentos en Romhacking.net o en Google.

Memoria del procesador: (64 kB)

RANGO DE MEMORIA

TAMAÑO

DESCRIPCIÓN

$0000 - $07FF $800 Espacio de RAM... ¡Aprovéchala bien que es poca! xD
$0800 - $1FFF $1800 Mirroring de la RAM... Un total desperdicio de espacio.
$2000 - $2007 7 Registros de PPU.
$2008 - $3FFF $1FF7 Mirroring de los registros del PPU... más desperdicio de espacio todavía.
$4000 - $4015 $15 Registros de pAPU (chip de sonido). CON EXCEPCIÓN DE $4014, QUE ES EL REGISTRO DE SPRITE-DMA.
$4016 - $4017 2 Registros de lectura de joypads.
$5000 - $5FFF $1000 Espacio de expansión de memoria para el chip MMC5 de Nintendo.
$6000 - $7FFF $2000 Save-RAM para juegos que lo usen, además de ser una extensa zona de RAM para el juego.
$8000 - $FFFA $7FFA PRG-ROM. Acá va cargado el código que compone el juego.
$FFFA - $FFFF 6 Vectores de interrupción, indican a la NES cómo reaccionar ante ciertas situaciones (VBLank, Reset y IRQ/BRK respectivamente). Cada vector es un valor de 16bits.

Memoria de PPU: (16 kB)

RANGO DE MEMORIA

TAMAÑO

DESCRIPCIÓN

$0000 - $0FFF $1000 Pattern table nº 0
$1000 - $1FFF $1000 Pattern table nº 1
$2000 - $23BF $03BF Name table nº 0
$23C0 - $23FF $003F Attribute table nº 0
$2400 - $27BF $03BF Name table nº 1 (Mirror) *
$27C0 - $27FF $003F Attribute table nº 1 (Mirror) *
$2800 - $2BBF $03BF Name table nº 2 (Mirror) *
$2BC0 - $2BFF $003F Attribute table nº 2 (Mirror) *
$2C00 - $2FBF $03BF Name table nº 3 (Mirror) *
$2FC0 - $2FFF $003F Attribute table nº 3 (Mirror) *
$3000 - $3EFF $0F00 Mirror de $2000 - $2EFF
$3F00 - $3F0F 16 Paletas de background (fondo)
$3F10 - $3F1F 16 Paletas de sprites
$3F20 - $3FFF $00DF Mirror de las paletas

(*) El mirroring depende de lo que se haya definido en el header.
- Si el mirroring es vertical tendremos las tablas 0 y 2, y las tablas 1 y 3 respectivamente serán sus mirrors.
- Si el mirroring es horizontal tendremos las tablas 0 y 1, y las tablas 2 y 3 respectivamente serán sus mirrors.
- Si usamos una sola pantalla tenemos la 0, y las otras tres son mirrors de ésta.
- Si optamos por el modo de cuatro ventanas en el header tendremos cuatro Name Tables independientes.