16 de Noviembre de 2018

desarrollo

Mar
31

NightFox & Co Speed Trap. Tech demo

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

 
Que a veces parece que estemos tocandonos las narices por que no publicamos, pero no XD
 
Saludos a todos,
 
NightFox
 

Importantes novedades.
Muchos me odiareis por esto, otros estaran encantados, pero como todo en este mundo, nunca llueve al gusto de todos.
El motivo? He decidido eliminar de mi libreria el soporte para EFS.
Por que? Facil, estan OBSOLETAS, nadie las mantiene oficialmente, tardan una eternidad en inicializarse y a cada version de devkitArm van peor.
Solucion, usar las NitroFS incluidas con devkitArm, que hacen lo mismo, pero mejor.
Funcionan de manera transparente en el no$gba y en el hardware la inicializacion es casi instantanea.
La parte mala es que casi ninguna tarjeta soporta ARGV, asi que tocara lanzar la ROM desde el "Homebrew Menu", el cual y previa autorizacion de Wintermute, incluyo con la libreria.
Para la migracion de proyectos de EFS a NitroFS debereis hacer los siguientes cambios:

- Cambiar la linea:
int main(void) {
a
int main(int argc, char **argv) {
 
- Cambiar la linea:

Buenas noches!
 
Con la reciente salida del devkitPro R28, se han tenido que realizar un par de correcciones para que sea compatible con la misma.

Basicamente se ha tenido que recompilar la libreria para que se actualicen algunos defines de los bancos de VRAM y corregir una advertencia que se producia al compilar, relacionada con las EFSLIB.
Las correcciones son las siguientes:
 
- Libreria recompilada para que funcione con devkitPro R28.

- Modificada la libreria EFS lib para corregir las advertencias durante la compilacion.

  efs_lib.c: In function 'CheckFile':
  efs_lib.c(305): warning: array subscript has type 'char'

  Se ha modidicado esta linea:
  ext[i] = tolower(ext[i]);

  Con estas:
  letter = ext[i];
  if (letter >= 65 && letter <= 90) letter += 32;
  ext[i] = letter;
 
 
A causa de esta actualizacion, la libreria a partir de ahora requiere la version R28 del devkitPro como minimo para su funcionamiento, asi que ya sabeis, a actualizar toca.
 
La descarga de la libreria:
NightFox's Lib Ver. 20100304 (R28 compatible)
 
Un cordial saludo
 
NightFox
 

Buenas tardes.
Despues de unos dias de ausencia, os traigo la nueva version de mi libreria, con alguna funcionalidad añadida.
 
- Añadida la funcion NF_LoadBMP(); la cual carga un archivo BMP de 8, 16 o 24 bits en un slot de imagen de 16 bits.
- Añadido el parametro "alpha" a la funcion NF_Draw16bitsImage(); para decidir si el color magenta es o no transparente.
- Añadido los ejemplos de carga de archivos en formato BMP.
- Añadido el ejemplo de scroll de una imagen cargada desde un BMP.


Basicamente he retocado un poco la funcion NF_Draw16bitsImage(); para poder escoger si los pixeles magenta se dibujan o no (para crear transparencias) y el soporte para carga de archivos BMP de 8, 16 o 24 bits en un slot de imagenes de 16 bits. La deteccion del tipo de archivo BMP y su conversion a ARGB15 se hace automaticamente. Solo se puede usar esta funcion en modo 16 bits.
 
Aqui teneis un video con un ejemplo de carga y scroll de una imagen contenia en un archivo BMP.
 
Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

 
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!
 
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: