Why RetroArch?

A project log for Gamegirl: the retro console done right

The most portable way to play LÖVE, PICO-8, Scratch or your favorite emulated games. Powered by RetroArch!

DavidDavid 04/03/2016 at 16:330 Comments

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: