NightFox & Co - Desarrollo 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
Asi, si ejecutamos la instruccion en nuestro codigo ReadKeypad(); las 3 estructuras de variables seran actualizadas con el estado de todas las teclas.
Asi si queremos saber si la tecla A esta pulsada en ese momento hariamos:
ReadKeypad();
if (keyheld.a) // La tecla A esta pulsada;
La funcion ReadKeypad(); puede ser ejecutada desde cualquier parte del codigo o modulo y solo es necesario hacerlo una vez por frame.
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.
El alpha blending se debe aplicar via registro a dos objetos, "origen" y "destino". Entendemos como origen el objeto que queremos que tenga el efecto de semi-transparencia y como destino el objeto sobre el que sera semitransparente. Imaginemos que tenemos en el fondo 3 una montaña y en el 2 unas nuves que queremos que sean semi-transparentes. Pues el objeto origen seria la capa 2 y el objeto destino la capa 3.
Una vez contado esto, vamos a ver como se haria:
Primero debemos habilitar el modo alpha entre los objetos que deseemos:
REG_BLDCNT = BLEND_ALPHA | BLEND_SRC_BG2 | BLEND_DST_BG3;
Esto habilitaria en Alpha blending entre los fondos 2 y 3 de la pantalla superior
Blog dedicado a los proyectos presentes y futuros desarrollados para la pequeña Nintendo DS
Aficiones: desarrollo, homebrew, nintendo ds, programación, videojuegos
