Sunday, February 11, 2024

ROM Collection Browser on Kodi 20 Nexus + Launch External Emulator

 


First a little back story:  After a failed Ubuntu update I ended up reworking my HTPC built from junk/cast-off parts.  I think I'm done with Ubuntu though, which is a rant for another day.  I ended up installing Linux Mint on this box again.  I don't know why I even bother trying other distros anymore, I always circle back to Mint.  Though in this case not the current version of Mint, I had to step back a bit because of the ancient Nvidia graphics card in this computer.  The proprietary drivers aren't available on the current version, and I know from messing around with Ubuntu 22.04 that the open-source "Nouveau" drivers aren't stable enough, and you have to extract binaries from the proprietary drivers to get hardware video encoding/decoding to work, except (in my experience) it just froze or crashed the entire computer as soon as I started playing a video.  Which rendered my HTPC useless.  So, anyway, I ended up going with Linux Mint 20.

Unlike under Ubuntu 20.04 I was able to actually install Kodi 20 Nexus.  Okay, so I was able to install it, but it would crash immediately on opening. So I was stuck on Kodi 19 Matrix but couldn't use Retroplayer because of an unmet and uninstallable dependency.  So I ended up having to point Kodi to open every game ROM in external emulators.  Which thankfully isn't that hard with IAGL or Advanced Emulator Launcher.

But on my new Linux Mint 20 installation I've run into various issues.  First of all many of the Libretro cores for Retroplayer are still unavailable because they fail to build.  Secondly, Advanced Emulator Launcher hasn't been updated for Kodi 20 Nexus so I had to try the development version, with which I ran into other problems. So I tried the Advanced Kodi Launcher forked from it, which is under more active development. But ran into issues with that as well (namely that some browse dialogs weren't working for me). I also didn't like how AKL clutters up my "Games" section with all it's add-on modules. I mean, I get why it's modular, but it's a shame there's no way to hide all of its modules from showing up in the Games Add-ons list, and with the same icon as AKL itself.

Honestly, what I *wanted* to use was Emulation Station Desktop Edition for a retro gaming library, but I can't get it to run on my Linux Mint 20 system.  It crashes on open because it can't find OpenGL.  I don't know if that's because it requires Wayland instead of X or something?  I didn't look into it.  But I can't use Wayland on this system because of the old Nvidia graphics card.  I tried the regular Emulation Station as well and hit the same problem.  I didn't bother trying to build it from source myself, I decided to just focus on using Kodi for my retro gaming library UI.

ROM COLLECTION BROWSER for KODI NEXUS

Which led me to try the "ROM Collection Browser" (RCB) which I've never used before. It's the closest out of the box to Emulation Station, and unlike AKL which requires you to switch your entire Kodi skin to get the cool UI options, RCB lets you access the cool UI layouts without switching your Kodi skin at all.  

However, RCB also has not been updated yet for Kodi 20 Nexus, but someone did fork it for that purpose.  You can find it here:

https://github.com/Trihy/romcollectionbrowser

I needed to download the Master not one of the releases because only the Master branch had been updated to look for Python 3.  You also need to install the RCB Service add-on for Matrix or it won't work. I get a moment of graphics glitches whenever I first open it, but it doesn't affect using it.

Keep in mind that RCB is intended to be navigated with a game controller not a mouse.  It is virtually unusable with a mouse.  D-Pad Up will get you the left-hand menu, D-Pad Down will get the right-hand menu.

However, and this isn't anything wrong with RCB, but too many of the Retroplayer cores are missing or broken to run some ROMs in Retroplayer at all.  

BROKEN/MISSING RETROPLAYER CORES

If you go look at the Team XBMC PPA you'll see that many of the Libretro cores fail to build on various Ubuntu versions and so are not available to install via APT.  You could try to build them yourself from source, but they may just fail for you too.

For example, on my HTPC system there are dozens of Retroplayer cores that are not installable via APT. I can download the package and try to install them manually, but they usually have some unmet dependency I can't satisfy either.

"Zach Morris" who makes the excellent Internet Archive Game Library (IAGL) plugin also maintains a Libretro Buildbox that generates Retroplayer cores.  However as THIS PAGE shows, not all of them work as intended, and I can tell you from personal experience that even some with the status "Works" my not necessarily work for you.

POINTING RCB TO EXTERNAL EMULATORS

For any Retroplayer cores you can't get to work you'll need to launch those games in an external emulator.  But I had difficulty finding instructions on exactly how to DO that in RCB.  So I'm documenting it here, if only for my future self who will likely have forgotten how to do it.

First you need to get to the left-hand menu and select "Edit Collections"


That pops up the dialog box. On that you need to go down the buttons on the left to "Launchers" 

 


 
...and at the top select the specific Collection you need to set a launcher for.

 

At the bottom you need to turn OFF the switch for "Use Retroplayer" because, well, we're not using Retroplayer. That will enable all the dimmed out option in the middle.


I'm going to assume you have a working installation of Retroarch on the same system, but this method should work with any external emulator so long as you get the path and parameters right.

Select "Emulator Cmd" which won't let you just type it in, it makes you browse for the binary to execute:

 

 



Note that the path to the binary will be different if you're using a Snap or Flatpack version of Retroarch and obviously will be different if you're pointing to a different emulator.  Now we need to send the right "Emulator Params" to actually launch the game:

 

In my case these was the magic parameters to enter:


-L /home/htpc/.config/retroarch/cores/bluemsx_libretro.so "%rom%"

Obviously you'd need to make sure the username is yours. I'm using "htpc" because that's what this box is for.  For each game platform you need to launch externally in Retroarch you'd need to change the core *.so file it is invoking.  So, for example, an NES game to use the Mesen emulator core would be:

-L /home/htpc/.config/retroarch/cores/mesen-s_libretro.so "%rom%" 

I think you get the idea.

Side note: I couldn't get the Retroplayer BlueMSX core to work even with the extracted "Machines" and "Databases" placed in:

~/.kodi/userdata/addon_data/game.libretro.bluemsx_libretro_buildbot/resources/system/

But they work fine inside ~/.config/retroarch/system/

Which is why I'm launching those games in Retroarch instead of Retroplayer.

(If you don't know what extracted files I'm talking about see the BlueMSX core instructions here: https://docs.libretro.com/library/bluemsx/).

YMMV.