2016-09-06 03:34:03 +00:00
|
|
|
[![Build Status](https://travis-ci.org/libretro/RetroArch.svg?branch=master)](https://travis-ci.org/libretro/RetroArch)
|
2016-12-10 21:02:39 +00:00
|
|
|
[![Coverity Scan Build Status](https://scan.coverity.com/projects/8936/badge.svg)](https://scan.coverity.com/projects/retroarch)
|
2016-09-06 03:34:03 +00:00
|
|
|
|
2012-04-21 21:27:15 +00:00
|
|
|
# RetroArch
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2013-11-26 22:09:12 +00:00
|
|
|
RetroArch is the reference frontend for the libretro API.
|
2018-03-20 07:54:23 +00:00
|
|
|
Popular examples of implementations for this API includes videogame system emulators and game engines as well as
|
2013-11-26 22:09:12 +00:00
|
|
|
more generalized 3D programs.
|
|
|
|
These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2017-08-26 09:26:18 +00:00
|
|
|
![XMB menu driver](http://i.imgur.com/BMR1xxr.png "XMB menu driver")
|
|
|
|
|
|
|
|
![rgui menu driver](http://i.imgur.com/X3CbBKa.png "rgui menu driver")
|
|
|
|
|
|
|
|
![glui menu driver](http://i.imgur.com/ooqv8rw.png "glui menu driver")
|
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## libretro
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2013-11-26 22:09:12 +00:00
|
|
|
[libretro](http://libretro.com) is an API that exposes generic audio/video/input callbacks.
|
2013-10-02 08:54:03 +00:00
|
|
|
A frontend for libretro (such as RetroArch) handles video output, audio output, input and application lifecycle.
|
2018-03-20 07:54:23 +00:00
|
|
|
A libretro core written in portable C or C++ can run seamlessly on many platforms with very little to no porting effort.
|
2013-10-02 08:54:03 +00:00
|
|
|
|
|
|
|
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.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2016-06-12 18:44:55 +00:00
|
|
|
[libretro API header](https://github.com/libretro/RetroArch/blob/master/libretro-common/include/libretro.h)
|
2012-04-22 09:59:31 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Binaries
|
|
|
|
|
2016-12-10 20:33:15 +00:00
|
|
|
Latest Windows binaries are currently hosted on the [buildbot](http://buildbot.libretro.com/).
|
2013-10-02 08:54:03 +00:00
|
|
|
|
|
|
|
## Support
|
|
|
|
|
2016-12-10 20:33:15 +00:00
|
|
|
To reach developers, either make an issue here on GitHub, make a thread on the [forum](http://www.libretro.com/forums/),
|
2013-10-02 08:54:03 +00:00
|
|
|
or visit our IRC channel: #retroarch @ irc.freenode.org.
|
2011-11-16 20:28:30 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Documentation
|
2011-11-16 20:28:30 +00:00
|
|
|
|
2017-10-30 05:06:05 +00:00
|
|
|
See our [Documentation Center](https://docs.libretro.com/). On Unix, man-pages are provided.
|
2013-10-02 08:54:03 +00:00
|
|
|
More developer-centric stuff is found [here](https://github.com/libretro/libretro.github.com/wiki/Documentation-devs).
|
|
|
|
|
|
|
|
## Related projects
|
2012-04-22 09:59:31 +00:00
|
|
|
|
2014-12-25 23:13:30 +00:00
|
|
|
- Cg/HLSL shaders: [common-shaders](https://github.com/libretro/common-shaders)
|
2017-10-30 02:34:43 +00:00
|
|
|
- slang shaders: [slang-shaders](https://github.com/libretro/slang-shaders)
|
|
|
|
- GLSL shaders: [glsl-shaders](https://github.com/libretro/glsl-shaders)
|
2012-06-03 19:40:10 +00:00
|
|
|
- Helper scripts to build libretro implementations: [libretro-super](https://github.com/libretro/libretro-super)
|
2017-10-30 05:06:05 +00:00
|
|
|
- GitHub mirrors of projects, useful for generating diff files: [libretro-mirrors](https://github.com/libretro-mirrors/)
|
2012-04-22 09:59:31 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Philosophy
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2018-03-20 07:54:23 +00:00
|
|
|
RetroArch attempts to be small and lean
|
2015-02-13 21:24:21 +00:00
|
|
|
while still having all the useful core features expected from an emulator.
|
2014-06-10 00:44:19 +00:00
|
|
|
It is designed to be very portable and features a gamepad-centric UI.
|
2013-10-02 08:54:03 +00:00
|
|
|
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,
|
2014-08-12 03:28:43 +00:00
|
|
|
real-time rewind (Braid-style), video recording (using FFmpeg), etc.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
RetroArch also emphasizes on being easy to integrate into various launcher frontends.
|
|
|
|
|
|
|
|
## Platforms
|
2012-02-02 12:51:15 +00:00
|
|
|
|
2017-10-30 05:06:20 +00:00
|
|
|
RetroArch has been ported to the following platforms:
|
2012-02-02 12:51:15 +00:00
|
|
|
|
2017-12-25 02:47:40 +00:00
|
|
|
- DOS
|
2017-10-30 05:06:20 +00:00
|
|
|
- Windows
|
|
|
|
- Linux
|
2018-01-03 03:49:46 +00:00
|
|
|
- Emscripten
|
2017-11-01 04:49:41 +00:00
|
|
|
- FreeBSD
|
2017-11-06 17:03:33 +00:00
|
|
|
- NetBSD
|
2018-01-03 03:49:46 +00:00
|
|
|
- OpenBSD
|
|
|
|
- Haiku
|
2018-01-21 19:48:11 +00:00
|
|
|
- Solaris
|
2018-01-03 03:49:46 +00:00
|
|
|
- MacOS X
|
2016-12-10 18:47:29 +00:00
|
|
|
- PlayStation 3
|
2017-10-30 02:34:43 +00:00
|
|
|
- PlayStation Portable
|
2018-01-03 03:49:46 +00:00
|
|
|
- PlayStation Vita
|
|
|
|
- Original Microsoft Xbox
|
|
|
|
- Microsoft Xbox 360 (Libxenon/XeXDK)
|
|
|
|
- Nintendo Wii, GameCube (Libogc)
|
|
|
|
- Nintendo WiiU
|
2016-02-24 17:52:33 +00:00
|
|
|
- Nintendo 3DS
|
2018-01-03 03:49:46 +00:00
|
|
|
- Nintendo Switch
|
2012-06-19 21:57:46 +00:00
|
|
|
- Raspberry Pi
|
2013-03-16 11:46:15 +00:00
|
|
|
- Android
|
|
|
|
- iOS
|
2013-03-22 13:52:25 +00:00
|
|
|
- Blackberry
|
2012-02-02 12:51:15 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Dependencies (PC)
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2016-02-24 17:52:33 +00:00
|
|
|
There are no true hard dependencies per se.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2016-02-24 17:52:33 +00:00
|
|
|
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
|
2013-03-16 11:46:15 +00:00
|
|
|
- X11 headers and libs, or EGL/KMS/GBM
|
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
OSX port of RetroArch requires latest versions of XCode to build.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2012-04-21 21:27:15 +00:00
|
|
|
RetroArch can utilize these libraries if enabled:
|
2010-12-24 01:00:13 +00:00
|
|
|
|
|
|
|
- nvidia-cg-toolkit
|
2013-01-07 16:07:21 +00:00
|
|
|
- libxml2 (GLSL XML shaders)
|
2011-01-25 12:24:51 +00:00
|
|
|
- libfreetype2 (TTF font rendering on screen)
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2012-04-21 21:27:15 +00:00
|
|
|
RetroArch needs at least one of these audio driver libraries:
|
2010-12-24 01:00:13 +00:00
|
|
|
|
|
|
|
- ALSA
|
|
|
|
- OSS
|
|
|
|
- RoarAudio
|
|
|
|
- RSound
|
|
|
|
- OpenAL
|
2011-01-01 15:03:15 +00:00
|
|
|
- JACK
|
2011-01-25 12:24:51 +00:00
|
|
|
- SDL
|
2011-01-29 00:15:09 +00:00
|
|
|
- PulseAudio
|
2013-03-22 13:52:55 +00:00
|
|
|
- XAudio2 (Win32, Xbox 360)
|
2013-03-22 13:52:25 +00:00
|
|
|
- DirectSound (Win32, Xbox 1)
|
2013-03-16 11:46:15 +00:00
|
|
|
- CoreAudio (OSX, iOS)
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2018-03-20 07:54:23 +00:00
|
|
|
To run properly, RetroArch requires a libretro implementation present; however, as it's typically loaded
|
2012-04-16 16:40:56 +00:00
|
|
|
dynamically, it's not required at build time.
|
2010-12-24 01:10:47 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Dependencies (Console ports, mobile)
|
2012-04-16 16:52:14 +00:00
|
|
|
|
|
|
|
Console ports have their own dependencies, but generally do not require
|
|
|
|
anything other than what the respective SDKs provide.
|
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Configuring
|
|
|
|
|
2018-03-20 07:54:23 +00:00
|
|
|
The default configuration is defined in `config.def.h`.
|
2013-10-02 08:54:03 +00:00
|
|
|
It is not recommended to change this unless you know what you're doing.
|
|
|
|
These can later be tweaked by using a config file.
|
2018-03-20 07:54:23 +00:00
|
|
|
A sample configuration file is installed to `/etc/retroarch.cfg`. This is the system-wide config file.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2018-03-20 07:54:23 +00:00
|
|
|
RetroArch will on startup create a config file in `$XDG\_CONFIG\_HOME/retroarch/retroarch.cfg` if it does not exist.
|
2013-10-02 08:54:03 +00:00
|
|
|
Users only need to configure a certain option if the desired value deviates from the value defined in config.def.h.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2016-12-10 21:02:39 +00:00
|
|
|
To configure joypads, use the built-in menu or the `retroarch-joyconfig` command-line tool.
|
2010-12-24 01:00:13 +00:00
|
|
|
|
2013-10-02 08:54:03 +00:00
|
|
|
## Compiling and installing
|
2016-12-11 19:55:31 +00:00
|
|
|
|
2017-10-30 05:06:05 +00:00
|
|
|
Instructions for compiling and installing RetroArch can be found in the [Libretro/RetroArch Documentation Center](https://docs.libretro.com/).
|