Tabletop-Arcade

From CCC Basel Wiki
Jump to navigation Jump to search

Wir haben ein Tabletop-Cabinet, welches ehemals einen CRT-Bildschirm enthielt, und an zwei gegenüberliegenden Seiten Inputs (Buttons und Joysticks).

Restauration

Es wurde zuerst ein Retropieimage auf eine SD-Karte geflasht (retropie-buster-4.6-rpi2_rpi3.img). Folgende Konfiguration wurde der Datei /opt/retropie/configs/all/retroarch.cfg hinzugefügt bzw. bearbeitet :

video_fullscreen = true
video_fullscreen_x = 0
video_fullscreen_y = 0
aspect_ratio_index = 23
custom_viewport_width = 1080
custom_viewport_height = 1080
custom_viewport_x = 420
custom_viewport_y = 0
video_rotation = "1"

Dem Autostart unter /opt/retropie/configs/all/autostart.sh wird neben dem Start von emulationstation auch der Start eines Bashskripts implementiert, welches die GPIO-zu-uinput-Bridge startet.

emulationstation --screensize 1080 1080 --screenoffset 418 0 #auto

Zudem müssen für jedes System ein Shader konfiguriert werden. Der Shader (File:Cocktail-cabinet-unmirrored.glsl) sorgt für einen Splitscreen für zwei gegenübersitzende Spieler, jedoch wird die Ausgabe um 90 Grad gedreht. Daher wird in der vorherigen Konfigurationsdatei das Bild im Spiel um 90 Grad gedreht.

Der Shader wird unter

/opt/retropie/emulators/retroarch/shader/

abgelegt und über das Quick Menü konfiguriert. Dort können Initialposition(x/y) und die Dimensionen der einzelnen Screens konfiguriert werden. Bei dem vorkonfigurierten Pi wird dies über Enter+Y mit der Tastatur gehandelt.

Das gpiopad ist unter https://git.kabelsalat.ch/SPiNNiX/zockbox-gpiopad.git klonbar. Benötigt wird Python 3 und die Libraries python-uinput und RPi.GPIO.

Wichtig ist, dass der Nutzer pi ohne Zusatzberechtigungen ein neues uinput-Gerät öffnen kann.

Folgendes muss ausgeführt werden...

sudo groupadd -f uinput
sudo gpasswd -a pi uinput

und diese Zeilen müssen in /etc/udev/rules.d/99-input.rules stehen:

SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="uinput", GROUP="uinput", MODE="0660"

Die Controller müssen dann an die Pins des Pi wie im Pythonskript angeschlossen werden und in Emulationstation über das Startmenü konfiguriert werden.