18 de Octubre de 2017

Archivo para Febrero de 2010 en NightFox & Co - Desarrollo de Homebrew para NDS, blog de KnightFox

Feb
10

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 256x256 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 256x256 pixeles. La imagen se carga en un slot de fondos de 16 bits.
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