Esta pagina se ve mejor con JavaScript habilitado

GameBoy Dev00: GBDK/Emulicious/bgb

 ·  🎃 kr0m

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:

sysrc linux_enable=“NO”

Ahora clonamos el script de mrclksr e instalamos el chroot:

git clone https://github.com/mrclksr/linux-browser-installer.git
cd linux-browser-installer
./linux-browser-installer install chrome

Habilitamos el chroot en el boot:

sysrc ubuntu_enable=“YES”

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:

mkdir ~/GBDEV
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:

mkdir ~/GBDEV/code
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:

~/GBDEV/gbdk/bin/lcc ~/GBDEV/code/00.c -o ~/GBDEV/code/00.gb

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:

mkdir ~/GBDK/Emulicious
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:

pkg install antimicro

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:

mkdir ~/GBDK/bgb
cd ~/GBDK/bgb
wget https://bgb.bircd.org/bgbw64.zip
unzip bgbw64.zip
wine bgb.exe

Si te ha gustado el artículo puedes invitarme a un RedBull aquí