Erstellt: 14. September 2014 (zuletzt geändert: 24. Dezember 2016)

RetroPie: Tipps & Tricks

Raspberri PiRetroPie: Wo liegt was und wie fange ich überaupt an?

Diese Seite soll als Referenz dienen. Ich fasse hier Infos zusammen, die auf den anderen Seiten verteilt stehen. Wer nur mal schnell wissen möchte, wo die es_system.cfg liegt oder warum die EmulationStation 2 so langsam lädt, ist hier genau richtig. Von Zeit zu Zeit werde ich die Liste erweitern.

 

Ich gehe vom RetroPie-Image 2.3 aus, außerdem sollte der Pi im Netzwerk ‚hängen‚.

 

Was euch hier erwartet…

 

Linux – Erste Schritte
Da RetroPie ja auf Rasbian aufsetzt, das wiederum ein Linux-Ableger ist, hier einige wichtige Punkte, falls ihr von anderen Systemen (z. B. Windows) kommt.

Groß- und Kleinschreibung ist sehr wichtig! Linux unterscheidet zwischen der Groß- und Kleinschreibung bei Befehlen, Datei- und Verzeichnisnamen.

Sobald ihr die EmulationStation verlasst, befindet ihr euch im Terminal (unter Windows ‚Eingabeaufforderung‘ genannt). Dort braucht ihr eine Reihe von Kommandos / Befehlen, die ihr mit <ENTER> abschließen müsst, um die gewünschten Änderungen vorzunehmen. Möchtet ihr z. B. die EmulationStation nach dem Verlassen wieder starten, dann reicht die Eingabe von emulationstation.

Wichtige Befehle
Ich verwende in meinen Beschreibungen häufig folgende Befehle / Anweisungen:

  • sudo um einige geschützte Verzeichnisse oder Dateinamen zu verwenden oder sicherheitsrelevante Befehle auszuführen, braucht ihr ‚Superuser‘-Rechte, diese erhaltet ihr über diesen Befehl.
    Beispiel: sudo reboot
     
  • reboot damit startet ihr den Pi neu.
    Beispiel: reboot
     
  • shutdown möchtet ihr den Raspberry über das Terminal herunterfahren, dann verwendet ihr diesen Befehl.
    Beispiel: shutdown -h now
     
  • cd bedeutet ‚change directory‘, damit könnt ihr das Verzeichniss wechseln
    Beispiel: cd ~/RetroPie/roms

    • . der Punkt steht für das aktuelle Verzeichnis
    • .. zwei Punkte gehen eine Verzeichnisebene zurück
    • ~ die Tilde steht für das Home-(Arbeits-)Verzeichnis z. B. /home/pi
    • / ein Slash steht für die Root (das Hauptverzeichnis)
    • das Minus wechselt zum letzten gewählten Verzeichnis und wieder zurück
       
  • cp steht für copy und kopiert Dateien und Verzeichnisse
    Beispiel: cp ~/RetroPie/BIOS/kickstart20.rom ./kick.rom
     
  • ls listet euch die Dateien und Verzeichnisse im aktuellen Ordner auf.
    Beispiel: ls
     
  • rm steht für remove und löscht Dateien oder Verzeichnisse.
    Beispiel: rm ~/RetroPie/BIOS/kick.rom
     
  • mkdir mit ‚make directory‘ könnt ihr ein neues Verzeichnis anlegen.
    Beispiel: mkdir BIOS
     
  • chmod hiermit lassen sich die Berechtigungen von Dateien und Verzeichnissen ändern. Ich gebe in den Beispielen meistens Vollzugriff, dieser wird z. B. durch die Zahlenkombination 777 erreicht.
    Beispiel: chmod 777 BIOS

  • mv dient zum Verschieben ‚move‘ sowie umbenennen von Dateien und Verzeichnissen.
    Beispiel: mv ~/RetroPie/roms/msx/* ~/.openMSX/share/.

Es gibt natürlich noch Unmengen an weiteren Befehlen. Außerdem gibt es für die obigen Anweisungen noch zig Optionsschalter, die ihr mit angeben könnt. Abhängig davon, mit welchen Berechtigungen ihr euch anmeldet, müsst ihr viele Befehle von oben mit einem sudo beginnen.

 

Autovervollständigen mit <TAB>
Besonders bei der Eingabe von langen Verzeichnissen und Dateinamen ist das Autovervollständigen hilfreich. Drückt ihr nach den ersten Zeichen die <TAB>-Taste, dann wird der Name automatisch ergänzt.

Ein kleines Beispiel:
Verlasst die EmulationStation und wechselt mit cd ~/RetroPie-Setup das Verzeichnis. Hier wollen wir nun das Script retropie_setup.sh starten. Mit ls -n lassen wir uns einmal zur Kontrolle alle Dateien nach Namen sortiert anzeigen.

Beachtet, dass zwei Dateien mit 'retropie_' beginnen!
Beachtet, dass zwei Dateien mit ‚retropie_‘ beginnen!

Gebt jetzt sudo ./r ein, drückt dann auf <TAB> und schon wird die Eingabe zu sudo ./retropie_. Dies ist noch nicht ganz das gewünschte Ergebnis. Wie wir oben im Bild sehen, gibt es zwei Dateien, die mit retropie_ beginnen, daher endet die Vervollständigung hier. Ihr könnt euch jetzt übrigens durch einen erneuten Druck auf <TAB> die betroffenen Dateien anzeigen lassen.

Die Möglichkeiten mit 2x anzeigen lassen.
Die Möglichkeiten mit 2x anzeigen lassen.

Wir brauchen jetzt nur unsere Eingabe um ein „s“ ergänzen sudo ./retropie_s und nochmal auf <TAB> drücken, schon erhalten wir die komplette Befehlszeile sudo ./retropie_setup.sh.

 

root Passwort
Mit den bekannten Zugangsdaten Benutzer (User) = pi | Passwort = raspberry meldet ihr euch als normaler Benutzer am Pi an, so startet z. B. auch das RetroPie-Image. Dann müsst ihr Befehlen / Programmen häufig das eben erwähnte sudo voranstellen, da euch sonst die Rechte fehlen. Möchtet ihr euch daher lieber als root (kann man mit ‚Als Administrator ausführen‘ von Windows vergleichen) anmelden, um das sudo zu sparen, müsst ihr erstmal ein root-Passwort festlegen. RetroPie setzt nämlich auf Rasbian auf und das ist wiederum ein Debian Abkömling. Unter Debian gibt es standardmäßig kein root-Passwort. Um an eins zu kommen, gebt im Terminal einfach sudo passwd root ein und folgt den Anweisung.

root-Passwort festlegen
root-Passwort festlegen

Danach könnt ihr euch mit den Zugangsdaten Benutzer (User) = root | Passwort = <euer Passwort> mit Adminrechten einloggen. Vom Terminal könnt ihr euch mit su – als root einloggen. Beachtet aber, dass die EmulationStation dann automatisch startet und einen Fehler wirft! Sie ist schließlich für den Benutzer pi installiert worden.

Als root einloggen.
Als root einloggen.

Sobald ihr euch als root anmeldet, ändert sich der Prompt im Terminal (s. oben). Wollt ihr wieder als normaler Benutzer arbeiten, dann gebt einfach login pi gefolgt vom Passwort raspberry ein.

Interessanter sind die root-Rechte evtl. für die nächsten beiden Punkte.

 

Fernzugriff mit PuTTY per SSH (Secure SHell)
Möchtet ihr keine Tastatur an den Pi anschließen oder ihn später etwas versteckt verbauen, dann bietet sich der Fernzugriff per SSH an. Startet dazu vom Terminal mit sudo raspi-config die Raspberry-Konfiguration, um zu kontrollieren, ob SSH aktiviert ist. Folgt einfach den Schritten auf den Bildern.

Advanced Options
8. Advanced Options
A4 SSH
A4 – SSH
‚Enable‘ um SSH zu aktivieren

Sobald der SSH-Server läuft erscheint abschließend folgende Meldung, wenn ihr diese bestätigt habt, könnt ihr raspi-config wieder verlassen.

raspi-config_023 

Jetzt benötigen wir noch ein Programm, um per SSH auf den Pi zuzugreifen. Das bekannteste ist wohl PuTTY. Der Download liefert euch ein direkt ausführbares Programm, es muss also nichts installiert werden.

Verwendet ihr die Standardeinstellungen beim Pi, dann könnt ihr PuTTY wie auf dem folgenden Bild einrichten.

PuTTY einrichten
PuTTY einrichten
  1. Netzwerkname (normalerweise raspberrypi) oder IP-Adresse des Raspberry
  2. Port ggf. auf 22 stellen
  3. SSH als Verbindungstyp wählen
  4. Hier einen beliebigen Namen eingeben, unter dem gespeichert werden soll.
  5. [Save] anklicken, um die Einstellungen dauerhaft zu speichern.
  6. Der gewählte Name taucht jetzt in der Liste auf.
  7. Um eine Verbindung herzustellen auf [Open] klicken.

Stellt ihr zum ersten Mal eine Verbindung zu einem Rechner her, dann erscheint eine Meldung, wie diese.

RetroPie2_Tipps&Tricks_006Speichert den Key mit [Ja], wir verbinden uns schließlich nur mit unserem Raspberry Pi, dann bekommt ihr die Warnung in Zukunft nicht mehr.

Jetzt öffnet sich das Terminal und ihr könnt euch als pi mit dem Passwort raspberry einloggen:

Als 'pi' mit dem Passwort 'raspberry' einloggen.
Als ‚pi‘ mit dem Passwort ‚raspberry‘ einloggen.

Hinweis: PuTTY ist nur in der Lage das Terminal darzustellen. Ihr könnt also nichts starten, was eine grafische Oberfläche benötigt, darunter fällt natürlich auch die EmulationStation 2.

Aber ansonsten könnt ihr alles wie am Pi machen. Ihr könnt euch hier natürlich auch mit dem oben erwähnten root-Passwort anmelden. Ein weiterer Vorteil ist, dass ihr mit der Maus Texte aus dem Fenster kopieren und durch einen Klick mit der rechten Maustaste sogar einfügen könnt. Dies erleichtert einige Eingaben.

Natürlich bietet PuTTY noch viele weitere Einstellungen, z. B. könnt ihr euch die Eingabe des Benutzernamens sparen:

RetroPie2_Tipps&Tricks_008

  1. Unter Connection auf Data klicken
  2. pi als Namen eingeben (natürlich geht auch root, wenn ihr es wollt und das Passwort angelegt habt)
  3. Wieder auf Session klicken und wie zuvor die Einstellungen speichern.

Das soll jetzt aber zu PuTTY reichen, kommen wir zur Dateiübertragung per SSH.

 

Dateien mit WinSCP per SSH übertragen
Der einfachste Weg Daten für RetroPie auf die SD-Karte zu bekommen führt direkt über den Windows-Dateiexplorer. Gebt einfach \\raspberrypi in die Adresszeile ein und schon habt ihr Zugriff auf die freigegebenen Ordner.
Möchtet ihr auch Dateien per SSH übertragen, dann bietet sich WinSCP an. Der Vorteil, gegenüber dem direkten Zugriff per \\raspberrypi aus dem Windows-Dateiexplorer, ist, dass ihr direkten Zugriff auf die komplette SD-Karte habt. Natürlich gelten hier auch die Zugriffsbeschränkungen von Linux, aber wie oben beschrieben könnt ihr euch hier auch als root anmelden. Ich verwende übrigens WinSCP portable, da dies nicht installiert werden muss. Die Einrichtung ist auch hier wieder sehr einfach…

RetroPie2_Tipps&Tricks_009

  1. ‚Neues Verbindungsziel‘ auswählen, dann werden die Eingabefelder freigegeben.
  2. SFTP als Protokoll
  3. Der Rechnername sollte immer noch raspberrypi lauten
  4. Port wieder auf 22
  5. Benutzername – Ich empfehle hier den oben eingerichteten root-Zugang.
  6. Das passende Passwort eingeben
  7. [Speichern] anklicken
    Es öffnet sich ein neues Fenster:RetroPie2_Tipps&Tricks_010
  8. Legt fest unter welchem Namen die Verbindung gespeichert werden  soll
  9. Auch wenn es nicht empfohlen wird, ich würde das Passwort für die Verbindung zum Pi speichern.
  10. [OK] anklicken, um die Einstellungen endgültig zu speichern.
  11. Jetzt taucht euer Name in der Liste auf.
  12. Nun könnt ihr ganz einfach über [Anmelden] eine Verbiundung herstellen.
Ein kurzer Verbindungsaufbau
Ein kurzer Verbindungsaufbau

Sobald die Verbindung steht öffnet sich das Hauptfenster.

RetroPie2_Tipps&Tricks_012Hier könnt ihr nun nach belieben Dateien und Verzeichnisse kopieren, löschen, umbenennen usw. Rechts seht ihr das Hauptverzeichnis der SD-Karte. Um z. B. in das roms-Verzeichnis zu gelangen, geht in den Ordner home => pi => RetroPie und schließlich in das Verzeichnis roms.

Hier sind die bekannten Verzeichnisse wieder.
Hier sind die bekannten Verzeichnisse wieder.

Übrigens könnt ihr direkt von diesem Fenster aus, PuTTY starten. Ihr müsst in den Einstellungen nur den Pfad zum Programm hinterlegen.

 

Dateien mit nano editieren
Ich verwende in erster Linie nano, um meine Einstellungen in den Konfigdateien zu ändern.

Die Samba-Freigaben für 'roms' und 'BIOS'Der Texteditor wird vom Terminal gestartet und läßt sich relativ einfach bedienen. Aufruf ganz einfach per nano <Dateiname>.

Wichtig Kommandos / Befehle im Editor:

  • <STRG> + <X> beendet den Editor, bei Änderungen erfolgt eine Sicherheitsabfrage, ob gespeichert werden soll.
  • <STRG> + <O> speichert die aktuelle Datei
  • <STRG> + <K> schneidet die aktuelle Zeile aus
  • <STRG> + <U> fügt die Zeile wieder ein
  • <STRG> + <G> öffnet die Hilfe
  • F6 startet die Suche

Wer möchte kann auch jeder Zeit vom Terminal mit startx die grafische Oberfläche starten und seine Dateien dort bearbeiten.

RetroPie2_032 

es_systems.cfg
Welche Emulatoren die EmulationStation überhaupt anzeigt, wird über die es_systems.cfg festgelegt. Die Datei findet ihr seit Version 2 unter /etc/emulationstation.

Der 'C64'-Eintrag in der es_systems.cfg
Der ‚C64‘-Eintrag in der es_systems.cfg

Werfen wir am Beispiel des C64 Eintrags einen Blick auf den Dateiaufbau, dieser ist für andere Systeme natürlich identisch.

<system>
  <fullname>C64</fullname>
  <name>c64</name>
  <path>~/RetroPie/roms/c64</path>
  <extension>.crt .CRT .d64 .D64 .g64 .G64 .t64 .T64 .tap .TAP .x64 .X64 .zip .ZIP</extension>
  <command>/opt/retropie/supplementary/runcommand/runcommand.sh 4 "/opt/retropie/emulators/vice-2.4/installdir/bin/x64 -sdlbitdepth 16 %ROM%"</command>
  <platform>c64</platform>
  <theme>c64</theme>
</system>

Ein einzelnes System wird also zwischen <system> … </system> definiert, aber betrachten wir mal die ganze Datei. Mit <!– … –> kann man übrigens Kommantare in die Datei aufnehmen.

<!-- Beginn der Liste aller verfügbaren Systeme -->
<systemList>

  <!-- Beginn eines neuen Systems -->
  <system>

    <!-- Lesbarer Name für Menüs usw. (optional) -->
    <fullname>C64</fullname>

    <!-- Kurzname für Verzeichnisse und Fehlermeldungen -->
    <name>c64</name>

    <!-- Verzeichnis das (inkl. Unterverzeichnisse) nach ROMs / Images durchsucht wird -->
    <path>~/RetroPie/roms/c64</path>

    <!-- Erlaubte Dateierweiterungen -->
    <extension>.crt .CRT .d64 .D64 .g64 .G64 .t64 .T64 .tap .TAP .x64 .X64 .zip .ZIP</extension>

    <!-- Befehl, um den Emulator (ggf. inkl. dem gewählten Spiel) zu starten -->
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 4 "/opt/retropie/emulators/vice-2.4/installdir/bin/x64 -sdlbitdepth 16 %ROM%"</command>

    <!-- Hilft ES_Scraper die richtigen Daten zu finden. (optional) -->
    <platform>c64</platform>

    <!-- Passendes Theme (optional sonst wird <name> ausgewertet -->
    <theme>c64</theme>

  <!-- hier enden die System-Parameter -->
  </system>

<!-- Ende der gesamten Liste -->
</systemList>

Die Reihenfolge der System in dieser Datei bestimmt auch die Reihenfolge in der EmulationStation.

 

runcommand.sh
In der es_systems.cfg werdet ihr viele Systeme finden, die mit runcommand.sh gestartet werden. Dabei handelt es sich um ein Script, dass die Auflösung vor dem Start des Emulators ändert. Der Aufruf sieht dabei so aus runcommand.sh <Nr.> <Startbefehl>.

Über <Nr.> wird der geünschte Bildschirmmodus gewählt, dabei sind aktuell folgende Werte möglich:

# 1: VGA-Modus nur wenn HDMI verwendet wird
# 2: keine Änderung der Auflösung, einfach starten
# 3: VGA-Modus
# 4: 720p mit 60 Hz nur wenn HDMI verwendet wird
# 5: 576p mit 50 Hz nur wenn HDMI verwendet wird
# 6: 720p mit 50 Hz nuri wenn HDMI verwendet wird
# 7: PAL 4:3 (Standard-TV)
# 8: NTSC 4:3 (Standard-TV)

 

retroarch.cfg
In dieser Datei werden sämtliche Einstellungen für die RetroArch-Emulatoren gespeichert.

Exkurs: Was zum Teufel ist denn jetzt ‘RetroArch‘ schon wieder?
Meistens ‘rede’ ich nur von RetroPie und EmulationStation, aber die eigentliche Arbeit verrichtet zum Größtenteil RetroArch oder um noch genauer zu sein Libretro. Unser Emulatorsystem ist hirachisch (von unten nach oben) wie folgt aufgebaut:

  1. Libretro: Dies stellt die unterste Ebene dar. Es ist eine in C/C++ geschriebene API, die die Schnittstelle zur vorliegenden Hardware herstellt. Dabei gibt es nicht nur die hier von uns verwendete Raspberry Pi Version, sondern auch Fassung für Android, IOS, Windows, XBox360, Wii, …
     
  2. Emulatoren / Apps: Angepasste Programme greifen auf Libretro zu und versorgen uns so mit Emulatoren und anderen Tools (z. B. Mediaplayern).
     
  3. RetroArch: Setzt auf Libretro auf und ist dessen gängige grafische Bedienoberfläche. Hierüber können bequem Einstellungen für Libretro und die Apps vorgenommen werden. Ihr könnt diese Oberfläche auch aus den zu RetroArch gehörenden Emulatoren aufrufen.

    RetroArch
    RetroArch
  • EmulationStation: Die EmulationStation stellt eine einheitliche Oberfläche für die verschiedenen Systeme zur Verfügung. Sie fasst RetroArch / Libretro und andere, dort nicht enthaltene, Emulatoren zusammen (z. B. VICE oder ScummVM). Aus der Sicht der EmulationStation ist RetroArch also ‘nur‘ ein weiterer Emulator.
     
  • RetroPie: Alle oben erwähnten Einzelteile bringt RetroPie nun unter einen Hut und bietet so ein rundum sorglos Paket. Hervorzuheben ist hier natürlich das SD-Karten-Image, womit jeder sehr einfach seinen Raspberry Pi zur Emulatorzentrale machen kann.

Die übergreifende retroarch.cfg findet ihr im Verzeichnis /opt/retropie/configs/all. Übergreifend deshalb, weil jeder Emulator seine eigene retroarch.cfg haben kann. Dazu gibt es für jedes System unter /opt/retropie/configs einen eigenen Ordner. Die Emulatoren laden nun erst die Datei aus dem all-Ordner und anschließend die aus dem jeweiligen Systemverzeichnis. Neue Parameter werden automatisch hinzugefügt, gibt es einen Parameter in beiden Dateien, dann ‚gewinnt‚ der aus der retroarch.cfg aus dem Systemverzeichnis. Ihr könnt so also erstmal allgemeine Einstellungen festlegen und dann zusätzlich bei Bedarf diese Werte für die einzelnen System überschreiben und ergänzen.

Die Parameter sind dabei so umfangreich, dass ich hier nur eine Übersicht bieten kann.

input_axis_threshold = "0.500000"
load_dummy_on_core_shutdown = "true"
fps_show = "false"
libretro_path = "/opt/retropie/emulatorcores/pocketsnes-libretro/libretro.so"
libretro_directory = ""
libretro_info_path = ""
cheat_database_path = ""
rewind_enable = "false"
audio_latency = "64"
audio_sync = "true"
audio_block_frames = "0"
rewind_granularity = "2"
video_shader = "/opt/retropie/emulators/RetroArch/shader/snes_phosphor.glslp"
video_shader_enable = "false"
video_aspect_ratio = "1.330000"
video_windowed_fullscreen = "true"
video_xscale = "3.000000"
autosave_interval = "0"
video_yscale = "3.000000"
video_crop_overscan = "true"
video_scale_integer = "false"
video_smooth = "false"
video_threaded = "true"
video_shared_context = "false"
video_fullscreen = "false"
video_refresh_rate = "59.950001"
video_monitor_index = "0"
video_fullscreen_x = "0"
video_fullscreen_y = "0"
video_driver = "gl"
menu_driver = "rgui"
video_vsync = "true"
video_hard_sync = "false"
video_hard_sync_frames = "0"
video_black_frame_insertion = "false"
video_disable_composition = "false"
pause_nonactive = "false"
video_swap_interval = "1"
video_gpu_screenshot = "true"
video_rotation = "0"
screenshot_directory = "default"
aspect_ratio_index = "4"
audio_device = ""
audio_dsp_plugin = ""
audio_rate_control = "true"
audio_rate_control_delta = "0.005000"
audio_driver = "alsathread"
audio_out_rate = "48000"
video_font_size = "32.000000"
video_font_enable = "true"
system_directory = "~/RetroPie/roms/../BIOS"
extraction_directory = ""
audio_resampler = "sinc"
savefile_directory = "default"
savestate_directory = "default"
video_shader_dir = "/opt/retropie/emulators/RetroArch/shader/"
video_filter = ""
video_filter_dir = "default"
audio_filter_dir = "default"
content_directory = "default"
assets_directory = "default"
rgui_browser_directory = "default"
rgui_config_directory = "default"
rgui_show_start_screen = "false"
game_history_path = ""
game_history_size = "100"
joypad_autoconfig_dir = "/opt/retropie/emulators/RetroArch/configs/"
input_autodetect_enable = "true"
overlay_directory = "default"
input_overlay = ""
input_overlay_enable = "false"
input_overlay_opacity = "0.700000"
input_overlay_scale = "1.000000"
gamma_correction = "false"
triple_buffering_enable = "false"
soft_filter_enable = "false"
flicker_filter_enable = "false"
flicker_filter_index = "0"
soft_filter_index = "0"
current_resolution_id = "0"
custom_viewport_width = "958"
custom_viewport_height = "720"
custom_viewport_x = "161"
custom_viewport_y = "0"
block_sram_overwrite = "false"
savestate_auto_index = "false"
savestate_auto_save = "false"
savestate_auto_load = "true"
fastforward_ratio = "-1.000000"
slowmotion_ratio = "3.000000"
config_save_on_exit = "false"
sound_mode = "0"
state_slot = "0"
netplay_spectator_mode_enable = "false"
netplay_mode = "false"
netplay_nickname = ""
netplay_ip_address = ""
netplay_ip_port = "0"
netplay_delay_frames = "0"
custom_bgm_enable = "false"
input_driver = "udev"
input_joypad_driver = ""
input_keyboard_layout = ""
input_device_p1 = "0"
input_player1_joypad_index = "0"
input_libretro_device_p1 = "1"
input_player1_analog_dpad_mode = "1"
input_device_p2 = "0"
input_player2_joypad_index = "1"
input_libretro_device_p2 = "1"
input_player2_analog_dpad_mode = "0"
input_device_p3 = "0"
input_player3_joypad_index = "2"
input_libretro_device_p3 = "1"
input_player3_analog_dpad_mode = "0"
input_device_p4 = "0"
input_player4_joypad_index = "3"
input_libretro_device_p4 = "1"
input_player4_analog_dpad_mode = "0"
input_device_p5 = "0"
input_player5_joypad_index = "4"
input_libretro_device_p5 = "1"
input_player5_analog_dpad_mode = "0"
input_device_p6 = "0"
input_player6_joypad_index = "5"
input_libretro_device_p6 = "1"
input_player6_analog_dpad_mode = "0"
input_device_p7 = "0"
input_player7_joypad_index = "6"
input_libretro_device_p7 = "1"
input_player7_analog_dpad_mode = "0"
input_device_p8 = "0"
input_player8_joypad_index = "7"
input_libretro_device_p8 = "1"
input_player8_analog_dpad_mode = "0"
input_player1_b = "z"
input_player1_b_btn = "1"
input_player1_b_axis = "nul"
input_player1_y = "a"
input_player1_y_btn = "3"
input_player1_y_axis = "nul"
input_player1_select = "rshift"
input_player1_select_btn = "6"
input_player1_select_axis = "nul"
input_player1_start = "enter"
input_player1_start_btn = "7"
input_player1_start_axis = "nul"
input_player1_up = "up"
input_player1_up_btn = "13"
input_player1_up_axis = "nul"
input_player1_down = "down"
input_player1_down_btn = "14"
input_player1_down_axis = "nul"
input_player1_left = "left"
input_player1_left_btn = "11"
input_player1_left_axis = "nul"
input_player1_right = "right"
input_player1_right_btn = "12"
input_player1_right_axis = "nul"
input_player1_a = "x"
input_player1_a_btn = "0"
input_player1_a_axis = "nul"
input_player1_x = "s"
input_player1_x_btn = "2"
input_player1_x_axis = "nul"
input_player1_l = "q"
input_player1_l_btn = "4"
input_player1_l_axis = "nul"
input_player1_r = "w"
input_player1_r_btn = "5"
input_player1_r_axis = "nul"
input_player1_l2 = "nul"
input_player1_l2_btn = "nul"
input_player1_l2_axis = "+2"
input_player1_r2 = "nul"
input_player1_r2_btn = "nul"
input_player1_r2_axis = "+5"
input_player1_l3 = "nul"
input_player1_l3_btn = "9"
input_player1_l3_axis = "nul"
input_player1_r3 = "nul"
input_player1_r3_btn = "10"
input_player1_r3_axis = "nul"
input_player1_l_x_plus = "nul"
input_player1_l_x_plus_btn = "nul"
input_player1_l_x_plus_axis = "+0"
input_player1_l_x_minus = "nul"
input_player1_l_x_minus_btn = "nul"
input_player1_l_x_minus_axis = "-0"
input_player1_l_y_plus = "nul"
input_player1_l_y_plus_btn = "nul"
input_player1_l_y_plus_axis = "+1"
input_player1_l_y_minus = "nul"
input_player1_l_y_minus_btn = "nul"
input_player1_l_y_minus_axis = "-1"
input_player1_r_x_plus = "nul"
input_player1_r_x_plus_btn = "nul"
input_player1_r_x_plus_axis = "+3"
input_player1_r_x_minus = "nul"
input_player1_r_x_minus_btn = "nul"
input_player1_r_x_minus_axis = "-3"
input_player1_r_y_plus = "nul"
input_player1_r_y_plus_btn = "nul"
input_player1_r_y_plus_axis = "+4"
input_player1_r_y_minus = "nul"
input_player1_r_y_minus_btn = "nul"
input_player1_r_y_minus_axis = "-4"
input_player1_turbo = "nul"
input_player1_turbo_btn = "nul"
input_player1_turbo_axis = "nul"
input_toggle_fast_forward = "space"
input_toggle_fast_forward_btn = "nul"
input_toggle_fast_forward_axis = "nul"
input_hold_fast_forward = "l"
input_hold_fast_forward_btn = "nul"
input_hold_fast_forward_axis = "nul"
input_load_state = "f4"
input_load_state_btn = "nul"
input_load_state_axis = "nul"
input_save_state = "f2"
input_save_state_btn = "nul"
input_save_state_axis = "nul"
input_toggle_fullscreen = "f"
input_toggle_fullscreen_btn = "nul"
input_toggle_fullscreen_axis = "nul"
input_exit_emulator = "escape"
input_exit_emulator_btn = "7"
input_exit_emulator_axis = "nul"
input_state_slot_increase = "f7"
input_state_slot_increase_btn = "nul"
input_state_slot_increase_axis = "nul"
input_state_slot_decrease = "f6"
input_state_slot_decrease_btn = "nul"
input_state_slot_decrease_axis = "nul"
input_rewind = "r"
input_rewind_btn = "nul"
input_rewind_axis = "nul"
input_movie_record_toggle = "o"
input_movie_record_toggle_btn = "nul"
input_movie_record_toggle_axis = "nul"
input_pause_toggle = "p"
input_pause_toggle_btn = "nul"
input_pause_toggle_axis = "nul"
input_frame_advance = "k"
input_frame_advance_btn = "nul"
input_frame_advance_axis = "nul"
input_reset = "h"
input_reset_btn = "nul"
input_reset_axis = "nul"
input_shader_next = "m"
input_shader_next_btn = "nul"
input_shader_next_axis = "nul"
input_shader_prev = "n"
input_shader_prev_btn = "nul"
input_shader_prev_axis = "nul"
input_cheat_index_plus = "y"
input_cheat_index_plus_btn = "nul"
input_cheat_index_plus_axis = "nul"
input_cheat_index_minus = "t"
input_cheat_index_minus_btn = "nul"
input_cheat_index_minus_axis = "nul"
input_cheat_toggle = "u"
input_cheat_toggle_btn = "nul"
input_cheat_toggle_axis = "nul"
input_screenshot = "f8"
input_screenshot_btn = "nul"
input_screenshot_axis = "nul"
input_audio_mute = "f9"
input_audio_mute_btn = "nul"
input_audio_mute_axis = "nul"
input_netplay_flip_players = "i"
input_netplay_flip_players_btn = "nul"
input_netplay_flip_players_axis = "nul"
input_slowmotion = "e"
input_slowmotion_btn = "nul"
input_slowmotion_axis = "nul"
input_enable_hotkey = "nul"
input_enable_hotkey_btn = "8"
input_enable_hotkey_axis = "nul"
input_volume_up = "add"
input_volume_up_btn = "nul"
input_volume_up_axis = "nul"
input_volume_down = "subtract"
input_volume_down_btn = "nul"
input_volume_down_axis = "nul"
input_overlay_next = "nul"
input_overlay_next_btn = "nul"
input_overlay_next_axis = "nul"
input_disk_eject_toggle = "nul"
input_disk_eject_toggle_btn = "nul"
input_disk_eject_toggle_axis = "nul"
input_disk_next = "nul"
input_disk_next_btn = "nul"
input_disk_next_axis = "nul"
input_grab_mouse_toggle = "f11"
input_grab_mouse_toggle_btn = "nul"
input_grab_mouse_toggle_axis = "nul"
input_menu_toggle = "f1"
input_menu_toggle_btn = "nul"
input_menu_toggle_axis = "nul"
input_player2_b = "nul"
input_player2_b_btn = "nul"
input_player2_b_axis = "nul"
input_player2_y = "nul"
input_player2_y_btn = "nul"
input_player2_y_axis = "nul"
input_player2_select = "nul"
input_player2_select_btn = "nul"
input_player2_select_axis = "nul"
input_player2_start = "nul"
input_player2_start_btn = "nul"
input_player2_start_axis = "nul"
input_player2_up = "nul"
input_player2_up_btn = "nul"
input_player2_up_axis = "nul"
input_player2_down = "nul"
input_player2_down_btn = "nul"
input_player2_down_axis = "nul"
input_player2_left = "nul"
input_player2_left_btn = "nul"
input_player2_left_axis = "nul"
input_player2_right = "nul"
input_player2_right_btn = "nul"
input_player2_right_axis = "nul"
input_player2_a = "nul"
input_player2_a_btn = "nul"
input_player2_a_axis = "nul"
input_player2_x = "nul"
input_player2_x_btn = "nul"
input_player2_x_axis = "nul"
input_player2_l = "nul"
input_player2_l_btn = "nul"
input_player2_l_axis = "nul"
input_player2_r = "nul"
input_player2_r_btn = "nul"
input_player2_r_axis = "nul"
input_player2_l2 = "nul"
input_player2_l2_btn = "nul"
input_player2_l2_axis = "nul"
input_player2_r2 = "nul"
input_player2_r2_btn = "nul"
input_player2_r2_axis = "nul"
input_player2_l3 = "nul"
input_player2_l3_btn = "nul"
input_player2_l3_axis = "nul"
input_player2_r3 = "nul"
input_player2_r3_btn = "nul"
input_player2_r3_axis = "nul"
input_player2_l_x_plus = "nul"
input_player2_l_x_plus_btn = "nul"
input_player2_l_x_plus_axis = "nul"
input_player2_l_x_minus = "nul"
input_player2_l_x_minus_btn = "nul"
input_player2_l_x_minus_axis = "nul"
input_player2_l_y_plus = "nul"
input_player2_l_y_plus_btn = "nul"
input_player2_l_y_plus_axis = "nul"
input_player2_l_y_minus = "nul"
input_player2_l_y_minus_btn = "nul"
input_player2_l_y_minus_axis = "nul"
input_player2_r_x_plus = "nul"
input_player2_r_x_plus_btn = "nul"
input_player2_r_x_plus_axis = "nul"
input_player2_r_x_minus = "nul"
input_player2_r_x_minus_btn = "nul"
input_player2_r_x_minus_axis = "nul"
input_player2_r_y_plus = "nul"
input_player2_r_y_plus_btn = "nul"
input_player2_r_y_plus_axis = "nul"
input_player2_r_y_minus = "nul"
input_player2_r_y_minus_btn = "nul"
input_player2_r_y_minus_axis = "nul"
input_player2_turbo = "nul"
input_player2_turbo_btn = "nul"
input_player2_turbo_axis = "nul"
input_player3_b = "nul"
input_player3_b_btn = "nul"
input_player3_b_axis = "nul"
input_player3_y = "nul"
input_player3_y_btn = "nul"
input_player3_y_axis = "nul"
input_player3_select = "nul"
input_player3_select_btn = "nul"
input_player3_select_axis = "nul"
input_player3_start = "nul"
input_player3_start_btn = "nul"
input_player3_start_axis = "nul"
input_player3_up = "nul"
input_player3_up_btn = "nul"
input_player3_up_axis = "nul"
input_player3_down = "nul"
input_player3_down_btn = "nul"
input_player3_down_axis = "nul"
input_player3_left = "nul"
input_player3_left_btn = "nul"
input_player3_left_axis = "nul"
input_player3_right = "nul"
input_player3_right_btn = "nul"
input_player3_right_axis = "nul"
input_player3_a = "nul"
input_player3_a_btn = "nul"
input_player3_a_axis = "nul"
input_player3_x = "nul"
input_player3_x_btn = "nul"
input_player3_x_axis = "nul"
input_player3_l = "nul"
input_player3_l_btn = "nul"
input_player3_l_axis = "nul"
input_player3_r = "nul"
input_player3_r_btn = "nul"
input_player3_r_axis = "nul"
input_player3_l2 = "nul"
input_player3_l2_btn = "nul"
input_player3_l2_axis = "nul"
input_player3_r2 = "nul"
input_player3_r2_btn = "nul"
input_player3_r2_axis = "nul"
input_player3_l3 = "nul"
input_player3_l3_btn = "nul"
input_player3_l3_axis = "nul"
input_player3_r3 = "nul"
input_player3_r3_btn = "nul"
input_player3_r3_axis = "nul"
input_player3_l_x_plus = "nul"
input_player3_l_x_plus_btn = "nul"
input_player3_l_x_plus_axis = "nul"
input_player3_l_x_minus = "nul"
input_player3_l_x_minus_btn = "nul"
input_player3_l_x_minus_axis = "nul"
input_player3_l_y_plus = "nul"
input_player3_l_y_plus_btn = "nul"
input_player3_l_y_plus_axis = "nul"
input_player3_l_y_minus = "nul"
input_player3_l_y_minus_btn = "nul"
input_player3_l_y_minus_axis = "nul"
input_player3_r_x_plus = "nul"
input_player3_r_x_plus_btn = "nul"
input_player3_r_x_plus_axis = "nul"
input_player3_r_x_minus = "nul"
input_player3_r_x_minus_btn = "nul"
input_player3_r_x_minus_axis = "nul"
input_player3_r_y_plus = "nul"
input_player3_r_y_plus_btn = "nul"
input_player3_r_y_plus_axis = "nul"
input_player3_r_y_minus = "nul"
input_player3_r_y_minus_btn = "nul"
input_player3_r_y_minus_axis = "nul"
input_player3_turbo = "nul"
input_player3_turbo_btn = "nul"
input_player3_turbo_axis = "nul"
input_player4_b = "nul"
input_player4_b_btn = "nul"
input_player4_b_axis = "nul"
input_player4_y = "nul"
input_player4_y_btn = "nul"
input_player4_y_axis = "nul"
input_player4_select = "nul"
input_player4_select_btn = "nul"
input_player4_select_axis = "nul"
input_player4_start = "nul"
input_player4_start_btn = "nul"
input_player4_start_axis = "nul"
input_player4_up = "nul"
input_player4_up_btn = "nul"
input_player4_up_axis = "nul"
input_player4_down = "nul"
input_player4_down_btn = "nul"
input_player4_down_axis = "nul"
input_player4_left = "nul"
input_player4_left_btn = "nul"
input_player4_left_axis = "nul"
input_player4_right = "nul"
input_player4_right_btn = "nul"
input_player4_right_axis = "nul"
input_player4_a = "nul"
input_player4_a_btn = "nul"
input_player4_a_axis = "nul"
input_player4_x = "nul"
input_player4_x_btn = "nul"
input_player4_x_axis = "nul"
input_player4_l = "nul"
input_player4_l_btn = "nul"
input_player4_l_axis = "nul"
input_player4_r = "nul"
input_player4_r_btn = "nul"
input_player4_r_axis = "nul"
input_player4_l2 = "nul"
input_player4_l2_btn = "nul"
input_player4_l2_axis = "nul"
input_player4_r2 = "nul"
input_player4_r2_btn = "nul"
input_player4_r2_axis = "nul"
input_player4_l3 = "nul"
input_player4_l3_btn = "nul"
input_player4_l3_axis = "nul"
input_player4_r3 = "nul"
input_player4_r3_btn = "nul"
input_player4_r3_axis = "nul"
input_player4_l_x_plus = "nul"
input_player4_l_x_plus_btn = "nul"
input_player4_l_x_plus_axis = "nul"
input_player4_l_x_minus = "nul"
input_player4_l_x_minus_btn = "nul"
input_player4_l_x_minus_axis = "nul"
input_player4_l_y_plus = "nul"
input_player4_l_y_plus_btn = "nul"
input_player4_l_y_plus_axis = "nul"
input_player4_l_y_minus = "nul"
input_player4_l_y_minus_btn = "nul"
input_player4_l_y_minus_axis = "nul"
input_player4_r_x_plus = "nul"
input_player4_r_x_plus_btn = "nul"
input_player4_r_x_plus_axis = "nul"
input_player4_r_x_minus = "nul"
input_player4_r_x_minus_btn = "nul"
input_player4_r_x_minus_axis = "nul"
input_player4_r_y_plus = "nul"
input_player4_r_y_plus_btn = "nul"
input_player4_r_y_plus_axis = "nul"
input_player4_r_y_minus = "nul"
input_player4_r_y_minus_btn = "nul"
input_player4_r_y_minus_axis = "nul"
input_player4_turbo = "nul"
input_player4_turbo_btn = "nul"
input_player4_turbo_axis = "nul"
input_player5_b = "nul"
input_player5_b_btn = "nul"
input_player5_b_axis = "nul"
input_player5_y = "nul"
input_player5_y_btn = "nul"
input_player5_y_axis = "nul"
input_player5_select = "nul"
input_player5_select_btn = "nul"
input_player5_select_axis = "nul"
input_player5_start = "nul"
input_player5_start_btn = "nul"
input_player5_start_axis = "nul"
input_player5_up = "nul"
input_player5_up_btn = "nul"
input_player5_up_axis = "nul"
input_player5_down = "nul"
input_player5_down_btn = "nul"
input_player5_down_axis = "nul"
input_player5_left = "nul"
input_player5_left_btn = "nul"
input_player5_left_axis = "nul"
input_player5_right = "nul"
input_player5_right_btn = "nul"
input_player5_right_axis = "nul"
input_player5_a = "nul"
input_player5_a_btn = "nul"
input_player5_a_axis = "nul"
input_player5_x = "nul"
input_player5_x_btn = "nul"
input_player5_x_axis = "nul"
input_player5_l = "nul"
input_player5_l_btn = "nul"
input_player5_l_axis = "nul"
input_player5_r = "nul"
input_player5_r_btn = "nul"
input_player5_r_axis = "nul"
input_player5_l2 = "nul"
input_player5_l2_btn = "nul"
input_player5_l2_axis = "nul"
input_player5_r2 = "nul"
input_player5_r2_btn = "nul"
input_player5_r2_axis = "nul"
input_player5_l3 = "nul"
input_player5_l3_btn = "nul"
input_player5_l3_axis = "nul"
input_player5_r3 = "nul"
input_player5_r3_btn = "nul"
input_player5_r3_axis = "nul"
input_player5_l_x_plus = "nul"
input_player5_l_x_plus_btn = "nul"
input_player5_l_x_plus_axis = "nul"
input_player5_l_x_minus = "nul"
input_player5_l_x_minus_btn = "nul"
input_player5_l_x_minus_axis = "nul"
input_player5_l_y_plus = "nul"
input_player5_l_y_plus_btn = "nul"
input_player5_l_y_plus_axis = "nul"
input_player5_l_y_minus = "nul"
input_player5_l_y_minus_btn = "nul"
input_player5_l_y_minus_axis = "nul"
input_player5_r_x_plus = "nul"
input_player5_r_x_plus_btn = "nul"
input_player5_r_x_plus_axis = "nul"
input_player5_r_x_minus = "nul"
input_player5_r_x_minus_btn = "nul"
input_player5_r_x_minus_axis = "nul"
input_player5_r_y_plus = "nul"
input_player5_r_y_plus_btn = "nul"
input_player5_r_y_plus_axis = "nul"
input_player5_r_y_minus = "nul"
input_player5_r_y_minus_btn = "nul"
input_player5_r_y_minus_axis = "nul"
input_player5_turbo = "nul"
input_player5_turbo_btn = "nul"
input_player5_turbo_axis = "nul"
input_player6_b = "nul"
input_player6_b_btn = "nul"
input_player6_b_axis = "nul"
input_player6_y = "nul"
input_player6_y_btn = "nul"
input_player6_y_axis = "nul"
input_player6_select = "nul"
input_player6_select_btn = "nul"
input_player6_select_axis = "nul"
input_player6_start = "nul"
input_player6_start_btn = "nul"
input_player6_start_axis = "nul"
input_player6_up = "nul"
input_player6_up_btn = "nul"
input_player6_up_axis = "nul"
input_player6_down = "nul"
input_player6_down_btn = "nul"
input_player6_down_axis = "nul"
input_player6_left = "nul"
input_player6_left_btn = "nul"
input_player6_left_axis = "nul"
input_player6_right = "nul"
input_player6_right_btn = "nul"
input_player6_right_axis = "nul"
input_player6_a = "nul"
input_player6_a_btn = "nul"
input_player6_a_axis = "nul"
input_player6_x = "nul"
input_player6_x_btn = "nul"
input_player6_x_axis = "nul"
input_player6_l = "nul"
input_player6_l_btn = "nul"
input_player6_l_axis = "nul"
input_player6_r = "nul"
input_player6_r_btn = "nul"
input_player6_r_axis = "nul"
input_player6_l2 = "nul"
input_player6_l2_btn = "nul"
input_player6_l2_axis = "nul"
input_player6_r2 = "nul"
input_player6_r2_btn = "nul"
input_player6_r2_axis = "nul"
input_player6_l3 = "nul"
input_player6_l3_btn = "nul"
input_player6_l3_axis = "nul"
input_player6_r3 = "nul"
input_player6_r3_btn = "nul"
input_player6_r3_axis = "nul"
input_player6_l_x_plus = "nul"
input_player6_l_x_plus_btn = "nul"
input_player6_l_x_plus_axis = "nul"
input_player6_l_x_minus = "nul"
input_player6_l_x_minus_btn = "nul"
input_player6_l_x_minus_axis = "nul"
input_player6_l_y_plus = "nul"
input_player6_l_y_plus_btn = "nul"
input_player6_l_y_plus_axis = "nul"
input_player6_l_y_minus = "nul"
input_player6_l_y_minus_btn = "nul"
input_player6_l_y_minus_axis = "nul"
input_player6_r_x_plus = "nul"
input_player6_r_x_plus_btn = "nul"
input_player6_r_x_plus_axis = "nul"
input_player6_r_x_minus = "nul"
input_player6_r_x_minus_btn = "nul"
input_player6_r_x_minus_axis = "nul"
input_player6_r_y_plus = "nul"
input_player6_r_y_plus_btn = "nul"
input_player6_r_y_plus_axis = "nul"
input_player6_r_y_minus = "nul"
input_player6_r_y_minus_btn = "nul"
input_player6_r_y_minus_axis = "nul"
input_player6_turbo = "nul"
input_player6_turbo_btn = "nul"
input_player6_turbo_axis = "nul"
input_player7_b = "nul"
input_player7_b_btn = "nul"
input_player7_b_axis = "nul"
input_player7_y = "nul"
input_player7_y_btn = "nul"
input_player7_y_axis = "nul"
input_player7_select = "nul"
input_player7_select_btn = "nul"
input_player7_select_axis = "nul"
input_player7_start = "nul"
input_player7_start_btn = "nul"
input_player7_start_axis = "nul"
input_player7_up = "nul"
input_player7_up_btn = "nul"
input_player7_up_axis = "nul"
input_player7_down = "nul"
input_player7_down_btn = "nul"
input_player7_down_axis = "nul"
input_player7_left = "nul"
input_player7_left_btn = "nul"
input_player7_left_axis = "nul"
input_player7_right = "nul"
input_player7_right_btn = "nul"
input_player7_right_axis = "nul"
input_player7_a = "nul"
input_player7_a_btn = "nul"
input_player7_a_axis = "nul"
input_player7_x = "nul"
input_player7_x_btn = "nul"
input_player7_x_axis = "nul"
input_player7_l = "nul"
input_player7_l_btn = "nul"
input_player7_l_axis = "nul"
input_player7_r = "nul"
input_player7_r_btn = "nul"
input_player7_r_axis = "nul"
input_player7_l2 = "nul"
input_player7_l2_btn = "nul"
input_player7_l2_axis = "nul"
input_player7_r2 = "nul"
input_player7_r2_btn = "nul"
input_player7_r2_axis = "nul"
input_player7_l3 = "nul"
input_player7_l3_btn = "nul"
input_player7_l3_axis = "nul"
input_player7_r3 = "nul"
input_player7_r3_btn = "nul"
input_player7_r3_axis = "nul"
input_player7_l_x_plus = "nul"
input_player7_l_x_plus_btn = "nul"
input_player7_l_x_plus_axis = "nul"
input_player7_l_x_minus = "nul"
input_player7_l_x_minus_btn = "nul"
input_player7_l_x_minus_axis = "nul"
input_player7_l_y_plus = "nul"
input_player7_l_y_plus_btn = "nul"
input_player7_l_y_plus_axis = "nul"
input_player7_l_y_minus = "nul"
input_player7_l_y_minus_btn = "nul"
input_player7_l_y_minus_axis = "nul"
input_player7_r_x_plus = "nul"
input_player7_r_x_plus_btn = "nul"
input_player7_r_x_plus_axis = "nul"
input_player7_r_x_minus = "nul"
input_player7_r_x_minus_btn = "nul"
input_player7_r_x_minus_axis = "nul"
input_player7_r_y_plus = "nul"
input_player7_r_y_plus_btn = "nul"
input_player7_r_y_plus_axis = "nul"
input_player7_r_y_minus = "nul"
input_player7_r_y_minus_btn = "nul"
input_player7_r_y_minus_axis = "nul"
input_player7_turbo = "nul"
input_player7_turbo_btn = "nul"
input_player7_turbo_axis = "nul"
input_player8_b = "nul"
input_player8_b_btn = "nul"
input_player8_b_axis = "nul"
input_player8_y = "nul"
input_player8_y_btn = "nul"
input_player8_y_axis = "nul"
input_player8_select = "nul"
input_player8_select_btn = "nul"
input_player8_select_axis = "nul"
input_player8_start = "nul"
input_player8_start_btn = "nul"
input_player8_start_axis = "nul"
input_player8_up = "nul"
input_player8_up_btn = "nul"
input_player8_up_axis = "nul"
input_player8_down = "nul"
input_player8_down_btn = "nul"
input_player8_down_axis = "nul"
input_player8_left = "nul"
input_player8_left_btn = "nul"
input_player8_left_axis = "nul"
input_player8_right = "nul"
input_player8_right_btn = "nul"
input_player8_right_axis = "nul"
input_player8_a = "nul"
input_player8_a_btn = "nul"
input_player8_a_axis = "nul"
input_player8_x = "nul"
input_player8_x_btn = "nul"
input_player8_x_axis = "nul"
input_player8_l = "nul"
input_player8_l_btn = "nul"
input_player8_l_axis = "nul"
input_player8_r = "nul"
input_player8_r_btn = "nul"
input_player8_r_axis = "nul"
input_player8_l2 = "nul"
input_player8_l2_btn = "nul"
input_player8_l2_axis = "nul"
input_player8_r2 = "nul"
input_player8_r2_btn = "nul"
input_player8_r2_axis = "nul"
input_player8_l3 = "nul"
input_player8_l3_btn = "nul"
input_player8_l3_axis = "nul"
input_player8_r3 = "nul"
input_player8_r3_btn = "nul"
input_player8_r3_axis = "nul"
input_player8_l_x_plus = "nul"
input_player8_l_x_plus_btn = "nul"
input_player8_l_x_plus_axis = "nul"
input_player8_l_x_minus = "nul"
input_player8_l_x_minus_btn = "nul"
input_player8_l_x_minus_axis = "nul"
input_player8_l_y_plus = "nul"
input_player8_l_y_plus_btn = "nul"
input_player8_l_y_plus_axis = "nul"
input_player8_l_y_minus = "nul"
input_player8_l_y_minus_btn = "nul"
input_player8_l_y_minus_axis = "nul"
input_player8_r_x_plus = "nul"
input_player8_r_x_plus_btn = "nul"
input_player8_r_x_plus_axis = "nul"
input_player8_r_x_minus = "nul"
input_player8_r_x_minus_btn = "nul"
input_player8_r_x_minus_axis = "nul"
input_player8_r_y_plus = "nul"
input_player8_r_y_plus_btn = "nul"
input_player8_r_y_plus_axis = "nul"
input_player8_r_y_minus = "nul"
input_player8_r_y_minus_btn = "nul"
input_player8_r_y_minus_axis = "nul"
input_player8_turbo = "nul"
input_player8_turbo_btn = "nul"
input_player8_turbo_axis = "nul"
core_specific_config = "false"
libretro_log_level = "0"
log_verbosity = "false"
perfcnt_enable = "false"

 

Warum die EmulationStation 2 so langsam lädt
Die neue EmulationStation 2 ist zwar sehr hübsch, aber hat aktuell auch einige Probleme. Euch ist evtl. schon aufgefallen, dass der Start oder die Rückkehr von einem Emulator sehr lange dauern kann.

Hier zwei Gründe, weshalb dies so ist.
Umso mehr Systeme ihr in die EmulationStation 2 einbindet, umso länger braucht diese zum Starten. Außerdem kommt es zu Anzeigefehlern. Der Grund ist das Standard-Theme. Der Name ‚simple‘ ist etwas irreführend, das Theme verbraucht unheimlich viele Resourcen. Allerdings will ich nicht alle Schuld dem Theme zuschieben, die Art und Weise, wie die EmulationStation 2 damit umgeht ist eigentlich das Hauptproblem. Sie lädt sämtliche Systembilder…

Die neue EmulationStation 2
Die neue EmulationStation 2

… die benötigt werden direkt beim Start in den Speicher. Jedes dieser verwaschenen Bilder liegt in FullHD vor. Die Logos und Systemnamen sind Vectorgrafiken. Um dies zu beschleunigen könnt ihr das Theme bearbeiten, euer eigenes erstellen oder einfach komplett auf ein Theme verzichten. Für ein leeres Theme, verlasst die EmulationStation und wechselt mit cd /etc/emulationstation/themes das Verzeichnis. Hier werden alle Themes abgelegt, aktuell findet ihr dort nur das mitgelieferte ‚Simple‘-Theme.

Themes-Ordner
Themes-Ordner

Legt nun mit sudo mkdir none einen leeren Ordner an. Der Ordnername (hier none) erscheint gleich in der EmulationStation als auswählbares Theme. Startet nun die EmulationStation durch Eingabe von emulationstation wieder, drückt dort eure Menü-Taste und wählt UI SETTINGS aus.

UI SETTINGS
UI SETTINGS

 Scrollt dann runter bis THEME SET und wählt das leere Theme aus (hier none).

Theme ändern
Theme ändern

Dann könnt ihr über BACK wieder zum vorherigen Menü zurückkehren und auch dieses verlassen.

Nun seht ihr das neue Theme in seiner ganzen Pracht 😉 .

Nicht hübsch, aber schnell und Speicher sparend.
Nicht hübsch, aber schnell und Speicher sparend.

Dies ist natürlich nur für Puristen oder zum Testen gedacht. Falls ihr mal Probleme mit der Geschwindigkeit oder Darstellung habt, könnt ihr so kontrollieren, ob es am Theme liegt. Ich empfehle eher ein eigenes Theme zu erstellen, das weniger Speicher belegt und hoffe gleichzeitig auf eine Überarbeitung der EmulationStation 2.

Ein weiterer Grund, weshalb die EmulationStation 2 langsam startet sind eure Spiele & Programme. Die EmulationStation grast beim Start alle Verzeichnisse ab, die in der es_systems.cfg unter <path> zufinden sind. Dabei geht das Programm alle Dateien in allen Verzeichnissen und Unterverzeichnissen durch und kontrolliert, ob die Endung für das jeweilige System ‚gültig‘ ist (siehe <extension>). Die gefundenen Dateien werden in einer Stuktur gespeichert und hier kommt es zur Verzögerung! Umso größer die Struktur wird, umso langsamer läuft das Eintragen der Dateiinfos in diese.

Ich habe dies mal getestet. Mein Setup war ein nicht übertakteter (preset NONE) Pi Model B, mit leerem Theme. Der Zugriff auf die ROMs erfolgt direkt übers Netzwerk (Kabel).

Gemessen wurde die Startzeit für einen manuellen Start vom Terminal (vom ENTER, bis das Menü vollständig sichtbar ist).

  1. Versuch
    10.000 Einträge für drei verschiedene Systeme (2.000 + 3.000 + 5.000).
    Startzeit = 7 Sekunden
     
  2. Versuch
    Zusätzlich ein weiteres System mit allein 28.500 Einträgen.
    Startzeit = 2 Min. 20 Sek.
    Das Beenden der EmulationStation, bis der Prompt wieder sichtbar ist, dauert länger als der Start 2 Min. 50 Sekunden! Außerdem steigt der Speicherbedarf von 5,7% auf 12,4% an.
     
  3. Versuch
    Die 28.500 Einträge auf Verzeichnisse A-Z aufgeteilt und für jeden Buchstaben ein eigenes System angelegt.
    Startzeit = 28 Sekunden (die Dateien aus Versuch 1 waren ebenfalls noch aktiv!) Der Speicherbedarf ist natürlich noch etwas höher. Nur A-Z Ordner ohne Aufteilung auf verschiedene Systeme bringen übrigens nichts!

Wie ihr seht verringert sich die Startzeit, wenn man die 28.500 Dateien auf 26 Systeme aufteilt von 2 Minuten 20 Sekunden auf nur noch 28 Sekunden.

Schön wäre es natürlich, wenn die EmulationStation angepasst würde, aber bis dahin kann ich nur folgende Tipps anbieten:

  • Unter einem System sollten nicht zuviele Spiele (auf jeden Fall unter 10.000) verwaltet werden. Sonst wird die Struktur für ein einzelnes System zu groß und dann benötigt das Hinzufügen neuer Einträge zunehmend mehr Zeit.
     
  • Die <path>-Angabe sollte direkt auf die Spiele zeigen, damit möglichst wenige Unterordner vergeblich durchsucht werden müssen. Außerdem sollten möglichst nur solche Dateien in den Ordnern liegen, die auch zum jeweiligen Emulator gehören.
     
  • Da PC-Spiele häufig viele Unterverzeichnisse und sehr viele Dateien haben, würde ich mir evtl. überlegen eigene Startscripte für PC-Spiele anzulegen, die die EmulationStation dann anzeigt. Ähnlich wie bei den Spielen unter ports.

 

Übertakten
Der Raspberry Pi ist mit seinen 700Mhz nicht gerade einer der Schnellsten. Dies hat auch die Raspberry Foundation erkannt und bietet daher ein Übertakten ohne Einfluß auf die Garantie an. Falls euch der eine oder andere Emulator zu sehr ruckelt, könnt ihr durch Erhöhung der der Taktfrequenzen evtl. ein besseres Ergebnis erzielen.

Beachtet aber, dass sich das Übertakten auf die Lebensdauer eures Pi auswirkt!
Dass er dadurch nicht länger hält, sollte klar sein.

Verlasst die EmulationStation, gebt sudo raspi-config ein und wählt 7 Overclock aus.

7 - Overclock
7 – Overclock

Es erscheint eine wichtige Meldung. Hier wird noch mal auf Probleme hingewiesen, die es durchs Übertakten geben kann. Außerdem findet ihr dort den Hinweis, dass ihr beim Booten die <SHIFT>-Taste gedrückt halten könnt, um das Übertakten zu deaktivieren.
So kommt ihr immer wieder in die Einstellungen, falls ihr es mal übertrieben habt und nichts mehr geht.

Bitte beachten!
Bitte beachten!

Schließlich erhaltet ihr eine Auswahl an vorgefertigten Übertaktungsmöglichkeiten.

Darf es etwas mehr sein?
Darf es etwas mehr sein?

Damit eure Änderungen ‚greifen‘ müsst ihr den Pi booten, bestätigt die Abfrage beim Verlassen von raspi-config einfach mit <Yes>.

 

BIOS
Vielleicht habt ihr euch schon mal gefragt, wie man an das BIOS des Raspberry gelangt. Ihr wisst bestimmt, dass das BIOS bei eurem PC oder Notebook in einem nicht flüchtigem Speicher abgelegt ist. Früher war dies ein fest programmiertes ROM – heute häufig ein beschreibarer Speicher. Wer kennt nicht die Spannung bei einem BIOS-Update.

Beim Pi gibt es so etwas aber nicht!

Hier liegt das BIOS als Textdatei auf der SD-Karte. Ihr findet es im Verzeichnis /boot in der Datei config.txt. Diesen Ordner seht ihr übrigens auch, wenn ihr die SD-Karte in euren Kartenleser am PC / Notebook steckt. Die config.txt könnt ihr somit ganz einfach am PC oder mit nano einsehen / bearbeiten.

Die Übertaktung im BIOS
Die Übertaktung im BIOS

Hier findet ihr z. B. auch die Werte der Übertaktung von eben. Ihr könnt also auch andere Einstellungen, als die Vorgegebenen, verwenden. Häufig werden hier auch die HDMI-Einstellungen für den Pi angepasst, falls es Probleme mit der Anzeige gibt.

Wie immer gilt: Seid vorsichtig, wenn ihr mit dem BIOS-Einstellungen rumspielt.

 

Analoges Videokabel für den Raspberry Pi Model B+
Die bisher getrennten Anschlüsse für analoges Audio & Video werden beim B+ über eine 4 polige 3,5mm Klinkenbuchse zur Verfügung gestellt.
RaspberryPiModelB+_Analogkabel_01Achtung: Beim Kabel müsst ihr etwas aufpassen! Leider hat sich die Industrie auf keine Norm geeinigt! Wie ihr unten im Bild seht, kann es also passieren, dass ihr die Stecker anderes anstöpseln müsst (Camcorder) oder dass das Kabel überhaupt nicht funktioniert (MP3-Player)!
RaspberryPiModelB+_AnalogkabelIch verwende übrigens ein Camcorder-Kabel von Vesalia und muss daher Audio-rechts und Video vertauschen.


Ein USB-Laufwerk einbinden
Der Raspberry Pi bootet zwar immer von der SD-Karte, aber ihr könnt natürlich trotzdem eine USB-Festplatte oder einen USB-Stick anschließen, um davon die ROMs zu laden.

Fahrt den Pi hoch und begebt euch ins Terminal. Schließt dann das USB-Laufwerk an. Verwendet ihr eine USB-Festplatte ohne eigenes Netzteil, dann könnte es ratsam sein, einen aktiven USB-Hub zu verwenden. Sobald das Laufwerk am Pi hängt und eingeschaltet ist, gebt sudo fdisk -l ein. Damit listet ihr alle angeschlossenen Laufwerke auf. Als erstes solltet ihr die Infos über die SD-Karte sehen, am Schluß dann das USB-Laufwerk.

Das USB-Laufwerk
Das USB-Laufwerk

Wir müssen uns nun für den nächsten Schritt einmal den ‚Namen‘ merken, unter dem das Lauferwerk eingebunden wurde. Hier bei mir /dev/sda1.

Jetzt brauchen wir noch einen sog. mount point. Dies ist nichts anderes als ein Verzeichnis, in dem wir das USB-Laufwerk einblenden. Ich habe mich für einen weiteren Ordner unter roms entschieden. Für das USB-Laufwerk lege ich dort einfach ein Verzeichnis mit dem Namen usb an. Ihr könnt selbstverständlich auch einen anderen Ort und Namen wählen. Ihr müsst dann nur daran denken, für die folgenden Schritte eure Werte zu nehmen. Das benötigte Verzeichnis wird mit sudo mkdir ~/RetroPie/roms/usb erzeugt.

Der 'usb'-Ordner
Der ‚usb‘-Ordner

 

Damit das Laufwerk in Zukunft automatisch im usb-Verzeichnis sichtbar wird, müssen wir jetzt noch eine Zeile zur fstab hinzufügen. Öffnet diese Datei mit sudo nano /etc/fstab  zum Bearbeiten. Gebt die folgende Zeile am Ende der Datei ein:

/dev/sda1   /home/pi/RetroPie/roms/usb   vfat   defaults,umask=000   0   0
fstab editieren
fstab editieren

Achtung: Der Parameter vfat ist für Laufwerke, die als FAT formatiert sind. Verwendet ihr ein NTFS-Laufwerk, dann müsst ihr stattdessen dort ntfs eingeben! Das umask=000 gibt euch Vollzugriff auf Dateien und Ordner, dadurch könnt ihr auch als User Pi auf den USB-Stick schreiben. RetroArch speichert z. B. standardmäßig eure States und Spielstände in selben Verzeichnis, wie die ROMs.

Beendet nano und speichert eure Eingaben. Wenn ihr nun den Pi bootet oder im Terminal sudo mount -a eingebt, dann sollte euer Laufwerk im usb-Ordner erscheinen.

Die Dateien auf dem USB-Laufwerk
Die Dateien auf dem USB-Laufwerk

 

Nun braucht ihr nur noch die es_systems.cfg anzupassen, damit die EmulationStation die ROMs über das neue usb-Verzeichnis vom USB-Laufwerk lädt.

Jetzt noch die es_systems.cfg anpassen.
Jetzt noch die es_systems.cfg anpassen.

 


 

Übers Netzwerk direkt auf ROMs zugreifen
Liegen eure ROMs (wie bei mir) z. B. auf einem NAS und ihr möchtet euch das ewige Kopieren sparen oder die Daten erst bei Bedarf am Pi kopieren, dann wäre es doch schön, wenn ihr direkt übers Netzwerk auf die ROMs zugreifen könntet. Ich gehe hier davon aus, dass es sich um ein von Windows ansprechbares Netzlaufwerk handelt.

Um dies zu bewerkstelligen, legt zunächst einen Ordner an. Ich habe mich dazu entschieden diesen im bekannten roms-Verzeichnis, auf der SD-Karte, zu erzeugen.

Verlasst also, falls notwendig, die EmulationStation und wechselt mit cd ~/RetroPie/roms ins entsprechende Verzeichnis. Legt dann über sudo mkdir network euren Ordner an. Ihr könnt natürlich auch ein anderes Ziel-Verzeichnis wählen und auch den Namen network, für den neue Ordner, könnt ihr ändern, wichtig ist nur, dass ihr euch merkt, wo das neue Verzeichnis liegt und wie es heißt. Dieses Verzeichnis verwenden wir jetzt um unser Netzwerk-Verzeichnis zu ‚mounten‘.

Um in Zukunft direkt dafür zu sorgen, dass unsere Netzwerkverbindung beim Start automatisch hergestellt wird, müssen wir mal wieder eine Datei, nämlich fstab, ändern. Startet den Editor also über sudo nano /etc/fstab, geht dann ans Ende der Datei und fügt folgende Zeile hinzu.

//nas/daten/emulatoren/roms /home/pi/RetroPie/roms/network cifs username=ich,password=geheim 0 0

Natürlich müsst ihr eure echten Werte nach diesem Muster eintragen:

<Netzwerkpfad> <Pi-Verzeichnis> cifs username=<Benutzername>[,password=<Passwort>] 0 0

Beendet die Eingabe dann wieder mit <STRG>+x, drückt anschließend bei der Abfrage y damit gespeichert wird und bestätigt den Dateinamen einfach mit <ENTER>.

Bootet danach den Pi über sudo reboot, verlasst, nach dem Hochfahren, die EmulationStation aber direkt wieder.

Jetzt sollten wir kontrollieren, ob alles geklappt hat. Gebt df -h ein, dies zeigt den freien Speicher der Laufwerke an. Eure Ausgabe könnte z. B. so aussehen

Filesystem                     Size  Used Avail Use% Mounted on
rootfs                          15G  3.4G   11G  25% /
/dev/root                       15G  3.4G   11G  25% /
devtmpfs                       180M     0  180M   0% /dev
tmpfs                           38M  416K   38M   2% /run
tmpfs                          5.0M     0  5.0M   0% /run/lock
tmpfs                           75M     0   75M   0% /run/shm
/dev/mmcblk0p1                  56M   19M   38M  34% /boot
//nas/daten/emulatoren/roms    918G  762G  156G  84% /home/pi/RetroPie/roms/network

Wichtig ist, dass euer Netzwerklaufwerk jetzt erscheinen muss (Markierung). Falls dies nicht der Fall ist, kontrolliert die eben gemachten Angaben in der fstab.

Anschließend schauen wir auch mal ins neue Verzeichnis. Wechselt mit cd ~/RetroPie/roms/network dort hin und lasst euch anschließend über ls den Inhalt anzeigen.

Nun sollte ihr eure Netzwerkdaten und -Verzeichnisse sehen.

Übers Netzwerk sind die ROMs (hier vom VCS2600) schon sichtbar…
Übers Netzwerk sind die ROMs (hier vom VCS2600) schon sichtbar…

Damit die EmulationStation auch ROMs übers Netzwerk sucht und startet, müssen wir noch das neue Verzeichnis in die es_systems.cfg eintragen. Startet den Editor sudo nano /etc/emulationstation/es_systems.cfg und ändert nun alle PATH=-Angaben, die aufs Netzwerk zugreifen sollen, so dass unser neuer Ordner verwendet wird. Für das Atari VCS 2600-System könnte es wie folgt aussehen (ihr müsst selbstverständlich eure echten Netzwerkpfade verwenden):

<path>/home/pi/RetroPie/roms/network/Atari/VCS2600</path>
Beim VCS200 direkt per Netzwerk auf die ROMs zugreifen.
Beim VCS200 direkt per Netzwerk auf die ROMs zugreifen…

Speichert eure Eingaben und startet die EmulationStation, nun solltet ihr auf die ROMs übers Netzwerk zugreifen können.

...jetzt sind die ROMs auch in der EmulationStation sichtbar.
…jetzt sind die ROMs auch in der EmulationStation sichtbar.

 


Systemwarnungen
Falls ihr euren Pi übertaktet oder sehr viele Geräte daran angeschlossen habt, könnte es sein, dass der Pi am Limit läuft und euch auf Probleme aufmerksam machen möchte.

Mitte 2014 wurde die Firmware um zwei Warnzeichen erweitert. Sollte die CPU-Themperatur zu hoch sein, dann zeigt der Pi in der rechten oberen Ecke ein rotes Quadrat an.

Dem Pi ist zu warm!
Dem Pi ist zu warm!

Diese Warnung kann jeder Pi anzeigen, der eine aktuelle Firmware verwendet. Ihr solltet dann überlegen, ob ihr den Pi wieder etwas langsamer laufen lasst, Kühlkörper einsetzt oder einen kühleren Platz sucht. Zu große Hitze ist der Feind jeder Elektronik. Standardmäßig kommt die Warnung, sobald 85°C überschritten werden. Ihr könnt in der config.txt mit temp_limit= übrigens auch eine eigene Grenze angeben.

Die zweite Warnung gibt es nur bei Modellen ab B+ (also auch beim Pi2). Hier wird die Spannung überwacht. Spannungsprobleme treten meistens bei zu schwachen Netzteilen auf oder falls ihr zuviele Geräte an den Pi gestöpselt habt. Sollte die Spannung unter 4,65V fallen, erscheint ein regenbogenfarbenes Quadrat rechts oben. Außerdem erlischt dann auch die Power LED!

Die Spannung fällt unter 4,65V
Die Spannung fällt unter 4,65V

Diese Info kann übrigens auch an GPIO35 abgegriffen werden. Ihr solltet auch dieses Problem unbedingt beseitigen! Der Pi neigt dann, wie bei Überhitzung, zu Abstürzen und es droht evtl. Datenverlust! Besorgt euch besser ein stärkeres Netzteil oder schließt USB-Geräte über einen aktiven HUB an.

Wie bereits bei der WLAN-Einrichtung beschrieben, kann ein Spannungsproblem aber auch eine andere Ursache haben:
Direkt am Pi zieht der WLAN-Stick die Spannung bei jedem Netzwerkzugriff anscheinend ganz übel nach unten. Pausenlos erscheint die Spannungswarnung! Es schien also ratsam zu sein, einen aktiven USB-Hub einzusetzen. Gesagt, getan – Wie sich dann allerdings herausstellte, war das auch nicht die Lösung. Andere Netzteile brachten ebenfalls keine Besserung. Sogar, wenn nur der WLAN-Stick am Pi hing, kam es zu Spannungseinbrüchen. Als Verursacher für das Problem stellte sich schließlich ein zu langes (oder ‚schlechtes‚) USB-Kabel für die Stromversorgung heraus! Durch dieses Kabel fiel die Spannung schon merklich ab, sodass am Pi nicht mehr genug zur Verfügung stand. Ich verwende jetzt ein anderes Kabel und schon kann ich alle vier USB-Ports (Tastatur-Receiver, XBox360-Receiver, Bluetooth und WLAN) verwenden, ohne dass auch nur einmal die Spannungswarnung erscheint.

 

Für die Dauer beider Warnungen wird automatisch der Turbo-Modus deaktivert. Die Warnungen bleiben nur solange sichtbar, solange das Problem tatsächlich besteht.

Ihr habt die Möglichkeit den Turbo-Modus bei mangelhafter Spannung weiterhin aktiviert zu lassen. Tragt dazu avoid_warnings=2 in die config.txt ein. Mit avoid_warnings=1 könnt ihr die Anzeige der Warn-Quadrate abschalten. Ich würde aber davon abraten! Beseitigt besser das Problem.

 


Schrott!!Naja...Geht so...Ganz gut...SUPER! (9 Bewertungen | Ø 5,00 von 5 | 100,00%)

Loading...


 

<<< zurück | weiter >>>

23 Gedanken zu „RetroPie: Tipps & Tricks“

  1. Hallo,

    ich bin neu und benötige Hilfe..
    Wie kann ich die Konfiguration meiner Tastatur im attrack mode auf “Standard” setzen?
    Unter Retropie / hyperpie funktioniert die “Return” Taste leider nicht.
    Habe auch schon unter Emulationstation versucht alles auf default zu setzen aber leider ohne Erfolg.

    Vielen Dank & viele Grüße

  2. Gibt es denn ein deutschsprachiges – aktuelles – Forum für Retropie bzw. Recalbox?
    Ich bin total begeistert vom Thema Pi3 und Retro-Gaming-Emulatoren, hab mir schon Käbel, Schalter, 2 Speicherkarten, hardware usw gekauft.

    Retropie läuft super, drauf kopiert, eingerichtet, die wifikeyfile.txt angepasst, keine Tastatur oder Maus gebraucht, alles nur mit dem Controller – funktioniert !

    Bei Recalbox brauche ich eine Tastatur um bspw. WIFI anzupassen.
    Irgendwer schrieb mal hier im Netz dass Recalbox so viel einfacher sei und man überhaupt nix einzurichten braucht. Das stimmt ja so nicht.

    Jedenfalls suche ich ein deutschsprachiges Retropie bzw. Retropie und Recalbox Forum und wollte mal fragen, ob ihr da was “gutes” kennt, wenns sowas überhaupt gibt.

    Schau ich mir aber die Verkaufszahlen aus allen möglichen Online-Shops an (reichelt, comtech, conrad….) dann müsste die Retro-Gaming-PI3-Community doch schier unendlich groß sein, oder irre ich?

    Wäre toll Antworten zu bekommen
    Grüße

    1. Deutsche Foren speziell zu RetroPie oder Recalbox kenne ich keine. Ich würde es in allgemeinen Foren zum Raspberry Pi versuchen.

      Auch kann man an Hand der Verkaufszahlen des Pi nicht direkt auf den Retro-Einsatz schließen. Sehr viele kaufen den Pi auch ohne damit jemals alte Spiele zocken zu wollen. Außerdem braucht man fürs daddeln weder Recalbox noch RetroPie. Einige packen einfach nur den Wunsch-Emulator auf die SD-Karte.

  3. Hallo
    Würde gerne den wd pidrive als bootlaufwerk benutzen, also ohne sd karte, kann man ein fertiges image auf den pidrive brennen und davon starten?
    Viele grüsse

  4. Moin moin,
    das mit dem Nutzen der Roms per USB oder SD-Karte funzt ja wunderbar, gibt es aber einen Weg das mit beiden Medien zur gleichen Zeit zu machen?
    Mit Symlinks gehts leider nicht, da streikt Linux mit dem Hinweis das es Laufwerksübergreifend nicht zulässig ist.
    Hast du da eine Idee das vielleicht in der es_systems.cfg mit mehreren Pfaden zu realisieren?
    MfG, LAllek

    1. Hi,
      das habe ich auch noch nicht ausprobiert.

      Bei der EmulationStation gibt es seit Feburar 2015 ein „Feature-Request“ für mehrere Pfade. Aber ob da noch etwas passiert??? Es ist sehr still geworen.

      Du könntest es evtl. mal mit mount --bind /quelle /ziel versuchen. Ich kann aber nicht sagen, ob dies Laufwerksübergreifend funktioniert.

  5. Kann man bei V3.0 die C64 Emulation bzw. VICE so einrichten dass man die Ladegeräusche über die Boxen hört? Oder hat der sowas nicht?

    1. Die Laufwerksgeräusche sollten sich irgendwo im Menü einschalten lassen (musst mal schauen, ich habe das jetzt nicht im Kopf), das Menü sieht halt nur etwas anders aus, da SDL verwendet wurde.
    2. Warum nicht? Mit einigen Klicks ist das allerdings nicht getan. Schau mal, wo der Aufruf für den Autostart der EmulationStation ist. Dort könntest du dann ansetzen.
  6. Hallo,
    kann man eigentlich den RetroPie 3.0 so einstellen, dass der nach dem booten nicht in die Emulationstation geht sondern direkt VICE startet, zum Beispiel?
    grüße
    thomas

  7. Hallo,
    ich weiß nun dass ich einmal in RetroArch einen Input_Enable_Hotkey_btn = und einen Input_enable_Hotkey = also eine Tastatur-Taste UND einen Button auf nem Pad/Joystick vergeben kann und das geht auch parallel. Aber wie kann ich denn 2 Hotkeys für die Tastatur vergeben?
    Zwei mal hintereinander in der Configs.all ein “Input_Enable_Hotkey = funkt nicht. Da er anscheinend nur eine Taste zulässt, kann das sein?

    1. Es geht nur einer für die Tastatur und einer für den ersten Controller. Es erschließt sich mir auch nicht, wozu mehrere Hotkeys bei der Tastatur dienen sollten???
      1. Naja war nur ein Gedanke. Wir bauen uns einen Arcade Automaten mit dem Raspberry und RetroPie und bedienen das Ganze mit einem Keyboardhack und Arcade Buttons und Joysticks. Um nun möglichst viele Systeme unter einem Hut zu bekommen ist das so eine Sache mit der Steuerung. Zum Beispiel gibt es einige Standard Hotkeys für RetroArch. Wenn ich also eine Tastatur Steuerung für Player 1 und Player 2 einrichte muss ich die deaktivieren und zwar jeden einzelnen (wenn ich die entsprechenden Tasten “erwischen” sollte). Einfacher ist es alle mit einem Enable-Hotkey quasi auszublenden, dann brauch ich mich darum gar nicht kümmern. Dann habe ich aber das Problem, dass ich meinen Menu-Button und Exit-Button mit der Enable-Hotkey-Taste verbinden muss.
        Um nun möglichst eine Einheitliche Steuerung für möglichst viele Systeme zu haben sind manche Buttons eh schon doppelt belegt. Zum Beispielt UAE4ALL-RPi und Vice haben einmal F11 und einmal F12 um ins Menu zu kommen. Also habe ich beide auf einen Button gelegt. Dieser Menu Button wird aber auch fürs RetroArch Menu benötigt. Also laaaaaange Rede kurzer Sinn 😉 War nur ein Gedanke für unseren Keyboard-Hack 🙂

  8. muss jetzt wenn ich ne externe usb festplatte verwenden möchte überall bei den verzeichnis usb mit einbauen wie zbs megadrive was im tut steht geht das auch bei 30 beta2 ?

  9. Wie ist das eigentlich? Die V3.0 ist ja noch im Beta-Stadium. Was ist denn wenn die dann sozusagen als Vollversion raus ist. Kann man dann sein bestehendes System von der beta weg updaten, oder muss man dann das neue v3.x image auf eine sd karte ziehen und alles neu einrichten?
    Oder ist das immer unterschiedlich und man kann das noch gar nicht sagen?

  10. Hallo,
    ich konnte erfolgreich ein USB Stick als Speicher einbinden und das läuft auch alles super. Allerdings habe ich letztens festgestellt, dass ich keine Spielstände mehr in RetroArch speichern konnte. Kommt nur die Meldung, “Save State…Failed…:” muss ich wohl für die Spielstände auch noch etwas beachten?

    1. Moin,
      sorry da habe ich einen Parameter vergessen!

      Es fehlte ein umask=000, sonst hatte man nur als root Schreibrechte. Ich habe das korrigiert, schau dir oben nochmal an, was in der fstab stehen muss.

Schreibe einen Kommentar

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

Protected by WP Anti Spam