Open demsullivan opened 10 years ago
I am definitely with you on creating an add-on, and not fork the entire OE code-base. That would create a lot of extra work.
Here are my thoughts on this project. These are not set in stone in any way, but hopefully we can find some common points of contact and work from there. Please tell me what you think of these thoughts.
From my experience writing the RetroArch & Friends guide, there is a lot of people who have little experience with Linux and OpenELEC who wants to get emulators on their system. My main gripe with the current zaggash add-on is that it is not easy to get working. I would like to see either a simple zip-file install or create a custom add-on repository for installation. Unfortunately, due to XBMCs add-on guidelines, we can't include the add-on in the official XBMC repository since it includes .so files.
I like the idea that experienced user can build their own add-on from the sources using a script, but considering the above point this is not easy for inexperienced users. I am not sure how experienced the OpenELEC user-base actually is, but considering philosophy of XBMC that it should be usable for inexperienced users I think making the add-on from scripts should be an option and not the default.
As to architectures, I think supporting only 32 and 64-bits for now would be fine. There are a lot of OE users using RPis, but considering that RetroPi caters to to RPi users already and considering the low systems resources available on the RPi, I suspect that the experience using a RetroArch add-on would be sluggish.
I am not familiar with the Lakka menu-plugin, could you describe the pros and cons of using it compared to the included RGUI which I suppose it replaces? However, using Lakka's build sources seems like a good idea.
I would like to include a debug option to the add-on. RetroArch has a nice debug feature which can be invoked by setting the -v/--verbose flag when launching RetroArch.
I would also like to rework the retroarch.sh file. I do not like the way it functions, since it hides some of RetroArch functionality, but I am at a loss as to a better alternative that would allow ROMs to be launched with Advanced Launcer and Rom Collection Browser.
We should also keep an eye on Garbear's RetroPlayer fork of XBMC. RetroPlayer is not included in the XBMC 14 Helix roadmap, so I suspect that its inclusion in XBMC is further down the road. However, when RetroPlayer is included in XBMC and incorporated in OpenELEC, our add-on would have no use any more.
Looking forward to collaborate on this project.
I agree we should have a simple installable add-on as well as making it easier for power users to build their own custom addon.
Lakka is actually an entire distro based on OpenELEC, but in the scope of RetroArch its a menu replacement for RGUI which looks a lot like the PS3 menu and would replace RCB or Advanced Launcher. Take a look at their site, http://lakka.tv/
We could have 32 and 64 Generic builds with various options (wiimotes, lakka, etc) so users would have more choice. What do you think?
I had a look at the Lakka menu, and that looks nice. Using it would solve the retroarch.sh issue and make it easier for inexperienced users to use the add-on, since they don't have to mess around with AL and RCB.
I had a little look at the source code for the Lakka menu and I see it is written in lua. Is lua supported by OpenELEC, or do we need to port it to python or something similar? Also, how modular is the menu (this is beyond my programming abilities to see)? Can we just slap it on top of a working RetroArch installation and get it going in OE?
Here is a little summary of some of the main point I think we agree on:
So the main work seems to be due on the Lakka menu and the build script.
Perhaps when things are up and running it would be possible to create a custom XBMC repo for the pre-compiled add-on? I do like that it would automatically update it in XBMC when updates are pushed out.
Only problem I can see with this approach is that the repo server could take quite a beating. A full RA add-on with all the cores, all the shaders and Lakka menu would clock in around 150+ MB (probably around 60+ zipped). This could probably be worked around a bit by creating an add-on setting entry where you can select to download the shaders separately from libretro/common-shaders or Themaister/Emulator-Shader-Pack.
I haven't dug too deep into Lakka yet, but my understanding is that the main part of it is a menu driver for RetroArch written in C - take a look at the lakka branch of lakkatv's RetroArch repo. We should be able to leverage a SourceForge account for setting up a custom repo, or maybe we could get it into the OpenELEC Unofficial add-ons repo?
I'd like to still do a separate 32/64 Generic build with the wiimote support, with a warning that it's alpha/experimental. There's quite a number of people looking for wiimote support, and it's the whole reason I undertook this project in the first place.
I'm going to do an initial commit of the Lakka build sources later today so we can get this started.
Agreed on all accounts. Looking forward to having a look at the code.
Alright, I've done an initial commit, but all I really did was pull out Lakka's build scripts. Trying to build using these scripts won't work yet, but it's a starting point.
I need to start going through the scripts and modifying them to build RetroArch as an addon. I got lakkatv/RetroArch to build on my workstation, but I haven't compiled any cores to test it with yet.
There's a couple of different ways we could structure this. My initial thought is to only include the build sources (mkpkg and package.mk scripts) and have a shell script which walks the user through building, grabbing various options (where's your OpenELEC source tree, experimental wiimote support or not, lakka menu plugin or not, list of cores, etc.)
For the time being, until that script is written, you'd just have to manually copy the files into place in the OpenELEC source tree and build it.
I'd like to decide on this before I commit anything. What I'd like to do is leverage the Lakka build sources, since they're clean and elegant, and modify them to build RetroArch as an add-on rather than a separate distro.
We could also fork the entire OpenELEC codebase then add in our changes. That's more work, I think, because we'd have to keep our repo up to date with the OE repo.
I'm open to suggestions.