Página 1 de 1
 
 

Mensaje [Homebrew] [VDP2] - Cargando Un Fondo

#1  FacundoARG 16 Agosto 2009, 08:19 AM

Les traigo un tutorial para poder pintar una imagen de fondo estática con el VDP2 en el NBG1(Normal BackGround 1).


YouTube Link


Para comenzar:

  • Nivel de dificultad: Media.
              
        
  • Lenguaje: ANSI C/C++.
              
        
  • Herramientas: SaturnOrbit, Gimp.


Vamos a volver a utilizar el ejemplo S_2_2. Personalmente voy a tomar, el mismo que subi de otro tutorial.
Para poner todo a punto antes de comenzar debes pasar por aca.

Luego debemos agregar a la lista de librerías la DEFHUFF (algorítmos de compresión de Huffman) sino no nos va a compilar, porque no reconoce las funciones.
Se debe incluir el .O (parecido .dll de Windows) ya que la librería es propietaria de su autor y ya está compilada.

vdp2_1

El VDP2 es el segundo procesador para mostrar scrolls en movimiento ó rotacion. Además es el encargado de pasar la imagen de hacia la salida de video.

Tenemos varios tipos de Backgrounds:

  • Estáticos y Scroll : NBG0,NBG1,NBG2,NBG3.
  • De Rotación: RBG0,RBG1.





En este tutorial vamos a levantar una imagen compresa que esta en el CD y pintarla en el NBG1.
Primero creamos una carpeta dentro de nuestro proyecto con el nombre de backgrounds.

Vamos a preparar la imgen, no todo esta permitido! la imagen debe ser de 15bits con o sin compresión. Se le pueden poner transparencias (en investigación).
Ademas no se pueden pasar de ciertas caracteristicas en la resolución.

Tengo una imagen en RGB con una resolución 320x240 pixeles, abró algun editor gráfico. En mi caso GIMP, la guardo como TGA y ademas tildo la opcion de compresión RLE (Run-Length Encoding). Obtengo Fondo1.TGA, la copiamos dentro de la carpeta backgrounds  

Ahora tengo que transformarla a formato Saturn con el BGCON que se encuentra en C:SaturnOrbitToolsBGCON .
Necesitamos hacer llamar a esta utilidad, pasandole un .txt con ciertas configuraciones.

Para hacer las cosas más faciles vamos a hacer un batchfile (.bat) para que llame a esta utilidad y nos olvidemos de tantas rutas.

COPY C:SaturnOrbitSET_COF.BAT .TMP.BAT
CALL TMP.BAT
DEL TMP.BAT
BGCON.EXE TGA2DHUF.TXT
MOVE FONDO1.BIN "C:/S_2_2/cd/FONDO1.BIN"
pause


Guardamos esto, con el nombre BACKCONV.BAT dentro de la carpeta backgrounds.

Luego el archivo de configuraciones.
CD 15
IF TGA
IM BITMAP
CMP DHUFF
RGBHI ON
TRANS -1
OF BIN
L fondo1.tga
S fondo1.bin


Lo guardamos como TGA2DHUF.TXT en la carpeta backgrounds y ejecutamos el .bat. Por ultimo comprobamos que este la imagen fondo1.bin en la carpeta cd del proyecto.




Vamos con el proceso del código.

Como lógica lo primero que debemos es activar el CD    .

#include <SEGA_GFS.H>
#define   OPEN_MAX  (Sint32)5
#define   DIR_MAX   (Sint32)25  
 
// keep this info global
GfsDirTbl gfsDirTbl;
GfsDirName gfsDirName[DIR_MAX];
Uint32 gfsLibWork[GFS_WORK_SIZE(OPEN_MAX)/sizeof(Uint32)];    
// number of files in current directory
Sint32 gfsDirN;

void init_CD()
{
    GFS_DIRTBL_TYPE(&gfsDirTbl) = GFS_DIR_NAME;
    GFS_DIRTBL_DIRNAME(&gfsDirTbl) = gfsDirName;
    GFS_DIRTBL_NDIR(&gfsDirTbl) = DIR_MAX;
    gfsDirN = GFS_Init(OPEN_MAX, gfsLibWork, &gfsDirTbl);
}


Luego debemos activar el VDP2 con las configuraciones necesarias.

Desactiva y activa la salida de video.
slTVOff(); slTVOn();

Asignamos un la prioridad en la que se verán los fondos. Siendo 7 el del frente.
slPriorityNbg0(7);
slPriorityNbg1(6);


slBitMapNbg1(COL_TYPE_32768, BM_512x256, (void *)VDP2_VRAM_A0);
Esta funcion es la mas importante, le pasamos los parametros de los colores posibles y el tamaño que va a crear en memoria. Pero como nuestra imagen es 320x240, la va a estirar. Si algo haces mal, la imagen se va a mostrar distorcionada.

Activamos ambos backgrounds.
slScrAutoDisp(NBG0ON|NBG1ON);
El NBG0 sirve para todas las funciones de slPrint


void init_VDP2()
{ //Desactivamos la salida de video.
slTVOff();
//Pintamos el fondo negro por si las dudas. ;)
slBack1ColSet((void *)BACK_CRAM, CD_Black);
//Asignamos un la prioridad en la que se verán los fondos. Siendo 7 el del frente.
slPriorityNbg0(7);
slPriorityNbg1(6);
//  paleta:           COL_TYPE_16, COL_TYPE_256, COL_TYPE_2048
//  rgb:                COL_TYPE_32768, COL_TYPE_1M
// bitmap sizes(BM_HxV):    BM_512x256, BM_512x512, BM_1024x256, BM_1024x512
slBitMapNbg1(COL_TYPE_32768, BM_512x256, (void *)VDP2_VRAM_A0);
//Posicionamos el fondo.
slScrPosNbg1(toFIXED(0.0), toFIXED(0.0));
//Activamos ambos backgrounds
slScrAutoDisp(NBG0ON|NBG1ON);
//Activamos la salida de video.
slTVOn();
}


Y por ultimo cargamos la imagen a la memoria con la función.
 loadBG()

Les dejo el código para que lo vean.
 




____________
SegaSaturn Developer Addict
 
avatar
argentina.png FacundoARG Sexo: Masculino
Colaborador SEGASATURNO
Colaborador SEGASATURNO
Professional Videogamer Coder
Donante Unreleased €
 
Registrado: Diciembre 2006
Ubicación: San Luis
Mensajes: 691
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#2  DonGloton 16 Agosto 2009, 01:24 PM

Todos estos pequeños articulos son muy interesantes. Hemos hecho traducciones y sacado unreleaseds, pero nunca pense que llegaria a ver articulos de homebrew.

Muchas gracias
 




____________
mr_greedy

....Salchichas como almohadas....
 
avatar
spain.png DonGloton Sexo: Masculino
Traductor MKR
Colaborador SEGASATURNO
Colaborador SEGASATURNO
 
Registrado: Marzo 2008
Ubicación: Madrid!
Mensajes: 814
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#3  Fandu 17 Agosto 2009, 12:08 AM

Simplemente IMPRESIONANTE , os felicito y os doy animos para seguir , aunque no entienda nada de programación siempre me leo los mensajes que son curiosos, quién sabe, alomejor algún día sacais el juego de Segasaturno    seriamos la envidia de todo el mundo.
 




____________
Podcast: Reactor Mako
 
avatar
scotland.png Fandu Sexo: Masculino
Donante Unreleased €
 
Registrado: Julio 2009
Ubicación: Atántida
Mensajes: 1530
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#4  FacundoARG 17 Agosto 2009, 02:15 AM

Gracias. pero todo a su tiempo, ya veran la luz de varios proyectos.
Pero como simpre me falta tiempo  
 




____________
SegaSaturn Developer Addict
 
avatar
argentina.png FacundoARG Sexo: Masculino
Colaborador SEGASATURNO
Colaborador SEGASATURNO
Professional Videogamer Coder
Donante Unreleased €
 
Registrado: Diciembre 2006
Ubicación: San Luis
Mensajes: 691
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#5  Jean La Montarde 17 Agosto 2009, 02:35 PM

Buenas Facundo , gracias por el tuto genial como siempre , ¿El proximo cual sera :P? ¿Sonido?¿Pistas de audiocd?¿La lista de comandos que comentaste en el hilo anterior? Nos tienes en ascuas esperando la proxima "hoja de la biblia Saturnera"
 



 
avatar
spain.png Jean La Montarde Sexo: Masculino
SEGA Fan
SEGA Fan
 
Registrado: Julio 2009
Mensajes: 181
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#6  FacundoARG 17 Agosto 2009, 09:36 PM

Si, seguramente va a ser el Sonido.
Porque para 3D, necesito explicar otros temas, que van más allá de la programación; ó por ahi lo separo en distintas secciones.  

En este ejemplo uso, dos tablas de sprites como me preguntaste en el otro hilo. hechale un ojo.
 




____________
SegaSaturn Developer Addict
 
avatar
argentina.png FacundoARG Sexo: Masculino
Colaborador SEGASATURNO
Colaborador SEGASATURNO
Professional Videogamer Coder
Donante Unreleased €
 
Registrado: Diciembre 2006
Ubicación: San Luis
Mensajes: 691
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#7  Jean La Montarde 21 Agosto 2009, 01:28 PM

Juer que facil parecen las cosas cuando las ves XD Comprobado el tema del flip y los escenarios parecen que van a dar tralla, aunque con el tuto parece que se simplifique la cosa , bueno las preguntas XD

-El BG0 ¿Es solo para texto?¿Si no usamos texto no es necesario cargarlo?en teoria se podria ahorrar recursos si no se ejecuta
-¿Limitaciones de resolucion?

Ahora ando un poco liado pero para mediados de septiembre volvere con las pilas puestas y proyectillos
 



 
avatar
spain.png Jean La Montarde Sexo: Masculino
SEGA Fan
SEGA Fan
 
Registrado: Julio 2009
Mensajes: 181
  • Volver arriba Página inferior
 

Mensaje Re: [VDP2] - Cargando Un Fondo

#8  FacundoARG 21 Agosto 2009, 02:15 PM

El NBG0, es para ambas cosas, podes usar texto ó imagenes; para activarlo tenes que declarar las mismas funciones pero donde dice por ejemplo slBitMapNbg1 (esta haciendo referenca al NGB1) deberías cambiarla por slBitMapNbg0 y asi con todas las funciones.

Las resoluciones son para ambos 512x256, 512x512, 1024x256, 1024x512. Siempre la consola hace un strech de la imagen     .

A tu pregunta de ahorrar recursos, es si. Pero tambien podes usar ambos NBG con imagenes distintas y cambiarlas cuando quieras; esto lo hace Residen Evil, si lo debugeas con Yabause ó SSF sale esa información.  

PD: dentro de poco voy a liberar unas betas de los proyectos que tengo para que prueben.
 




____________
SegaSaturn Developer Addict
 
avatar
argentina.png FacundoARG Sexo: Masculino
Colaborador SEGASATURNO
Colaborador SEGASATURNO
Professional Videogamer Coder
Donante Unreleased €
 
Registrado: Diciembre 2006
Ubicación: San Luis
Mensajes: 691
  • Volver arriba Página inferior
 


Ocultar¿Este tema fue útil?
Compartir este tema
Correo a un amigo Facebook Twitter Windows Live Favorites MySpace del.icio.us Digg SlashDot google.com LinkedIn StumbleUpon Blogmarks Diigo reddit.com Blinklist co.mments.com
technorati.com DIGG ITA linkagogo.com meneame.net netscape.com newsvine.com yahoo.com Fai Informazione Ok Notizie Segnalo Bookmark IT fark.com feedmelinks.com spurl.net

Página 1 de 1