9 de Febrero de 2010

NightFox & Co - Desarrollo de Homebrew para NDS, blog de KnightFox

Buenas!
 
Hoy entrada cortita, que no tengo mucho tiempo.
Solo dejaros un video en el que podeis ver el resultado de las funciones para fondos de 8bits, que estoy añadiendo a la libreria.
 
Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
Un saludo a todos y buen fin de semana.
 
NightFox
 

Hola!
Hace un par de dias os deje el ejemplo de como ampliar una imagen x2 aplicandole un filtrado.
Como siempre se puede rizar el rizo, hoy os explicare como hacer los mismo, pero aplicando el Zoom x3.
El procedimiento es muy simlar, solo que tendremos que interpolar algun pixel mas para que quede mas o menos bien.
 
Usaremos las siguiente matriz de pixeles
 
01 A1 A2 02
B1 C1 D1
B2 D2 C2
03           04
 
Basandonos en ella, realizaremos estos calculos para  poder saber el color de los pixeles interpolados.
 
A1 = (1 + 1 + 2) / 3
A2 = (1 + 2 + 2) / 3
B1 = (1 + 1 + 3) / 3
B2 = (1 + 3 + 3) / 3
C1 = (1 + 1 + 4) / 3
C2 = (1 + 4 + 4) / 3
D1 = (2 + 2 + 3) / 3
D2 = (2 + 3 + 3) / 3
 
El resultado es el siguiente:
 

 
Para inventarse los 8 pixeles que hacen falta para realizar el zoom no esta mal, verdad?
 
 
Aqui teneis las descargas de este ejemplo:
 
Descargar la ROM
Descargar el codigo fuente
 
Un cordial saludo y a disfrutarlo.

NightFox
 

Buenas.
Hoy una de efectos especiales.
En la anterior entrada os dejava un ejemplo de ampliacion de imagenes de 16 bits en la DS, aplicandole un zoom de x2, duplicando los pixeles colindantes.
El resultado molava, pero el pixelado...
La DS on es que tenga potencia para tirar cohetes, pero para un filtro bilinear para suavizar los pixeles, se lo podremos aplicar.
En realidad, le llamo bilinear, por llamarlo de algun modo, porque en realidad interpola los pixeles colindantes en las 3 direcciones, de la manera mas rapida posible.
He conseguido que la demo se mueva a una media de 15 fps en el hardware.
 
Aqui podeis ver dos videos, capturados con los emuladores no$gba e ideas. He usado este ultimo, pese a que el rendimiento es esperpentico, por la opcion de ampliar la imagen x 1.5, para que podais apreciar en el video los detalles.
 

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
Como en el video no se aprecia, lo he capturado a mas resolucion con el ideas.
 

Buenas!
 
Pues despues de testearla con todos los ejemplos, aqui os dejo la nueva version de mi libreria, con las siguientes novedades:
 
- Añadida la documentacion de la funcion void NF_RotateTileGfx();
- Añadido el Modo 5 en la funcion NF_Set2D();
- Añadida la funcion NF_InitBitmapBgSys(); la cual inicializa los fondos en modo bitmap, tanto en 8 como 16 bits.
- Añadida la funcion NF_Init16bitsBgBuffers(); el cual inicializa los buffer para guardar fondos en modo BITMAP.
- Añadida la funcion NF_Reset16bitsBgBuffers(); la cual borra el contenido de los buffers de fondos BITMAP.
- Añadida la funcion NF_Init16bitsBackBuffer(); la cual inicializa los backbuffers de 16bits.
- Añadida la funcion NF_Enable16bitsBackBuffer(); la cual habilita el BackBuffer de 16 bits en la pantalla indicada.
- Añadida la funcion NF_Disble16bitsBackBuffer(); la cual borra y libera de la RAM el BackBuffer indicado.
- Añadida la funcion NF_Flip16bitsBackBuffer(); la cual copia el contenido del BackBuffer a la VRAM de la pantalla dada.
- Añadida la funcion NF_Load16bitsBg(); la cual carga un bitmap de 16 bits convertido previamente con GRIT, siendo el tamaño maximo 256x256.
- Añadida la funcion NF_Unload16bitsBg(); la cual borra del buffer en RAM una imagen cargada previamente.
- Añadida la funcion NF_Copy16bitsBuffer(); la cual copia los datos cargados en un buffer a la VRAM o al BackBuffer.

Hola!
 
Mas y mas videos de las novedades que proximamente incluira la libreria,
 

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
Codigo: http://nightfox.pastebin.com/f11e2312b
 
Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
Codigo: http://nightfox.pastebin.com/f7e3c92df
 
Ambos videos corresponden a ejemplos que incluira de serie la libreria.
Falta ver si no hay ningun bug, añadir algun ejemplo mas y la documetacion.
 
Saludos

NightFox
 

Hola!
 
Poquita cosa hoy, solo dejaros la lista de novedades que he podido meter hoy a mi libreria, las cuales estoy aun testeando.
La lista es la siguiente:
 
- Añadida la documentacion de la funcion void NF_RotateTileGfx();
- Añadido el Modo 5 en la funcion NF_Set2D();
- Añadida la funcion NF_InitBitmapBgSys(); la cual inicializa los fondos en modo bitmap, tanto en 8 como 16 bits.
- Añadida la funcion NF_Init16bitsBgBuffers(); el cual inicializa los buffer para guardar fondos en modo BITMAP.
- Añadida la funcion NF_Reset16bitsBgBuffers(); la cual borra el contenido de los buffers de fondos BITMAP.
- Añadida la funcion NF_Init16bitsBackBuffer(); la cual inicializa los backbuffers de 16bits.
- Añadida la funcion NF_Enable16bitsBackBuffer(); la cual habilita el  BackBuffer de 16 bits en la pantalla indicada.
- Añadida la funcion NF_Disble16bitsBackBuffer(); la cual borra y libera de la RAM el BackBuffer indicado.
- Añadida la funcion NF_Flip16bitsBackBuffer(); la cual copia el contenido del BackBuffer a la VRAM de la pantalla indicada.
 
Tambien os dejo este video:
 

Hola!
Pues si, este fin de semana estamos trabajadores. Al final, siguiendo la sugerencia de omegascark sobre rotar los tiles de las fuentes en vez de tenerlas predibujadas, he cambiado 4 cosas en la libreria, tanto con fuentes normales como con las de 8x16, permitiendo ahora tener el texto rotado a partir de un solo juego de caracteres. Los cambios en la libreria son los que siguen:
 
 
- Añadida la funcion void NF_RotateTileGfx(); la cual rota el grafico de un tile en la direccion indicada.
 
- Dado a la funcion anterior, las fuentes para texto no necesitan mas las partes rotadas de derecha e izquierda, pero se mantiene la compatibilidad con las que ya tubieras hechas.
 
- Modificada la funcion NF_LoadTextFont16(); para poder cargar fuentes rotadas.
 
- Modificada la funcion NF_CreateTextLayer16(); para poder crear capas con el texto rotado.
 
- Corregido Bug en la funcion NF_WriteText(); que calculava mal la coordenada Y en modo rotado 90º a la derecha.
 
- Añadido ejemplo de texto con fuentes 8x16 con rotacion.

 
 
De momento eso es todo con respecto a los textos. Ya ire añadiendole cosas a la libreria a medida que las necesiten mis proyectos.
Recordar que siempre podeis añadir o modificar funciones de la libreria para que se adapten a vuestras necesidades.
 
Hola!
 
Ahora que ya las tengo mas que probadas, os dejo la version actualizada de mi libreria, a la que he añadido soporte para fuentes de 8x16 pixeles, permitiendo la escritura de textos mas legibles en pantalla. Las funciones añadidas y cambios en la libreria son los siguientes:
 
- Añadido soporte para texto de 8x16 sin rotacion.
- Añadida la funcion NF_LoadTextFont16();
- Añadida la funcion NF_CreateTextLayer16();
- Añadida la funcion NF_WriteText16();
- Añadida la funcion NF_ClearTextLayer16();
- Añadido el ejemplo para textos de 8x16.
 
De momento, no soportan rotacion de texto, dependiendo a mis necesidades es posible que se la añada en un futuro.
En esta entrada (NCASS) podeis ver un ejemplo practico del uso de estas fuentes.
 
La descarga de la libreria, aqui: NightFox's Lib para Libnds Ver. 20100129
 
Un cordial saludo y a disfrutarla
 
NightFox
 

Buenas!
 
Hace unos dias Thefer se puso en contacto conmigo. El motivo era que, como yo, tiene la aficion de programar para Nintendo DS y se le ocurrio hacer un completisimo manual de programacion de la misma usando las librerias Libnds. Me sugerio que seria una buena idea postearlo en mi blog para que todos los que quieran, puedean aprovecharlo. La verdad es que es el mejor manual que vais a encontrar en castellano (y uno de los mejores que he visto en cualquier idioma) de programacion en Libnds. Y eso que os quede a todos claro, es programacion en LIBNDS pura y dura, aqui no hay funciones que ellas solitas carguen fondos, muevan sprites, etc, es para gente que de verdad quiere explotar al 100% las capacidades del hardware de la DS, con sus ventajas e inconvenientes.
 
Lo podeis decargar desde este enlace: http://www.megaupload.com/?d=8CYWHWLG
 
Un saludo a todos y a disfrutarlo.
 
NightFox
 

Hola!
 
Pues si, no es que estubiera vago, es que estava trabajando en un pequeño proyecto nuevo, el cual me facilitara el poder crear juegos del tipo "Novela interactiva".
En si lo que estoy haciendo es un motor que lea un archivo txt con los textos y las instrucciones basicas (o sea, un script) y lo reproduzca en la DS, simplificando asi la creacion del juego.
Aqui os dejo un script de prueba con un dialogo sin mucho sentido, pero que muestra el potencial del engine:
 
Descarga del Script: http://nightfox.pastebin.com/f62fb6d14

Y el video del resultado de reproducir este Script.
 

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
Ademas, podeis obsevar que la letra es algo mas legible que en anteriores ocasiones. Esto es debido a que he añadido soporte a mi libreria para fuentes de 8x16 pixeles, permitiendo una lectura mas comoda.
La proxima release de mi libreria incluira estas funciones ^^
 
Os mantendre informado

Saludos a todos

NightFox