En este artÃculo prepararemos el entorno de desarrollo necesario para programar juegos en C utilizando GBDK , para ello utilizaremos la capa de compatibilidad binaria de Linux ya que GBDK requiere de una versión de SDCC parcheada y compilarlo en FreeBSD resulta muy complicado, creedme lo he intentado. Además instalaremos el emulador/debugger Emulicious el cual nos ayudará a visualizar de forma gráfica el estado del microprocesador, la memoria del sistema y la memoria de video.
El manual se divide en varios apartados:
Linuxulator
Habilitamos linuxulator, la manera mas sencilla es utilizando el script de mrclksr.
Primero nos aseguramos de que la compatibilidad genérica no esté habilitada:
Ahora clonamos el script de mrclksr e instalamos el chroot:
cd linux-browser-installer
./linux-browser-installer install chrome
Habilitamos el chroot en el boot:
Ahora cada vez que ejecutemos un binario de Linux se ejecutará con la capa de compatibilidad de Linux.
GBDK
En realidad GBDK es un conjunto de librerÃas en C para programar en GameBoy, el compilador en si mismo es SDCC, al bajarnos GBDK ya viene con una versión de SDCC parcheada incluida.
Instalamos el compilador/librerÃas:
cd ~/GBDEV
wget https://github.com/gbdk-2020/gbdk-2020/releases/download/4.0.6/gbdk-linux64.tar.gz
tar xvzf gbdk-linux64.tar.gz
cd gbdk/examples/gb/
make
Ejemplo
Un simple ejemplo puede ser este, muestra un texto por pantalla y espera a que presionemos START:
vi ~/GBDEV/code/00.c
#include <gb/gb.h>
#include <stdio.h>
void main()
{
printf("Welcome to GAMEBOY\nProgramming");
printf("\nPress Start");
waitpad(J_START); // other keys are J_A, J_UP, J_SELECT, etc.
printf("\nIsn't it easy!");
}
Compilamos el ejemplo:
NOTA: Podemos encontrar toda la documentación sobre las funciones de GBDK en este enlace .
Emulador Debuger
Emulicious está escrito en Java asà que tendremos que bajar el fichero JAR y ejecutarlo.
Nos bajamos el emuladoir/debugger:
https://emulicious.net/downloads/
Lo ejecutamos:
cd ~/GBDK/Emulicious
unzip Emulicious.zip
java -jar Emulicious.jar
Retocamos algunos parámetros, en mi caso prefiero ver el display con colores que me recuerden a la gameboy pocket:
Options -> Emulation -> Game boy -> Color scheme -> Green
Un problemilla que he tenido con Emulicious es que no reconoce el mando USB, pero con un software llamado
antimicro
podremos mapear el mando a teclas:
Tan solo consultamos las teclas de Emulicious:
Options -> Configure Input
Ahora vamos a antimicro:
Y mapeamos cada una de las teclas, por ejemplo las flechas de arriba/abajo:
Como podemos ver hay presets predefinidos, los botones normales se mapean del mismo modo seleccionando la tecla a simular:
Dejamos antimicro en la systray y abrimos la ROM desde Emulicious:
/compat/ubuntu/gbdk_code/00.gb
Cargará la ROM y si presionamos la tecla Start aparecerá el mensaje:
Lo mas interesante de Emulicious es que también es un debuger, muy útil para detectar y depurar bugs:
Otra opción es utilizar bgb mediante wine, este emulador es muy conocido ya que aparece en la mayorÃa de videos y tutoriales: