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

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

Cargar varias imágenes en memoria

Vamos a ver qué debemos hacer para cargar más de una imagen en memoria. Como ejemplo vamos a cargar la imagen de la luna y la imagen de los cuadrados. Es muy sencillo y es *casi* repetir lo que ya sabemos.

Clona el proyecto anterior. Copia ambas imágenes en la carpeta res.
Ahora modifica el archivo RES así:

IMAGE block "moon.png" 0
IMAGE block2 "my64tiles.png" 0

Como ves, las imágenes serán referenciadas como block y block2.

Ahora modifica el main.c así:

#include <genesis.h>
#include "resources.h"

int main()
{
        //para llevar la cuenta de tiles en VRAM
        u16 ind;			

	//recoge las paletas de cada imagen
	VDP_setPalette(PAL0, block.palette->data);
	VDP_setPalette(PAL1, block2.palette->data);

        //Tiles en VRAM desde la 2a pos (1er tile para pintar el fondo)
        ind = 1;

	//carga las imagenes en VRAM e incrementa ind
	VDP_drawImageEx(PLAN_A, &block ,  TILE_ATTR_FULL(PAL0, 0, 0, 0, ind),  3,  3, 1, CPU);
	ind += block.tileset->numTile;
	VDP_drawImageEx(PLAN_B, &block2 , TILE_ATTR_FULL(PAL1, 0, 0, 0, ind), 15, 15, 1, CPU);
	ind += block2.tileset->numTile;

	while(1)
	{
		VDP_waitVSync();
	}
	return 0;
}

 

Inspeccionemos la memoria (en GensKmod: CPU / Debug / Genesis / VDP).

Por defecto sale seleccionada la primera paleta (flechita roja). Se ven las tiles de la luna perfectamente. Sin embargo aparentemente no se ven (o no se ven muy bien) las tiles de la imagen de cuadraditos.

Esto es así porque ha coincidido que las tiles de cuadraditos, con la paleta de la luna, salen muy oscuros. Y por defecto el debugger selecciona y muestra todas las tiles de la VRAM con la primera paleta.

captura23

Nada que no tenga solución. Pincha en la segunda paleta, la flechita roja apuntará a la paleta y ahora todas las tiles se muestran con dicha paleta.

captura24

Ya se ven perfectamente las dos tiles de la segunda imagen. Verás unos puntitos blancos en los tiles de la luna, no es porque ambas paletas tengan el blanco. Eso son los píxels de los tiles de la luna que tienen el tercer color de paleta, que es blanco, en la paleta de la segunda imagen, verde oscuro en la primera.

No tiene mayor importancia. Pero quería aclararlo porque da lugar a confusión.

Como se puede comprobar, los tiles de la segunda imagen aparecen a continuación de los tiles de la primera imagen. Para eso usamos ind.

 

TIPOS DE ARCHIVO ADMITIDOS

Para imágenes, podemos usar bitmaps o PNGs (a mi los bitmaps me han dado problemas con esta versión de SGDK, recomiendo usar PNGs).

Para comprobar la profundidad de color, en Windows lo podemos ver en las propiedades del archivo:

Captura4

Es recomendable usar un programa de dibujo que trabaje con paletas de colores.
La imagen debe ser un PNG sin canal de transparencia.
Todo esto lo veremos más ampliado en una futura entrada.

 

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

Anuncios