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:
git clone https://github.com/xbmc/xbmc kodi-source
cd kodi-source
Dann muss retroplayer als bootstrap eingetragen werden:
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
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
make ADDONS='game.libretro.snes9x' PREFIX=/usr
bzw.
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
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
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
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.