¿Qué? ¿Cómo? ¿Que tienes una Nintendo DS por casa? ¡¡Estás de suerte!!. Con unos minutos, la lectura de esta recetilla, un espíritu jóven y la ayuda del Software Libre tienes en tus manos un maquinón al que le podrás sacar todo el jugo. Veamos cómo....

Introducción

Pues lo dicho. La Nintendo DS (NDS a partir de ahora), es un "cacharrito" que tiene dentro un ARM7 y un ARM9 trabajando en paralelo. También dispone de WIFI, pantalla táctil y un buen audio (entre otras muchas cosas, aún no he podido profundizar mucho en la arquitectura hardware de la máquina). Si queremos introducirnos en el mundo del homebrew para ésta consola (o scene, con lo que encontrareis mas cosas googleando -thanks int0-) , gracias al Software Libre lo tenemos francamente fácil, ya que tenemos en nuestras manos herramientas tales como emuladores, librerías cruzadas, etc..... es decir, una toolchain completa. Aquí iré explicando paso a paso cómo la he instalado en mi máquina, ya que todo ésto ha sido la "recopilación" de varias búsquedas por la red y de varias consultas en algún que otro foro (gracias chicos, por la paciencia con los novatos ;))

Primeros pasos: Descargando fuentes

Todos los fuentes de las librerías que necesitamos se encuentran en sourceforge. Aquí se pueden encontrar tanto las librerías ya compiladas como los fuentes. Yo en mi caso he preferido bajarme los fuentes y compilarmelos (como está mandao 8)). Ésto es todo lo que hace falta para poder empezar a trabajar:
  • build scripts
  • libfat
  • dswifi
  • y por supuesto nds-examples
Nos bajaremos las útlimas versiones de dichos paquetes para evitar problemas de compatibilidades. En arco he dejado los paquetes que he utilizado yo. En el momento en el que escribo este documento (marzo de 2007), la versión de build scripts es la 20060724. Ésta descarga unos paquetes un poco "anticuados", así que he modificado uno de los scripts que hay dentro del paquete y lo he dejado fuera. Éste script debereis descargarlo para poder compilar la toolchain correctamente.

Instalación

Bueno, pues suponiendo que tenemos el directorio nds que hay en ARCo dentro de nuestra máquina, procederemos a compilar la toolchain. Entramos en el directorio scripts y descomprimimos el paquete que contiene los scritps de instalación. Una vez que hayamos hecho eso, sobreescribimos el script build-devkit.sh con el script del mismo nombre que hay en el raiz. Es decir:
javieralso@Gezel:~/nds/scripts$ bunzip2 -c buildscripts-20060724.tar.bz2 | tar xf -
javieralso@Gezel:~/nds/scripts$ cp -f ../build-devkit.sh ./
A continuación ejecutamos el script. Cuando hagamos ésto, nos preguntará para qué arquitectura queremos el kit. En nuestro caso la queremos para arm (ds, gp2 y gba), así que pulsamos la opción 1. Después le decimos que queremos que descargue los paquetes y finalmente dónde queremos que nos compile la toolchain:
javieralso@Gezel:~/nds/scripts$ ./build-devkit.sh
This script will build and install your devkit. Please select the one you require
1: build devkitARM (gba gp32 ds)
2: build devkitPPC (gamecube)
3: build devkitPSP (PSP)
1
The installation requires binutils-2.17, gcc4.1.1 and newlib-1.14.0.  Please select an option:
1: I have already downloaded the source packages
2: Download the packages for me (requires wget)
2
Please enter the directory where you would like 'devkitARM' to be installed:
for mingw/msys you must use <drive>:/<install path> or you will have include path problems
this is the top level directory for devkitpro, i.e. e:/devkitPro
/usr/local/stow/dkp
Yo en mi caso le he dicho que quiero que me instale la toolchain en el directorio /usr/local/stow/dkp, aunque ésto no es nada crítico. En éste momento, comenzará la descarga, descompresión, compilación e instalación de los paquetes. Deberemos ser pacientes, ya que puede tardar su tiempo. Cuando termina de descargar los paquetes nos pide confirmación para comenzar la instalación. Confirmamos y ya ta :D Después de finalizar ésta parte, deberemos exportar los PATH's para que cuando compilemos los makefiles sepan cuales son las rutas. Para ello editamos nuestro archivo ~/.bashrc y añadimos lo siguiente:
export DEVKITPRO=/usr/local/stow/dkp
export DEVKITARM=/usr/local/stow/dkp/devkitARM
export LIBNDS=/usr/local/stow/dkp/libnds
export LIBNDS_INCLUDE=/usr/local/stow/dkp/libnds/include
export LIBNDS_LIB=/usr/local/stow/dkp/libnds/lib
Vosotros debereís introducir vuestras rutas. Cuando hayais hecho ésto tendreis lo básico funcionando y ya podreís hacer programas bastante interesantes...

Librerías extra

Dentro del subdirectorio libs tenemos los fuentes de las librerías para la wifi (dswifi) y los fuentes para las librerías de sistema de archivos FAT (libfat). Éstas librerías no se instalan de forma automática, pero es muy fácil hacerlo manualmente.

Instalación de dswifi

descomprimimos el archivo con las fuentes (en una shell nueva, para que los PATHs se hayan cargado) y ejecutamos make y después make install:
javieralso@Gezel:~/nds/libs$ bunzip2 -c dswifi-src-0.3a.tar.bz2 | tar xf -
javieralso@Gezel:~/nds/libs$ make
javieralso@Gezel:~/nds/libs$ make install
Con ésto, la librería habrá quedado instalada en nuestro sistema :D

Instalación de libfat

PENDIENTE

A probarlo todo :P

Bueno, pues ahora ya estamos listos para compilar algunos ejemplos y probarlos en nuestra NDS. Dentro del directorio ejemplos tenemos un paquetito con montones de ejemplos de manejo de la wifi, la pantalla táctil, gráficos en 2D y 3D y un largo etcétera. Para probarlos es tan fácil como descomprimir el paquete y ejecutar make desde el raiz. Si todo funciona bien (que debería ser así) se generará un directorio bin en el que estarán todos los archivos *.nds listos para ser cargados en nuestra NDS

Y para la próxima....

Bueno, pues por mucha consola que tengamos, no está de mas tener un emulador para hacer pruebas rápidas sin tener que cargarlas en la máquina (que puede ser un poco engorroso). Próximamente explicaré como instalar dsmume, un emulador bastante majo que corre también en GNU/Linux y que aunque tiene algunas limitaciones, nos permitirá, por ejemplo, probar varios de los ejemplos que hemos compilado anteriormente.

Referencias



blog comments powered by Disqus