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.
In my earlier post ‘What is RetroPie? System overview, software and hardware’ I provided a brief description of RetroPie, which contains numerous home computer and console emulators, up to and including the N64. As noted in that post:
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.
The Options Menu is available within a given Libretro-enabled emulator, once the emulator has been loaded; this is accomplished by selecting a system, and a game, via the Emulation Station GUI front-end, as depicted in the following sequence of screen grabs:
With a USB or Bluetooth keyboard connected, by default the Options Menu is accessed via the F1 key. A controller can be configured to map any available button or analogue stick movement to the menu, however it is more common (and helpful) to map a combination of a ‘hotkey’ button and another button, which are pressed simultaneously to access and dismiss the menu. Controller mapping, at least on RetroPie 2.6, is a non-trivial subject, which I aim to cover in later posts.
The usefulness of retrofitting a common subsystem to multiple emulators is made clear when running one of the non-RetroArch enabled systems, such as those for the Atari ST, Atari 8-bit, and the non-RetroArch enabled N64 Mupen64 emulator (RetroPie includes a RetroArch core version as well) – in all of these cases the emulator’s options are accessed and presented in a completely unique manner.
The ST emulator, Hatari, has an options menu accessed via a preset function key, and navigated only via mouse (thus requiring both a usb keyboard and mouse) . The Atari 8-bit emulator, Atari800, has a keyboard-driven menu, whilst in the case of Mupen64, options are directly mapped to keys, and there is no in-emulator menu to fall back upon.
The drawback to having RetroArch retrofitted to an emulator comes in terms of processing overhead (especially evident on the N64 emulators, hence the inclusion of two versions in RetroPie). Secondly, at least in the case of the PCSX ReARMed PlayStation emulator, RetroArch prevents access to some features that are natively part of the emulator, as the native options menu is not available.
Prior to installing the RetroPie image, I’d been using PiPlay, which provides a broadly similar emulation platform to RetroPie; the graphical emulator selection front-end is different to Emulation Station, and at the time of installation the controller setup was more comprehensive, however many of the same emulators were in place.
Coming to the RetroPie version of the same emulator, I was surprised to find that this native menu no longer existed, hence my initial confusion as to how to access the emulator’s options, and the research leading to the aforementioned information regarding RetroArch and Libretro.
In the next post I cover PlayStation emulation on the Raspberry Pi in more depth, delving into both the Libretro Options Menu, and some peculiarities in the variants of the PlayStation emulator, PCSX ReARMed, found in RetroPie and in the previously mentioned PiPlay systems.
A Labour of Love
- PlayStation Emulation on the Pi: Enhancing the Experience with the Options Menu – Part One: Basic Features and Save States
- PlayStation Emulation on the Pi: Enhancing the Experience with the Options Menu – Part Two: Graphics
- PlayStation Emulation on the Pi: Enhancing the Experience with the Options Menu – Part Three: Analogue Controllers
- What is RetroPie? System overview, software and hardware
- Links: Raspberry Pi and Gaming Emulation via RetroPie