Dieser Beitrag ist schon sehr alt, und die Infos hier sind sicherlich hoffnungslos veraltet…
EmulationStation unter Archlinux
Ich möchte hier kurz erklären, wie ich EmulationStation unter Archlinux installiert habe. Wer nicht weiss, was EmulationStation ist, findet hier ein kleines Teaser-Video auf YouTube.
Installation
Installiert werden müssen
EmulationStation
Emulatoren (hauptsächlich RetroArch bzw. die entsprechenden LibRetro-Plugins)
Spiele-ROMs
joyutils, zum Auslesen der angeschlossenen Gamepads
Dies geschieht unter Archlinux per:
pacaur -S emulationstation-git retroarch joyutils jstest-gtk-git
RetroArch benötigt nun für jedes zu emulierende System ein entsprechendes libretro-Plugin. Eine Übersicht der verfügbaren Plugins im AUR findet sich hier: https://aur.archlinux.org/packages/?O=0&K;=libretro
Ich habe Emulatoren für den Atari7800, NES, SNES, GameboyColor und Gameboy Advanced installiert, zB per:
pacaur -S libretro-snes9x-next-git libretro-quicknes-git libretro-fceumm-git libretro-prosystem-git libretro-gambatte-git libretro-mgba-git
Für den N64 habe ich mupen64plus eigenständig installiert, da es besser läuft als das libretro-plugin.
pacaur -S mupen64plus
EmulationStation startet nun mit dem Befehl:
emulationstation
Noch funktioniert aber fast gar nichts… Mit F4
kann es jederzeit beendet werden. Führe zunächst die folgenden Schritte durch:
Konfiguration
Das Arbeitsverzeichnis von EmulationStation befindet sich im Homeordner: ~/.emulationstation
Theme installieren
Ich verwende das Theme “carbon”. Dieses findet sich zB bei github: https://github.com/RetroPie/es-theme-carbon. Lade dir das zip-Paket herunter und entpacke den Inhalt nach ~/.emulationstation/themes/carbon
. Editiere nun die Datei ~/.emulationstation/es_settings.cfg
und trage das carbon-Theme entsprechend ein:
<string name="ThemeSet" value="carbon"></string>
ROM-Ordner anlegen
Alle meine Spiele-ROMs kommen in den Ornder ~/Dokumente/Medien/Spiele/ROM
. Dort existiert für jedes System ein Unterordner (zB NES, SNES, N64), und in diesen liegen die entsprechenden ROMs für das entsprechende System. Ihr dürft nur ROMs von solchen Spielen haben, die euch auch tatsächlich gehören! ROMs findet ihr zB bei http://www.emuparadise.me/.
Systeme hinzufügen
Systeme (sprich die alten Spielekonsolen) werden in der Datei ~/.emulationstation/es_systems.cfg
festgelegt. Ein System entspricht hierbei einer Konsole (zB NES, SNES, N64). Ihr müsst für jedes System angeben, in welchem Pfad die ROMs zu finden sind, wie die Dateiendungen der ROMS lauten, und wie der Emulatoraufruf erfolgen soll. Als Emulator wird hauptsächlich RetroArch verwendet. Für den RetroArch-Aufruf muss immer über die Option -L
der Pfad auf das entsprechende libretro-Plugin.so
angegeben werden. Alle installierten Plugins finden sich im Ordner /usr/lib/libretro/
Hier mal als Beispiele meine Einträge für den GameBoy (Retroarch), SNES (Retroarch) und den N64 (mupen64plus):
<system>
<name>gb</name>
<fullname>Nintendo Gameboy</fullname>
<path>~/Dokumente/Medien/Spiele/ROM/GB</path>
<extension>.gb</extension>
<command>retroarch -L /usr/lib/libretro/gambatte_libretro.so %ROM%</command>
<platform>gb</platform>
<theme>gb</theme>
</system>
<system>
<name>snes</name>
<fullname>Super Nintendo Entertainment System</fullname>
<path>~/Dokumente/Medien/Spiele/ROM/SNES</path>
<extension>.sfc</extension>
<command>retroarch -L /usr/lib/libretro/snes9x_next_libretro.so %ROM%</command>
<platform>snes</platform>
<theme>snes</theme>
</system>
<system>
<name>n64</name>
<fullname>Nintendo 64</fullname>
<path>~/Dokumente/Medien/Spiele/ROM/N64</path>
<extension>.n64 .z64</extension>
<command>mupen64plus %ROM% </command>
<platform>n64</platform>
<theme>n64</theme>
</system>
Lege für jedes System, welches du installiert hast, einen entsprechenden
Gamepads auslesen
Ich habe hier einen Playstation-3-Controller, den ich per USB an den Laptop angeschlossen habe. Jetzt muss ich herausfinden, welcher Knopf welchem Button entspricht. Hierfür starte ich jstest-gtk
. Mein PS3-Controller wird direkt erkannt, und über “Eigenschaften” kann ich die Belegung auslesen. Für meinen PS3-Controller gilt:
Playstation 3 Controller
analoges Steuerkreuz
--------------------
oben Button 4
unten Button 6
links Button 7
rechts Button 5
joystick links
--------------
oben Axis1 -1
unten Axis1 +1
links Axis0 -0
rechts Axis0 +0
klick Button 1
joystick rechts
--------------
oben Axis3 -3
unten Axis3 +3
links Axis2 -2
rechts Axis2 +2
klick Button 2
BUTTONS
-------
PS Button 16
Select Button 0
Start Button 3
L1 Button 10 // Axis14 1
L2 Button 8 //Axis12 1
R1 Button 11 //Axis15 1
R2 Button 9 /Axis13 1
A(kreis) Button 13 /Axis17
B(kreuz) Button 14 /Axis18
C(dreieck) BUtton 12 /Axis16
D(QUadrat) Button 15 /Axis19
Diese Werte muss ich mir merken!!!
Gamepads hinzufügen
Jetzt wo ich weiss, welche Knöpfe und Sticks mein Gamepad hat, kann ich es in EmulationStation sowie in RetroArch bekanntmachen.
Emulationstation: um mit dem Gamepad durch das Emulationstation-Menü navigieren zu können.
RetroArch: um mit dem Gamepad zocken zu können
Mupen64plus: um mit dem Gamepad zocken zu können
Gamepad für Emulationstation
Editiere hierfür die Datei ~/.emulationstation/es_input.cfg
. Die Einträge für meinen PS3-Controller sehen dann so aus:
< ?xml version="1.0"?>
<inputlist>
<inputconfig devicename="Sony PLAYSTATION(R)3 Controller" deviceguid="030000004c0500006802000011010000" type="joystick">
<input type="button" name="a" value="1" id="14"></input>
<input type="button" name="b" value="-1" id="15"></input>
<input type="button" name="down" value="1" id="6"></input>
<input type="button" name="left" value="-1" id="7"></input>
<input type="button" name="menu" value="1" id="16"></input>
<input type="button" name="pagedown" value="1" id="10"></input>
<input type="button" name="pageup" value="-1" id="11"></input>
<input type="button" name="right" value="1" id="5"></input>
<input type="button" name="select" value="1" id="0"></input>
<input type="button" name="start" value="1" id="3"></input>
<input type="button" name="up" value="-1" id="4"></input>
</inputconfig>
</inputlist>
Gamepad für RetroArch
Editiere hierfür die Datei ~/.config/retroarch/retroarch.cfg
. Hier muss der input für Player1 an die Knöpfe des Pads angepasst werden. Eingetragen wird immer in den Erweiterungen _btn
(Knopf) und _axis
(Joysticks).
Die Einträge für meinen PS3-Controller sehen dann so aus:
input_player1_b = "z"
input_player1_b_btn = "14"
input_player1_b_axis = "nul"
input_player1_y = "a"
input_player1_y_btn = "12"
input_player1_y_axis = "nul"
input_player1_select = "rshift"
input_player1_select_btn = "0"
input_player1_select_axis = "nul"
input_player1_start = "enter"
input_player1_start_btn = "3"
input_player1_start_axis = "nul"
input_player1_up = "up"
input_player1_up_btn = "4"
input_player1_up_axis = "-1"
input_player1_down = "down"
input_player1_down_btn = "6"
input_player1_down_axis = "+1"
input_player1_left = "left"
input_player1_left_btn = "7"
input_player1_left_axis = "-0"
input_player1_right = "right"
input_player1_right_btn = "5"
input_player1_right_axis = "+0"
input_player1_a = "x"
input_player1_a_btn = "13"
input_player1_a_axis = "nul"
input_player1_x = "s"
input_player1_x_btn = "15"
input_player1_x_axis = "nul"
input_player1_l = "q"
input_player1_l_btn = "10"
input_player1_l_axis = "nul"
input_player1_r = "w"
input_player1_r_btn = "11"
input_player1_r_axis = "nul"
input_player1_l2 = "nul"
input_player1_l2_btn = "8"
input_player1_l2_axis = "nul"
input_player1_r2 = "nul"
input_player1_r2_btn = "9"
input_player1_r2_axis = "nul"
Außerdem lege ich hier “Hotkeys” fest, mit denen ich die Emulation beenden, und zur EmulationStation zurückkehren kann:
input_enable_hotkey_btn = "16" # PS3-Knopf
input_exit_emulator_btn = "3" # Start-Knopf
Wenn ich jetzt während der Emulation auf den PS3-Knopf gedrückt halte, und dann den Start-Knopf drücke, gelange ich zurück zu Emulationstation.
Die Einstellungen gelten für sämtliche libretro-Plugins.
Gamepad für mupen64plus
Editiere hierfür die Datei /usr/share/mupen64plus/InputAutoCfg.ini
. Hier sollte fast alles richtig sein. Ich habe sie so verändert, dass an meinem PS3-Controller die “L2”-Taste zur “Z”-Taste wird, und die “R2”-Taste zum Hotbutton. Hierfür habe ich den Bereich [PLAYSTATION(R)3 Controller]
wie folgt angepasst:
[PLAYSTATION(R)3 Controller]
[Sony PLAYSTATION(R)3 Controller]
[Sony Computer Entertainment Wireless Controller]
[SHENGHIC 2009/0708ZXW-V1Inc. PLAYSTATION(R)3Conteroller]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = button(5)
DPad L = button(7)
DPad D = button(6)
DPad U = button(4)
Start = button(3)
Z Trig = button(8)
B Button = button(15)
A Button = button(14)
C Button R = axis(2+)
C Button L = axis(2-)
C Button D = axis(3+)
C Button U = axis(3-)
R Trig = button(11)
L Trig = button(10)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)
Der Hotbutton selbst wird in der Datei ~/.config/mupen64plus/mupen64plus.cfg
aktiviert:
# Joystick event string for stopping the emulator
Joy Mapping Stop = "J0B9"
J0
bedeutet “Joystick 0”, B9
bedeutet “Button 9” (ist beim PS3-Controller R2). Drückt man nun während der Emulation “R2”, gelangt man zurück zur EmulationStation.
Fertig!
Fertig! Jetzt kann ich emulationstation starten und meine alten ROMs zocken!