Speicherdaten in Retroarch

  • Hi,

    die Speicherdaten in RA werden ja standardmäßig unter .kodi/storage/ibreelec/Userdata/addon_data/emulator.tools.retroarch/savefiles abgelegt. Allerdings werden dabei die Speicherdaten von allen Spielen, unabhängig von ihrer Plattform in ein und den selben Topf geworfen. Mir wär es lieber würden die Speicherdaten getrennt nach Plattform zu meinen Roms und Artworks abgelegt werden. In der config-File ist aber nur ein Pfad für alle Speicherdaten angegeben. Kann man das trotzdem irgendwie realisieren?

    Und falls nicht, was passiert denn eigentlich, wenn man Spiele von unterschiedlichen Plattformen, aber mit gleichem Namen hat? Wenn die Speicherdaten aller Plattformen im selben Ordner abgelegt werden, müssten die sich dann nicht auch überschreiben? Denn auch die Dateiendung (*.srm) ist ja immer gleich.

    Gruß

  • Ich hab mein setup so aufgebaut, dass ich pro System eine eigene config Datei habe (config_snes.cfg, config_n64.cfg, ...) und dann in jeder config Datei die Pfade zu den savefiles anpasse.

    Normalerweise kann man retroarch beim Start mitgeben, weche config.cfg verwendet werden soll (-c "config_snes.cfg"). Das Gamestarter Addon und auch das retroarch Addon, das Du verwendest, schreiben den Pfad zur config.cfg leider fest in ihr Skript. Ich weiß nicht, ob die noch aktiv entwickelt werden, sonst könnte man das mal als change request dort einreichen.

    Alternativ könnte man versuchen, retroarch direkt aufzurufen. Was anderes machen die Addons ja eigentlich auch nicht.

    Der komplette Aufruf auf Kommandozeile müsste so aussehen:
    /storage/.kodi/addons/emulator.tools.retroarch/bin/retroarch -c "/storage/.kodi/addons/emulator.tools.retroarch/config/config.cfg" -L "/storage/.kodi/addons/emulator.tools.retroarch/lib/libretro/vba_next_libretro.so" "%ROM%"

    In RCB wäre das folgende Konfiguration:
    emuCmd: /storage/.kodi/addons/emulator.tools.retroarch/bin/retroarch
    emuParams: -c "/storage/.kodi/addons/emulator.tools.retroarch/config/config.cfg" -L "/storage/.kodi/addons/emulator.tools.retroarch/lib/libretro/vba_next_libretro.so" "%ROM%"

    Wobei Du bei den emuParams dann das config.cfg durch Deine spezifische config ersetzen müsstest.

    Wie an anderer Stelle bereits erwähnt: ich habe das nie getestet. Ich könnte mir lediglich vorstellen, dass es so funktioniert.

  • Sorry, hat ne Weile gedauert, bis ich das gechecked hab. Du meinst quasi so?

    Einmal editiert, zuletzt von Kupo91 (19. Juni 2018 um 14:15)

  • Vielleicht geht es, wenn Du im richtigen Takt mitblinzelst? :)

    Hab jetzt gerade gesehen, dass das retroarch-Skript auch noch dafür sorgt, dass Kodi gestoppt und wieder gestartet wird. D.h. ein letzter Versuch, das in RCB zu lösen, wäre, die Befehle zum Stoppen und Starten von Kodi als preCmd und postCmd anzugeben.

    Versuch 1:
    preCmd: systemctl stop kodi
    postCmd: systemctl start kodi

    Versuch 2:
    preCmd: pgrep kodi.bin | xargs kill -SIGSTOP
    postCmd: pgrep kodi.bin | xargs kill -SIGCONT

    Die erste Variante wäre die sanftere, die zweite greift etwas härter durch.

    Wenn das auch beides nicht funktioniert oder zu anderen Effekten führt, hilft wohl nur noch, das retroarch-Skript selbst so anzupassen, dass man dort die config-Datei als Parameter mitgeben kann. Idealerweise von einem der Entwickler der Skripte selbst. Ansonsten kann ich mir das die Tage mal selbst ansehen.

  • Vielleicht geht es, wenn Du im richtigen Takt mitblinzelst? :)


    :thumbup:

    Haben leider beide nicht funktioniert, aber trotzdem Danke für die Mühe :) Noch was anderes: Wenn ich in Retroarch versuche ein save state zu laden, friert mein Bildschirm ein. Hier auf github schreibt wer "memcpy needs a pointer, not pointer-to-pointer". Weißt Du vielleicht was damit gemeint ist?

    Edit:
    Hab die Befehle beim ersten mal versehentlich bei EasyRPG reingeschrieben und nicht bei Gameboy.
    Variante 1 startet augenscheinlich ganz gut, friert aber nach ein paar Sekunden im Spiel ein.
    Variante 2 friert noch in RCB ein.

    2 Mal editiert, zuletzt von Kupo91 (19. Juni 2018 um 15:41)

  • Hmmm, schade. Dann bleibt wahrscheinlich nur die Variante, das retroarch-Skript direkt zu editieren.

    Zu dem anderen Problem: prinzipiell sagt mir das was, aber das sind programmierspezifische Dinge. Da war ein Bug in dem core, der gefixt wurde.

    Das bringt aber noch einen anderen Punkt hoch: von wann ist denn Deine retroarch-Version bzw. die zugehörigen cores? Das retroarch-tool scheint seit 2016 nicht mehr weiterentwickelt worden zu sein. Oder hast Du irgendwo ein aktuelleres gefunden?

    Dann wird die retroarch-Version, die man damit installiert ja auch erst mal so alt sein. D.h., dass solche Bugfixes auf Deinem System potentiell noch nicht vorhanden sind. Ich habe aber keine Ahnung, ob und wenn ja wie man retroarch und die cores unter libreelec aktualisieren kann.

    Das Gamestarter-Addon wird ja noch regelmäßig aktualisiert und bringt dann auch neue retroarch-Versionen mit. Das läuft aber wohl nicht auf den S905(X)-Boxen.

  • Bei meinem Retroarch steht keine Versionsnummer dabei. Und ob ich Gamestarter hab weiß ich gar nicht, ich glaube nicht. In der Addonliste steht es nicht dabei.


    Ich hab die Retroarchdaten aus zwei Quellen.


    Ich hab mir einmal die Zip-Datei aus diesem Beitrag runtergeladen: https://forum.libreelec.tv/thread/11195-l…77811#post77811

    (https://archive.org/download/Emula…tation_S905.tgz)


    Und dann noch aus einem Beitrag etwas weiter oben: https://forum.libreelec.tv/thread/11195-l…76500#post76500

    (http://mxqproject.com/files/libre8ga…aming-Alpha.zip)


    Ich hab alle Dateien und Ordner aus der ersten Quelle benutzt. Von der zweiten Quelle hab ich nur die Cores genommen und mit denen aus der ersten Quelle ersetzt. In der ersten Quelle schienen wirklich nur die Inhalte enthalten zu sein, die ich zum spielen benötige, während bei der zweiten Quelle noch jede Menge anderes Zeug drum herum war, was ich nicht haben wollte. Deshalb hab ich die Daten aus der ersten Quelle als Grundlage genommen.
    Da in der ersten Quelle jedoch nicht der easyrpg-core enthalten war, dacht ich mir, sind die Cores aus der zweiten Quelle vielleicht aktueller und habe die Cores der ersten Quelle mit denen der zweiten Quelle ersetzt. Vielleicht ist auch das Retroarch-System der zweiten Quelle aktueller, aber ich wusste nicht welche Dateien alle dazu gehören und wollte nicht wahllos alles übernehmen, was in der Zip-Datei enthalten ist und mir damit ggf. die Box zumüllen.

    Vielleicht weißt Du da ja mehr :D

    edit: wobei ich glaube, ich hab die Cores gar nicht ersetzt. Ich habe nur die Cores dazu kopiert, die in Zip-Datei Nr. 1 nicht enthalten waren. Also hab ich einen Misch-Masch aus Cores von Quelle 1 und Quelle 2. Die Cores aus den beiden Quellen müssen auf jeden Fall unterschiedlich alt sein, weil sie unterschiedliche Dateigrößen haben. Kann man irgendwo sehen, welche Version ein Core hat, bzw. welcher aktueller ist?

    edit2: Okay, bei mir war in den Retroarch Settings keine "Buildbot Cores URL" angegeben, deshalb hat das Downloaden von Cores in der Vergangenheit nie funktioniert x) Naja, jedenfalls funktioniert das Laden von Spielständen nun mit dem neuen Core wieder. Wenn ich jetzt allerdings die Liste meiner installierten Cores mit der Liste http://buildbot.libretro.com/nightly/linux/armhf/latest/ vergleiche, gibt es doch einige neue Cores. Wo sich mir die Frage stellt, welche Cores für welche Plattform wohl die besten sind. Bei mir war glaube ich nur ein PSX Core und 1, 2 GB Cores vorinstalliert, da hat sich die Frage nicht gestellt. Aber nun.. im Internet liest man so unterschiedliche Meinungen, die aber teilweise auch schon 2 Jahre alt sind, in der Zeit kann sich schon wieder viel verändert haben. Für Gameboy (Color) scheinen sich die meisten einig zu sein, dass gambatte der beste ist. Aber wenns um GBA geht fallen Namen wie mGBA und VBAm, für PSX Beetle PSX und Mednafen PSX (HW). Wobei das auch schon wieder nicht mehr aktuell sein kann. Kannst Du da irgendwelche Cores von empfehlen?

    Ich hab auch gelesen, dass die save states teilweise selbst vom selben Core, nur mit unterschiedlicher Version nicht kompatibel sein können. Stimmt das? Und wie ist das eigentlich mit normalen Speicherdaten, also Spielständen, die im Spiel und nicht vom Emulator gespeichert werden. Funktionieren die Core übergreifend? Denn wenn ich jetzt z.B. das Savegame eines PSX Spiels auf der Box mit dem Savegame meines PSX Emulators auf dem PC vergleiche haben die unterschiedliche Formate.

    Jede Menge Fragen die sich grad in meinem Kopf herumtummeln :D Naja, ich update erstmal alle Cores

    4 Mal editiert, zuletzt von Kupo91 (19. Juni 2018 um 20:39)

  • Bei der Auswahl der cores kann ich Dir leider nicht weiterhelfen. Da musst Du am ehesten Deine eigenen Erfahrungen machen und die kann auch von Spiel zu Spiel unterschiedlich sein.

    Zu den Savestates/Gamesaves: Savestates sind ja nur ein Abbild des aktuellen Speichers des Emulators. D.h., die sind wirklich in hohem Maße Emulator-/Core- und evtl. auch Versions-abhängig.
    Von den Gamesaves habe ich schon häufiger gelesen, dass die auch unter verschiedenen Emulatoren kompatibel sein sollen. Selbst ausprobiert habe ich das allerdings noch nicht.

  • Schon gut, die anderen Core-Optionen, die ich hatte, haben sowieso nicht funktioniert, da stellt sich dann die Frage nicht mehr ^^

    Dann werd ich es mir wohl zur Angewohnheit machen die Speicherstände vorzugsweise immer über die Memory Card zu sichern. Die kann man, zumindest was die PSX angeht, wohl auch einfach in ein anderes Format umbenennen. Das werd ich bei Gelegenheit mal ausprobieren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!