Tiles y bitplanes

Los gráficos en los juegos de las consolas de la generación de los 8 y 16 bits están formados por tiles, que son imágenes pequeñas que se usan para construir imágenes más grandes. Cada tile representa una parte de algo mayor, como por ejemplo la esquina de una plataforma, o parte de la cabeza de nuestro personaje, y juntando tiles conseguimos formar imágenes mayores.

Este es un ejemplo. Cada cuadrado rojo define un tile. Como ves, hay imágenes que están formadas por cuatro tiles, como la hoja, la rana, etc. Pero pueden unirse muchos más tiles para formar estructuras mayores. Por ejemplo la pantalla de título del Super Mario Bros 3 de NES.

Los niveles del juego, las plataformas, fondos,... todo está formado por tiles, que se almacenan en la ROM.

Ejemplo de tiles para escenarios, esta vez del Prince Of Persia de NES.

Los chips de video de las consolas de 8 y 16 bits siempre trabajan con tiles; no pueden sencillamente mostrar una imagen en bloque, como un JPG o un BMP. Para ello los programadores deben partir la imagen y codificarla en un mapa de coordenadas, por así decirlo.

Tiles

Los tiles se suelen componer de 8x8 píxels. Empezando por un caso sencillo, imaginemos que cada píxel se representa por un bit, entonces la presencia de un píxel se indica con un 1, y la ausencia con un 0.

Por ejemplo, para representar una línea de un tile podríamos tener la secuencia de bits:

 

Binario: 11010111

Cada uno indica la presencia de un pixel (por ejemplo en blanco), mientras que un cero indica que no hay píxel (o sea, que está apagado, o en negro). Podríamos representar la forma del número 1 de la siguiente manera

00000000
00001000 
00011000 
00111000 
00011000 
00011000 
00011000 
00011000 
00000000

Si en lugar de ceros se escriben puntos, se aprecia mejor la forma.

........ 
....1... 
...11... 
..111... 
...11... 
...11... 
...11... 
...11... 
........

Así que la secuencia de ceros y unos, toda seguida, que es como se almacena en memoria, definiría la forma de un tile con forma de uno. La secuencia sería:

 

Binario: 000000000000100000011000001110000001100000011000000110000001100000000000

Que se suele escribir en hexadecimal para abreviar (donde cada cuatro bits se sustituyen por una cifra de 0 a 9 y de A a F).

Hex: 00 08 18 38 18 18 18 18 00

De manera que ya sabríamos como codificar un tile que mostrara sólo dos posibles colores, el representado por el uno, y el representado por el cero. Como es habitual que uno de los colores se reserve para el transparente (por ejemplo, en los sprites), un tile como el que acabo de presentar sería de un solo color. Esto es un esquema muy limitado. ¿Qué podemos hacer?

Usar planos de bits, o bitplanes (en inglés).

Bitplanes

En lugar de usar un una sola secuencia de bits para representar el tile, se pueden usar varias secuencias. De este modo, cada nueva secuencia proporciona un bit adicional, duplicando el número de colores posibles, y así, cada píxel viene definido por la combinación de varios bits, en lugar de uno solo.

Por ejemplo, si se usan dos secuencias para representar un tile, cada píxel viene definido por el estado de dos bits, en lugar de uno, y por lo tanto permite cuatro combinaciones de colores (tres más el transparente). A cada secuencia de estas se las llama bitplane (en inglés, claro). La cantidad de colores que se pueden usar depende del número de bitplanes usados, y es igual a dos elevado al número de éstos. Por ejemplo, con ocho bitplanes, podemos obtener 256 colores ( 2 elevado a 8 = 256 ).

El tema es saber cómo y en que orden almacenar cada secuencia. Esto depende de cada máquina, y existen varias alternativas. Una posibilidad es poner una secuencia tras otra, por ejemplo, usando el ejemplo anterior:

Hex: 00 08 18 38 18 18 18 18 00

A continuación se añadiría otra secuencia para definir el bitplane 2.

Y así podrían añadirse tanto bitplanes como se quisiera. Normalmente se usan dos, cuatro u ocho planos, para obtener 4, 16 o 256 colores. ¿Fácil, no?

En NES se usa exactamente el esquema de dos bitplanes que acabo de poner como ejemplo; primero uno, y luego el otro.

En SNES no obstante, es un poco más complejo, pues no se coloca un bitplane después de otro, sino que deben entrelazarse, debido principalmente a que la consola puede manejar tiles de 4, 16 o 256 colores, dependiendo del modo gráfico en el que se la ponga a trabajar. Mientras que en la NES existe un único modo gráfico, en SNES existen siete. Pero aunque esto lo complica un poco, no es algo radicalmente distintio. Si se comprende el esquemas sencillo, entender el resto es fácil. Si sientes curiosidad, lee los apartados sobre los formatos de tiles en NES y SNES o pregúntame.