• Stars
    star
    10,167
  • Rank 3,421 (Top 0.07 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 14 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

Build Status Coverity Scan Build Status Crowdin

RetroArch

RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulators and game engines as well as more generalized 3D programs. These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".

XMB menu driver

rgui menu driver

glui menu driver

ozone menu driver

libretro

libretro is an API that exposes generic audio/video/input callbacks. A frontend for libretro (such as RetroArch) handles video output, audio output, input and application lifecycle. A libretro core written in portable C or C++ can run seamlessly on many platforms with very little to no porting effort.

While RetroArch is the reference frontend for libretro, several other projects have used the libretro interface to include support for emulators and/or game engines. libretro is completely open and free for anyone to use.

libretro API header

Binaries

Latest binaries are currently hosted on the buildbot.

Support

To reach developers, either make an issue here on GitHub, make a thread on the forum, chat on discord, or visit our IRC channel: #retroarch @ irc.freenode.org. You could create a post in Reddit with Technical Support flair.

Documentation

See our Documentation Center. On Unix, man-pages are provided. More developer-centric stuff is found here.

Related projects

Philosophy

RetroArch attempts to be small and lean while still having all the useful core features expected from an emulator. It is designed to be very portable and features a gamepad-centric and touchscreen UI. It also has a full-featured command-line interface.

In some areas, RetroArch goes beyond and emphasizes on not-so-common technical features such as multi-pass shader support, real-time rewind (Braid-style), video recording (using FFmpeg), run-ahead input latency removal, etc.

RetroArch also emphasizes being easy to integrate into various launcher frontends.

Platforms

RetroArch has been ported to the following platforms:

  • Android (2.x to most recent version)
  • Apple iOS
  • Apple macOS (PPC, x86-32 and x86-64)
  • Apple tvOS
  • Blackberry
  • DOS
  • Emscripten (WebAssembly and JavaScript)
  • FreeBSD
  • Haiku
  • Linux
  • Microsoft Xbox 360 (Libxenon/XeXDK)
  • Microsoft Xbox One
  • Microsoft Xbox Series S/X
  • Miyoo
  • NetBSD
  • Nintendo 3DS/2DS
  • Nintendo GameCube
  • Nintendo NES/SNES Classic Edition
  • Nintendo Switch
  • Nintendo Wii
  • Nintendo Wii U
  • OpenBSD
  • OpenDingux
  • Original Microsoft Xbox
  • PlayStation2
  • PlayStation3
  • PlayStation4
  • PlayStation Portable
  • PlayStation Vita
  • Raspberry Pi
  • ReactOS
  • RetroFW
  • RS90
  • SerenityOS
  • Solaris
  • Windows 10
  • Windows 11
  • Windows 2000
  • Windows 7
  • Windows 8
  • Windows 95
  • Windows 98
  • Windows Millennium
  • Windows NT 3.5
  • Windows Vista
  • Windows XP

Dependencies (PC)

There are no true hard dependencies per se.

On Windows, RetroArch can run with only Win32 as dependency.

On Linux, there are no true dependencies. For optimal usage, the following dependencies come as recommended:

  • GL headers / Vulkan headers
  • X11 headers and libs, or EGL/KMS/GBM

OSX port of RetroArch requires latest versions of XCode to build.

RetroArch can utilize these libraries if enabled:

  • nvidia-cg-toolkit
  • libfreetype2 (TTF font rendering on screen)

RetroArch needs at least one of these audio driver libraries:

  • ALSA
  • OSS
  • RoarAudio
  • RSound
  • OpenAL
  • JACK
  • SDL
  • PulseAudio
  • XAudio2 (Win32, Xbox 360)
  • DirectSound (Win32, Xbox 1)
  • CoreAudio (OSX, iOS)

To run properly, RetroArch requires a libretro implementation present; however, as it's typically loaded dynamically, it's not required at build time.

Dependencies (Console ports, mobile)

Console ports have their own dependencies, but generally do not require anything other than what the respective SDKs provide.

Requirements

OpenGL1

Your videocard needs to at least support the OpenGL 1.1 spec.

Shaders: N/A

Menu driver support: MaterialUI, XMB, Ozone and RGUI should all work correctly. XMB won't have shader pipeline effects because of the aforementioned lack of shader support.

OpenGL2

Your videocard needs to at least support the OpenGL 2.1 spec.

Shaders: You can choose between either NVIDIA Cg shaders (deprecated, requires separate runtime to be installed on your system), or GLSL shaders.

Menu driver support: MaterialUI, XMB, Ozone and RGUI should all work correctly.

OpenGL3

Your videocard needs to at least support the OpenGL 3.2 core feature spec.

Shaders: You will be able to use modern Slang shaders with this driver.

Menu driver support: MaterialUI, XMB, Ozone and RGUI should all work correctly.

Direct3D 11

Your videocard needs to at least support the Direct3D11 11.0 spec. The card also needs to support at least the Shader Model 4.0.

Shaders: You will be able to use modern Slang shaders with this driver.

Menu driver support: MaterialUI, XMB, Ozone and RGUI should all work correctly.

Vulkan

Your videocard needs to at least support the Vulkan 1.0 spec.

Shaders: You will be able to use modern Slang shaders with this driver.

Menu driver support: MaterialUI, XMB, Ozone and RGUI should all work correctly.

Configuring

The default configuration is defined in config.def.h. It is not recommended to change this unless you know what you're doing. These can later be tweaked by using a config file. A sample configuration file is installed to /etc/retroarch.cfg. This is the system-wide config file.

RetroArch will on startup create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg if it does not exist. Users only need to configure a certain option if the desired value deviates from the value defined in config.def.h.

To configure joypads, use the built-in menu or manually configure them in retroarch.cfg.

Compiling and installing

Instructions for compiling and installing RetroArch can be found in the Libretro/RetroArch Documentation Center.

CRT 15Khz Resolution Switching

CRT SwitchRes will turn on, on the fly. However, you will need to restart RetroArch to disable it. With CRT SwitchRes enable RetroArch will start in 2560 x 480 @ 60.

If you are running Windows, before enabling the CRT SwitchRes options please make sure you have installed CRTEmudriver and installed some modelines. The minimum modelines for all games to switch correctly are:

  • 2560 x 192 @ 60.000000
  • 2560 x 200 @ 60.000000
  • 2560 x 240 @ 60.000000
  • 2560 x 224 @ 60.000000
  • 2560 x 237 @ 60.000000
  • 2560 x 256 @ 50.000000
  • 2560 x 254 @ 55.000000
  • 2560 x 448 @ 60.000000
  • 2560 x 480 @ 60.000000

Install these modelines replacing 2560 with your desired super resolution. The above resolutions are NTSC only so if you would be playing any PAL content please add PAL modelines:

  • 2560 x 192 @ 50.000000
  • 2560 x 200 @ 50.000000
  • 2560 x 240 @ 50.000000
  • 2560 x 224 @ 50.000000
  • 2560 x 288 @ 50.000000
  • 2560 x 237 @ 50.000000
  • 2560 x 254 @ 55.000000
  • 2560 x 448 @ 50.000000
  • 2560 x 480 @ 50.000000

Some games will require higher PAL resolutions which should also be installed:

  • 2560 x 512 @ 50.000000
  • 2560 x 576 @ 50.000000

Ideally install all these modelines and everything will work great.

Super Resolutions

The default super resolution is 2560. It is displayed just under the CRT switch option, which can be found in video settings. This can be changed within the retroarch.cfg. The only compatible resolutions are 1920, 2560 and 3840. Any other resolutions will be ignored and native switching will be activated.

Native Resolutions

If native resolutions are activated you will need a whole new set of modelines:

  • 256 x 240 @ 50.006977 SNESpal

  • 256 x 448 @ 50.006977 SNESpal

  • 512 x 224 @ 50.006977 SNESpal

  • 512 x 240 @ 50.006977 SNESpal

  • 512 x 448 @ 50.006977 SNESpal

  • 256 x 240 @ 60.098812 SNESntsc

  • 256 x 448 @ 60.098812 SNESntsc

  • 512 x 240 @ 60.098812 SNESntsc

  • 512 x 224 @ 60.098812 SNESntsc

  • 512 x 448 @ 60.098812 SNESntsc

  • 256 x 192 @ 59.922745 MDntsc

  • 256 x 224 @ 59.922745 MDntsc

  • 320 x 224 @ 59.922745 MDntsc

  • 320 x 240 @ 59.922745 MDntsc

  • 320 x 448 @ 59.922745 MDntsc

  • 320 x 480 @ 59.922745 MDntsc

  • 256 x 192 @ 49.701458 MDpal

  • 256 x 224 @ 49.701458 MDpal

  • 320 x 224 @ 49.701458 MDpal

  • 320 x 240 @ 49.701458 MDpal

  • 320 x 288 @ 49.701458 MDpal

  • 320 x 448 @ 49.701458 MDpal

  • 320 x 480 @ 49.701458 MDpal

  • 320 x 576 @ 49.701458 MDpal

  • 256 x 288 @ 49.701458 MSYSpal

  • 256 x 240 @ 60.098812 NESntsc

  • 256 x 240 @ 50.006977 NESpal

  • 640 x 237 @ 60.130001 N64ntsc

  • 640 x 240 @ 60.130001 N64ntsc

  • 640 x 480 @ 60.130001 N64ntsc

  • 640 x 288 @ 50.000000 N64pal

  • 640 x 480 @ 50.000000 N64pal

  • 640 x 576 @ 50.000000 N64pal

  • 256 x 252 @ 49.759998 PSXpal

  • 320 x 252 @ 49.759998 PSXpal

  • 384 x 252 @ 49.759998 PSXpal

  • 640 x 252 @ 49.759998 PSXpal

  • 640 x 540 @ 49.759998 PSXpal

  • 384 x 240 @ 59.941002 PSXntsc

  • 256 x 480 @ 59.941002 PSXntsc

  • 352 x 240 @ 59.820000 Saturn/SGFX_NTSCp

  • 704 x 240 @ 59.820000 SaturnNTSCp

  • 352 x 480 @ 59.820000 SaturnNTSCi

  • 704 x 480 @ 59.820000 SaturnNTSCi

  • 352 x 288 @ 49.701458 SaturnPALp

  • 704 x 288 @ 49.701458 SaturnPALp

  • 352 x 576 @ 49.701458 SaturnPALi

  • 704 x 576 @ 49.701458 SaturnPALi

  • 240 x 160 @ 59.730000 GBA

  • 320 x 200 @ 60.000000 Doom

// Arcade

  • 400 x 254 @ 54.706841 MK
  • 384 x 224 @ 59.637405 CPS1

These modelines are more accurate giving exact hz. However, some games may have unwanted results. This is due to mid-scanline resolution changes on the original hardware. For the best results super resolutions are the way to go.

CRT resolution switching & MAME

Some arcade resolutions can be very different from consumer CRTs. There is resolution detection to ensure MAME games will be displayed in the closest available resolution but drawn at their native resolution within this resolution. Meaning that the MAME game will look just like the original hardware.

MAME ROMs that run in a vertical aspect like DoDonPachi need to be rotated within MAME before resolution switching and aspect correction will work. Do this before enabling CRT SwitchRes so that RetroArch will run in your desktop resolution. Once you have rotated any games that may need it turn CRT SwitchRes on.

Socials

The links below belong to our official channels. Links other than this may have been created by fans, independent members or followers. We seriously recommend using our original resources.

More Repositories

1

Lakka-LibreELEC

Lakka is a lightweight Linux distribution that transforms a small computer into a full blown game console.
Makefile
1,741
star
2

common-shaders

Collection of commonly used Cg shaders. These shaders are usable by either HLSL and/or Cg runtime compilers. The cg2glsl script will translate most of these into GLSL shaders.
C
1,011
star
3

glsl-shaders

This repo is for glsl shaders converted by hand from libretro's common-shaders repo, since some don't play nicely with the cg2glsl script.
GLSL
824
star
4

libretro-database

Repository containing cheatcode files, content data files, etc.
Python
680
star
5

ludo

A libretro frontend written in golang
Go
590
star
6

libretro-super

Super repo for other libretro projects. Fetches, builds and installs.
Shell
401
star
7

libretro-thumbnails

Boxarts, titlescreen, and in-game screenshots for the no-intro DATs used by RetroArch
311
star
8

beetle-psx-libretro

Standalone port/fork of Mednafen PSX to the Libretro API.
C
307
star
9

parallel-n64

Optimized/rewritten Nintendo 64 emulator made specifically for Libretro. Originally based on Mupen64 Plus.
C++
272
star
10

retroarch-joypad-autoconfig

RetroArch joypad autoconfig files
Ruby
258
star
11

docs

This is a repo of the RetroArch official document page.
TeX
255
star
12

mame2003-plus-libretro

Updated 2018 version of MAME (0.78) for libretro. with added game support plus many fixes and improvements
C
188
star
13

retroarch-assets

Assets needed for RetroArch - e.g. menu drivers, etc. Also contains the official branding.
Shell
170
star
14

mupen64plus-libretro-nx

Improved mupen64plus libretro core reimplementation
C
169
star
15

LRPS2

C
168
star
16

libretro-lutro

An experimental lua game framework for libretro following the LÖVE API
C
133
star
17

libretro-common

Reusable coding blocks useful for libretro core and frontend development, written primarily in C. Permissively licensed.
C
122
star
18

swanstation

C++
122
star
19

libretro-uae

PUAE libretro
C
115
star
20

libretro-fceumm

FCEUmm libretro port.
C
107
star
21

snes9x2010

Snes9x 2010. Port of Snes9x 1.52+ to Libretro (previously called SNES9x Next). Rewritten in C and several optimizations and speedhacks.
C
95
star
22

common-overlays

Collection of overlay files for use with libretro frontends, such as RetroArch.
Shell
91
star
23

mame2003-libretro

MAME 0.78 for libretro. Compatible with MAME 0.78 sets.
C
90
star
24

gambatte-libretro

Hard fork of Gambatte to the libretro API.
C
87
star
25

nxengine-libretro

Port of NxEngine to the libretro API. NXEngine is a Cave Story game engine clone
C
81
star
26

vba-next

Optimized port of VBA-M to Libretro.
C
79
star
27

overlay-borders

A place for collecting decorative/cosmetic overlays for use with RetroArch.
67
star
28

libretro-prboom

Port of prboom to libretro - plays Doom, Doom II, Final Doom and other Doom IWAD mods.
C++
62
star
29

libretro-chailove

❤️ 2D Game Framework with ChaiScript
C++
61
star
30

neocd_libretro

Neo Geo CD emulator for libretro
C++
61
star
31

dosbox-libretro

Port of DOSBox (upstream) to the libretro API.
C++
57
star
32

libretro-samples

A set of samples to illustrate libretro API.
C
57
star
33

libretro-core-info

Mirror of libretro's core info files. Submit changes to libretro-super instead.
Makefile
57
star
34

blastem

Upstream tracking repo of BlastEm, the fast and accurate Genesis emulator, with libretro specific changes
C
51
star
35

opera-libretro

Port of 4DO/libfreedo to libretro.
C
48
star
36

arcade-overlays

Pawn
39
star
37

bsnes-mercury

Fork of bsnes with various performance improvements.
C++
39
star
38

blueMSX-libretro

Port of blueMSX to the libretro API.
C
39
star
39

nestopia

Nestopia emulator with libretro interface
C++
37
star
40

LudOS

Just enough OS for libretro using the Ludo frontend on a LibreELEC 9.2 base
Makefile
37
star
41

tyrquake

Libretro port of Tyrquake (Quake 1 engine)
C
36
star
42

fuse-libretro

A port of the Fuse Unix Spectrum Emulator to libretro
C
35
star
43

snes9x2002

Snes9x 2002. Port of SNES9x 1.39 for libretro (was previously called PocketSNES). Heavily optimized for ARM.
C
34
star
44

mame2000-libretro

2000 version of MAME (0.37b5) for libretro. Compatible with iMAME4All/MAME4Droid/MAME 0.37b5 sets.
C
34
star
45

desmume2015

Port of Desmume to libretro based on Desmume SVN circa 2015.
C++
30
star
46

mame2010-libretro

Late 2010 version of MAME (0.139) for libretro. Compatible with MAME 0.139 sets.
C
30
star
47

libretro.github.com

HTML
29
star
48

fbalpha2012

Final Burn Alpha 2012. Port of Final Burn Alpha to Libretro (0.2.97.24).
C++
29
star
49

gw-libretro

A libretro core for Game & Watch simulators
C
28
star
50

virtualjaguar-libretro

Hard fork of Virtual Jaguar (abandoned project) to Libretro
C
28
star
51

FreeIntv

A libretro emulation core for the Mattel Intellivision designed to be compatible with joypads from the SNES era forward
Assembly
26
star
52

mame2016-libretro

Late 2016 version of MAME (0.174) for libretro. Compatible with MAME 0.174 sets.
C++
26
star
53

fmsx-libretro

Port of fMSX to the libretro API.
C
25
star
54

shader-previews

A repo to store thumbnail previews for RetroArch's many shaders.
24
star
55

beetle-pce-fast-libretro

Standalone fork of Mednafen PCE Fast to libretro
C
24
star
56

tgbdual-libretro

libretro port of TGB Dual
C
23
star
57

hatari

New rebasing of Hatari based on Mercurial upstream. Tries to be a shallow fork for easy upstreaming later on.
C
23
star
58

vbam-libretro

A fork of VBA-M with libretro integration
C++
22
star
59

stella2014-libretro

Port of Stella to libretro.
C++
22
star
60

parallel-rsp

C
21
star
61

libretro-cap32

caprice32 4.2.0 libretro
C
21
star
62

PokeMini

Obscure nintendo handheld emulator
C
20
star
63

beetle-vb-libretro

Standalone hard fork of Mednafen VB to libretro.
C
19
star
64

beetle-pce-libretro

Standalone hard fork of Mednafen PCE to libretro
C
18
star
65

beetle-supergrafx-libretro

Standalone port of Mednafen PCE Fast to libretro. This one only emulates a SuperGrafx TG-16.
C
18
star
66

ecwolf

Libretro port of ECWolf
C++
18
star
67

81-libretro

A port of the EightyOne ZX81 Emulator to libretro
C
18
star
68

beetle-wswan-libretro

Standalone hard fork of Mednafen WonderSwan to libretro, itself a fork of Cygne
C
17
star
69

lutro-platformer

A platform game demo for libretro-lutro
Lua
16
star
70

Genesis-Plus-GX-Wide

Widescreen modification of Genesis Plus GX
C
16
star
71

mame2015-libretro

Late 2014/Early 2015 version of MAME (0.160-ish) for libretro. Compatible with MAME 0.160 sets.
C
16
star
72

libretro-2048

Port of 2048 puzzle game to the libretro API. http://gabrielecirulli.github.io/2048/
C
15
star
73

REminiscence

Flashback engine reimplementation
C++
15
star
74

libretro-mpv

mpv media player libretro core
C
15
star
75

pcsx_rearmed_switch

PCSX ReARMed specifically for Switch right now. Separate repo might go away later.
C
15
star
76

go-nanoarch

Minimal libretro frontend written in golang
C
14
star
77

retroarch-snap

RetroArch snap package
Shell
14
star
78

fceu-next

Port of FCEUmm / FCEUX to Libretro.
C
13
star
79

libretro-content

Content provided through the Content Downloader.
Makefile
13
star
80

prosystem-libretro

Port of ProSystem to the libretro API.
C
12
star
81

daphne

C
11
star
82

netplay-lobby-server-go

Netplay lobby server implemented in GO.
Go
11
star
83

arduous

C
11
star
84

libretro-handy

K. Wilkins' Atari Lynx emulator Handy (http://handy.sourceforge.net/) for libretro
C
11
star
85

libretro-gme

Port of blargg's Game_Music_Emu library
C
11
star
86

libretro-o2em

Port of O2EM to the libretro API, an Odyssey 2 / VideoPac emulator.
C
11
star
87

bsnes-libretro-cplusplus98

libretro implementation of the core emulation in BSNES, a Super Nintendo (SNES) emulator.
C++
11
star
88

pcsx1-libretro

PCSX1 rewritten for libretro only.
C
10
star
89

atv_menu

Android TV menu driver for RetroArch
C++
10
star
90

bsnes2014

Libretro fork of bsnes. As close to upstream as possible.
C++
9
star
91

bnes-libretro

libretro implementation of bNES
C++
9
star
92

desmume2014

Port of Desmume to libretro based on Desmume SVN circa 2015.
C++
9
star
93

fbalpha2012_neogeo

Final Burn Alpha 2012. Port of Final Burn Alpha to Libretro (0.2.97.24). Standalone core for Neo Geo.
C
9
star
94

minibrowser

C
8
star
95

beetle-ngp-libretro

Standalone port of Mednafen NGP to the libretro API, itself a fork of Neopop.
C
8
star
96

netplay-mitm-server

C++
8
star
97

smsplus-gx

Improved port of SMSPlus-GX by gameblabla for libretro
C
8
star
98

paraLLeXT

Rebased parallel build.
C
8
star
99

lutro-status

Compare Lutro's API to the LOVE API, written by @Feufochmar
Lua
8
star
100

libretro-directxbox

C
8
star