Themaister's Den



RetroArch is the reference frontend for libretro for Linux, Windows, Mac OS X, *BSD, PS3, XBox360, Wii, Android, iOS, Blackberry (and more to come).

RetroArch talks to libretro, a generic API for games and emulators. This means that RetroArch is core agnostic, and it does not care which emulator core is running.

Currently there are libretro implementations for systems such as SNES, NES, GBA, GB/GBC, Genesis, and even arcade games (Final Burn Alpha).

Game cores include Quake, Cave Story, Dinothawr, etc.

Libretro implementations are maintained in the libretro organization on Github. The official home page for this project is here.

RetroArch believes in modularity. The application itself is a command-line driven application suitable for HTPC and/or headless use. There is also a GUI environment built into RetroArch, RGUI. It aims to be very minimalist and gamepad centric.

For support, you should visit the IRC channel #retroarch @, or the forum. There is also a Wiki explaining a couple of things on Github.




RetroArch is actively developed, and it is recommended to build from latest Git. Source releases are more or less arbitrary snapshots.


Binaries are now hosted on the libretro site.


RetroArch has several features not commonly found in other emulators. Some notable ones are:

Braid-style rewind

Rewind is a very powerful, and useful feature. It replaces careful save stating and reloading for beating (too) hard levels. It allows you to back up mistakes in real-time very similar to the wonderful game Braid. Here's a video showing off the feature.

Depending on the emulator core, you can rewind approx. 1 minute per 20MB RAM you give it.

Multi-pass GPU shaders

RetroArch supports use of GPU shaders for image processing. This means you can achieve far more powerful effects than old-school CPU filters allow, given constraints on processing power.

Cg shaders, GLSL shaders and XML shaders are supported.

The GPU shader implementation supports multiple passes, with arbitrary scaling factors, look-up textures, and arbitrary access to previous passes in the rendering chain.

We maintain a collection of Cg shaders in the common-shaders repository.

Multi-threaded FFmpeg recording and streaming

You can dump gameplay footage to disk in real-time using FFmpeg/libavcodec. It uses libx264/RGB and FLAC for fully lossless encoding. Due to encoding happening in a thread, there is no major speed hit. Lossy encoding and RTMP streaming is also supported. See the Wiki for more information. The lossless libx264/RGB video can be processed directly by FFmpeg and/or AVISynth to mention a few.

Audio DSP plugins

RetroArch defines a plugin API for audio DSP effects. Plugins can perform audio processing in floating point, and act as the primary resampler if desired. Care is taken to allow for GUIs in the plugin. The plugin is regularily pumped to drive a possible event loop. There is also a keybind to pop up possible GUI configuration windows.

Peer-to-peer netplay

RetroArch supports a simple, but effective netplay implementation. It employs UDP and rollback mechanics to hide latency, similar to GGPO. Due to rollback, the CPU requirements are quite high.

TTF-font on-screen display

RetroArch renders on-screen messages for status. You are not limited to one font type. ;)