Da es schon öfters gefragt wurde, ob man sich das Teensy Microcontroller-Board welches mit der Steuerung und den Buttons verbunden und programmiert wird, nicht einfach sparen kann und stattdessen die Kabel direkt an der GPIO des Zeros anbringt: JA! Und hier wird dir genau gezeigt wie es geht…
ACHTUNG! Diese Methode ist 2018 nicht mehr „up-to-date“!
Wenn du recalbox oder retropie verwendest, halte dich bitte an diese Anleitung!
Diese Belegung überspringt die SPI Pins die von SPI TFT Screens verwendet werden als auch die Analog Audio Out Pins.
Mit einer frischen Retropie Installation kann man diese Keys bereits beim Starten definieren. Am besten verwendet man temporär eine angeschlossene Tastatur, danach kann man sein (Wireless) Netzwerk einrichten und SSH und FTP nutzen.
Oben – oben
Unten – unten
Links – links
Rechts – rechts
Start – e
Select – s
A – a
B – b
X – x
Y – y
L – l
R – r
Downloade die retrogame.c Datei (rechte Maustaste + Ziel speichern unter) und speichere sie in einem Verzeichnis auf der SD Karte des Zeros.
Optional kann man auch FTP benutzen (ist meiner Meinung nach am schnellsten und komfortabelsten) um Dateien auf den Zero zu kopieren. Wir erstellen ein verzeichnis unter /home/pi/Adafruit-Retrogame – auf dieses Verzeichnis wird später via Script zugegriffen.
Hier eine kleine Anleitung wie man via FTP auf den Zero zugreifen und ROMS kopieren kann
(werde bei Zeit eine deutsche Version posten)
Verschiebe/Kopiere das zuvor kopierte retrogame.c nun in das Verzeichnis /home/pi/Adafruit-Retrogame (via SSH, FTP…du hast die Wahl)
Tätige nun folgende Eingaben in der Kommandozeile
cd /home/pi/Adafruit-Retrogame make retrogame
Dadurch wird das ausführbare Retrogame-Utility erstellt.
Der letzte Schritt ist die Erstellung einer benutzerdefinierten udev Regel welche dem Retrogame-Tool erlaubt Eingaben sichtbar für Anwendungen zu machen, die die aktuellste SDL2 Library benutzen.
Manche Anwendungen wie die aktuellste Version von RetroPie’s EmulationStation Frontend benötigen SDL2 und nehmen keine Eingaben von Retrogame wahr ohne diese Regel.
Es kann auch nicht schaden diese Regel zu erstellen wenn man nicht gerade EmulatorStation oder andere SDL2 Anwendungen verwendet.
Um die Regel zu erstellen, editiere die Datei /etc/udev/rules.d/10-retrogame.rules
sudo nano /etc/udev/rules.d/10-retrogame.rules
Nun kopiere die folgende Zeile exakt wie sie hier steht und füge sie ein. ACHTUNG: Alles muss in EINER ZEILE geschrieben sein, ohne Zeilenumbruch!
SUBSYSTEM=="input", ATTRS{name}=="retrogame", ENV{ID_INPUT_KEYBOARD}="1"
Speichere die Datei mit Strg+O und bestätige mit Enter.
Verlasse nun Nano mit Strg+x und starte den Zero neu um die neue Konfiguration zu laden.
Die Retrogame App MUSS als Root ausgeführt werden!
sudo ./retrogame
Wenn alles ohne Fehler gestartet wurde, beende das Programm mit STRG+C und wir fügen nun diese Anwendung zum automatischen Bootvorgang hinzu.
sudo nano /etc/rc.local
Vor der „exit 0“ Zeile, füge folgendes ein
/home/pi/Adafruit-Retrogame/retrogame &
ACHTUNG: Hast du ein anderes Verzeichniss am Anfang dieses Tutorials gewählt, musst du den Pfad natürlich anpassen. Wenn du dich aber genau an diese Anleitung gehalten hast, dürfte alles korrekt sein. Sudo wird hier nicht gebraucht, da das rc.local script sowieso beim booten als Root ausgeführt wird!
Führe einen Neustart durch um den automatischen Start von Retrogame zu testen.
Die Anwendung wird nun permanent im Hintergrund laufen und auf Eingaben warten und ist nun für jeden Emulator bereit!
ABER ACHTUNG: Es kommen laufend Beschwerden dass die Steuerung zwar in der GUI (zb Emulationstation) funktioniert aber nicht im Emulator. Das liegt daran dass ihr die Steuerung neuerdings festlegen müsst, z.B: Einstellungen => Steuerung => Steuerung konfigureren (o.ä.). Ist diese definiert, ist auch der Emulator bedienbar.
Alternative Methode
Falls die obig genannte Methode nicht funktioniert oder Probleme macht, kann man sich auch an diesen Adafruit Guide orientieren.
Die dazu benötigte Software kann hier downgeloadet werden.
Diese Methode wurde vom Mitglied Dominik erfolgreich bei einem Raspberry Pi 2 angewandt, es ist aber nicht garantiert dass diese auch auf dem Zero funktioniert!
Die gesammelten Scripte/Config für den RPI2 von Dominik könnt ihr hier downloaden.
Folgende GPIO Belegung und Konfiguration wurden vom User verwendet (der Bereich iostandard befiniert die Eingabemethode am Controller)
Pingback: GPIO Konfiguration in Retropie/Recalbox • ZeroBOY Projekt