Update 31.12.2018: Bitte folgenden Beitrag vor dem Ausprobieren des Tutorials beachten.
Inhalt
1. Einleitung
2. Rechtslage
3. Was ist Libretro, Retroarch, Emulationstation und warum sollte ich es nutzen?
4. Installation
4.1 Retroarch
4.2 Emulationstation
5. Vorkonfigurierte Installation
6. Ausblick
1. Einleitung
Ein Thema, dass mich durch all die Jahre immer begleitet hat, ist die Emulation alter Konsolen. Vor einigen Wochen bin ich dann mehr durch Zufall auf das Projekt Libretro gestoßen und die in dem Dunstkreis existierenden Begriffe Retroarch und Emulationstation. Und seitdem hat mich das Fieber (erneut) gepackt, denn dass ist vielleicht das beste Emulationsprojekt, dass derzeit existiert. Wer sich also bis heute mit SNES9x und Co. herumtreibt, aufgepasst.
Als Teaser erstmal dieses Video, welches das Ergebnis dieses Tutorials live zeigt. Da kann man schon gut erkennen, was so toll an den hier vorgestellten Programmen ist. (Video ist nicht von mir)
Was ich in diesem Thread tun möchte ist zum einen, Libretro vorzustellen, zu erklären, wie das ganze eingerichtet wird und am Ende können wir uns vielleicht alle gemeinsam über die Titel unserer Kindheit unterhalten.
Eine Warnung vorweg: Anders als z.B. SNES9x benötigt das hier vorgestellte Retroarch, vorallem in der Ausbaustufe mit Emulationstation, ein wenig Arbeit beim konfigurieren. Wenn man das jedoch erst einmal durchblickt hat, ist das sehr intuitiv. Belohnt für den Aufwand wird man mit einer sehr sauberen, einheitlichen Oberfläche, die sich komplett mit dem Gamepad steuern lässt und einem ein sehr komfortables Emulationserlebnis bietet. Wenn das ganze zudem erst einmal vollständig konfiguriert ist, hat man nichts weiter zu tun als gemütlich auf der Couch zu sitzen und zu zocken: Anders als andere Emulatoren, die meiner Erfahrung nach gerne mal herumzicken und ständiges nachjustieren erfordern ist das hier vorgestellte System erstaunlich stabil und wartungsarm. It just works, wie der Applejünger sagt. Deswegen wird die Threaderöffnung auch ein wenig länger, weil ich hier vollständig beschreibe worum es geht und wie man es einrichtet.
2. Rechtslage
tl;dr: Emulatoren sind natürlich legal, das Herunterladen von ROMs und Konsolen-BIOS ist es nicht. Deswegen werden solche Sachen hier auch nicht diskutiert, u.a. da dass juristisch problematisch für Andre und Jochen werden könnte!.
Link 1
Link 2
Link 3
Legal ist es, seine EIGENEN Konsolentitel auszulesen und in ein ROM bzw. ISO zu verwandeln (Privatkopie). Das herunterladen, obwohl man selbst eine Lizenz besitzt, ist ebenfalls nicht legal.
3. Was ist Libretro, Retroarch, Emulationstation und warum sollte ich es nutzen?
Libretro als Projekt ist erstmal nur eine API, die gewisser Standards definiert. Aufgabe von Libretro ist es, Gamepadsignale zu erhalten und Audio und Video auszugeben. Selbst emulieren tut Libretro nichts, es stellt lediglich eine einheitliche Plattform für andere Emulatoren zur Verfügung. Und das ist der geniale Kniff an dem Projekt. Was man nämlich tut ist, sogenannte "Cores" einzubinden (Wie das genau funktioniert: Dazu später mehr). Diese Cores übernehmen die eigentliche Emulationsarbeit. Entwickelt werden sie unabhängig von Libretro, es gibt bspw. Cores basierend auf dem schon erwähnten SNES9x-Emulator (Super Nintendo) oder auf Mednafen (Playstation 1).Libretro is a simple API that allows for the creation of games and emulators. [...]
When you choose to use the libretro API, your program gets turned into a single library file (called a ‘libretro core’). A frontend that supports the libretro API can then load that library file and run the app. The frontend’s responsibility is to provide all the implementation-specific details, such as video/audio/input drivers. The libretro core’s responsibility is solely to provide the main program. You therefore don’t have to worry about writing different video drivers for Direct3D, OpenGL or worrying about catering to all possible input APIs/sound APIs/supporting all known joypads/etc. This is none of your concern at the libretro core implementation level.
Um mal eine etwas verständlichere Analogie herzustellen: Jeder kennt die Knarre im Werkzeugkoffer, auf die, je nach Schraube, verschiedene Steckschlüssel aufgesetzt werden können. Genau das passiert hier auch: Libretro ist die Knarre, die Cores sind die wechselbaren Steckschlüssel, die Schrauben entsprechen den unterschiedlichen Konsolen.
Das Funktionsprinzip von Libretro: Der Knarrenkasten
Die Liste der verfügbaren Konsolen ist lang: Nintendo, Sega, Sony sind natürlich dabei, wie auch z.B. Atari, DosBox und ScummVM.
Retroarch ist das "offizielle" Frontend, welches Libretro einbindet um die Cores zu interpretieren. Was in diesem Programm passiert ist das Verwalten der Cores, das konfigurieren von Audio/Video und Gamepad usw. Und ja: Man kann prinzipiell auch schon von hier aus Spiele starten. Aber es gibt ja auch noch....
Emulationstation.
Das ist der Teil, der mir am meisten Spaß macht. Emulationstation ist ein weiteres Frontend, dass auf Retroarch aufsetzt und was es so toll macht ist seine intuitive Bedienbarkeit und Übersichtlichkeit. Wenn man mit der Konfiguration bis hierhin gekommen ist, versteht man, warum man den Aufwand betrieben hat: Von der Couch aus mit dem GamePad in der Hand wählt man bequem Konsole und Spiel aus und kann loslegen. Man muss nicht zwischen verschiedenen Emulatoren wechseln, wenn man die Konsole wechseln will, man muss nicht durch Dateisysteme navigieren, um die passende Rom auszuwählen, man hat nicht für jede Konsole ein anderes UI und muss nicht jeden Emulator einzeln konfigurieren: Alles geht aus einer Hand, vollständig bedienbar mit dem Gamepad. Und ein weiteres Highlight: Emulationstation zieht sich automatisch Coverbilder, Beschreibungstexte, Eckdaten der Spiele aus Datenbanken im Internet - hier stellt sich dann ein echtes "Spielesammlung"-Gefühl ein, ganz anders als wenn man seine Roms gesichtslos irgendwo auf der Festplatte verstauben lässt.
Oberfläche von Emulationstation: Konsolenübersicht
Oberfläche von Emulationstation: Spieleübersicht einer Konsole
Weiterer Vorteil von Libretro/Retroarch/Emulationstation: Es ist prinzipiell portabel. D.h, man kann sich seinen persönliche "Emulationstation" auf einen USB Stick packen, mit zu Freunden nehmen, zwischen Desktop und Laptop wechseln und hat alles vorkonfiguriert dabei. Man muss nur noch die Pads einstecken und kann loslegen.
4. Installation
Ich werde nun die Installation und Konfiguration der einzelnen Komponenten beschreiben. Es ist ganz sinnvoll, sich damit auseinander zu setzen, damit man versteht, wie die Sachen zusammenhängen, wo was zu finden ist und wie man später selbst Hand anlegt, wenn man Dinge ändern möchte oder muss. Für die, die es schneller haben wollen füge ich später nochmal eine vorkonfigurierte, portable Installation bei. An der Stelle wäre ich dann über Feedback dankbar, ob das auch einwandfrei funktioniert, oder ob es Probleme gibt.
4.1 Retroarch
1.
Ladet euch von HIER die aktuelle Version von Retroarch herunter und entpackt sie in ein Verzeichnis. Ich wähle hierfür
Code: Alles auswählen
../Emulationstation/Retroarch
Wenn man Retroarch.exe startet, öffnet sich das Programm bereits anstandslos. Bedienbar ist es entweder mit dem Gamepad (Zumindest das XBox 360 Pad erkennt Retroarch automatisch, es funktionieren aber auch die Pfeiltasten der Tastatur sowie X zum Bestätigen und Y für Abbrechen/Zurück. Retroarch ist von Haus aus so konfiguriert, dass er alle Änderungen an der Konfiguration beim Beenden (ESC) in Retroarch.cfg speichert (diese lässt sich auch mit einem Texteditor öffnen und von Hand manipulieren).
2.
Nun laden wir uns bereits die ersten Cores herunter. Das geht sehr komfortabel über den eingebauten Online-Updater. Navigiert im Menü zu
Code: Alles auswählen
Online Updater/Core Updater
Um im weiteren Verlauf des Tutorials den Workflow nachvollziehen zu können, ladet euch die Cores
Code: Alles auswählen
SNES / Super Famicom (bsnes-mercury Balanced)
Code: Alles auswählen
Sega MS/GG/MD/CD (Genesis Plus GX)
Einige Emulatoren benötigen das Konsolen BIOS um zu funktionieren. Aus urheberrechtlichen Gründen ist dieses BIOS nie mitgeliefert. Ein Beispiel ist der Mednafen PSX Core. Um zu überprüfen, ob ein Core ein BIOS benötigt, geht vom Hauptmenü aus nach
Code: Alles auswählen
Load Core/PlayStation (Mednafen PSX)
Code: Alles auswählen
Information/Core Information
Retroarch erwartet die BIOS im Ordner
Code: Alles auswählen
../Emulationstation/Retroarch/System
Wir wechseln zu Settings. Nicht von den wortwörtlich hunderten Einstellungsmöglichkeiten erschlagen lassen: Das schöne an Retroarch ist, dass es Out-of-the-Box funktioniert. Viele der Dinge hier sind optional, stellenweise Geschmackssache und auch immer ein wenig abhängig von der Performance der ausführenden Maschine. Hier müsst ihr ein wenig selbst experimentieren welche Optionen es gibt, ich kann unmöglich auf alles eingehen. Konkrete Fragen versuche ich aber zu beantworten, man findet sich aber auch selbst relativ schnell zurecht. Wenn man irgendeine Option erwartet, dann ist die in der Regel auch vorhanden. Achtung: Legt euch regelmässig Backups eurer Retroarch.cfg an! Solltet ihr euch die Konfiguration zerschießen (und ja, dass IST möglich) müsst ihr ohne Backup wieder alles neu einstellen!
Ein paar Dinge sind hier aber interessant und die möchte ich zumindest vorstellen:
Unter
Code: Alles auswählen
Settings/Input/User 1 Device Type/RetroPad
Code: Alles auswählen
Settings/Input/User 1 Device Type/RetroPad w/ Analog
Direkt darunter findet ihr den Eintrag
Code: Alles auswählen
User 1 Analog to Digital Type
Was dann passiert ist, dass Retroarch den linken Analogstick als Steuerkreuz erkennt. Gerade wer noch ein XBox 360 Pad benutzt weiß, dass das Steuerkreuz nicht so richtig präzise ist, da kann man besser mit dem Stick spielen.
Und unter
Code: Alles auswählen
Driver/Menu Driver/xmb
Code: Alles auswählen
Driver/Menu Driver/rgui
Desweiteren lassen sich unter
Code: Alles auswählen
Settings/Video
Wir sind an dieser Stelle erstmal mit Retroarch durch. Im späteren Betrieb verwenden wir Retroarch eigenständig nur noch für größere Umbaumaßnahmen, wie z.B. das installieren neuer Cores, in der Regel müssen wir Retroarch aber nicht mehr von Hand starten.
4.2 Emulationstation
1.
HIER erhaltet ihr Emulationstation. Ladet euch das Zip-File für Windows herunter und entpackt die Dateien nach
Code: Alles auswählen
../Emulationstation/Emulationstation
Code: Alles auswählen
launch_portable.bat
2.
Was Emulationstation nun von uns möchte ist, dass wir es erstmal von Hand konfigurieren. Dafür benutzt Emulationstation eine xml-Datei, aber keine Panik: Alles ganz einfach.
Zunächst legen wir einen weiteren Ordner an:
Code: Alles auswählen
../Emulationstation/Roms
Code: Alles auswählen
../Emulationstation/Roms/SNES
Code: Alles auswählen
../Emulationstation/Roms/Megadrive
Code: Alles auswählen
../Emulationstation/Emulationstation/.emulationstation/
Code: Alles auswählen
<systemList>
</systemList>
a) Welcher Emulator zur Konsole passt
b) Wo die Spiele liegen
c) Welches Theme Emulationstation für die Darstellung verwenden soll
Das geht mit folgendem Codeblock
Code: Alles auswählen
<system>
<name>snes</name>
<fullname>Super Nintendo</fullname>
<path>..\Roms\SNES</path>
<extension>.sfc</extension>
<command>..\RetroArch\retroarch.exe -L ..\RetroArch\cores\bsnes_mercury_balanced_libretro.dll "%ROM_RAW%"</command>
<platform>snes</platform>
<theme>snes</theme>
</system>
<extension> definiert, welche Dateiendung die Roms haben, beim SNES also typischerweise .sfc (für Super Famicom, dem japanischen Namen der Konsole)
<command> definiert, welche Core verwendet wird. Hier wird einmal der Pfad zu Retroarch angegeben
Code: Alles auswählen
..\RetroArch\retroarch.exe -L
Code: Alles auswählen
..\RetroArch\cores\bsnes_mercury_balanced_libretro.dll "%ROM_RAW%"
Code: Alles auswählen
..\RetroArch\cores\
Code: Alles auswählen
bsnes_mercury_balanced_libretro
Code: Alles auswählen
<system>
<name>megadrive</name>
<fullname>Sega Megadrive</fullname>
<path>..\Roms\Megadrive</path>
<extension>.md</extension>
<command>..\RetroArch\retroarch.exe -L ..\RetroArch\cores\genesis_plus_gx_libretro.dll "%ROM_RAW%"</command>
<platform>megadrive</platform>
<theme>megadrive</theme>
</system>
3.
Damit Emulationstation funktioniert, müssen nun noch in das Verzeichnis für die Spiele die entsprechenden Roms hinzugefügt werden. Passiert das nicht, meckert Emulationstation weiterhin, dass keine Konsole angelegt wäre.
Anschließend können wir Emulationstation mit angeschlossenem Gamepad über
Code: Alles auswählen
../Emulationstation/Emulationstation/launch_portable.bat
Beim ersten Start fragt fordert uns Emulationstation auf, das Gamepad zu konfigurieren. Anschließend gelangt man in die Konsolenübersicht, in
der man mit Links/Rechts durch die Konsolen scrollen und per Tastendruck auswählen kann.
4.
Optional lässt sich nun über die Start-Taste des Controllers des Scraper aktivieren. Der durchsucht eine Internetdatenbank nach den Spieletiteln und lädt Cover usw. automatisch herunter. Das funktioniert relativ zuverlässig, man muss aber ab und an den Spieletitel von Hand eingeben oder nach einzelnen Begriffen suchen, damit er das passende Cover findet.
Befindet man sich IM Spiel, lässt sich nun mit F1 das Retroarch-Menü aufrufen, bei dem man live diverse Einstellungen ändern.
5. Vorkonfigurierte Installation
Hier (Link geht nun zu Google Drive) habe ich mal die im Tutorial beschriebene, vorkonfigurierte Installation hochgeladen. Die sollte "Out of the Box" für SNES und Megadrive funktionieren, sobald man an den entsprechenden Stellen die Roms einfügt. Bei Problemen: Bescheid geben. Aber nochmal der Hinweis: Man sollte das Tutorial lesen und verstehen, sonst wird man Probleme bekommen, das ganze eigenständig zu erweitern und seinen Vorstellungen anzupassen.
6. Ausblick
Was ich hier beschrieben habe ist das Vorgehen für Windows. Das ganze gibt es auch für andere Betriebssysteme, u.a. MacOS, Linux und Android. Zudem gibt es eine eigene Linuxdistribution (Lakka) und auch eine Distribution für den RaspberryPi (RetroPie). Gerade letzteres finde ich extrem spannend, weil man am Ende für ein paar Euro eine vollständigen, dedizierte Retrokonsole hat, die man überall hin mitnehmen kann und die so einfach und komfortabel funktioniert wie eine echte Konsole. Selber ausprobiert habe ich RetroPie aber bislang noch nicht.
Außerdem zu erwähnen wäre, dass es leider bislang keine Cores für PS2 und von Dolphin gibt und auch der Sega Saturn Core ist erst seit 2016 in Entwicklung und daher noch extrem langsam.
Das wäre es von mir erstmal und ich hoffe ein paar Leute kriegen nun Lust, dass auch mal auszuprobieren. Erzählt mir von euren Erfahrungen und von euren Kindheitstiteln.