Achtung

Dieser Beitrag ist schon sehr alt, und die Infos hier sind sicherlich hoffnungslos veraltet…

EmulationStation unter Archlinux

Arch
ubuntuusers
Autor:in

produnis

Veröffentlichungsdatum

29. März 2016

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 -Eintrag an.

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!