Nintendo Game Boy als Retro Gaming Handheld umbauen

Raspberry Pi Zero Retro Gaming Handheld Recalbox Software …

Ein ganz wichtiger Punkt für die Funktion unseres Retro Gaming Handhelds ist die Software. Als Betriebssystem/Benutzeroberfläche verwenden wir die sehr bekannte Software Recalbox, die es als eine speziell für den Raspberry Pi Zero abgestimmte Version als freien Download gibt.

Einfach mal „Recalbox download“ in der Google Suche eingeben.

Wir haben für diese Anleitung Recalbox in der Version 4.0 verwendet. In der Standardkonfiguration ist das System leider nicht sofort für unseren Einsatzfall optimal konfiguriert. Wir müssen einstellen, dass wir die Steuerung über die GPIOs ausführen, auf welche GPIOs wir das Audio Signal ausgeben und die Bildausgabe über den Composite Ausgang erfolgt, statt der standardmäßigen Ausgabe über HDMI. Die Einstellungen für Bild- und Sound-Ausgabe nimmt man über die Datei „config.txt“ im Verzeichnis „boot“ der SD-Karte vor.

Hier der vollständige Inhalt unserer config.txt

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
disable_overscan=0
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
# Sound output. Set to 0 or comment for autodetect, 1 for DVI, 2 to force HDMI.
#hdmi_drive=2
# Using /etc/modules is deprecated and no longer supported on 4.4 kernel
# So manually enable audio
dtparam=audio=on
#config_hdmi_boost=0
# force hdmi while the tv can take time before sending the signal on the hdmi output
#hdmi_force_hotplug=1
# uncomment for composite PAL
sdtv_mode=2
# uncomment for lirc-rpi
#dtoverlay=lirc-rpi
# if you plug your tv at the same time as your rpi and that the rpi switches from the hdmi or give a low resolution because tv had no enough time to initialize it
boot_delay=3
# uncomment if you don't want the rainbow at startup
disable_splash=1
# default CEC name
cec_osd_name=recalbox
# Overclock
gpu_mem_256=128
gpu_mem_512=256
gpu_mem_1024=512
avoid_safe_mode=1
kernel=zImage
dtoverlay=pwm-2chan,pin=13,func=4,pin2=12,func2=4
overscan_scale=1

Die vorletzte Zeile des obigen Codes definiert, dass die Soundausgabe in Stereo über GPIO 13 und GPIO 12 erfolgt. Hier unterscheidet sich unser Projekt ganz klar von den meisten anderen Projekten zu Retro Gaming Handhelds im Internet, da dort entweder nur Mono Sound ausgegeben wird oder sogar ein Sound-Kanal auf denselben GPIO wie die Y-Taste des Controllers gelegt wird.

Falls man die Änderungen nicht selbst durchführen möchte, kann man die Config.txt unseres Projekts hier herunterladen und ins Projekt übernehmen, indem man die Datei auf der SD-Karte einfach ersetzt. Am einfachsten erhält man auf die SD Karte Zugriff, indem man die Karte auf einem Linux PC (kann auch eine virtuelle Maschine oder ein Live-System auf USB Stick sein) einlegt, da Windows das verwendete Dateisystem der SD-Karte leider nicht unterstützt. Falls man einen Raspberry PI Zero W (mit integriertem W-LAN) für das Projekt verwendet, kann man auch über W-LAN und der Software PuTTY auf den laufenden Raspberry zugreifen und die Config.txt im laufenden Betrieb modifizieren. Zugriff über Putty erhält man, indem man in Putty die IP-Adresse des Raspberrys eingibt und mit dem User „root“ und dem Passwort „recalbox“ auf den Raspberry verbindet.

Die Controller-Einstellungen und noch ein paar weitere nimmt man über die Datei „recalbox.conf“ vor. Hier sind ein paar wichtige Einstellungen, die man auf jeden Fall übernehmen sollte …

Audioausgabe auf 100% stellen:

# ------------ C - Audio ------------ #
## Set the audio device (auto, hdmi, jack)
audio.device=jack
## Set system volume (0..100)
audio.volume=100
## Enable or disable system sounds in ES (0,1)
audio.bgmusic=1

Den GPIO Controller aktivieren. Hier unbedingt nur EINEN Controller aktivieren. Bei allen anderen Controller-Optionen „enabled=0“ eintragen:

# ------------ D2 - GPIO Controllers ------------ #
## GPIO Controllers
## enable controllers on GPIO with mk_arcarde_joystick_rpi (0,1)
controllers.gpio.enabled=1
## mk_gpio arguments, map=1 for one controller, map=1,2 for 2 (map=1,map=1,2)
controllers.gpio.args=map=1

Und den Videomode auf „default“ umstellen:

# ------------ H - HERE IT IS - GLOBAL EMULATOR CONFIGURATION ------------ #
## The global value will be used for all emulators, except if the value
## is redefined in the emulator

## Set game resolution for emulators
## select your mode from the command : tvservice -m [MODE]
## CEA 5 HDMI : 1920x1080 @ 60Hz 16:9, clock:74MHz interlaced 
## CEA 4 HDMI : 1280x720 @ 60Hz 16:9, clock:74MHz progressive
## use 'default' for using the default resolution
## use 'auto' : switches to CEA 4 HDMI if supported, else keep the current resolution
## (string)
global.videomode=default

Damit man später im Betrieb dann auch die Namen der Spiele lesen kann, muss die Schriftgröße der Spieleliste vergrößert werden, da diese für HD-Auflösung ausgelegt ist, und auf unserem kleinen SD-Display nicht lesbar wäre.

Die Anpassung der Schriftgröße der Spieleliste nehmen wir in der Datei Theme.xml im Themenordner von Recalbox vor. Den Pfad sieht man im folgenden Screenshot.

In der Datei theme.xml muss dann im folgenden Absatz der Wert von <font-size> von 0.02 auf 0.05 geändert werden. Der Parameter ist fast am Ende der Datei zu finden.

<textlist name="gamelist">
			<fontPath>./data/arts/Exo2-BoldCondensed.otf</fontPath>
			<fontSize>0.05</fontSize>
			<forceUppercase>1</forceUppercase>
</textlist>

Damit hätten wir die nötigen Änderungen an den Konfigurationsdateien auch schon abgeschlossen. Natürlich kann jeder nach seinem persönlichen Geschmack auch andere bzw. weitere Einstellungen/Änderungen vornehmen.

Unsere Versionen der 3 zu ändernden Dateien kann man gerne hier herunterladen und auf dem eigenen Retro Gaming Handheld verwenden, wenn man möchte.

Kommen wir abschließend zu dem Einbau der Retro Gaming Handheld Komponenten …