Cómo se almacena un tile en la SNES en memoria?

En la SNES, los gráficos no utilizan un formato lineal (píxel por píxel). Utilizan un formato planar (planos de bits).

Para dibujar un tile estándar de 8×8 píxeles a 16 colores (4bpp), se necesitan 4 bits por píxel.

El cálculo es el siguiente:

  • Un tile mide 8×8 = 64 píxeles.
  • A 4 bits por píxel: 64 píxeles × 4 = 256 bits.
  • Como 1 byte equivale a 8 bits: 256 bits ÷ 8 = 32 bytes.

Esto significa que un tile completo ocupa exactamente 32 bytes en la memoria.

Entrelazado de planos (Interleaving)

La memoria divide estos 32 bytes en 4 “planos” o capas. Los datos no se escriben de forma secuencial por plano, sino que se entrelazan por pares para que el PPU los procese más rápido.

Rango de bytes Función
Bytes 0–15 Contienen las 8 líneas de los Planos 1 y 2 entrelazados.
Bytes 16–31 Contienen las 8 líneas de los Planos 3 y 4 entrelazados.

Orden de escritura por línea

Para procesar la primera línea de 8 píxeles del tile, el hardware lee los primeros bytes así:

  • $00: Fila 1, Plano 1.
  • $01: Fila 1, Plano 2.
  • $02: Fila 2, Plano 1.
  • $03: Fila 2, Plano 2.

Ejemplo en memoria (WRAM)

Si volcamos un bloque de memoria temporal desde la dirección $7060 donde la CPU está construyendo un gráfico, obtenemos exactamente los 32 bytes de un tile:

7060: 00 00 7C 00 C6 00 C6 00 7E 00 06 00 0C 00 78 00
7070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Análisis del volcado

  • Direcciones $7070 a $707F: Todos son $00. Significa que los Planos 3 y 4 están vacíos.
  • Bytes impares ($7061, $7063…): Todos son $00. Significa que el Plano 2 está vacío.
  • Bytes pares ($7060, $7062…): Contienen datos. Este gráfico solo utiliza el Plano 1 (es de 1bpp monocromático).

Representación visual (Plano 1)

Si tomamos únicamente las direcciones pares (el Plano 1) de ese bloque de memoria y convertimos los valores hexadecimales a binario, los unos (1) representan píxeles activos y los ceros (0) el fondo transparente.

Dirección Hex Binario Píxeles
$7060 $00 00000000 ........
$7062 $7C 01111100 .█████..
$7064 $C6 11000110 ██...██.
$7066 $C6 11000110 ██...██.
$7068 $7E 01111110 .██████.
$706A $06 00000110 .....██.
$706C $0C 00001100 ....██..
$706E $78 01111000 .████...

Resultado: Los bits forman exactamente el número 9.

La CPU escribe estos bytes secuencialmente. Una vez que los 32 bytes están ensamblados en esta porción de la memoria WRAM, el gráfico queda listo para ser transferido en bloque hacia la VRAM mediante un canal DMA.

Leave a Reply

Your email address will not be published. Required fields are marked *

Are you human? Please solve:Captcha