11 de Febrero de 2012
Jun
29

Programacion en Nintendo DS. Modificar el tilemap - Nuevas funciones.

Buenos dias!
El desarrollo de mi pequeño juego me ha obligado a realizar un par de funciones que mucha gente encontraria de utilidad, asi que las he añadido a mi libreria.
Las funciones nos permitiran saber el tile que se encuentra en las coordenadas que indiquemos de un fondo en concreto, para poder realizar cambios en el, por ejemplo, destruir partes del decorado, realizar animaciones en el fondo (cascadas, arboles moviendose, etc) de una manera bastante simple.
Las instrucciones en concreto son 3:
 
NF_GetTileOfMap(u8 screen, u8 layer, u16 tile_x, u16 tile_y);   (ver codigo fuente)
Esta funcion nos devuelve el valor del tile que se encuentra en las coordenadas especificadas (en tiles, no pixeles), del mapa cargado en la capa y pantallas especificados.
 
NF_SetTileOfMap(u8 screen, u8 layer, u16 tile_x, u16 tile_y, u16 tile);   (ver codigo fuente)
Similar a la funcion anterior, pero esta lo que hace es cambiar el valor del tile, con lo que es posible alterar el decorado.
  
NF_UpdateVramMap(u8 screen, u8 layer);   (ver codigo fuente)
Actualiza en la pantalla (VRAM) los cambios realizados en el tilemap. Usa esta funcion para que se reflejen en la pantalla los cambios realizados. Usala una vez por frame, una vez modificados todos los tiles necesarios. Si la usaras en cada tile modificado, solo conseguirias ralentizar la ejecucion de tu codigo.
 
Aqui podeis ver una demo de estas funciones, en la cual dependiendo de la tecla que pulsemos (A, B, X, Y) cambiamos el tile sobre el que se encuentra el cursor.
 
Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
El codigo fuente de estre proyecto asi como la ROM compilada se encuentra en el archivo .7z de la libreria que os dejo a continuacion:
 
NightFox's Lib for Libnds 20090628
 
Espero que el tutorial y la actualizacion de hoy de mi libreria os sean de utilidad en vuestros proyectos.
Un saludo a todos y hasta la proxima entrada ^^
 
NightFox
0

5 Comentarios:

Se puede usar directavente en libnds?

Pues eso, se puede usar sin meterle PAlib ?

Si, de hecho, estoy haciendo

Si, de hecho, estoy haciendo estas librerias para "quitarme de encima" las PALIB y las incompatibilidades que aparecen a cada version de Libnds. Solo necesitas el DevkitArm 25  o superior. En el primer post hay un tuto de como usarlas, pero vaya, es copiar todos los archivos en la carpeta source e incluir #include "nf_lib.h" en tu codigo. Mirate la docu y ejemplos que adjunto en el zip.

Re: Se puede usar directavente en libnds?

Perdon, se me olvido incluir una cosita, en que ARM debo incluirlo? Porque en devkitPro siempre suelo hacer dos carpetas ARM, ARM7 y ARM9. Y según tengo entendido un ARM es para la tactil y demás y otro es para otras cosas, entonces no se exactamente en cual lo tengo que meter.

En la carpeta source de tu

En la carpeta source de tu codigo, donde tengas metido tu main.cpp o main.c
Mirate la carpeta nflib del zip que hay un proyecto entero, para que veas donde meter e incluir las librerias. Acuerdate de usar el makefile que incluyo ^^

Saludos

Re: Se puede usar directavente en libnds?

Bueno, pues ire probando, en los dos ARM tengo un archivo llamado template.c pero mirare mi Makefile a ver cual de los dos era el main...