NightFox’s Lib. Añadidas varias funciones.

Hola!
 
Nueva version de mi libreria para la programacion de Nintendo DS, la cual incluye las siguientes novedades:
 
– Añadido el ejemplo de zoom x2 con interpolacion.
– Añadido el ejemplo de zoom x3 con interpolacion.
– Añadida la funcion NF_Init8bitsBgBuffers(); que inicializa los buffers para fondos bitmap de 8 bits.
– Añadida la funcion NF_Reset8bitsBgBuffers(); que reinicializa los buffers de fondos bitmap de 8 bits.
– Añadida la funcion NF_Load8bitsBg(); que carga un fondo bitmap de 8 bits de hasta 256×256 pixeles.
– Añadida la funcion NF_Unload8bitsBg(); que borra de la ram un fondo bitmap de 8 bits, previamente cargado.
– Añadida la funcion NF_Copy8bitsBuffer(); la cual copia un fondo de 8 bits cargado en RAM a la VRAM o al backbuffer.
– Añadida la funcion NF_Init8bitsBackBuffer(); que iniciliza el BackBuffer de 8 bits.
– Añadida la funcion NF_Enable8bitsBackBuffer(); que habilita el BackBuffer de 8 bits para la pantalla seleccionada.
– Añadida la funcion NF_Disble8bitsBackBuffer(); que deshabilita el BackBuffer de 8 bits, liberando la memoria RAM usada.
– Añadida la funcion NF_Flip8bitsBackBuffer(); la cual manda el Backbuffer de 8 bits a la VRAM.
– Añadida la funcion NF_Load16bImgData(); que carga una imagen de 16 bits en RAM, con un tamaño maximo de 256×256 pixeles. La imagen se carga en un slot de fondos de 16 bits.
– Añadida la funcion NF_Draw16bitsImage(); la cual dibuja una imagen cargada en RAM en el backbuffer de la pantalla indicada.

 
Que la disfruteis!
 
Descarga: NightFox’s Lib Ver. 20100209
 
Saludos a todos
 
NightFox
 

Programacion en Nintendo DS. Aplicar un Zoom x3 a una imagen con filtrado por interpolacion.

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
 

Programacion en DS. Ampliando una imagen y aplicandole un filtrado.

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.
 

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

 
Pero el resultado tambien ha sido un asco. Asi que os dejo la rom compilada y el codigo fuente.

Descargar la ROM.
Descagar el codigo fuente.
 
La interpolacion la he realizado de la siguiente manera; supongamos que queremos ampliar el primer pixel de la imagen 2 veces.

1   2
 
3   4

La manera rapida, seria duplicar los pixeles:
 
1 1 2
1 1
3    4
 
Pero es eso, tenemos pixeles como camiones. Lo podemos suavizar haciendo esto:
 
1 A 2
B C
3    4

Y ahora los calculos, donde:
A = (1 + 2) / 2
B = (1 + 3) / 2
C = (1 + 4) / 2
 
Con esta facil formula, conseguimos el efecto de filtrado de la demo.
Mola no?, pues nada, que lo disfruteis.
 
Un cordial saludo
 
NightFox
 

NightFox’s Lib – Añadidas funciones para fondos de 16 bits

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 256×256.
– 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.
– Añadida la funcion NF_DmaMemCopy(); la cual copia bloques de memoria usando el DMA de manera segura (vacia el cache antes de manera automatica).
– Todas las funciones de copia de la libreria de RAM a VRAM ahora se realizan usando el canal DMA, lo que acelera el proceso en un 25% aproximadamente.

 
He añadido varios ejemplos sobre las funciones añadidas.
Ademas, todas las copias de RAM a VRAM de la libreria ahora se realizan a traves del canal DMA. He creado una funcion lo mas segura que he podido, pero si alguien detecta que con la actualizacion a esta version se corrompen graficos en proyectos ya existentes o cualgues que antes no se producian, que me lo reporte enseguida.
 
Estos videos muestran dos de los nuevos ejemplos incluidos:
 

 

 
 
La descarga: NightFox’s Lib ver. 20100203
 
Saludos y ha disfrutarla
 
NightFox
 

NightFox’s Lib – Preview de funciones con backbuffer con imagenes de 16 bits.

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

 
Codigo: http://nightfox.pastebin.com/f11e2312b
 

 
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