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.