Skip to content

RetroArch

One front end, many emulators

RetroArch began in May 2010 as SSNES, a small front end for the Super NES emulator bsnes. In 2012 it was renamed and built around libretro, an interface that lets any emulator packaged as a 'core' share one menu, one set of controls, shaders, save states and netplay. It reached Steam in September 2021.

RetroArch is not an emulator itself. It is a front end: the menus, controls, video and sound that sit around an emulator, which RetroArch loads as a plug-in called a “core”. One program can run a Mesen core for the NES, a VICE core for the Commodore 64 and a Fuse core for the Spectrum, with the same joypad settings, the same save-state keys and the same screen filters for all of them. The interface that makes this possible is called libretro, and the two names have been tied together since 2012.

Fast facts

  • First code: 26 May 2010, as SSNES, by Hans-Kristian Arntzen (“Themaister”).
  • Renamed RetroArch: 21 April 2012, alongside the new libretro interface.
  • Licence: GNU General Public License, version 3.
  • Steam release: 14 September 2021, for Windows and Linux.
  • Runs on: Windows, macOS, Linux, Android and iOS, and consoles including the PlayStation 3, PSP, PS Vita, Wii and Wii U.

From SSNES to libretro

The project started small. Its first commit, made by Themaister on 26 May 2010 and titled “SSNES”, is a single C file. It links to libsnes, a library version of the Super NES emulator bsnes by the programmer known as byuu, and opens an OpenGL window 256 pixels wide by 224 high, the standard Super NES picture. The front end handled the window, sound and keyboard; bsnes did the emulation.

That split turned out to be the useful idea. In April 2012 the developers worked on what the commit log calls a “new libretro API”, and on 21 April a run of commits renamed the project: “SSNES => RetroArch”. The libretro documentation describes the result as “a lightweight C-based Application Programming Interface (API) that exposes generic audio, video, and input callbacks”. A core is “a program (such as a game, emulator, or media player) that has been ported to the libretro API”. Each core is a single library file. “The frontend’s responsibility is to provide all the implementation-specific details. The core’s responsibility is solely to provide the main program.”

What the front end adds

Because every core draws into RetroArch’s window and reads RetroArch’s controls, features written once work for every system:

  • Shaders. Graphical filters that, in the project’s words, “can also be used to replicate the look and feel of old CRT monitors”.
  • Netplay. Hosting or joining an online session through a lobby.
  • Achievements. Badges for classic games through the RetroAchievements service.
  • Run-ahead. Added in 2018 to cut input lag. With a single copy of the core, RetroArch runs a frame with sound and video off, saves the state, runs on to the frame it wants to show, then loads the state back. The game’s own built-in delay between a button press and the result on screen is hidden. It depends on the core’s save states working and costs extra processing.

The cores come from many places. The Amiga core, PUAE, “tries to continue where E-UAE left off” and follows WinUAE’s version numbers. The arcade cores include old versions of MAME kept for slower machines. MAME 2003 is “derived from xmame 0.78”, and “each version of an arcade emulator must be used with ROMs that have the same exact version number”. Lakka, which calls itself “the official Linux distribution of RetroArch and the libretro ecosystem”, turns a small computer into a games console built on it.

Later history

The team announced a Steam release for 30 July 2019, then postponed it to finish “infrastructure work”. In August 2020 someone “impersonating a trusted member of the team” got into the libretro GitHub organisation, “force-pushed a blank initial commit to a fair percentage of our repositories, effectively wiping them”, and crippled the build server and netplay lobby. The team said the programs it had already distributed were not affected. A rebuilt infrastructure went live on 1 January 2021.

RetroArch finally reached Steam on 14 September 2021, for Windows and Linux. Emulator cores arrived as downloadable content, starting with ten, among them Mesen, Stella, SameBoy, mGBA and Genesis Plus GX. The Steam version leaves out the built-in core downloader “to stay compliant with Valve/Steam’s Terms of Service”. Its store page states that RetroArch “does not contain any copyrighted material by third parties”: players supply their own games and system ROMs.

Sources

  • RetroArch source repository, commit history (web, secondary): the first commit “SSNES” by Themaister, 26 May 2010, and the contents of ssnes.c and its Makefile; “Work on new libretro API” and “Begin fixing up SSNES for libretro”, April 2012; “SSNES => RetroArch” and “Rename ssnes.c to retroarch.c”, 21 April 2012; the licence file (GNU GPL version 3). https://github.com/libretro/RetroArch
  • Libretro documentation, “Libretro overview” (web, secondary): the API, cores and the division of work. https://docs.libretro.com/development/libretro-overview/
  • Libretro documentation, “Run-Ahead” (web, secondary): how single-instance run-ahead works and what it needs. https://docs.libretro.com/guides/runahead/
  • Libretro documentation, core pages for VICE, Fuse, PUAE and MAME 2003 (web, secondary). https://docs.libretro.com/library/puae/ and https://docs.libretro.com/library/mame_2003/
  • RetroArch website (web, secondary): the feature descriptions, run-ahead’s introduction in 2018, and supported platforms. https://www.retroarch.com/
  • Libretro blog (web, secondary), https://www.libretro.com: “RetroArch coming to Steam this month – July 30”, 12 July 2019; “RetroArch on Steam now coming sometime soon Q3 2019!”, 25 July 2019; “Hacker vandalised our buildbot and GitHub organization”, 16 August 2020; “Our new Libretro Infrastructure is now going live”, 1 January 2021; “Lakka 3.0 released!”, 22 May 2021; “RetroArch finally released on Steam!”, 14 September 2021.
  • RetroArch store page, Steam (web, secondary): the statement about copyrighted material. https://store.steampowered.com/app/1118310/RetroArch/
  • Lakka website (web, secondary): its description of itself. https://www.lakka.tv/
  • Wikipedia, “RetroArch” (accessed September 2026) (web, secondary): Hans-Kristian Arntzen as Themaister, and libsnes as byuu’s (Near’s) work. https://en.wikipedia.org/wiki/RetroArch

See also

Checked. Verified against primary sources and signed off by a person.