Configurar entorno de desarrollo GBA en Linux

  • En este tutorial se enseña como configurar un entorno para empezar a desarrollar homebrew para la GameBoy Advance en un sistema operativo GNU/Linux.
  • Hay muchas opciones a la hora de elegir un entorno, pero la principal es devkitPro y el compilador multiplataforma ARM devkitARM.
  • Necesitaremos las siguientes herramientas:
  • DevkitPro (DKP)
  • DevkitARM (DKA)
  • Un IDE donde escribir nuestro código (en este tutorial se enseñará a configurar Eclipse).
  • Un emulador de GameBoy Advance (en este tutorial se usará VisualBoy Advance, podemos instalarlo desde los repositorios de la distribución).


Contenido

Instalacion

DevkitPro

  • DevkitPro es un paquete que contiene compiladores para unos cuantos sistemas (incluido la GBA), librearías, códigos de ejemplo, etc. DevkitARM es un compilador multiplataforma ARM, basado en el conjunto de herramientas GCC.
  • Pasos para la instalación de devkitPro:
  1. Creamos un directorio llamado devkitPro.
  2. Descargamos devkitARM de su web y lo descomprimimos dentro del directorio devkitPro.
  3. Descargamos libgba (el cual es un conjunto de tipos básicos, macros y funciones) de su web, lo descomprimimos dentro del directorio devkitPro y renombramos su directorio a libgba.
  4. Descargamos los ejemplos de GBA (un conjunto de proyectos de ejemplo usando libgba) de su web, lo descomprimimos dentro del directorio devkitPro y renombramos su directorio a gba-examples.

NOTA: No useis espacios en la rutas, ya que GCC hace uso del conjunto de herramientas GCC, las cuales no admiten bien el uso de espacios en las rutas.

  • Al final deberá quedarte una estructura de directorios tal que así:
Estructura directorios linux - Scene GBA.png

Crear las variables de entorno

  • Si intentáis construir cualquier cosa usando los comandos dados anteriormente, probablemente descubriréis que no funciona. Para que la consola pueda ejecutar comandos, necesita primero encontrar la ruta del mismo. La ruta completa necesita ser visible para la consola, no solo el nombre del archivo.
  • Editamos con un editor de textos el archivo:
~/.bashrc


  • Y añadimos al final del archivo lo siguiente:
export DEVKITPRO=/ruta/al/devkitPro
export DEVKITARM=$DEVKITPRO/devkitARM
export PATH=$DEVKITARM/bin:$PATH

donde /ruta/al/devkitPro es donde hayamos creado el directorio devkitPro.


  • Ahora ejecutamos en un terminal:
$ source ~/.bashrc

en bash, el comando source lee instrucciones bash de un archivo y las ejecuta como si estuvieran dentro del fichero desde donde se usa el comando source.


  • Para comprobar que las rutas son correctas, ejecutamos en un terminal:
$ echo $PATH


  • NOTA: este metodo solo sirve para ese usuario en cuestion, para que sea aplicable a todos habría que añadir las rutas en el archivo /etc/environment.

Construir proyectos

  • Una vez configuradas las variables de entorno ya estamos listos para empezar a construir nuestros proyectos.
  • Como test vamos a construir un ejemplo de los que descargamos antes, debería estar alojado en la siguiente ruta:
$DEVKITPRO/gba-examples/template


  • Para ello ejecutamos en un terminal:
$ cd $DEVKITPRO/gba-examples/template
$ make


  • Si todo ha salido bien nos deberá aparecer:
template.c
arm-eabi-gcc -MMD -MP -MF /home/ealdor/gbadev/devkitPro/gba-examples/template/build/template.d 
     -g -Wall -O3 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb -mthumb-interwork  
     -I/home/ealdor/gbadev/devkitPro/libgba/include -I/home/ealdor/gbadev/devkitPro/gba-examples/template/build                                
     -c /home/ealdor/gbadev/devkitPro/gba-examples/template/source/template.c -o template.o 
linking multiboot
built ... template_mb.gba
ROM fixed!


  • Ahora deberemos tener un archivo template_mb.gba. Cuando abráis este archivo en el VBA (VisualBoy Advance), no$gba u otro emulador de la GBA deberíais ver algo parecido a la imagen de abajo:
Ejecucion template vba - Scene GBA.png

Eclipse

  • Ahora vamos a ver como se puede configurar el Eclipse para poder utilizarlo como IDE a la hora de crear nuestros proyectos.
  • Descargamos "Eclipse IDE for C/C++ Developers", de su web o si ya tenéis el Eclipse instalado podemos descargar el plugin CDT el cual nos permitirá trabar con C/C++.
  • Una vez ejecutado el Eclipse nos dirigimos al menú "Run -> External Tools -> External Tools Configuration". En la parte izquierda seleccionad "Program" y darle al botón de "New Launch Configuration" (se encuentra en la parte superior). Ahora id a la pestaña "Main" y en "Name" poned VisualBoy Advance Run. Ahora dirigios a la opción "Location", "Browse File System" y selecciona el ejecutable del VisualBoy Advance (por ejemplo, /usr/bin/VisualBoyAdvance). En el apartado de "Arguments" ponemos ${project_loc}/${selected_resource_name} (sin las comillas). Ahora nos dirijimos a "Run -> External Tools -> Organize Favorites" y añadimos la que acabamos de crear.
  • Ahora debemos definir las variables de entorno en Eclipse (ya que Eclipse no utiliza las variables de entorno del usuario en Linux, o al menos a mi no me las reconoce), para ello nos dirijimos a "Windows -> Preferences -> C/C++ -> Build -> Enviroment" y presionamos en "Add". Las dos que debemos crear son:
  • Name: DEVKITPRO, Value: ruta/al/directorio/devkitPro (por ejemplo, /home/ealdor/gbadev/devkitPro).
  • Name: DEVKITARM, Value: ${DEVKITPRO}/devkitARM

Creando un proyecto

  • Una vez configurado el Eclipse vamos a importar un proyecto y comprobar que todo funciona correctamente. Para ellos presionamos en "File -> Import", seleccionamos "C/C++" y elegimos "Existing Code as Makefile Project". En "Existing Code Location" presionamos en "Browse" y nos dirijimos a donde teniamos el directorio con los ejemplos de la GBA que antes descargamos y al proyecto template (por ejemplo, /home/ealdor/gbadev/devkitPro/gba-examples/template) y presionamos en "Finish".
  • Ahora para construir nuestro proyecto presionamos en "Proyect -> Build Proyect". Si todo ha ido bien deberemos tener los archivos template.elf y template.gba.
  • Ahora elegimos el archivo template.gba y presionamos en el botón "VisualBoy Advance Run" localizado en la barra de herramientas del Eclipse (botón de play verde con un candado rojo).
  • Opcionalmente podemos crear algunas "make targets" para construir el proyecto. Abrimos "Window -> Show View -> Make target", presionamos en nuestro proyeto y hacemos click en el icono de "Add Make Target". Podemos crear por ejemplo tres, ponemos en sus nombres: build, clean y clean build respectivamente.

Links de interes