Das Pico-8 Stehrümchen

Ich habe ja schon in meinem Artikel Clockwork uConsole – Der nerdigste Computer den ich jemals besaß angedeutet, dass ich ein Faible für die virtuelle Spielkonsole Pico-8 habe.

Ich weiß nicht wirklich was sich der Autor von Pico-8 bei der Entwicklung gedacht hat, aber ich denke Pico-8 sollte ursprünglich auf einem normalen Desktop Computer zum Einsatz kommen. Eine kleine begrenzte Welt innerhalb der heutzutage hochkomplexen Computer, bei denen man manchmal mehr mit Updates und Sicherheitsproblemen zu tun hat, als irgendetwas Interessantes oder Schönes damit zu machen.

Offensichtlich haben aber gerade die Begrenzungen von Pico-8 dazu geführt dass sich viele Entwickler mit der Konsole beschäftigt haben und unzählige Spiele damit und dafür entwickelt haben. Die sind teilweise so gut, dass Anwender der Spiele sich eine Konsole wünschen auf denen sie diese Spiele ähnlich wie auf einem Gameboy direkt spielen können. Der Traum dieser Menschen wäre eine native Konsole, die Pico-8 Spiele direkt ausführen kann. So etwas gibt es leider nicht, da Pico-8 kein Open Source ist und darum von anderen Entwicklern nicht verwendet werden kann um so angepasst zu werden, dass Pico-8 für eine bestimmte Hardware kompiliert werden könnte. Da es aber eine Pico-8 Version gibt die auf einem Raspberry Pi läuft, ist es möglich eine Konsole zu bauen, die zumindest nach außen hin so wirkt wie eine native Pico-8 Konsole. Dadurch läuft Pico-8 mittlerweile auf zahllosen Emulator Konsolen und der Traum der Pico-8 Fans ist fast wahr geworden.

Ich habe mir Pico-8 zuerst auf einem Windows PC installiert, dann auf einem Odroid-Go Advance Black und schließlich auf meiner Clockwork uConsole. Auf dem Windows PC kann man am besten für den Pico-8 entwickeln, da es da möglich ist mit einem normalen Editor zu coden. Auf der uConsole geht das auch auf der Couch oder im Bett und der Odroid-Go Advance Black erlaubt es die fertigen Spiele am komfortabelsten überall zu spielen. Aber in allen Fällen muss ich erst irgendein Betriebssystem hochfahren und von dort aus Pico-8 suchen und starten. Darum habe ich mich schon länger nach einer Handheld Konsole umgesehen, auf der es möglich ist Pico-8 so zu installieren, dass es direkt startet und möglichst nativ aussieht. Die Powkiddy RGB30 scheint mir gut geeignet zu sein, da sie mit ihrem 720×720 Pixel zumindest ein quadratisches Display bietet.

Es gibt aber etwas was ich nicht so gut an Pico-8 finde und das ist die geringe Auflösung von nur 128 x 128 Pixeln. Dadurch sehen die erstellten Spiele bei einer vernünftigen Darstellungsgröße auf einem modernen Monitor oder einem Display ziemlich klotzig aus. Doch neulich beim Stöbern bei Aliexpress habe ich ein LCD HAT (Hardware Attached on Top) mit einem Display entdeckt, welches genau die für Pico-8 notwendige Auflösung besitzt: 128 x 128 Pixeln und noch dazu einen Mini-Joystick und 3 Tasten besitzt. Also ideal geeignet um Pico-8 Spiele spielen zu können. Das HAT ist für den Raspberry Pi Zero WH gemacht und passt genau auf die Erweiterungsleiste von diesem. Das ergibt eine ziemlich kleine Handheld Konsole. Bei dieser Größe ist auch die Pixelgröße passend. Ohne Gehäuse ist sie ein ziemlich cooler Blickfang für den Schreibtisch bei dem man jeden Tag ein anderes Spiel auf dem Display sehen kann. Ich finde es eine sehr coole Demonstration was heute mit winzigen Computern alles möglich ist und eine schöne Werbung für Pico-8.

Sie funktioniert tatsächlich, macht allerdings direkt auf den nackten Tasten keinen Spaß und schmerzt nach wenigen Augenblicken an den Fingerkuppen. Es gibt aber Gehäuse zum Selbstausdrucken und auch passende Tastenkappen dazu. Mit denen sollte es besser funktionieren. Ich selbst spiele aber sowieso nicht wirklich ernsthaft mit diesen Konsolen, sondern interessiere mich für die Technik dahinter oder, im Falle der Pico-8, programmiere ein eigenes Spiel dafür. Aber ich mag solche Dinge als nerdiges Stehrümchen für mein Zimmer oder unsere Wohnung, wobei nicht alle Hausbewohner das so toll wie ich finden.

Ich habe mir das HAT bestellt und gleich ein Raspberry Pi Zero W Board dazu. Um den Pico-8 auf dem Zero mit dem HAT zum Laufen zu bringen habe ich mich an folgenden beiden Anleitungen orientiert:

Original Anleitung zum 1.44 inch LCD HAT mit 128×128 Pixeln von Waveshare

PICO-8 Handheld-Spielkonsole mit Waveshare LCD HAT von Martin Strohmayer

Als Basis habe ich die verschiedensten Images ausprobiert, aber an irgendeiner Stelle ist es immer gescheitert. Oft habe ich das Display zum Laufen bekommen, aber dann lies sich der Pico-8 nicht starten. Oder die Tasten haben nicht funktioniert. Manchmal kam ich auch mit den Anleitungen nicht durch, da irgendetwas gefehlt hat oder sich nicht hat installieren lassen. Bei aktuellen Distributionen musste ich auch fast immer GIT zusätzlich installieren.

Nach endlosem Herumprobieren habe ich dann aber doch einen Weg gefunden den Pico-8 auf dem Zero mit dem gezeigten HAT zum Laufen zu bringen. Nachfolgend habe ich Euch den Weg dazu aufgeschrieben. Ich möchte betonen dass die Verwendung eines Zero mit diesem HAT absolut nichts Neues darstellt! Ich habe auf Youtube schon mehrere Jahre alte Filme gesehen, in denen diese Kombination scheinbar funktioniert hat. Aber im Lauf der Zeit ändert sich vieles und manches scheint nicht mehr zusammen zu passen. Darum denke ich dass diese Anleitung hier durchaus Sinn macht.

Hier gibt es eine gute Übersicht über die verschiedenen älteren Raspberry Pis’s:

Das ist ein nettes Einsteigerprojekt und ich will versuchen in diesem Artikel etwas mehr als üblich zu erklären, so dass auch Anfänger einen Chance haben es aufzusetzen.

Den RaspberryPi Zero W :

https://de.aliexpress.com/item/1005005171008740.html?spm=a2g0o.order_list.order_list_main.10.330a5c5fM9RTU4&gatewayAdapt=glo2deu

Das passende HAT dazu:

https://de.aliexpress.com/item/32859987115.html?spm=a2g0o.order_list.order_list_main.11.330a5c5fM9RTU4&gatewayAdapt=glo2deu

Hat mich zusammen knapp 30 Euro gekostet.

Zuerst benötigt Ihr den Raspberry Pi Imager, den es direkt von der RaspberrPi Seite gibt, und zwar hier:

https://www.raspberrypi.com/software/

Als Basis Image für alle weiteren Modifikationen habe ich das Image

2022-04-04-raspios-buster-armhf.img.xz

von dieser Seite verwendet:

http://ftp.jaist.ac.jp/pub/raspberrypi/raspios_oldstable_armhf/images/raspios_oldstable_armhf-2022-04-07/

Es ist beim Arbeiten mit dem Zero wichtig zu bedenken, dass Ihr auf ihm Konfigurationsarbeiten durchführen müsst und es dazu notwendig ist Kommandos einzugeben und deren Ergebnisse auf einem Bildschirm zu sehen. Das ist beim Zero noch schwieriger als bei einem normalen Raspberry Pi, da er keine normalen USB-A Anschlüsse sondern stattdessen 2 USB-Mikro-B Anschlüsse besitzt. Das ist zumindest für mich problematisch, da ich hier kein passendes Keyboard herum liegen habe, dass ich direkt mit dem Zero verbinden könnte und auch kein Adapter für den Mini-HDMI-Anschluss des Zero besitze.

Zum Glück ist es möglich beim Flashen eines Images auf die Speicherkarte für den Zero die SSID und das Passwort mitzugeben, sowie dafür zu sorgen dass SSH freigeschaltet wird. Dadurch wird es möglich nach dem Einstecken der Speicherkarte in den Zero mit diesem über Putty Kontakt aufzunehmen und alles weitere über Putty zu erledigen!

Putty bekommt Ihr hier:

https://www.putty.org/

Im Imager wählt Ihr bei Raspberry Pi Modell ‚Raspberry Pi Zero‘ aus und bei OS ganz unten ‚Use custom‘. Damit könnt Ihr Euer vorher downgeloadetes ‚2022-04-04-raspios-buster-armhf.img.xz‘ Image auswählen. Bei SD-Karte wählt Ihr die vorher von Euch besorgte und eingesteckte micro-SD Karte aus. Wenn Ihr dann auf ‚Weiter‘ klickt kommt ein Fenster in dem Ihr Einstellungen bearbeiten könnt, was Ihr unbedingt machen müsst. Dort setzt Ihr einen Haken bei folgenden Punkten und füllt sie passend aus:

Allgemein

  • Hostname: ‚pico-8‘

  • Benutzername: Denkt Euch etwas aus

  • Passwort: Denkt Euch etwas aus

  • WiFi einrichten

  • SSID: Eure SSID

  • Passwort: Das zugehörige Passwort

Dienste

  • SSH aktivieren

  • Passwort zur Aktivierung verwenden

Die Angaben könnt Ihr speichern, so dass es bei einem zweiten Versuch schneller geht. Anschließend könnt Ihr das Flashen starten. Es dauert ein Weile. Wenn das Flashen abgeschlossen ist müsst Ihr die micro-SD Karte in den Raspberry Pi Zero stecken und diesen mit Strom versorgen. Dann wartet Ihr am besten eine Weile, da gerade beim ersten Start scheinbar noch einige Dinge erledigt werden, bevor Ihr den Raspberry Pi über Putty ansprechen könnt. Um die IP vom Zero heraus zu finden könnt Ihr im Falle einer Fritzbox (http://fritz.box) die Seite WLAN→Funknetz aufrufen. Da sollte irgendwann in der Liste ‚Bekannte WLAN-Geräte im Funknetz‘ unter ‚Name‘ ‚pico-8‘ auftauchen. Direkt dahinter steht die IP-Adresse!

Ihr könnt es aber immer mal wieder probieren. Irgendwann erscheint ein Anmeldedialog, indem Ihr den vorher gewählten Namen und Euer Passwort angeben müsst. Wenn alles geklappt hat, könnt Ihr ab jetzt die weitere Konfiguration über das Putty Terminal vornehmen.

Zuerst müsst Ihr den Zero auf die Verwendung von SPI einstellen. Dazu startet Ihr im Putty Terminalfenster ‚sudo raspi-config‘ und ‚enabled‘ dort das SPI Interface. Mit ‚Yes‘. Dann könnt Ihr raspi-config wieder verlassen und mit ‚sudo reboot‘ den Zero neu starten. Anschließend müsst Ihr Euch wieder neu mit Putty anmelden.

Führt jetzt folgende Anweisungen durch:

BCM2835

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install

WiringPi

cd
sudo apt-get install wiringpi
#For Raspberry Pi systems after May 2019 (earlier than that can be executed without), an upgrade may be required:

wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v

lgpio

wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
sudo make install

FBCP Driver

sudo apt-get install cmake -y

cd
wget https://files.waveshare.com/upload/1/18/Waveshare_fbcp.zip
unzip Waveshare_fbcp.zip
cd Waveshare_fbcp
mkdir build
cd build
cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH44_LCD_HAT=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
make -j
sudo ./fbcp

Nach diesem Schritt sollte erstmals der Desktop des Zero auf dem kleinen Display wiedergegeben werden und damit ist ein wichtiger Teilschritt erreicht.

Mit nachfolgendem Kommando kopiert Ihr das soeben kompilierte ‚fbcp‘ in einen Ordner von dem aus es später automatisch beim Booten aufgerufen werden kann.

sudo cp ~/Waveshare_fbcp/build/fbcp /usr/local/bin/fbcp

Display konfigurieren

Hier werdet Ihr das erste Mal den ‚nano‘ Editor aufrufen. In nano könnt Ihr keine Maus verwenden und Euch nur mit den Cursortasten bewegen. Mit ‚Strg-O‘ könnt Ihr speichern und mit ‚Strg-X‘ den nano wieder beenden!

sudo nano /boot/config.txt

hdmi_force_hotplug=1
hdmi_cvt=128 128 60 1 0 0 0
hdmi_group=2
hdmi_mode=87
display_rotate=0

Tasten

cd
curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh >retrogame.sh

Dann

sudo bash retrogame.sh

aufrufen und dort die Option 6 ‚Six buttons + joystick‘ auswählen. Die Frage nach dem Booten verneinen und mit:

sudo nano /boot/retrogame.cfg

die Datei ‚retrogame.cfg‘ editieren. Mit Ctrl-K alle dort vorhanden Zeilen löschen und folgende Zeilen einfügen:

LEFT    5   # Joypad left
RIGHT   26  # Joypad right
UP      6   # Joypad up
DOWN    19  # Joypad down
Z       20  # Button 3
X       16  # Button 2
ESC     21  # Button 1

und speichern.

Auto-start when Power on

Damit Pico-8 nach dem Booten automatisch startet müsst Ihr noch folgendes Script in rc.local einbauen:

Mit

sudo nano /etc/rc.local

den Editor aufrufen und folgendes Script:

if [ -f "/home/pi/pico-8/pico8" ] ; then
  cd /home/pi/pico-8/
  # Start PICO-8 with user pi and splore screen
  sudo -H -u pi /home/pi/pico-8/pico8 -splore &
fi

fbcp&

direkt vor der Zeile mit ‚exit 0‘ eintragen!

Dabei müsst Ihr den Anwender ‚pi‘ durch den Namen ersetzen, den Ihr am Anfang beim Raspberry Pi Imager angegeben habt! Das Script muss vor der Zeile mit ‚exit 0‘ eingefügt werden.

Jetzt muss der Pico-8 auf den Zero kopiert werden. Dazu habe ich WinSCP verwendet. Ihr findet es hier. Pico-8 müsst Ihr bei lexaloffle.com kaufen. Achtet darauf Euch die Version für den Raspberry Pi herunter zu laden! Es empfiehlt sich aber auch die Windows Version mitzunehmen, so könnt Ihr auf Eurem Desktop leichter eigene Programm entwickeln und diese dann auf Euren Mini Pico-8 kopieren. Die Version ‚pico-8_0.2.6b_raspi.zip’ ist aktuell die Neueste und sie funktioniert! Einfach in Euer Home Verzeichnis kopieren und mit:

unzip pico-8_0.2.6b_raspi.zip

entpacken und ein letztes Mal neu booten!

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert