Der heutige Beitrag ist aus einem kleinen Projekt entstanden. Ziel ist es, zum Beispiel an einem Notebook und ggf. Videoprojektor im Garten mit Freunden sitzen zu können und die alten Computerspiele aus der Kindheit zu spielen. Einfach nur aus Spaß.
Damit alles angemessen „präsentiert“ werden kann, empfiehlt es sich mit Emulation Station zu befassen.
Siehe hierzu: http://www.emulationstation.org
Damit die Einrichtung nicht für alle Windows basierenden Systeme erneut durchgeführt werden muss, empfiehlt es sich dies als portable Lösung zu realisieren. Hier zusammenfassend meine Lösung.
Als Basis verwende ich einen älteren PC von ca. 2009, mit SSD und aktuellem Windows 10 (64bit). Als Controller verwende ich einen Xbox 360-Controller mit USB-Adapter.
Die Einrichtung ist jedoch nicht ganz trivial und es sind mehrere Aspekte zu beachten. Der zeitliche Aufwand zur Einrichtung, sobald das System verstanden wurde, ist jedoch überschaubar.
Zur Einrichtung von mir verwendete Tools sind:
Download und Vorbereitung EmulationStation
Zu Beginn laden wir für Windows die Variante zip file über folgende Seite:
http://emulationstation.org/#download
herunter und entpacken diese. Den Inhalt speichern wir direkt auf einem USB-Stick im Verzeichnis emulationstation:
Anschließend starten wir als erstes launch_portable.bat und bekommen folgende Meldung, dir wir mit ENTER wieder schließen:
Im Unterverzeichnis .emulationstation finden wir jetzt zwei Dateien, die uns im späteren Verlauf helfen und benötigt werden:
In der es_systems.cfg haben wir jetzt ein Beispiel zur Steuerung und Hinterlegung der Systeme, die wir gerne über Emulatoren etc. nutzen wollen:
Hilfe zur Einrichtung des Systems finden wir auf der Seite von retroarch. Hier sind ein paar sehr gute Beispiele dokumentiert:
https://github.com/HerbFargus/EmulationStation_Windows/wiki/Portable-Emulationstation
Zur vereinfachten Übernahme bereinigen wir zunächst die erstellte es_systems.cfg:
<!– This is the EmulationStation Systems configuration file.
All systems must be contained within the tag.–>
<systemList> ~\.emulationstation\roms </systemList>
Danach übernehmen wir von retrocharch als Beispiel:
und erhalten somit:
<!-- This is the EmulationStation Systems configuration file. All systems must be contained within the tag.--><systemList> ~\.emulationstation\roms <system> <name>snes</name> <fullname>Super Nintendo Entertainment System</fullname> <path>~\.emulationstation\roms\snes</path> <extension>.smc .sfc .SMC .SFC</extension> <command>%HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\snes9x_next_libretro.dll "%ROM_RAW%"</command> <platform>snes</platform> <theme>snes</theme> </system> </systemList>
Gemäß den Beispielen übernehmen wir in unserem Dateisystem die hier übernommen Strukturen in den Tags path und command. Daher erstellen wir zwei Unterverzeichnisse innerhalb .emulationstation (unbedingt das Verzeichnis mit dem beginnenden Punkt verwenden):
- roms
- systems
Im Verzeichnis roms erstellen wir jetzt das Verzeichnis snes und hinterlegen ein von uns bereits besitzendes ROM mit einer der notwendigen Erweiterung wie im Tag extension
smc .sfc .SMC .SFC
aufgeführt. Zum Test von EmulationStation reicht jedoch zunächst eine leere Datei mit einem Namen und entsprechender Erweiterung. Ich verwende hierbei:
Beispiel Textdatei.smc
Zusätzlich benötigen wir mindestens ein passendes System.
Hinweis: Ist das Verzeichnis für die ROMs nicht korrekt, so wird später beim Start von EmulationStation gemeldet, dass kein System gefunden werden konnte, obwohl das System korrekt hinterlegt ist. Für EmulationStation ist ein System erst vorhanden, wenn auch das Verzeichnis für die ROMs korrekt ist. Weitere Hinweise später unter: Hinweise zur Fehlersuche und bekannte Probleme.
Download und Vorbereitung retroarch
Zunächst laden wir die aktuelle stablie Version vom Projekt retroarch herunter:
https://github.com/HerbFargus/EmulationStation_Windows/wiki/Portable-Emulationstation
Wählen HERE direkt nach You can either download the stable version:
Dann win-x64 für Windows mit 64bit:
und anschließend die entsprechende 7z-Datei:
Die 7z-Datei entpacken wir anschließend mit dem zum Beginn des Eintrags aufgeführten Tool 7-zip und verschieben anschließend die Dateien in ein neues Verzeichnis retroarch unterhalb des Verzeichnis systems:
Wichtiger Hinweis: Zu empfehlen ist an dieser Stelle, dass die retroarch.cfg gesichert wird. Fehler beim Mapping von Tasten etc. können das weitere Verwenden von retroarch verhindern.
Damit wir anschließend beim Aufruf von EmulationStation auch die benötigten Emulatoren nutzen können, benötigen wir zunächst den jeweiligen Core. Welcher benötigt wird und ggf. welcher der richtige ist, sehen wir anhand der Parameter im command-Tag der es_systems.cfg
%HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\snes9x_next_libretro.dll "%ROM_RAW%"
Zum Download der Cores starten wir daher retroarch über die retroarch.exe
Zur Navigation verwenden wir folgende Tasten auf der Tastatur:
- Pfeiltasten zur Steuerung in den Menüs
- x zur Auswahl
- y zum Wechsel in überliegendes Menü
Bei meinem XBox 360-Controller sind dies B für Auswahl und A für Zurück.
Wir wählen zum Download des hier benötigten Cores Online Updater aus:
Core Updater:
Jetzt suchen wir in der Liste den wahrscheinlich richtigen Core (leider nicht eindeutig erkennbar):
In meinem Beispiel ist es SNES / Super Famicon (Snes9x Next):
Anschließend sehen wir kurz den Download der Datei zum Core:
Zur Prüfung, ob wir den richtigen Core erwischt haben, wechseln wir hier in das Unterverzeichnis cores:
und vergleichen den Dateinamen mit dem Namen der aufzurufenden Datei zum -L -Argument im command-Tag:
-L %HOME%\.emulationstation\systems\retroarch\cores\snes9x_next_libretro.dll
Perfekt!
Wichtiger Hinweis: Während meiner Tests hatte sich der Name der dll-Datei geändert. Ggf. ist es auch bei euch der Fall. Unbedingt vergleichen und korrigieren!
Erster richtiger Start von EmulationStation
Jetzt starten wir EmulationStation erneut über launch_portable.bat. Wer einen Controller hat, bitte vorab einschalten.
Wenn alles in Ordnung ist (es befindet sich mind. eine entsprechende ROM-Datei mit passender Dateiendung im richtigen roms-Verzeichnis), sehen wir eine der folgenden Meldungen:
oder
Mit einem langen Tastendruck des jeweiligen Controller (auch bei Tastatur) kann die Steuerung eingerichtet werden.
ACHTUNG: Das sich öffnende Menü ist kein Menü. Es wird hier sofort die richtige Taste zur Eingabe verlangt.
In meinem Fall musste ich nach meinem Fehlversuch mit ALT + F4 das Fenster über die Tastatur schließen und habe die Einrichtung der Eingabe über einen erneuten Start erfolgreich durchgeführt.
Wer jetzt einen Fehler gemacht hat, kann entweder im LOG das Mapping einsehen (es_log.txt). Beispiel:
lvl2: Configuring device 0 (XInput Controller #1). lvl2: Mapping [Button 0] -> Up lvl2: Mapping [Button 1] -> Down lvl2: Mapping [Button 2] -> Left lvl2: Mapping [Button 3] -> Right lvl2: Mapping [Button 10] -> A lvl2: Mapping [Button 11] -> B lvl2: Mapping [Button 4] -> Start lvl2: Mapping [Button 5] -> Select lvl2: Mapping [Button 8] -> PageUp lvl2: Mapping [Button 9] -> PageDown
um mit dieser Info die richtigen Tasten zur Navigation zu nutzen oder verwendet einen anderen Controller oder löscht die Datei es_input.cfg im Verzeichnis .emulationstation
Danach sehen wir:
und nach Auswahl:
Nach dem Aufruf von retroarch müssen wir ggf. einmalig manuell in den Vollbildmodus wechseln. Innerhalb von retroarch kann mit der F1-Taste ins Menü gewechselt werden. Die weiteren F-Tasten haben auch entsprechenden Funktionen. Mit der Taste f kann zwischen Vollbild und Fensteransicht gewechselt werden.
Als Beispiel bei erfolgreichem Aufruf sehen wir:
Wer jetzt den Emulator beenden möchte, kann dies entweder über das Menü mit F1 machen oder einfach die ESC-Taste kurz drücken.
Jetzt wo wir den Aufruf erfolgreich getestet haben, löschen wir in den ROMs Beispiel Textdatei.smc und starten erneut EmulationStation. Sofern jetzt weiterhin Beispiel Textdatei zur Auswahl zur Verfügung steht, kann jetzt die Datei gamelist.xml im entsprechend passenden ROM-Verzeichnis unter .emulationstation\gamelists\ löschen.
In meinem Beispiel befindet sich die Datei unter:
- emulationstation\.emulationstation\gamelists\snes
Der Inhalt ist folgender:
<?xml version="1.0"?> <gameList> <game> <path>./Beispiel Textdatei.smc</path> <name>Beispiel Textdatei</name> <playcount>1</playcount> <lastplayed>20170207T202234</lastplayed> </game> <game> <path>./Donkey Kong Country 1.smc</path> <name>Donkey Kong Country 1</name> <playcount>2</playcount> <lastplayed>20170207T202234</lastplayed> </game> </gameList>
Hinweise zur Fehlersuche und bekannte Probleme:
- Verwendung des Logs von EmulationStation
emulationstation\.emulationstation\es_log.txt - ggf. fehlender Pfad zu den ROMs in der es_systems.cfg
~\.emulationstation\roms - fehlendes Verzeichnis für die ROMs gemäß path-Tag der es_systems.cfg oder fehlende ROM-Datei mit passender Endung.
Beispiel-Meldung im LOG von EmulationStation bei fehlendem Verzeichnis oder fehlendem ROM:lvl1: Error - folder with path ""G:/emulationstation//.emulationstation/roms/snes"" is not a directory! lvl2: Parsing XML file "G:/emulationstation//.emulationstation/gamelists/snes/gamelist.xml"... lvl1: System "snes" has no games! Ignoring it. lvl0: No systems found! Does at least one system have a game present? (check that extensions match!)
- gelöschte Spiele bleiben gelegentlich in der Liste erhaltenauch. Das LOG es_log.txt gibt uns hier entsprechende Informationen
lvl2: Parsing XML file "G:/emulationstation//.emulationstation/gamelists/snes/gamelist.xml"...
Wie bereits beschrieben einfach die gamelist.xml im entsprechen Verzeichnis .emulationstation\gamelists\<system> passend löschen
- Ist ein Spiel zur Auswahl verfügbar und wird der Emulator unmittelbar nach Auswahl wieder geschlossen, den Aufruf im LOG prüfen:
lvl2: %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\snes9x_next_libretro.dll "G:\emulationstation\\.emulationstation\roms\snes\Donkey Kong Country 1.smc"
In meinem Fall war nach einem Update des Core von Retroarch der Name der dll-Datei abweichend. Hier war eine einfach Korrektur in der es_systems.cfg erfolgreich.
Für mögliche Fehler und Probleme ggf. eine Kopie von launch_portable.bat erstellen (Beispiel zu fehlersuche.bat), die erste Zeile belassen, den Pfad aus dem LOG übernehmen und am Ende den Befehl pause einfügen:
Auszug aus dem Log es_log.txt kopieren:
lvl2: %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\snes9x_next_libretro.dll "G:\emulationstation\\.emulationstation\roms\snes\Beispiel Textdatei.smc"
und in der fehlersuche.bat einfügen:
set HOME=%~dp0 %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\snes9x_next_libretro.dll "G:\emulationstation\\.emulationstation\roms\snes\Beispiel Textdatei.smc" pause
Alles speichern und testen.
Erweiterung EmulationStation und retroarch um weitere Emulatoren
Anschließend können weitere Emulatoren über retroarch eingebunden werden. Ich habe dies für Megadrive, ScummVM und DosBox getestet. Leider sind die Ergebnissen für ScummVM und DosBox über retroarch sehr bescheiden. Anbei mein Versuch. Etwas später zeige ich meine Lösung auf.
Zunächst über retroarch die notwendigen Cores heruntergeladen:
Im Verzeichnis für die ROMs neue Ordner angelegt und die Spiele gespeichert (bei pc und scummvm jeweilis mit Unterordner pro Spiel):
Anschließend die Beispiele von retroarch für Dosbox:
<system> <name>pc</name> <fullname>PC (x86)</fullname> <path>~\.emulationstation\roms\pc</path> <extension>.sh .bat .com .exe .SH .BAT .COM .EXE</extension> <command>%HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\dosbox_libretro.dll "%ROM_RAW%"</command> <platform>pc</platform> <theme>pc</theme> </system>
und ScummVM:
<system> <name>scummvm</name> <fullname>ScummVM</fullname> <path>~\.emulationstation\roms\scummvm</path> <extension>.bat .BAT</extension> <command>~\.emulationstation\roms\scummvm .bat .BAT %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\scummvm_libretro.dll "%ROM_RAW%"</command> <platform>pc</platform> <theme>scummvm</theme> </system>
und Mega Drive:
<system> <name>megadrive</name> <fullname>Sega Mega Drive / Genesis</fullname> <path>~\.emulationstation\roms\megadrive</path> <extension>.smd .bin .gen .md .sg .SMD .BIN .GEN .MD .SG</extension> <command>%HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\genesis_plus_gx_libretro.dll "%ROM_RAW%"</command> <platform>megadrive</platform> <theme>megadrive</theme> </system>
übernommen.
Beim ersten Versuch mit Mega Drive und Sonic the Hedgehog konnte ich gleich erfolgreich den ersten Level mit zusätzlichem Leben beenden. In retroarch gleich mit der F2-Taste den aktuellen Status im state slot #1 gespeichert.
Mit F6 und F7 kann zwischen den state slots gewechselt werden und mit F4 wird aus dem jeweiligen state slot der gespeicherte Zustand geladen. Geil, so muss es sein!
Mittels retroarch und Core für Dosbox funktionierte zwar der Aufruf zu den Spielen. Die Verzeichnisse werden in Dosbox gemappt, aber es passiert dann nichts mehr. Teilweise erschien die Meldung Datenfile nicht gefunden. Da wo ich ins Eingabefenster springen konnte ist mir aufgefallen, dass mit der Leertaste die Geschwindigkeit massiv erhöht wird. Ein Leerzeichen ist dann schnell mal 20 Zeichen lang. Auch alle anderen Funktionen von retroarch blieben erhalten, was sich sehr ungünstig bei Tastatureingaben verhielt. In dieser Form absolut für mich ungeeignet.
Bei der Variante mit retrocharch und dem Core für ScummVM ist ein Starten zunächst überhaupt nicht möglich. Nach vielen Tests in der Kommandozeile war mir aufgefallen, dass mit dem Aufruf von retroarch und dem Core für ScummVM durch:
g:\emulationstation\.emulationstation\systems\retroarch\retroarch.exe -L g:\emulationstation\.emulationstation\systems\retroarch\cores\scummvm_libretro.dll
die anschließende Datei als Parameter, ausgelesen und der Inhalt als Aufrufparameter für ScummVM interpretiert wird. Mir ist derzeit keine Quelle bekannt wo das entsprechend beschrieben wird.
Ich habe daher zum Test die Datei Monkey Island 2.scummvm mit folgendem Inhalt erstellt:
"--path=g:\emulationstation\.emulationstation\roms\scummvm\Monkey Island 2" monkey2
Hinweis: Hier muss bereits das Anführungszeichen vor der Option –path bei Langnamen verwendet werden. Alternativ geht es auch ohne Anführungszeichen, wenn hierzu die Kurznamen für Nicht-8Punkt3-Namen verwendet werden. Zum Ermitteln unter Windows in der Kommandozeile folgendes Beispiel:
Für Monkey Island 2 wäre es dann:
--path=g:\emulationstation\.emulationstation\roms\scummvm\Monkey~2 monkey2
Anschließend konnte ich es mit dem Befehl:
g:\emulationstation\.emulationstation\systems\retroarch\retroarch.exe -f -L g:\emulationstation\.emulationstation\systems\retroarch\cores\scummvm_libretro.dll "g:\emulationstation\.emulationstation\roms\scummvm\Monkey Island 2.scummvm"
erfolgreich testen.
Damit dies auch direkt unter EmulationStation möglich ist, habe ich den Eintrag für das System zu:
<system> <name>scummvm</name> <fullname>ScummVM</fullname> <path>~\.emulationstation\roms\scummvm</path> <extension>.bat .BAT</extension> <command>~\.emulationstation\roms\scummvm .scummvm %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\scummvm_libretro.dll "%HOME%\.emulationstation\roms\scummvm\%BASENAME%.scummvm"</command> <platform>pc</platform> <theme>scummvm</theme> </system>
geändert. Im Ergebnis, bei Aufruf über EmulationStation, konnte ich folgenden Test erfolgreich durchführen:
Jedoch habe ich auch hier wieder das Problem, dass ich derzeit nicht die Tastatur verwenden kann und ich bis dato keine Möglichkeit finden konnte, die störenden Funktionen zu deaktivieren. Zusätzlich bin ich noch nicht mit dem Menü in EmulationStation für ScummVM-Spiele zufrieden und das viel größere Problem ist die zum Start notwendige Game ID zu hinterlegen. Diese muss zusätzlich zum erfolgreichen Starten übergeben werden. In meinem Test:
--path=g:\emulationstation\.emulationstation\roms\scummvm\Monkey~2 monkey2
war es monkey2
Ein weiteres Problem ist, dass ich derzeit fest Laufwerk G: in Monkey Island 2.scummvm hinterlegt habe. Dadurch ist die portable Variante nicht mehr gegeben.
Sollte einer meiner Leser eine Lösung für das beschriebene Tastaturproblem haben, bitte melden. Zum Test in retroarch einfach f für den Wechsel zwischen Vollbild und Fenster verwenden.
Erweiterung EmulationStation um DosBox und ScummVM (nicht retroarch)
Durch die leider vorliegenden Probleme mit DosBox und ScummVM als Core in retroarch habe ich im Ordner .emulationstation\systems zwei zusätzliche Verzeichnisse
- dosbox
- scummvm
erzeugt. Anschließend laden wir die Dateien zu DosBox und ScummVM herunter:
Diese entpacken wir (auch die exe-Datei von DosBox) und verschieben den Inhalt in das jeweilige zuvor erstellte Verzeichnis. Damit sieht es so aus:
Zusätzlich war mir in EmulationStation aufgefallen, dass alle Dateien mit den hinterlegten Erweiterungen als Spiel gezählt werden. Bei Dune sind das immerhin:
Damit ich nun pro Spiel nur einen Eintrag habe, waren mehrere Dinge notwendig:
- Verwendung eines Verzeichnis mit einer Datei pro Spiel – Beispiel: Monkey Island 2.game (kann leer sein)
- Hinterlegung einer start.bat-Datei pro Spiel im Spieleverzeichnis, wo die notwendigen Befehle zum Start jeweils einmalig hinterlegt werden. Wenn sie fehlt, dann landen wir direkt im Verzeichnis und können manuell das Spiel starten.
- Korrektur des path– und extension-Tags in der sc_systems.cfg
- Anpassung command-Tag für den neuen Aufruf von DosBox als System in der es_systems.cfg
Um in Zukunft einen geringeren Aufwand zu haben, wenn ich Spiele hinzufüge oder lösche, generiere ich die jeweiligen Dateien mit Dateierweiterung .game.
Hierzu erzeuge ich zunächst ein Verzeichnis batch unterhalb .emulationstation und anschließend im Verzeichnis batch einen Ordner pc.
Damit nun zum Start von EmulationStation die Dateien generiert werden, habe ich die bestehende launch_portable.bat von:
@echo off set HOME=%~dp0 emulationstation.exe
zu:
@echo off set HOME=%~dp0 set HOME=%HOME:~0,-1% :create_pc_gamelist_files set PCGAMESDIR=%HOME%\.emulationstation\roms\pc set PCGAMESBATCHDIR=%HOME%\.emulationstation\batch\pc REM for /f "tokens=*" %%D in ('dir /B "%PCGAMESDIR%"') do del "%PCGAMESBATCHDIR%\%%D.game" for /f "tokens=*" %%D in ('dir /B /A:D "%PCGAMESDIR%"') do ( echo "%%D" in pc game dir found echo create "%PCGAMESBATCHDIR%\%%D.game" to start echo. echo. > "%PCGAMESBATCHDIR%\%%D.game" ) cls emulationstation.exe
angepasst. Nach dem ersten Start erhalten wir, vorausgesetzt wir haben Spiele im Verzeichnis
emulationstation\.emulationstation\roms\pc
gespeichert, die entsprechenden .game-Dateien.
Damit diese jetzt für die Darstellung in EmulationStation genutzt werden können und das bei Auswahl DosBox gestartet wird passen wir den System-Eintrag in der es_systems.cfg wie folgt an:
<system> <name>pc</name> <fullname>PC (x86)</fullname> <path>~\.emulationstation\batch\pc</path> <extension>.game</extension> <command>%HOME%\.emulationstation\systems\dosbox\dosbox.exe -exit -fullscreen -c "mount c: '%HOME%\.emulationstation\roms\pc\%BASENAME%'" -c "c:" -c "start.bat" </command> <platform>pc</platform> <theme>pc</theme> </system>
Beim Test sehen wir jetzt nur noch die einzelnen Spiele:
Damit jetzt die jeweiligen Spiele gestartet werden können, erstellen wir im Verzeichnis zum jeweiligen Spiel die start.bat-Datei. Am einfachen Beispiel von Lost Vikings 1 ist der Inhalt:
@echo off VIKINGS.exe exit
Hinweis: Durch den abschließenden Befehl exit wird anschließend DosBox beendet.
Wenn wir jetzt das Spiel über Emulation Station starten sehen wir (mit ALT+ENTER kann der Vollbildmodus verlassen werden) das Spiel in der DOSBox:
Erläuterungen und Informationen zur der oben genannten Anpassung in der es_systems.cfg:
<system> <name>pc</name> <fullname>PC (x86)</fullname> <path>~\.emulationstation\batch\pc</path> <extension>.game</extension> <command>%HOME%\.emulationstation\systems\dosbox\dosbox.exe -exit -fullscreen -c "mount c: '%HOME%\.emulationstation\roms\pc\%BASENAME%'" -c "c:" -c "start.bat" </command> <platform>pc</platform> <theme>pc</theme> </system>
Das Verzeichnis ~\.emulationstation\batch\pc und die extension .game werden verwendet, um die Spiele in EmulationStation im Menü darzustellen. Bei Auswahl wird der Befehl im command-Tag ausgeführt:
%HOME%\.emulationstation\systems\dosbox\dosbox.exe -exit -fullscreen -c "mount c: '%HOME%\.emulationstation\roms\pc\%BASENAME%'" -c "c:" -c "start.bat"
Betrachten wir die einzelnen Elemente zum Aufruf haben wir:
- %HOME%\.emulationstation\systems\dosbox\dosbox.exe
dosbox.exe wird gestart - -exit
nach beenden soll dosbox geschlossen werden - -fullscreen
die Darstellung erfolgt sofort im Vollbildmodus - -c „mount c: ‚%HOME%\.emulationstation\roms\pc\%BASENAME%'“
in DosBox wird der Befehl mount c: ‚%HOME%\.emulationstation\roms\pc\%BASENAME%‘ ausgeführt, wobei %BASENAME% als Wert den Spielname, wie im Menü von EmulationStation angezeigt, übernimmt. - -c „c:“
in DosBox wird der Befehl zum Wechsel zu Laufwerk c: ausgeführt - -c „start.bat“
in DosBox wird der Befehl zum Starten der start.bat ausgeführt
Erläuterungen und Informationen zur Erweiterung der launch_portable.bat:
@echo off set HOME=%~dp0 set HOME=%HOME:~0,-1% :create_pc_gamelist_files set PCGAMESDIR=%HOME%\.emulationstation\roms\pc set PCGAMESBATCHDIR=%HOME%\.emulationstation\batch\pc REM for /f "tokens=*" %%D in ('dir /B "%PCGAMESDIR%"') do del "%PCGAMESBATCHDIR%\%%D.game" for /f "tokens=*" %%D in ('dir /B /A:D "%PCGAMESDIR%"') do ( echo "%%D" in pc game dir found echo create "%PCGAMESBATCHDIR%\%%D.game" to start echo. echo > "%PCGAMESBATCHDIR%\%%D.game" ) cls emulationstation.exe
Mit:
set HOME=%HOME:~0,-1%
wird das unnötige doppelte \ entfernt, welches ich bei meinen Tests immer gesehen habe. Da ich Probleme unter DosBox befürchtet habe, habe ich dies hierdurch korrigiert.
Mit:
for /f "tokens=*" %%D in ('dir /B /A:D "%PCGAMESDIR%"') do ( echo "%%D" in pc game dir found echo create "%PCGAMESBATCHDIR%\%%D.game" to start echo. echo. > "%PCGAMESBATCHDIR%\%%D.game" )
durchsuche ich das Verzeichnis, definiert durch:
set PCGAMESDIR=%HOME%\.emulationstation\roms\pc
auf Unterverzeichnisse und erstelle pro Unterverzeichnis eine Datei mit Verzeichnisname als Name plus .game als Dateiendung im definierten Verzeichnis:
set PCGAMESBATCHDIR=%HOME%\.emulationstation\batch\pc
Dadurch wird immer der vorliegende Ordnername vom jeweiligen Spiel der Name in Emulation Station.
Die Zeile:
REM for /f "tokens=*" %%D in ('dir /B "%PCGAMESDIR%"') do del "%PCGAMESBATCHDIR%\%%D.game"
wird durch das am Anfang stehende REM nicht ausgeführt. Wer möchte, dass sein hinterlegtes Verzeichnis von .game-Dateien immer bereinigt wird, damit gelöschte DOS-Spiele auch in EmulationStation nicht mehr zu sehen sind, kann auf eigene Gefahr das REM entfernen!!!
ScummVM direkt als System in EmulationStation
Bei ScummVM gibt es noch die Besonderheit, dass zum Spielaufruf, neben Verzeichnis auch die game id benötigt wird. Mittels der game id erkennt ScummVM die zu ladenden Dateien. Um die game id zu ermitteln kann scummvm.exe mit der Option -z gestartet werden:
G:\emulationstation\.emulationstation\systems\scummvm>scummvm.exe -z
Als Ergebnis bekommen wir ein recht große Liste:
Da jeder nur einmalig die Ordnernamen vergibt, habe ich zur Vereinfachung eine Datei createscummvmbatchfiles.bat geschrieben, die bei Übergabe eines Namen/Ordnernamen die game id zurückliefert. Diese Datei wurde anschließend im Verzeichnis:
emulationstation\.emulationstation\batch
gespeichert.
Inhalt von createscummvmbatchfiles.bat
@echo off SETLOCAL ENABLEDELAYEDEXPANSION set args=%* set args=!args:"=! set args=!args: = ! set args=!args: Talkie=! set gameid=none set SCUMMVMEXE=%HOME%\.emulationstation\systems\scummvm\scummvm.exe for /f "tokens=*" %%S in ('"%SCUMMVMEXE%" -z ') do ( set line=%%S set line=!line::=! set line=!line:/= ! REM echo !line! set test=!line:%args%=! if NOT "!line!" == "!test!" ( for /f "tokens=1*delims= " %%i in ("!line!") do ( set gameid=%%i goto output ) ) ) :output echo !gameid!
Zusätzlich erzeuge ich ein Verzeichnis scummvm unterhalb:
emulationstation\.emulationstation\batch
in welchem später die generierten Startdateien für ScummVM plus Speicherort ScummVM-Spiele und ScummVM-Savegames (Standard wäre innerhalb des Benutzerprofils und somit nicht mehr „portable“) durch folgende Erweiterung der launch_portable.bat gespeichert werden.
:create_scummvm_game_bat SETLOCAL ENABLEDELAYEDEXPANSION set SCUMMVMGAMESDIR=%HOME%\.emulationstation\roms\scummvm set SCUMMVMBATCHDIR=%HOME%\.emulationstation\batch\scummvm set SCUMMVMEXE=%HOME%\.emulationstation\systems\scummvm\scummvm.exe set SCUMMBATCHCREATE=%HOME%\.emulationstation\batch\createscummvmbatchfiles.bat REM for /f "tokens=*" %%S in ('dir /B "%SCUMMVMGAMESDIR%"') do del "%SCUMMVMBATCHDIR%\%%S.bat" for /f "tokens=*" %%S in ('dir /B /A:D "%SCUMMVMGAMESDIR%"') do ( set game=%%S set gameid=none for /f "tokens=*" %%G in ('"%SCUMMBATCHCREATE%" !game!') do set gameid=%%G if not "!gameid!"=="none" ( echo "%%S" with ScummVM game id !gameid! found echo create "%SCUMMVMBATCHDIR%\%%S.bat" to start echo. echo %SCUMMVMEXE% --savepath="%SCUMMVMGAMESDIR%\%%S" -f -p "%SCUMMVMGAMESDIR%\%%S" !gameid! > "%SCUMMVMBATCHDIR%\%%S.bat" ) )
Zur Vereinfachung hier das fertige Ergebnis – launch_portable.bat:
@echo off set HOME=%~dp0 set HOME=%HOME:~0,-1% :create_pc_gamelist_files set PCGAMESDIR=%HOME%\.emulationstation\roms\pc set PCGAMESBATCHDIR=%HOME%\.emulationstation\batch\pc REM for /f "tokens=*" %%D in ('dir /B "%PCGAMESDIR%"') do del "%PCGAMESBATCHDIR%\%%D.game" for /f "tokens=*" %%D in ('dir /B /A:D "%PCGAMESDIR%"') do ( echo "%%D" in pc game dir found echo create "%PCGAMESBATCHDIR%\%%D.game" to start echo. echo. > "%PCGAMESBATCHDIR%\%%D.game" ) :create_scummvm_game_bat SETLOCAL ENABLEDELAYEDEXPANSION set SCUMMVMGAMESDIR=%HOME%\.emulationstation\roms\scummvm set SCUMMVMBATCHDIR=%HOME%\.emulationstation\batch\scummvm set SCUMMVMEXE=%HOME%\.emulationstation\systems\scummvm\scummvm.exe set SCUMMBATCHCREATE=%HOME%\.emulationstation\batch\createscummvmbatchfiles.bat REM for /f "tokens=*" %%S in ('dir /B "%SCUMMVMGAMESDIR%"') do del "%SCUMMVMBATCHDIR%\%%S.bat" for /f "tokens=*" %%S in ('dir /B /A:D "%SCUMMVMGAMESDIR%"') do ( set game=%%S set gameid=none for /f "tokens=*" %%G in ('"%SCUMMBATCHCREATE%" !game!') do set gameid=%%G if not "!gameid!"=="none" ( echo "%%S" with ScummVM game id !gameid! found echo create "%SCUMMVMBATCHDIR%\%%S.bat" to start echo. echo %SCUMMVMEXE% --savepath="%SCUMMVMGAMESDIR%\%%S" -f -p "%SCUMMVMGAMESDIR%\%%S" !gameid! > "%SCUMMVMBATCHDIR%\%%S.bat" ) ) cls emulationstation.exe
Entsprechende Spieleordner von ScummVM Spielen speichern wir unter:
emulationstation\.emulationstation\roms\pc
Anschließend wird die es_systems.cfg für ScummVM angepasst zu:
<system> <name>scummvm</name> <fullname>ScummVM</fullname> <path>~\.emulationstation\batch\scummvm</path> <extension>.bat .BAT</extension> <command>"%ROM_RAW%"</command> <platform>pc</platform> <theme>scummvm</theme> </system>
Bei meinem anschließenden Aufruf von launch_portable.bat wurden im Verzeichnis
emulationstation\.emulationstation\batch\scummvm
mehrere bat-Dateien erzeugt, deren Inhalt jeweils wie folgt (abhängig vom Spiel) ist:
G:\emulationstation\.emulationstation\systems\scummvm\scummvm.exe --savepath="G:\emulationstation\.emulationstation\roms\scummvm\Indiana Jones and the Fate of Atlantis Talkie" -f -p "G:\emulationstation\.emulationstation\roms\scummvm\Indiana Jones and the Fate of Atlantis Talkie" atlantis
In Emulation Station sehen wir anschließend:
Nach Aufruf von, zum Beispiel Monkey Island 2, wird ScummVM mit dem Spiel erfolgreich geöffnet. Beispiel (Menü-Aufruf über F5-Taste):
Erläuterungen und Informationen zur der oben genannten Anpassung in der es_systems.cfg:
<system> <name>scummvm</name> <fullname>ScummVM</fullname> <path>~\.emulationstation\batch\scummvm</path> <extension>.bat .BAT</extension> <command>"%ROM_RAW%"</command> <platform>pc</platform> <theme>scummvm</theme> </system>
Das Verzeichnis ~\.emulationstation\batch\scummvm und die extension .bat werden verwendet, um die Spiele in EmulationStation im Menü darzustellen. Bei Auswahl wird durch Verwendung „%ROM_RAW%“ die jeweilige bat-Datei im Verzeichnis ~\.emulationstation\batch\scummvm gestartet, die den gleichen Namen wie im Menü von Emulation Station hat.
Erläuterungen und Informationen zur Erweiterung der launch_portable.bat:
SETLOCAL ENABLEDELAYEDEXPANSION set SCUMMVMGAMESDIR=%HOME%\.emulationstation\roms\scummvm set SCUMMVMBATCHDIR=%HOME%\.emulationstation\batch\scummvm set SCUMMVMEXE=%HOME%\.emulationstation\systems\scummvm\scummvm.exe set SCUMMBATCHCREATE=%HOME%\.emulationstation\batch\createscummvmbatchfiles.bat REM for /f "tokens=*" %%S in ('dir /B "%SCUMMVMGAMESDIR%"') do del "%SCUMMVMBATCHDIR%\%%S.bat" for /f "tokens=*" %%S in ('dir /B /A:D "%SCUMMVMGAMESDIR%"') do ( set game=%%S set gameid=none for /f "tokens=*" %%G in ('"%SCUMMBATCHCREATE%" !game!') do set gameid=%%G if not "!gameid!"=="none" ( echo "%%S" with ScummVM game id !gameid! found echo create "%SCUMMVMBATCHDIR%\%%S.bat" to start echo. echo %SCUMMVMEXE% --savepath="%SCUMMVMGAMESDIR%\%%S" -f -p "%SCUMMVMGAMESDIR%\%%S" !gameid! > "%SCUMMVMBATCHDIR%\%%S.bat" ) )
Mit:
for /f "tokens=*" %%S in ('dir /B /A:D "%SCUMMVMGAMESDIR%"') do ( set game=%%S set gameid=none for /f "tokens=*" %%G in ('"%SCUMMBATCHCREATE%" !game!') do set gameid=%%G ... )
durchläuft das Skript alle Verzeichnisse unterhalb:
%HOME%\.emulationstation\roms\scummvm
und prüft den jeweiligen Namen über:
%SCUMMBATCHCREATE%" !game!
ob eine game id vorhanden ist. Das Ergebnis wird in gameid gespeichert. Anschließend wird durch:
if not "!gameid!"=="none" ( echo "%%S" with ScummVM game id !gameid! found echo create "%SCUMMVMBATCHDIR%\%%S.bat" to start echo. echo %SCUMMVMEXE% --savepath="%SCUMMVMGAMESDIR%\%%S" -f -p "%SCUMMVMGAMESDIR%\%%S" !gameid! > "%SCUMMVMBATCHDIR%\%%S.bat" )
geprüft, ob gameid abweichend none ist. In diesem Fall wird eine bat-Datei gleich Ordnername vom Spieleverzeichnis im Batch-Verzeichnis gespeichert:
"%SCUMMVMBATCHDIR%\%%S.bat"
Der Inhalt ist hierbei:
%SCUMMVMEXE% --savepath="%SCUMMVMGAMESDIR%\%%S" -f -p "%SCUMMVMGAMESDIR%\%%S" !gameid!
- %SCUMMVMEXE% entspricht dem Aufruf innerhalb der Batch-Datei der scummvm.exe-Datei
- –savepath=“%SCUMMVMGAMESDIR%\%%S“ übergibt scummvm.exe die Info, dass die Spielstände im jeweiligen Spiel-Verzeichnis gespeichert werden sollen
- -f legt Vollbild fest
- -p „%SCUMMVMGAMESDIR%\%%S“ übergibt scummvm.exe den Pfad wo sich das Spiel befindet
- !gameid! ist für scummvm.exe notwendig, damit die korrekte Datei zum Ausführen gestartet wird – in dieser Variante wird nirgends eine bat-, cmd- oder exe-Datei zum Start der Spiele übergeben.
Die Zeile:
REM for /f "tokens=*" %%S in ('dir /B "%SCUMMVMGAMESDIR%"') do del "%SCUMMVMBATCHDIR%\%%S.bat"
wird durch das am Anfang stehende REM nicht ausgeführt. Wer möchte, dass sein hinterlegtes Verzeichnis von .bat-Dateien immer bereinigt wird, damit gelöschte ScummVM-Spiele auch in EmulationStation nicht mehr zu sehen sind, kann auf eigene Gefahr das REM entfernen!!!
Erläuterungen und Informationen zur Erweiterung der createscummvmbatchfiles.bat:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION set args=%* set args=!args:"=! set args=!args: = ! set args=!args: Talkie=! set gameid=none set SCUMMVMEXE=%HOME%\.emulationstation\systems\scummvm\scummvm.exe for /f "tokens=*" %%S in ('"%SCUMMVMEXE%" -z ') do ( set line=%%S set line=!line::=! set line=!line:/= ! REM echo !line! set test=!line:%args%=! if NOT "!line!" == "!test!" ( for /f "tokens=1*delims= " %%i in ("!line!") do ( set gameid=%%i goto output ) ) ) :output echo !gameid!
Durch:
set args=%* set args=!args:"=! set args=!args: = ! set args=!args: Talkie=!
wird der Text zum zunächst übergebene Verzeichnis bereinigt, damit keine Anführungszeichen, doppelte Leerzeichen und ein ungewünschtes Wort “ Talkie“ nicht zum Vergleich verwendet werden. Bei Bedarf unterhalb:
set args=!args: Talkie=!
eine weitere Zeile wie:
set args=!args: lösche mich=!
einfügen.
Mit:
set SCUMMVMEXE=%HOME%\.emulationstation\systems\scummvm\scummvm.exe for /f "tokens=*" %%S in ('"%SCUMMVMEXE%" -z ') do ( set line=%%S set line=!line::=! set line=!line:/= ! ... )
werden alle Zeilen der Ausgabe von scummvm.exe -z durchlaufen und Doppelzeichen gelöscht und Schrägstrich mit Leerzeichen ersetzt:
- Broken Sword II: The Smoking Mirror (PlayStation/Demo) wird zu Broken Sword II The Smoking Mirror (PlayStation Demo)
Danach wird mittels:
set test=!line:%args%=! if NOT "!line!" == "!test!"
geprüft, ob der übergebene Name in der jeweiligen Ausgabe von scummvm.exe -z enthalten ist. In diesem Fall wird die Zeile der Ausgabe von Scummvm.exe um den Teilstring gekürzt und in test zwischengespeichert. Durch die Kürzung ist der anschließenden Vergleich nicht mehr identisch zur Ausgabe von scummvm.exe -z der Zeile.
Anschließend wird durch:
for /f "tokens=1*delims= " %%i in ("!line!") do ( set gameid=%%i goto output ) ... :output echo !gameid!
der Teil bis zum ersten Leerzeichen der aktuellen Zeile zwischengespeichert. Die Schleife wird unterbrochen und es wird nur die erste gefundene game id ausgegeben. Durch diese Abfolge wird bei Übergabe von:
- Monkey Island – monkey ausgegeben
- Monkey Island 2 – monkey2 ausgegeben
da die Ausgabe der Reihenfolge:
- The Secret of Monkey Island
- Monkey Island 2: LeChuck’s Revenge
entspricht.
Quelle für Spiele / Demos und Rechtliches:
Wer auf der Suche nach alten Klassikern ist, der muss beachten, dass die Spiele, auch wenn sie teilweise über 20 Jahre schon alt sind, nicht unbedingt frei und kostenlos verfügbar sind.
Schaut euch hierzu zum Beispiel:
- https://de.wikipedia.org/wiki/Abandonware
- https://de.wikipedia.org/wiki/Liste_kommerzieller_Computerspiele_mit_ver%C3%B6ffentlichtem_Quelltext
- https://en.wikipedia.org/wiki/List_of_commercial_video_games_released_as_freeware
an.
Teilweise ist es auch jetzt noch möglich alte Spieleklassiker zu kaufen. Zum Beispiel über http://www.gog.com (https://www.gog.com/game/kings_quest_4_5_6) oder, wenn auch sehr selten, als Humble Bundle. Teilweise haben Spielehersteller einige der alten Spiele frei zum Download freigegeben.
Ich persönlich bin froh, dass ich meine DOS-Lieblinge über die Jahre gut eingelagert habe. Die gute Spiele-Zeit war jedoch bei mir KC85/3 und C64 mit Boulderdash, Oil Imperium, Prince of Persia und Turrican. Das war vor 27 Jahren.
18. Februar 2018 at 6:28
Hallo, ich hoffe dass ich noch eine Antwort erhalte. Emulationstation mit Retroarch läuft soweit, leider ist Videoqualität aller ROMs ziemlich schlecht im Vergleich zum Beispiel mit Project64. Was kann ich da machen? Bei allen Tutorials werden keine Grafikeinstellungen vorgenommen und es sieht Super aus. Bei mir auf 2 verschiedenen Geräten sieht es immer schlecht aus.
Gruß Christian
LikeLike
18. Februar 2018 at 12:41
Hallo Christian,
leider habe ich keinen Vergleich um dein Problem direkt sehen zu können. Prüfe bitte deine retroarch.cfg-Datei auf Einträge wie:
video_smooth = „true“
In meinem Fall war dieser Eintrag „true“. Bei meinem Test mit Wert „false“ war mein Bild bereits deutlich schlechter.
Sehe dir bitte zu deinem Problem folgende Seiten an:
https://github.com/RetroPie/RetroPie-Setup/wiki/Shaders-and-Smoothing
http://www.retroarch.com/index.php?page=shaders
Ich habe gleich selbst etwas getestet. Zunächst habe ich RetroArch direkt gestartet. Dann das Menü „Online Updater“ aufgerufen und ganz am Ende „Update Cg Shaders“ und „Update GLSL Shaders“ ausgeführt. Im Verzeichnis Laufwerksbuchstabe:\emulationstation\.emulationstation\systems\retroarch\shaders von meinem Test sind jetzt zwei Unterordner zu finden, die mehrere Verzeichnisse und Dateien für die Shaders beinhalten.
Im Spiel mittels F1 das Menü öffnen und dann „Quick Menü“, „Shader Options“ und „Load Shader Preset“ öffnen. Jetzt siehst du die zuvor heruntergeladenen Dateien. Teste einfach mit ein paar der Varianten. Zur Verwendung immer zusätzlich eine Menüebene nach oben und „Apply Shader Changes“ auswählen. Dann wieder F1 um ins Spiel zurückzukehren.
Ich selbst habe zum Beispiel shaders_cg\crt\crt-hylian-glow.cgp getestet. Bei weiteren Tests waren deutliche Unterschiede (Blur-Effekt, schwarze Zwischenzeilen, Performance, …) sichtbar.
Ich selbst mag die Pixelvariante, trotz meines 4K-Bildschirms. Habe mir daher nie über die Qualität Gedanken gemacht. Danke für den Hinweis. Werde bei schlechtem Wetter erneut testen und meinen Artikel erweitern.
Bitte schreibe eine kurze Rückinfo, welche Variante für dich ein schönes Ergebnis brachte, mit einem kurzen Hinweis zum Spiel, emuliertem System, deiner Maschine (Hard- und Software).
Viel Erfolg!
LikeGefällt 1 Person
4. April 2018 at 23:04
Hallo Tebori, vielen Dank für die Antwort. Entschuldige, dass ich jetzt erst antworte. Nachdem ich die „Shaders“ installiert habe, lief es dann endlich ruckelfrei und in guter Qualität. Seltsamerweise musste ich keinen Shader auswählen. Bin wie es jetzt ist zufrieden. Es ging bei mir lediglich um die N64 Spiele, sie ruckelten alle und sahen nicht schön aus.
Zu meinem System: Ich nutze ein Laptop von ASUS das X555LN über HDMI mit meinem Fernseher. Standardboard mit Intel Core I5-i4210U 1,7Ghz, 8Gb Ram, Geforce 840M, 1 SSD für Windows, 1 HDD für alles andere, Windows 10.
Gruß Christian
LikeLike
5. April 2018 at 9:11
Hallo Christian,
Danke für deine Rückmeldung und auch die Nennung zur Konfiguration und Ausstattung mit Nennung des emulierten Systems. An der Hardware hätte es zumindest nicht liegen können. Schön dass es lediglich an der Installation der Shaders lag.
Wünsche viel Spaß – Tebori
LikeLike
13. Juli 2018 at 14:09
Hallo,
ich habe mal eine Frage zu folgendem Problem mit dem portablen Emulationstation. Gibt es eine Möglichkeit das Windows cmd-Fenster, welches sich beim Starten von Retroarch öffnet und zudem Emulationstation jedesmal kurzzeitig minimiert wird, irgendwie auszuschalten bzw. unsichtbar im Hintergrund unter Windows 10 öffnen lassen?
Ich bin leider kein Script Crack und daher wäre eine „Noob-Anleitung“, sofern überhaupt machbar, perfekt!
Vielen Dank schon im Voraus!
Eduard
LikeLike
13. Juli 2018 at 14:36
Hallo Eduard,
damit der Aufruf durch die bat-Datei minimiert erfolgt kannst du eine Verknüpfung auf deinen Desktop hinterlegen und anschließend per rechte Maustaste auf die Verknüpfung, die Eigenschaften öffnen. Unter Ausführen die Option: Normales Fenster zu minimiert ändern und per OK speichern. Bzgl. der kurzzeitigen Minimierung durch EmulationStation kann ich aktuell nicht helfen.
Viel Spaß
Tebori
LikeLike
13. Juli 2018 at 15:29
Vielen Dank für die schnelle Rückmeldung und übrigens ein großes Lob für Deine tolle Anleitung! Ich muss wegen meinem Anliegen wohl doch mal einen Programmierer ranlassen. Es nervt mich tierisch dass sich das cmd-Fenster jedesmal öffnet und das Programm kurzzeitig minimiert wird. Dadurch geht etwas vom Arcade-Feeling verloren!
Danke trotzdem und falls sich eine Lösung findet, werde ich es gerne hier kurz Kundtun!
VG,
Eduard
LikeLike
10. Januar 2019 at 9:52
Hallo,
zunächst einmal Danke für dieses Super Tutorial!
Hab alles (systems, roms, Cores) in einen Ordner installiert („D:\Emulationstation“) und es läuft echt mega gut!
Nun wollte ich das ganze auf einem anderen PC (Laptop selbes OS) kopieren und dort starten.
Also einfach übers Netzwerk gezogen und um keine Probleme mit Pfadangaben zu bekommen in den selben Pfad Kopiert „D:\Emulationstation“, aber nach dem start kommt folgende Fehlermeldung:
„We can’t find any systems ! Check that your paths are correct in the systems configuration file, and your game directory has at least one game with the correct extension.
Komme Da momentan leider nicht weiter und wollte mir eigentlich eine Neuinstallation sparen?
Hast du eine Idee woran das liegen kann, die Pfade hab ich mittlerweile 5 mal gecheckt, die stimmen.
LikeLike
10. Januar 2019 at 11:23
Hallo Thomas, ich prüfe dein Problem und melde mich vorraussichtlich bis Samstag
LikeLike
13. Januar 2019 at 18:11
Hi, hat sich erledigt.
Ich hab die Emulationstation.exe genommen, das war der Fehler.
Mit der Bat Datei gehts wie gewollt.
Danke nochmal.
LikeLike
13. Januar 2019 at 19:17
Hallo Thomas, danke für deine Rückmeldung. Super dass es nur ein kleines Problem war.
Schöne Grüße und viel Spaß
Tebori
LikeLike
1. Dezember 2019 at 23:27
Hallo,
Echt Super Tutorial, hast du noch einen Tipp wie man mit Retroarch und Mame bei Emulationstation den Highscore speichern kann? Bei mir wird hier leider nichts gespeichert, gerade bei so Spiele wie Track and Field kommt dann frust auf wenn der Weltrekord immer wieder gelöscht ist.
lg Simon
LikeLike
2. Dezember 2019 at 23:46
Hallo Simon,
Danke für dein Feedback. Leider kenne ich keine Option den Highscore zu speichern.
Schöne Grüße
Tebori
LikeLike
9. Februar 2020 at 16:15
Hallo Tebori,
super Tutorial und auch erstklassig erklärt. Erstmal danke dafür.
Ich habe ein kleines Problem mit der EmulationStation und bekomme es einfach nicht gelöst.
Evtl hast du ja eine Idee und kannst mir helfen:
Ich bin mit dem GBA-Retroarch-Emulator leider sehr unzufrieden, weshalb ich versucht habe den mGBA Emulator einzubinden. Wenn ich allerdings über ES eine Rom starten möchte, öffnet sich nur der Emulator, bzw die GUI des mGBAs. Die Rom an sich bootet er nicht direkt, diese muss dann per Doppelklick in der GUI gestartet werden.
Komischerweiße habe ich das Problem nicht als ich den Dolphin-Emulator eingebunden habe. Dieser wird gestartet und bootet auch direkt das Spiel, welches ich über ES gewählt habe.
Folgenden Log bekomme ich wenn ich über ES eine Rom mit mGBA booten möchte:
vl2: Attempting to launch game…
lvl2: getting volume as 100 ( from float 1)
lvl2: C:\Users\Username\.emulationstation\systems\mGBA\mGBA.exe -e „%HOME%\.emulationstation\roms\gba\BeispielRom.gba“
lvl2: Creating surface…
lvl2: Created window successfully.
lvl2: Added known joystick XInput Controller #1 (instance ID: 1, device index: 0)
lvl2: Added known joystick XInput Controller #1 (instance ID: 1, device index: 0)
Hättest du vllt eine Idee wie ich das Problem lösen könnte?
lg
LikeLike
9. Februar 2020 at 21:46
Hallo Tranx,
Danke für den Auszug aus deinem Log. Ich gehe davon aus, dass du für den mGBA Emulator, neben einem eigenen Verzeichnis für den Emulator, auch ein eigenes Verzeichnis für die ROMs für mgba erzeugt hast. Wenn ja musst du die Zeile im command-Tag, in der es_systems.cfg, anpassen. Dort steht für die ROMs gba in der zweiten Pfadangabe.
Ansonsten sende bitte den Auszug zum mGBA Emulator aus deiner es_systems.cfg und die Pfade für den Emulator, sowie zum Speicherort zu den ROMs.
Hast du testweise den Eintrag aus deinem Log aus der Kommandozeile gestartet?
C:\Users\Username\.emulationstation\systems\mGBA\mGBA.exe -e „%HOME%\.emulationstation\roms\gba\BeispielRom.gba“
Kommt da eine Fehlermeldung?
Ggf ist die Option -e falsch und muss angepasst werden.
Was mich etwas irritiert ist die Ausgabe im Log zu deinem direkten Benutzerprofil und dann zum ROM mit Umgebungsvariable HOME. In beiden sollte die Umgebungsvariable genutzt werden, ansonsten kannst du deine Variante nicht unmittelbar auf anderen PCs verwenden. Dein Benutzername hat kein Leerzeichen, da der Pfad zum Emulator ohne Anführungszeichen gesetzt ist.
Ich hoffe ich konnte helfen. Bitte teile uns deine Korrekturen mit, mit denen du erfolgreich das Problem lösen konntest.
Schöne Grüße
Tebori
LikeLike
10. Februar 2020 at 17:54
Hallo Tebori,
danke für die schnelle Rückmeldung!
Ja, ich habe ein extra Verzeichnis für die ROMs.
Was genau meinst du damit dass ROMs gba in der zweiten Pfadangabe steht?
Das „BeispielRom.gba“ entnimmt er der Variable %BASENAME% die durch die Auswahl der ROM in der ES definiert wird.
Mein momentaner Versuch sieht folgendermaßen aus:
gba
Game Boy Advance
~\.emulationstation\roms\gba
.gba .gb
C:\Users\Username\.emulationstation\systems\mGBA\mGBA.exe -e
„C:\Users\Username\.emulationstation\roms\gba\%BASENAME%.gba“
gba
gba
Die Pfade sind folgende:
ROMS: C:\Users\Username\.emulationstation\roms\gba
mGBA: C:\Users\Username\.emulationstation\systems\mGBA
Als Vergleich ist das die Einbindung des Dolphin-Emulators, welcher super funktioniert:
wii
Nintendo Wii
~\.emulationstation\roms\wii
.iso .ISO
C:\Users\Username\.emulationstation\systems\Dolphin\Dolphin.exe -e „%ROM_RAW%“
wii
wii
Der „%ROM_RAW%“ Befehl hat leider auch bei dem mGBA-Emulator keine Veränderung gezeigt.
Wenn ich den Eintrag aus dem Log in CMD ausführe bekomm ich „leider“ keine Fehlermeldung.
Er startet nur der mGBA-Emulator, aber ohne ROM.
Ich hatte zuerst auch mit dem Befehl „-L“ gearbeitet, weil der bei dem Retroarch-Emulator super funktioniert.
Nur leider bei mGBA nicht, bzw es zeigte keinen Unterschied zum Befehl „-e“.
Die Umgebungsvariable hatte ich als Test mal ausprobiert.
Normalerweiße hatte ich die erst gar nicht drin.
Auf die Portable-Variante wollte ich erst umsteigen sobald ich es geschafft habe, alles nach meinen Wünschen zu konfigurieren und mir dann eine SSD gekauft habe.
Vielen Dank für deine Hilfe!
lg
LikeLike
10. Februar 2020 at 18:57
leider hat es mir Tags verhauen beim Post, darum hiernochmal die Einträge aus meiner system.cfg mit Klammern:
Mein momentaner Versuch sieht folgendermaßen aus:
(system)
(name)gba(/name)
(fullname)Game Boy Advance(/fullname)
(path)~\.emulationstation\roms\gba(/path)
(extension).gba .gb(/extension)
(command)
C:\Users\Username\.emulationstation\systems\mGBA\mGBA.exe -e
„C:\Users\Username\.emulationstation\roms\gba\%BASENAME%.gba“
(/command)
(platform)gba(/platform)
(theme)gba(/theme)
(/system)
Die Pfade sind folgende:
ROMS: C:\Users\Username\.emulationstation\roms\gba
mGBA: C:\Users\Username\.emulationstation\systems\mGBA
Als Vergleich ist das die Einbindung des Dolphin-Emulators, welcher super funktioniert:
(system)
(name)wii(/name)
(fullname)Nintendo Wii(/fullname)
(path)~\.emulationstation\roms\wii(/path)
(extension).iso .ISO(/extension)
(command)C:\Users\Username\.emulationstation\systems\Dolphin\Dolphin.exe -e „%ROM_RAW%“(/command)
(platform)wii(/platform)
(theme)wii(/theme)
(/system)
LikeLike
10. Februar 2020 at 19:15
Hallo Tranx,
im Forum zum mGBA Emulator gibt es einen Eintrag zu einem ähnlichen Problem: https://forums.mgba.io/showthread.php?tid=5244&pid=6727&highlight=mgba.exe#pid6727
Hast du testweise den Befehl ohne Option -e verwendet?
Was passiert wenn der Aufruf zu deinen ROMs und Emulatur direkt in einem Verzeichnis unterhalb Laufwerksbuchstaben, ohne Leerzeichen, Sonderzeichen, etc. erfolgt?
Schöne Grüße
Tebori
LikeLike
10. Februar 2020 at 21:21
Hallo Tebori,
vielen Dank!!!!
Die Lösung war tatsächlich den Befehl ohne eine Option zu verwenden, also ohne „-e“.
Was die Geschichte mit dem Pfad betrifft, haben die Entwickler von mGBA wohl das Problem gefixt. Ich kann trotzdem aus dem Verzeichnis „.emulationstation“ die Roms weiterhin laden.
Ich weiß gar nicht wie ich dir danken soll.
Ich habe so lange rum probiert und das Problem einfach nicht gefixt bekommen.
VIELEN DANK!!!
lg
LikeGefällt 1 Person
10. Februar 2020 at 22:28
Hallo Tranx,
Danke für deine Rückmeldung und Respekt für deine Geduld zum Erfolg.
Viel Spaß und schöne Grüße
Tebori
LikeLike
16. Februar 2021 at 21:46
Moin, Ich schreibe in der Hoffnung noch Hilfe zu bekommen.
Ich finde die Spiele und kann diese auch auswählen doch dann öffnet sich RetroArch nicht… mit folgendem Log:
lvl2: Attempting to launch game…
lvl2: getting volume as 100 ( from float 1)
lvl2: %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\bsnes_libretro.dll „C:\Users\Media\.emulationstation\roms\snes\Contra III – The Alien Wars (U) [!].smc“
lvl1: …launch terminated with nonzero exit code 1!
lvl2: Creating surface…
lvl2: Created window successfully.
Jemand eine Idee?
LikeLike
17. Februar 2021 at 10:32
Hallo Felicitas,
was passiert wenn du: %HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\bsnes_libretro.dll „C:\Users\Media\.emulationstation\roms\snes\Contra III – The Alien Wars (U) [!].smc“ direkt in der Kommandozeile (Befehl cmd) startest?
Kommt dann eine Fehlermeldung?
Versuche bitte den Dateinamen anzupassen. Ggf. gibt es Probleme durch die eckigen Klammern.
Viel Erfolg
Tebori
LikeLike
17. Februar 2021 at 11:40
Hallo tebori,
erstmal vielen Dank für deine Antwort und die ganze Mühe die du dir hier machst. Wie du Eingangs erwähnt hast ist es toll wieder in den alten Gefühlen zu schwimmen als man mit Link die Welt erkundet hat.
Zurück zum Problem: Die gute Nachricht, es ist gelöst. Hurray!
Ich habe gestern noch nach dem Fehler gegoogelt und habe dann etwas herumexperimentiert. Die Fehlermeldung selbst bezieht sich auf ein Pfadproblem genau worauf deine Frage abzielt. Aus irgendeinem Grund wurde bei mir
%HOME% in es_systems.cfg nicht als Pfad erkannt. Ich habe also %Home% durch den ausgeschriebenen Pfad ersetzt :
%HOME%\.emulationstation\systems\retroarch\retroarch.exe -L %HOME%\.emulationstation\systems\retroarch\cores\bsnes_libretro.dll „C:\Users\Media\.emulationstation\roms\snes\Contra III – The Alien Wars (U) [!].smc“
zu
C:\Users\Media\.emulationstation\systems\retroarch\retroarch.exe -L C:\Users\Media\.emulationstation\systems\retroarch\cores\bsnes_libretro.dll „C:\Users\Media\.emulationstation\roms\snes\Contra III – The Alien Wars (U) [!].smc“
und siehe da es hat geklappt.
Viele Grüße und bestimmt bis bald
Feli
LikeLike
17. Februar 2021 at 13:45
Hallo Felicitas,
vielen Dank für deine Rückmeldung und die netten Worte.
Viel Spaß 😉
Tebori
LikeLike