RetroPlayer and Rom Collection Browser
#1
This thread should give you some guidance how to use RetroPlayer together with Rom Collection Browser. 

You can grab the latest version of RCB here.

Basic setup
If you launch RCB for the first time it will ask you to create a new configuration file and guides you through its config wizard. If RCB detects that your Kodi version is RetroPlayer-ready it will ask you if you want to use RetroPlayer to launch games. All emulator configuration will be skipped from now on.
Image

All other options of the config wizard are described here.

Enable/Disable RetroPlayer support
When you already have a running RCB installation and you want to switch between launching games per RetroPlayer and external emulators, you can now do this via RCBs "Edit Rom Collection" dialog. Just hook up the context menu (pressing "C" on the keyboard or "Menu" on the remote) and select "Edit Rom Collection". Navigate to the "Launch Games" tab and un/check the option "Use RetroPlayer".

Image
All other options of this dialog are described here.

Specify gameclient per Rom Collection
If you don't specify any gameclients, RetroPlayer will try to detect the gameclient by file extension. If there are more than one matching gameclient, RetroPlayer will ask you which one to use every time you launch a game. In RCB you can specify a gameclient in "Edit Rom Collection" dialog and RCB will tell RetroPlayer which gameclient to use. If supported in your Kodi build, you will find this option just below the "Use RetroPlayer" option (see screenshot above). Just click on the "Gameclient" button and RCB will offer a list of all gameclients.

Image
(Unfortunately RCB can't offer you a list that shows only compatible gameclients for the selected system, so it will always show you a list of all available gameclients.)

Specify gameclient per game
If one of your games may best run with gameclient x and another with gameclient y, you can specify a gameclient on a per game basis. RCB will store this information in its database and sets the gameclient before launching the game. To set the gameclient for a specific game just highlight the game you want to edit and launch the context menu. Select the option "Set Gameclient (per Game)" and choose a gameclient from the list.


Thats it for now, I guess. If this is the first time you look into RCB, make sure that you check out the support thread in the Program Addons section or have a look at RCBs Wiki. This is all work in progress. I am sure you will be happy to find some bugs and report them here together with a log file.


To get an impression what the combination of RetroPlayer and RCB looks like, here is a (very) old video that I created some years ago (but I guess it should still look quite similar today):
Reply
#2
Great news, thanks for the update.
Reply
#3
Malte, I think the work you've done here is stellar. Something I would like to see is the convenience of RetroPlayer brought to other PC emulators. Similar to how RetroPlayer loads ROMs by solving the decision problem "can game client X open rom Y?", you could implement "is PC emulator X installed?", etc. and reduce most (if not all) of the RCB setup process. To get technical, you could create a folder called emulators and each python file (like VisualBoyAdvance.py) could be a class containing all the logic for that emulator. An example interface could be:
  • IsInstalled()
  • CanPlay(filename)
  • Play(filename, config) (where config is configuration params like fullscreen that e.g. get translated into command-line params)

Abstracted emulator classes could then encode auto-configuration details by implementing as many functions for as many platforms as possible. For example, VisualBoyAdvance.IsInstalled() could sniff the registry (looking for keys set upon installation) and filesystem (looking in known locations for executables) on windows, and query the OS's platform manager under linux or sniff the common FHS directories for the executable. For portable emulators, a single folder could be designated to contain all the emulators - globbing this tree wouldn't take that log, and could match against all known emulator executable names.

Manual configuration is the fallback for unimplemented functions or custom installations, of course. At first there would be no change in functionality, but as more and more functions get implemented for different platforms, RCB would slowly get smarter and smarter.

At least that's the idea on the top of my head. There are other implementation strategies of course, the advantage of this one is that it encapsulates all the details in a single class and hides the ugliness of auto-configuration from the rest of the program.
Reply
#4
(2013-10-06, 20:59)garbear Wrote: Malte, I think the work you've done here is stellar. Something I would like to see is the convenience of RetroPlayer brought to other PC emulators. Similar to how RetroPlayer loads ROMs by solving the decision problem "can game client X open rom Y?", you could implement "is PC emulator X installed?", etc. and reduce most (if not all) of the RCB setup process. To get technical, you could create a folder called emulators and each python file (like VisualBoyAdvance.py) could be a class containing all the logic for that emulator. An example interface could be:
  • IsInstalled()
  • CanPlay(filename)
  • Play(filename, config) (where config is configuration params like fullscreen that e.g. get translated into command-line params)

Abstracted emulator classes could then encode auto-configuration details by implementing as many functions for as many platforms as possible. For example, VisualBoyAdvance.IsInstalled() could sniff the registry (looking for keys set upon installation) and filesystem (looking in known locations for executables) on windows, and query the OS's platform manager under linux or sniff the common FHS directories for the executable. For portable emulators, a single folder could be designated to contain all the emulators - globbing this tree wouldn't take that log, and could match against all known emulator executable names.

Manual configuration is the fallback for unimplemented functions or custom installations, of course. At first there would be no change in functionality, but as more and more functions get implemented for different platforms, RCB would slowly get smarter and smarter.

At least that's the idea on the top of my head. There are other implementation strategies of course, the advantage of this one is that it encapsulates all the details in a single class and hides the ugliness of auto-configuration from the rest of the program.

agreed, that would greatly simplify the process.
Frodo Win 8 Pro x64
Fractal Design Node 605 (looks amazing)
i5 3570K, Asus P8Z77V LK
2x80GB Intel 320 SSD, 4TB NAS
GTX 670x2 SLI, 16GB GSkill Ares
Onkyo RC360 with Paradigm piece-by-piece 5.1 build
Nyxboard and AHK full controlled via XBox Controller
Reply
#5
Thanks, garbear. There are some nice ideas in your post. I already started to work on a new RCB version with new data- and configuration model some time ago and I hope that I can resume my work on it soon. I had in mind to ease up the configuration process but what you suggest goes much deeper than what I was thinking about. This may not become top of my priorities but I am quite sure that I will reread your suggestions when I start to work on this. (Although I am unsure if I like the idea of the IsInstalled check. All emulator integration (and with this RCB) is already highly platform dependant and a lot of users report issues on systems that I can't reproduce because I just don't have one to test. As long as I am factual working alone on this project I will think twice about adding more platform dependant featuresSmile)
Reply
#6
(2013-10-06, 20:59)garbear Wrote: Malte, I think the work you've done here is stellar.

I second that! Awesome work! I've been using RCB on my XBOX for some time, and it is as close to a Games "library" as you can get in an XBMC plugin. Love it! Excited for both the future of this project and RetroPlayer. Great to see good projects coming together like this (XBMC + RetroPlayer + LibRetro + RCB = Nod )
Reply
#7
Hello there,
First of all, congrats on the great work with this addon.

I have tried this on one of the test builds that is posted in this forum. However, from your initial post I learned your addon only behaves differently (with retroplayer support) if running a pr or dev build.
Since I didn't see any of the features of the original post I reckon that the tests builds are seen as a "Standard" build.

Is that correct? and if so, is there an easy way to (re)configure like it would be running on the pr build?

I could be that I'm doing everything completely wrongh though, I'm kind of new with these things.

I was using the windows build and installed the addon from there (using the zip in the initial post).

Thanks!

[edit] I'm not sure what I was doing wrong earlier, but with the latest versions all of this works like a charm. It's amazing what you have pulled off here (together with the whole retroplayer support). I'll be anxiously awaiting the future progress of this project.
Reply
#8
Nevemind
Image
Reply
#9
I've got interesting bug. If Publisher or Developer's name contains only numbers, RCB didn't show game listing.
xbmc.log contains:

12:27:35 T:3464 ERROR: EXCEPTION: argument "label" for method "XBMCAddon::xbmcgui::ListItem" must be unicode or str
12:27:35 T:3464 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.TypeError'>
Error Contents: argument "label" for method "XBMCAddon::xbmcgui::ListItem" must be unicode or str
Traceback (most recent call last):
File "C:\Users\MediaCenter\AppData\Roaming\XBMC\addons\script.games.rom.collection.browser\resources\lib\gui.py", line 267, in onInit
self.loadViewState()
File "C:\Users\MediaCenter\AppData\Roaming\XBMC\addons\script.games.rom.collection.browser\resources\lib\gui.py", line 1515, in loadViewState
self.showPublisher(False, False)
File "C:\Users\MediaCenter\AppData\Roaming\XBMC\addons\script.games.rom.collection.browser\resources\lib\gui.py", line 533, in showPublisher
self.showFilterControl(rows, CONTROL_PUBLISHER, showEntryAllItems, rcDelete, rDelete)
File "C:\Users\MediaCenter\AppData\Roaming\XBMC\addons\script.games.rom.collection.browser\resources\lib\gui.py", line 559, in showFilterControl
items.append(xbmcgui.ListItem(row[util.ROW_NAME], str(row[util.ROW_ID]), "", ""))
TypeError: argument "label" for method "XBMCAddon::xbmcgui::ListItem" must be unicode or str
-->End of Python script error report<--

I've changed fields manually in NFO files and it helped.
Reply
#10
After searching/fooling around quiet a while day for "how to integrate roms into xbmc i just stumbled onto this project.
Probably going to give me some wet dreams tonight. Yet Some things are unclear to me.
I think I get it but hope I'm wrong.

I'm using xbmcbuntu on the htpc as I like to have a debian under the hood.
(also have a raspbmc, also for that reason.)

So correct me if I'm wrong (please do!)

Retroplayer is not an addon that can be installed in any xbmc but rather an openelec forc?
If so how are updates handled? (future proof, xbmc part?)
Is there any chance there will be an apt source for xbmcbuntu?

Regards.
Reply
#11
Hi Komerad,

RetroPlayer is a new player core for xbmc (like the video and audio player, but for games instead of movies and music). emulators are packaged as add-ons, so they can be installed /updated independently. when RetroPlayer Gotham is released, it'll be a dropin replacement for xbmc - it can be installed over vanilla Gotham, and vice versa, without any conflicts.

an apt source for Ubuntu is something I would like to learn how to create. do you have any links to any howtos?

Regards,
Garrett
Reply
#12
No sir,
I now have screwed up my xbmcbuntu install trying to get the zsnes audio to work over hdmi.. ah yes you know as the day passes by and the bucket of options is shrinking shit happens.
I want to try but what is the purpose?
It apears to be for openelec OR to be compiled. So if one sticks to xbmcbuntu what is the guideline then? remove the xbmc package and get the github version?

PS : xbmc package for ubuntu seemed to be maintained here :
https://launchpad.net/~team-xbmc/+archive/ppa
Not sure what they need to add to the repository. Better contact them to have it added to xbmcbuntu.

EDIT : Gave OpenELEC_RetroPlayer-r7033319-Generic.x86_64-3.2.0.tar.bz2 a try => No audio over hdmi, no option to change output device to custom.
Furthermore it seems to work pretty nice already.
Reply
#13
(2013-12-25, 01:50)garbear Wrote: Hi Komerad,

RetroPlayer is a new player core for xbmc (like the video and audio player, but for games instead of movies and music). emulators are packaged as add-ons, so they can be installed /updated independently. when RetroPlayer Gotham is released, it'll be a dropin replacement for xbmc - it can be installed over vanilla Gotham, and vice versa, without any conflicts.

an apt source for Ubuntu is something I would like to learn how to create. do you have any links to any howtos?

Regards,
Garrett

Very excited!
Frodo Win 8 Pro x64
Fractal Design Node 605 (looks amazing)
i5 3570K, Asus P8Z77V LK
2x80GB Intel 320 SSD, 4TB NAS
GTX 670x2 SLI, 16GB GSkill Ares
Onkyo RC360 with Paradigm piece-by-piece 5.1 build
Nyxboard and AHK full controlled via XBox Controller
Reply
#14
I have everything working well except that I can't get RCB working at all. It does not ask me if I want to use retroplayer and the options in RCB don't look anything like the screen shot I see here (I have no "Use RetroPlayer" option in RCB). I have 2.0.11 installed. Also when I add the path in file manager OR as a file path under Games/files, if I restart XBMC, I have to add the path again. It does not remain. Sad
Reply
#15
(2013-12-25, 15:20)Komerad Wrote: No sir,
I now have screwed up my xbmcbuntu install trying to get the zsnes audio to work over hdmi.. ah yes you know as the day passes by and the bucket of options is shrinking shit happens.
I want to try but what is the purpose?
It apears to be for openelec OR to be compiled. So if one sticks to xbmcbuntu what is the guideline then? remove the xbmc package and get the github version?

PS : xbmc package for ubuntu seemed to be maintained here :
https://launchpad.net/~team-xbmc/+archive/ppa
Not sure what they need to add to the repository. Better contact them to have it added to xbmcbuntu.

EDIT : Gave OpenELEC_RetroPlayer-r7033319-Generic.x86_64-3.2.0.tar.bz2 a try => No audio over hdmi, no option to change output device to custom.
Furthermore it seems to work pretty nice already.

To get audio over hdmi in xbmcbuntu with all emulators.you need to remove pulseaudio.
Then sudo nano /etc/asound.conf
and put defaults.pcm.device 3. Change device number according with aplay -l to see devices.
Then change output to that default you created in audio settings.
Reply

Logout Mark Read Team Forum Stats Members Help
RetroPlayer and Rom Collection Browser2