Retrogaming in Kodi - Setup Fragen

  • Hallo zusammen,

    ich versuche aktuell retrogaming in kodi (zuverlässig) zum Laufen zu kriegen, bin aber ob der etwas wirren Doku verwirrt.

    Zunächst mal zu meinem Setup:

    Ich bin unter ArchLinux (Kernel: 4.20.3) mit Kodi-18 Git: 20190131 unterwegs.
    Ich habe libretro und retroarch (RetroArch: Frontend for libretro -- v1.7.5 -- c9c6c5a5a6 --) installiert.

    Bislang habe ich folgendes versucht:

    InternetArchiveRomLauncher:

    Scheint jetzt outdated zu sein, daher habe ich mir auch IAGL angeschaut (siehe unten).
    Mit dem IARL habe ich es zumindest mal geschaft, SNES spiele zu zocken.

    Meine Konfig hier sieht wie folgt aus:


    Woebi im /usr/lib/libretro folgendes files zu finden sind:


    Wenn ich mit der exakt gleichen Konfiguration den Internet Archive Game Launcher (der scheinbar der Nachfolger vom IARL ist) versuche, dann erhalte ich immer:

    This game isn't compatible with any available emulators.


    Unabhaengig von IARL/IAGL:


    Ich habe unter Games Ordner angelegt, in welchen ich diverse ROMs habe (zB SNES -> *.smc files, N64 -> *z64 files).
    Wenn ich diese in Kodi anklicke, sind die Ordner aber einfach leer und ich sehe keine ROM.


    Was mich hier total verwirrt:

    • CORES - Diese brauche ich doch um das Game zu starten - wo muessen diese liegen? Scheinbar reicht es ja nicht, wenn ich die in /usr/lib/libretro habe (das sind doch CORES, richtig?)
    • BIOS - Wann brauche ich die (PS1 zB?) und wo muessten die liegen?

    HIer habe ich noch gelesen, dass man CORES in userdata/addon_data/game.libretro.<core>/system braucht - woher krieg ich die? Ich habe hier nur einen Ordner userdata/addon_data/game.libretro/ in dem eine settings.xml ist - das wars.

    Ansonsten hatte ich mich noch gefragt ob es normal ist, dass KODI im IARL Fall retroarch startet und ich quasi aus Kodi raus bin.

    VIelen Dank fuer die Hilfe!

  • Hallo zusammen,

    habe es nun geschafft das Problem zu losen - ich schreibe die Schritte auf - evtl. kann jemand anders diese noch brauchen.

    Das Folgende wurde unter ArchLinux gemacht.

    Issue

    Feststellung war, dass unter Add-ons -> My Add-ons-> Game add-ons lediglich die drei Kategorien

    • Controller Profiles
    • Game providers
    • Standalone Games

    zur Verfügung standen. Das heisst, das Binary Libretro Compatibility addon (sollte unter Kategorie 4 - Support add-ons zu finden sein) war nicht da.
    Das heißt, der Libretro support ist nicht vorhanden.
    Ferner gibt es dort noch ein fünfte Kategorie - Emulatores - sobald ein Emulator-Core installiert ist.

    Note: Afaik gibt es unter Ubuntu ein PPA, in dem das kompilierte Addon sowie die kompilierten Cores zur Verfügung stehen.

    Es ist demnach notwendig, diese Dinge selbst zu kompilieren.

    Neben game.libretro, den Cores (e.g. game.libretro.snes9x, game.libretro.mame, ..) wird noch das binary addon peripheral-joystick benötigt (zumindest wenn der Controller noch nicht in Kodi funktioniert).

    Preconditions

    • Kodi 18 dev
    • gcc (used: gcc (GCC) 8.2.1 20181127)
    • Cmake (used: cmake version 3.13.3)
    • Git
    • (+ vermutlich noch diverse andere Libs)
    • Genügend Speicherplatz (je nach EmulatorCore zwischen 1 und 100GB)

    Um binary addons für kodi zu kompilieren, ist es notwendig das kodi repository auszuchecken:

    Bash
    git clone https://github.com/xbmc/xbmc kodi-source
    cd kodi-source

    Dann muss retroplayer als bootstrap eingetragen werden:

    Code
    echo binary-addons https://github.com/kodi-game/repo-binary-addons.git retroplayer > cmake/addons/bootstrap/repositories/binary-addons.txt


    Compile wird wie folgt gestartet

    Bash
    cd <path/to/kodi-source>/tools/depends/target/binary-addons/
    make ADDONS='game.libretro' PREFIX=/usr

    Das würde game.libretro (also die Libretro Compatibility) compilieren und nach /usr installieren.

    Um zum Beispiel snes9x oder mame zu kompilieren führt man

    Code
    make ADDONS='game.libretro.snes9x' PREFIX=/usr

    bzw.

    Code
    make ADDONS='game.libretro.mame' PREFIX=/usr

    aus. Das Kompilat findet sich dann in native/... - diesen Ordner vor dem nächsten Kompilat löschen genauso wie die .installed_native file!

    WICHTIG: /usr ist das kodi prefix in arch - evtl. ist es unter einer anderen Distribution anders!

    Mit ADDONS='game.libretro.* kann auch alles kompiliert werden - dauert je nach Hardware aber einige Stunden.

    Eine Liste der verfügbaren cores findet sich unter https://github.com/kodi-game.

    Unter Arch hatte ich nun zusätzlich das Problem, dass die Permissions vom Kompilat nicht gestimmt haben, daher:

    Libs

    Code
    find /usr/lib/kodi/addons/game.libretro.* -type f -exec sudo chmod 744 {} \;
    find /usr/lib/kodi/addons/ -type d -iname "game.libretro.*" -exec sudo chmod 755 {} \;

    Shares

    Code
    find /usr/share/kodi/addons/game.libretro.* -type f -exec sudo chmod 744 {} \;


    Beim Ausführen mancher Cores (z.B. MAME) trat außerdem das Problem auf, dass in /usr/share/kodi/addons/emuresources der Ordner 'system' vom Core angelegt werden wollte - das ist aber natürlich aufgrund fehlender Rechte nicht machbar.
    Daher habe ich symlinks wie folgt angelegt:

    zB für emu=game.libretro.mame

    Code
    mkdir -p "<kodi-home>/userdata/addon_data/$emu/systemlink"
    sudo ln -s "<kodi-home>/userdata/addon_data/$emu/systemlink" "/usr/share/kodi/addons/$emu/resources/system"


    Nach einem Neustart von Kodi sind alle 5 Kategorien vorhanden und nach Aktivierung des Support addons können auch die entsprechenden Cores aktiviert werden.
    Danach kann das Daddeln dann losgehen!

    Jetzt gilt es für mich nurnoch rauszufinden, wo ich für PSX Emulation die BIOS hinlegen muss - falls also jemand nen Tipp hat wäre ich sehr dankbar.


    // Edit: Der Vollständigkeit halber hier noch die Antworten meiner Fragen:

    Zitat von tassee

    Ich habe unter Games Ordner angelegt, in welchen ich diverse ROMs habe (zB SNES -> *.smc files, N64 -> *z64 files).
    Wenn ich diese in Kodi anklicke, sind die Ordner aber einfach leer und ich sehe keine ROM.

    Das Problem hier ist, dass die ROMS nur genau dann angezeigt werden, wenn der entsprechende Core vorhanden ist.

    Zitat von tasse

    HIer habe ich noch gelesen, dass man CORES in userdata/addon_data/game.libretro.<core>/system braucht - woher krieg ich die? Ich habe hier nur einen Ordner userdata/addon_data/game.libretro/ in dem eine settings.xml ist - das wars.


    Selbst kompilieren oder aus einem Repository beziehen (Ubuntu: https://launchpad.net/~libretro/+archive/ubuntu/stable)

    Zitat von tasse

    Ansonsten hatte ich mich noch gefragt ob es normal ist, dass KODI im IARL Fall retroarch startet und ich quasi aus Kodi raus bin.

    Wenn via retroarch als external launcher gestartet wird ja - ansonsten ab 18 direkt.

    7 Mal editiert, zuletzt von tasse (10. Februar 2019 um 03:09)

  • Zitat

    Jetzt gilt es für mich nurnoch rauszufinden, wo ich für PSX Emulation die BIOS hinlegen muss - falls also jemand nen Tipp hat wäre ich sehr dankbar.

    Den Bios-Pfad der Systeme kannst du doch in Retroarch einstellen. In den Einstellungen gibt es einen Menüpunkt namens Verzeichnisse, wo du entsprechende Pfade festlegen kannst.

  • Den Bios-Pfad der Systeme kannst du doch in Retroarch einstellen. In den Einstellungen gibt es einen Menüpunkt namens Verzeichnisse, wo du entsprechende Pfade festlegen kannst.

    Danke für den Input, aber wieso in Retroarch? Ich bin hier in Kodi unterwegs mit dem beetle-psx core und da gibt es diese Möglichkeit nicht (zumindest finde ich sie nicht).

    VG

  • Du hast doch eingangs geschrieben, du hättest Retroarch installiert?
    Sorry, mit dem Retroplayer kenn ich mich nicht aus. Es wird allerdings auch überall empfohlen, lieber Retroarch zu nutzen, wenn man die Möglichkeit dazu hat, da Kodis eigener Retroplayer noch ziemlich hinterher hinkt

  • Du hast doch eingangs geschrieben, du hättest Retroarch installiert?
    Sorry, mit dem Retroplayer kenn ich mich nicht aus. Es wird allerdings auch überall empfohlen, lieber Retroarch zu nutzen, wenn man die Möglichkeit dazu hat, da Kodis eigener Retroplayer noch ziemlich hinterher hinkt


    Ja ich hatte es installiert, aber nie vor darüber zocken, wollte schon den kodi retroplay nutzen - als ich den Thread geschrieben habe, war ich allerdings noch etwas planlos.
    Ich finds einfach soviel cooler das in Kodi zu haben :)

    Danke aber dennoch.

  • Achso, ich dachte du hast Retroarch als Addon in Kodi integriert. So hab ich es bei mir. Allerdings nutze ich auch Retrogaming Builds für LibreElec. Aber wenn du ein Frontend wie Emulationstation oder Rom Collection Browser nutzt, das du aus Kodi startest, ist es doch eigentlich egal, ob du den Kodiinternen Retroplayer oder ein externes Programm wie Retroarch hinterlegst. Da merkt man doch keinen Unterschied oder? Gestartet wird ja beides in Kodi

  • Achso, ich dachte du hast Retroarch als Addon in Kodi integriert. So hab ich es bei mir. Allerdings nutze ich auch Retrogaming Builds für LibreElec. Aber wenn du ein Frontend wie Emulationstation oder Rom Collection Browser nutzt, das du aus Kodi startest, ist es doch eigentlich egal, ob du den Kodiinternen Retroplayer oder ein externes Programm wie Retroarch hinterlegst. Da merkt man doch keinen Unterschied oder? Gestartet wird ja beides in Kodi

    Da hast du natürlich recht - aber dann kann ich retroarch auch einfach so starten :)

    VG

  • Compile wird wie folgt gestartet

    Bash
    cd <path/to/kodi-source>/tools/depends/target/binary-addons/
    make ADDONS='game.libretro' PREFIX=/usr

    Das würde game.libretro (also die Libretro Compatibility) compilieren und nach /usr installieren.

    Hi,

    besten Dank für die Anleitung. Kennst du die PPA für Ubuntu für game.libretro?
    Ich hab's irgendwie nicht ganz hingekriegt. Ich kann zwar den SNES Emu kompilieren und danach findet er diesen auch, wenn ich ein Game starte, sagt aber, dass z.B. game.libretro fehlt (und noch weitere). Wenn ich das wie oben im Zitat eingebe, dann kompiliert er sehr sehr lang und ich habe keine Ahnung was ich danach tun muss, bzw. wo die Sachen landen.

    Ich glaube die Addons liegen unter /usr/x86_64-linux-gnu/kodi/addons (zumindest liegt da inputstream und die snes emus wurden da gefunden). Nach /usr wird bei mir so wie ich das sehe nichts installiert mit dem oben genannten Befehl. Oder fehlt da noch ein make install oder so?

    Besten Dank für tolle Anleitung und die Hilfe!

  • besten Dank für die Anleitung. Kennst du die PPA für Ubuntu für game.libretro?

    Leider nicht - das was ich oben geschrieben hatte, waren ja auch nur die retroarch cores.
    Hatte es nur in irgend nem IRC channel irgendwo mal aufgeschnappt.

    ich kann zwar den SNES Emu kompilieren und danach findet er diesen auch, wenn ich ein Game starte, sagt aber, dass z.B. game.libretro fehlt (und noch weitere). Wenn ich das wie oben im Zitat eingebe, dann kompiliert er sehr sehr lang und ich habe keine Ahnung was ich danach tun muss, bzw. wo die Sachen landen.

    Hast du den Menüpunkt 'Support Addons' unter 'MyAddons->GameAddons'?
    Falls nein: Stell sicher, dass du game.libretro kompiliert hast!

    Was genau hast du ausgeführt? Damit ich dir besser helfen kann poste bitte die einzelnen compile Befehle.
    Ich habe festgestellt, dass eigentlich nur das Kompilieren von MAME lange dauert (>1h bei mir).


    Ich glaube die Addons liegen unter /usr/x86_64-linux-gnu/kodi/addons (zumindest liegt da inputstream und die snes emus wurden da gefunden). Nach /usr wird bei mir so wie ich das sehe nichts installiert mit dem oben genannten Befehl. Oder fehlt da noch ein make install oder so?

    Eigentlich sollte das via das Prefix abgetütet sein - du solltest dann auch nach deinem Rootpass gefragt werden.
    Ansonsten kannst du im Ordner auch mal make -C native sudo-install aufrufen - vielleicht hilft das ja.

    Was liegt bei dir im entsprechenden kodi/addons ordner?
    Unter Arch habe ich /usr/share/kodi wo configs usw drin liegen und /usr/lib/kodi wo die ganzen libs (*.so) liegen.

    VG

  • Solltet ihr Bedarf an den game.libretro Addons haben, findet ihr die hier kodi.game-ubuntu_18.04, enthält alle die sich bis zum 6.2.2019 bauen ließen.

    Build Host Ubuntu 18.04 - 06.02.2019, sollten aber auch soweit mit allen RR Distributionen kompatibel sein, Garantie gibt es dabei aber keine, ich leiste auch keinen weiteren Support dafür.

    Die Addons installieren sich als User Addons nach ~/.kodi/addons sollten die Addons einmal in den PPAs verfügbar sein, sind die Addons erst aus ~/.kodi/addons zu löschen und dann aus dem PPA zu installieren.

    Hauptsache man hat Spaß

    No Debug.log, no issue - Kein Support ohne Debug-log.

    CCR, The Band, Lynyrd Skynyrd, Led Zeppelin, Deep Purple .......

    I’m not going to complain that 2day they don’t make music like this anymore, I’m just grateful that it got made period.

    Einmal editiert, zuletzt von vdr.tuxnet (12. Februar 2019 um 00:03)

  • Ich habe das selbe Problem mit Raspbian (Buster) und Kodi und meinem Raspberry PI 4B (4GB). Ursprünglich wollte ich nur Openhab2 installieren aber dann hat es mich gepackt^^.
    Kodi habe ich mit allen verfügbaren Paketen installiert (apt-get install kodi*). Es ist dann auch soweit alles da außer eben die Emulatoren etc. also genau wie mit deiner ArchLinux Installation.

    Teilweise konnte ich deine Lösung bei mir auch abarbeiten aber irgendwann kamen Fehlermeldungen und mangels tiefgründigen Know-how fing ich an zu improvisieren. :)
    Was Linux angeht bin ich leider schon 10 Jahre raus. Nun ja, fange ich halt von vorne an, geht ja fix mit den kleinen Dingern.

    Ich wollte heute mittag nochmal einen versuch starten und mal alles dokumentieren. evtl ist ja hier noch ein raspbian Nutzer der mein Leid teilt^^

    Grundsätzlich aber schon mal ein dickes Danke für deinen Beitrag @tasse. Ich habe schon geglaubt ich bin zu blöd zum installieren von KODI, weil mir immer der Emu fehlte und der Rest :)

Jetzt mitmachen!

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