3. Uso de fondos y capas En este tutorial aprenderemos a poner una imagen de fondo en nuestro homebrew. Tambien repasaremos lo dicho en el tutorial anterior y usaremos imagen y texto. Para ello usaremos las capas
3.1 Conversion de imagenes a formato de palib Meter imagenes en palib es algo extresante y un poco desesperante a veces. Estad atentos
Con el palib se nos instala un progama que se llama pagfx, sirve para transformar las imagenes al formato de palib, claro que este tiene sus limitaciones. Las imagenes de fondo solo las admite si tiene 256 colores como maximo. Las podemos transformar con un editor de
imagenes como el photoshop, pero yo personalmente uso el
paint
Bien, nos metemos en la carpeta del devkitpro de nuevo,
nos metemos en palib, en tools y nos metemos en pagfx (si
tienes linux, usa la version de linux) metemos alli la
imagen. Abrimos el pagfx.exe nos saldra un panel:
Nos vamos a backgrounds, metemos nuestra imagen y
seleccionamos en el tipo "EasyBg".
Le damos ahora a save and convert, nos sale una pantalla de ms-dos. Cuando se cierre habra hecho la conversion, en la misma carpeta del
pagfx tendremos 4 archivos nuevos:
-All_gfx.c
-All_gfx.h
-(el nombre de la imagen).c
-(el nombre de la imagen).pal
Los dos primeros son unos archivos complementarios,
indica cuantas imagenes ahi y las incluye al progama. Los
otros dos son ovbiamente la imagen convertida
3.2 Carga del fondo Ahora que tenemos la imagen convertida, vamos a usarla
Abrimos un nuevo proyecto con el vham.En la carpeta
source, abrimos una nueva carpeta que se llame gfx.
Metemos alli los 4 archivos de antes:
Y ahora, el codigo que vamos a usar para cargar el fondo es:
PA_EasyBgLoad(0,//para elegir la pantalla
3,// el numero de capa, se explicara mas adelante
fondo//el nombre de nuestra imagen
);
Facil no?, claro que antes habra que añadir los all_gfx de antes, ya que sino dara error (ya que no encontrara ni reconocera la imagen)
Usaremos para esto, el #include. Lo situaremos al principio del codigo:
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
Y ahora pondre todo el codigo:
#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_EasyBgLoad(0,3,fondo);
/* Por cierto, para poner comentarios
de mas de una linea
se usa esto */
while (1)
{
PA_WaitForVBL();
}
return 0;
}
Lo probamos y vemos los resultados
3.3 Fondo y texto (capas) Para empezar, voy a explicar lo que son las capas. Los que hayan usado photoshop les sonara bastante esto
Existen 4 capas como sabemos: 0 y 1 y 2 y 3. La capa 3 se pone al fondo, la 2 algo mas adelante, la 1 igual y la 0 esta enfrente de todo
Os voy a poner ahora un ejemplo por si no os queda claro (es algo dificil de comprender)
Imaginad un estudio de grabacion, El area que enfoca la camara la hemos dividido en 4 zonas: 0,1,2,3. Siendo 0 la mas cercana a la camara y 3 la mas lejana. Si pusieramos los decorados en la zona 0. Los decorados taparian todo, y a los actores no se les verian. Tienes mas sentido que pusieramos el decorado en la zona 3, y luego los actores los situaramos en la zona 2. De esa forma el decorado no tapa a los personajes, luego los atrezos los podemos situar en la capa 1 si queremos que este delante de los personajes... Etc
En palib ocurre lo mismo, si ponemos un fondo en la capa 2 y un texto en la 3. El texto no se veria ya que lo taparia
Pos sabiendo esto, vamos a intentar poner imagen y texto.
Aqui os dejo el codigo por si teneis dudas:
#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_InitText(0,2);/*Preparamos para cargar texto en la
pantalla inferior y en la capa 2 */
PA_OutputSimpleText(0,50,50,"Hola");//Escribimos el texto
PA_EasyBgLoad(0,3,fondo);// Cargamos el fondo
while (1)
{
PA_WaitForVBL();
}
return 0;
}
Ya hemos terminado
Tarea: Esto es muy sencillo, poner un fondo en
AMBAS pantallas con texto incluido. Basicamente para repasar lo que hemos hecho hoy
Saludos