NightFox & Co - Desarollo de Homebrew para NDS
Blog dedicado a los proyectos presentes y futuros desarrollados para la pequeña Nintendo DS
Aficiones: desarrollo, homebrew, nintendo ds, programación, videojuegos
Hola!
Hace dias que queria tocar el tema de la lectura de las teclas y keypad, pero al ser tan facil en las Libnds lo he ido dejando. Lo cierto es que por facil que sea, siempre es de agradecer tener unas funciones que lean todas las teclas y su estado y lo almacenen en una estructura de variables que podamos consultar desde cualquier lugar. En mi caso, me he creado una estructura en un archivo .h (llamemosle nf_input.h) y la funcion de lectura del keypad en un archivo .c (llamemosle tambien nf_input.c). Asi pues, incluyendo en nuestro codigo la linea
#include "nf_input.h"
Podremos acceder a la estructura que hemos creado para almacenar los datos del keypad.
Aqui teneis el codigo fuente del archivo .h
http://nightfox.pastebin.com/f4259eef6
Y el codigo fuente del archivo .c
http://nightfox.pastebin.com/f19d7b435
Buenas tardes.
Dado que estoy inmerso en un mini proyecto para la compo de SceneBeta, estoy desarrollando un conjunto de nuevas funciones, algunas de las cuales incorporare a mi libreria, otras no, dado que ya son increiblemente simples con las ultimas Libnds.
Este es el caso de los efectos de transparencia (Alpha Blending).
El hardware 2D de la DS (y tener este punto en cuenta), permite un solo canal alpha de 5 bits (es decir, 32niveles, de 0 a 31) entre 2 objetos. Entenderemos por objetos las capas de fondos tileados (0 - 3), los sprites y el backdrop. Explicar que es el backdrop es algo complejo, digamos que es una pared solida al fondo de todo lo demas, que no podemos (en principio) modificar y que sirve como fondo a todo lo que se dibuja encima.
Buenas a todos!
Realizando mi nuevo juego he detectado un bug rarito en el sistema de animaciones, el cual aparecia si se usava un nº de slot de GFX en VRAM y nº de sprites diferentes, juntamente con la opcion KEEPFRAMES = true. El bug en cuestion provocaba que solo apareciera el primer frame de la animacion. El bug ya ha sido solventado.
He aprovechado tambien para actualizar toda la documentacion relativa a los mapas de colision, tanto en Castellano como en Ingles.
A partir de ahora, dado que todas las funciones basicas estan hechas en mi libreria, la cosa ira un poco mas despacio, ya que ire añadiendo funciones a la libreria a medida que las necesite para mi juego (que egoista soy).
Eso no quiere decir que este blog siga abierto a sugerencias, preguntas o que vaya publicando partes del codigo de mi juego que pueda encontrar interesantes para que aprendais.
Como siempre, las preguntas a los comentarios.
Descarga de la ultima version de la libreria y ejemplos: NightFox's Lib 20090524
Hola!
Antes que nada, todo el mundo a actualizarse a la R26 del DevKitArm, basicamente corrige los fallos de la libfat con el emulador ideas, asi que ya tardais. Es muy comodo poder probar el codigo en el emulador, no ?
Mas novedades, he corregido un despiste en la libreria de fondos tileados, que en tamaños muy concretos de fondos, no mostraba la parte inferior. Ademas ahora obligo a que los fondos sean divisibles x256 pixeles (el tamaño que entiende la DS), asi evitamos bugs raros, tanto en la DS como usando el GRIT. Los espacios que no necesiteis, los rellenais de color rosa (0xFF00FF) que es el transparente y listos. Ocupar en VRAM, ocuparan lo mismo.
Pasemos al tema de hoy, los mapas de colisiones.
Estos se usan en juegos de plataformas y similares para saber que partes de nuestro fondo son o no "atravesables" por los sprites, por ejemplo, muros, escaleras, agua.
No son pixel perfect (se puede llegar, pero eso otro dia) asi que hoy, nos conformaremos en tener la precision de un tile (8x8 pixeles).
Hola!
Por fin tengo mi motor basico de textos.
La verdad es que es asi como simple. Es coger un fondo tileado, cargar como tiles todo el codigo ascii y despues una simple rutina que lee la cadena de texto y cambia los tiles del mapa por los correspondientes con la letra que queremos escribir.
A todo esto, que es muy tarde y el codigo esta muy documentado.
Hola!
Entrada cortita de fin de semana.
Tengo la intencion durante esta semana pulir un poco las funciones de texto que estoy programando para mi libreria. De momento he logrado esto:
Hola!
Poquita cosa hoy, ya que las funciones de rotacion y escalado del sprite son tan simples como indicarle al OAM (Object Attribute Memory) que Rotset de los 32 disponibles por pantalla queremos asignarle al sprite y luego solo decirle al rotset correspondiente que valor queremos para el angulo y escalado.
Como las Libnds usan valores para la rotacion de entre -32768 y 32768, he decidido pegarle un bitshift para poder usar valores entre -512 y 512 (suficientes digo yo), ademas decorregir que los valores positivos giren a la derecha y los negativos a la izquierda (en las libnds se interpreta al reves, que cosas). El factor de escalado se mueve entre el 0 y el 512, siendo 256 el valor central, que equivale a una escala del 100%
Blog dedicado a los proyectos presentes y futuros desarrollados para la pequeña Nintendo DS
Aficiones: desarrollo, homebrew, nintendo ds, programación, videojuegos
