In this project log I will try to explain why having a pure RetroArch/libretro approach is technically cleaner.
The libretro API is there to separate the frontend (graphical interface) and the backend (the emulators). Adding an external frontend on top of it makes little sense, since it is an additional layer that can't take advantage of the low level API.
For example, with a frontend like RetroArch, you can display the current game in a small window while navigating the menu. This is not a very usefull feature, but it could become useful in the future to preview shaders.
Now, let think about effort duplication. Emulator hackers spend a lot of time trying to optimize emulators for the RPi. We end up with a ton of different versions, all with their graphical interface baked in.
If instead of that people focus on improving the libretro version of those emulators, this would benefit not only the RPi, but also all the platforms where RetroArch runs: PSP, Wii, iOS, etc
All the effort spent in including individual games on a distro like RetroPie and a frontend like EmulationStation could be instead spent in simply porting those games to libretro. This would make those games compatibles to every device supported by RetroArch. This would also make those games cleaner, by separating the content and the GUI.
Same goes for controller support. With a pure libretro distro, you get a centralised gamepad management. What works for games works for the menu. While with EmulationStation, the joypad code is duplicated. This is bloated.
Graphical contexts are another example. RetroArch already does the work of setting up the context like VideoCore or Mali or X11. External frontends have to duplicate that code.
There is no doubt that libretro should become the target platform if we want cleaner software.
Now I will try to explain why Lakka is better:
- Cross compilation : compile the whole distro in 2 hours on your PC and get the image.
- Compressed auto expandable image : the OS image is 150mb.
- Robustness : a read only system allows monolithic updates like firmware updates of commercial game consoles
- Centralisation : a single git repo to store all the package recipies, patches, configs
- Pure libretro : no bloat, consistency, no effort duplication, better integration with the GUI, better integration with the emulator developer community
- Portability : Lakka supports more than 10 ARM boards, plus PC, with a single code base