How-to Guide: Manually Installing RetroPie: Navigating the RetroPie Setup Script Menu Structure
Following the June 8th 2016 update to the RetroPie Setup Script the functionality and menu structure have changed noticeably from the streamlined earlier incarnation.
Whilst the new (at time of writing) version 4.0 DEV allows far more control over the setup and maintenance of RetroPie, it necessarily appears a little more complex than before; in this guide I illustrate the revised layout.
Many of the entries on the RetroArch/Libretro main menu screen lead to sub menus, most of which contain numerous entries, and further sub menus. Discussed here are a couple of entries within the Core Options sub menu of especial interest to PlayStation emulation.
Core Options – Enhancing the Graphics Resolution
It is possible to force RetroPie’sPCSX-ReARMed PlayStation emulator to render graphics in a resolution considerably higher than the native modes available on the genuine console’s hardware. I should note that whilst this can make stunning visual improvements to many games on the system, unfortunately the Raspberry Pi 2 lacks enough CPU power to reliably run all games at full speed.
Rendering the output in enhanced resolution incurs significant processing overhead. The emulator in its current form is only able to utilise one of the four CPU cores present on the Pi; perhaps a future (radical) enhancement to PCSX-ReARMed will unlock the full potential of the system.
Edit: This post has been extended to account for differences in RetroPie 3.6’s version of RetroArch/Libretro. The PlayStation emulator remains the same in both the 2.x and 3.x RetroPie revisions (Pcsx-ReARMed r22). The original post was based on RetroPie 2.x
As noted in the aforementioned post, before discovering RetroPie I’d been running PiPlay on the Raspberry Pi 2, which provides a broadly similar emulation platform to RetroPie. Whilst the graphical emulator selection front-end is different to Emulation Station, many of the same emulators are in place; however all is not as simple as it appears.
Unfortunately, with the build of PiPlay I was using I ran into problems with various emulators; virtually all Megadrive / Genesis games I tried had corrupted sound, many would freeze at random, and there was no support at all for the 32X. The PlayStation emulator initially appeared to be excellent, however as I tried more titles I uncovered a number of shortcomings; I’m planning a future post on this topic, as the same emulator in RetroPie has a few different issues, and I became obsessed with understanding the problems in a bid to have the best of both worlds.
I should note that, being impatient to see if the Raspberry Pi was a solid emulation platform, I quickly switched to RetroPie and have not subsequently installed any newer PiPlay images; nonetheless the PiPlay distribution has many sound ideas, and is definitely worth further investigation.
One core feature which the PiPlay incarnation of the PlayStation emulator has is a comprehensive in-built options menu, accessed via the Escape key. This allows access to various settings, affecting the graphical and audio output, save states, controllers, and more. The following screen grabs show the native menu being accessed whilst a title is running:
Coming to the RetroPie version of the same emulator, I was surprised to find that this menu no longer existed; at the time I had no knowledge of the unified environment shared by Libretro-enabled emulators, but found various references to the ‘core menu’ in forums. As I was to discover, and as detailed in the preceding post, RetroPie’s PlayStation emulator implements the standard Libretro menu system.
Note: the terms Libretro menu and RetroArch menu appear to be used as synonyms in documentation and in forum posts.
What is the Libretro Options Menu, and Why Does It Matter?
For a while after installing RetroPie, this question plagued me. I found references to the ‘Options Menu’ seemingly everywhere, but as to where it resided or how it manifested, that seemed some closely guarded secret.
Why was I looking for the elusive menu? Well, the Options Menu holds the secret to really getting the most out of many of the RetroPie emulators, from tweaking the controller settings to switching graphics rendering engines.
RetroPie can be thought of as a framework which wraps and extends other software components, ultimately handling the loading of a selected game image into the relevant video game emulator.
Many of the console emulators included in RetroPie are what are known as Libretro cores; these ‘cores’ are existing emulators, modified to utilise the Libretro API, which provides a common interface and experience across multiple systems:
Again, from the aforementioned earlier post:
The system also provisions management and configuration of numerous elements, including:
Loading button and axis (analog) control maps, matching upon detected Usb controller(s)
Setting video resolution
Applying filtering and video overlay effects
Providing state management (providing loading and saving of in-progress games)
The Libretro page on the emulation-general.wikia.com site describes Libretro in the following terms:
Libretro is an lightweight C/C++ API designed for emulators… It specifies how to write a library, called Libretro core, so that it can be loaded by a frontend supporting Libretro API like RetroArch… Libretro API can be used for example to strip emulator of it’s GUI components and convert it into dynamic library called Libretro core. (sic)
On the Libretro forum, user hunterk expands on the concept of retrofitting an emulator with the Libretro API:
Libretro porting is generally a case of mapping/wrapping the emulator/game/whatever’s internal API to the corresponding libretro functions and/or callbacks. So, many ports are very shallow and require little-to-no modification of the existing core code.
Thus, the RetroArch framework brings a set of consistent features to a broad range of emulators which were written entirely independently. All ‘core’ enabled emulators feature a common menu, the elusive Options Menu, which can be accessed and navigated via keyboard or a suitably configured control pad.
When I began to assemble my Raspberry Pi-based emulator setup, one of the core issues was simply understanding the elements which comprise the system, namely the hardware and numerous software components which RetroPie relies upon, and which in turn rely upon RetroPie.
Understanding this stack became more crucial once the initial installation was complete, and I subsequently began to explore and customise the system (including setting individual emulator video resolution, display filtering and analog effects, and controller / joypad support).