Lección 04 – Tiles a partir de imágenes (II)

Aventuras en Megadrive: Tiles a partir de imágenes (II)

Para comprobar si el SGDK sólo carga en memoria VRAM las tiles necesarias, vamos a repetir el mismo proyecto anterior (consejo: clona), pero con este gráfico:

my64tiles

Se trata de una imagen 64×64 píxels hecha con 2 tiles repetidos constantemente. La he llamado «my64tiles.png». Has de modificar el programa y el archivo RES.

 

¿Cargará 64 tiles o 2? Esto es lo que debe salirte:

Captura3

Como ves hay 3 tiles, la primera en negro (que será el tile del fondo), y a partir de ahí las 2 tiles de la imagen. El SGDK ha hecho el trabajo.

Por tanto, a la hora de crear una imagen para un fondo, hemos de intentar que existan patrones repetidos para ahorrar memoria, tal y como se hacía en la época.

 

Efectos poco deseados

Esto no es lo habitual pero en ocasiones pasan estas cosas. Si en este ejemplo usamos …

ind = 0;     (en vez de ind = 1;)

… esto es lo que nos encontramos:

captura22

El problema viene de aquí

VDP_drawImageEx(PLAN_B, &my64tiles, TILE_ATTR_FULL(PAL0, 0, 0, 0, ind), 3, 3, 0, CPU);

Al ser ind = 0  el SGDK pone como fondo* uno de los tiles de la imagen, así que en vez de un fondo negro vemos esa especie de tablero de ajedrez.

Se soluciona cambiado ind = 1 o bien dejando ind=0 y cambiando TILE_ATTR_FULL(PAL0, 0, 0, 0, 1).

Recomentado:  Utiliza siempre ind = 1 y deja libre el primer tile para que el SGDK

*nota: No es realmente el fondo, el SGDK rellena un plano con ese tile y parece que sea el fondo. El fondo recordemos que sólo puedes ser un color plano.

 

¿Falsos Colores?

¿Te has dado cuenta de que los colores de la imagen no corresponden con lo que se observa en los emuladores o en la consola? Gris vs Blanco

Hablaremos más de ello en otra entrada más adelante, recuerda que la paleta de la consola son sólo 512 colores, si utilizas cualquier color al pintar un fondo o un sprite, posiblemente no se vea igual ya que la megadrive (o el emulador) sacará uno parecido.

 

GITHUB

El código de esta lección, y de todas las demás, lo podrás encontrar en mi github:

https://github.com/danibusvlc/aventuras-en-megadrive