2012-04-21 21:27:15 +00:00
# RetroArch
2010-12-24 01:00:13 +00:00
2012-04-22 09:59:31 +00:00
RetroArch (formerly known as SSNES) is a simple frontend for the libretro API. An API that attempts to generalize
2012-04-16 16:40:56 +00:00
a retro gaming system, such as SNES, NES, GameBoy, Arcade machines, etc.
2012-04-22 09:59:31 +00:00
Emulator/game cores are instantiated as loadable plugins.
2010-12-24 01:00:13 +00:00
2012-04-16 16:40:56 +00:00
# libretro
2010-12-24 01:00:13 +00:00
2012-04-16 16:40:56 +00:00
libretro is an API that exposes the core of a retro gaming system.
A frontend for libretro handles video output, audio output and input.
A libretro core written in portable C or C++ can run seamlessly on many platforms.
2010-12-24 01:00:13 +00:00
2012-04-22 09:59:31 +00:00
[libretro API header ](https://github.com/Themaister/RetroArch/blob/master/libretro.h )
2011-11-16 20:28:30 +00:00
# Binaries
2012-04-21 21:27:15 +00:00
Latest Windows binaries are currently hosted on my [homepage ](http://themaister.net/retroarch.html ).
2011-11-16 20:28:30 +00:00
2012-04-22 09:59:31 +00:00
# Related projects
2012-05-06 02:56:36 +00:00
- GUI frontend for PC: [RetroArch-Phoenix ](https://github.com/Themaister/RetroArch-Phoenix )
- Cg/HLSL shaders: [common-shaders ](https://github.com/twinaphex/common-shaders )
- More Cg shaders: [Emulator-Shader-Pack ](https://github.com/Themaister/Emulator-Shader-Pack )
2012-06-03 19:40:10 +00:00
- Helper scripts to build libretro implementations: [libretro-super ](https://github.com/libretro/libretro-super )
2012-04-22 09:59:31 +00:00
2010-12-24 01:00:13 +00:00
# Philosophy
2012-04-22 09:59:31 +00:00
RetroArch attempts to be very small and lean,
while still having all the useful core features expected from an emulator.
It is used through command-line. It is also designed to be portable.
2010-12-24 01:00:13 +00:00
2012-02-02 12:51:15 +00:00
# Platforms
2012-04-22 09:59:31 +00:00
RetroArch has been ported to the following platforms outside PC:
2012-02-02 12:51:15 +00:00
- PlayStation3
- Xbox 360 (Libxenon/XeXDK)
2013-03-16 11:46:15 +00:00
- Xbox 1
- Wii, Gamecube (Libogc)
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
2012-04-16 16:52:14 +00:00
# Dependencies (PC)
2010-12-24 01:00:13 +00:00
2013-03-16 11:46:15 +00:00
On Windows, RetroArch can run with only Win32 as dependency. On Linux, you need:
2010-12-24 01:00:13 +00:00
2013-03-16 11:46:15 +00:00
- GL headers
- X11 headers and libs, or EGL/KMS/GBM
OSX port of RetroArch still requires SDL 1.2 libraries.
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
2012-04-21 21:27:15 +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-03-16 11:46:15 +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.
2010-12-24 01:00:13 +00:00
# Configuring
2011-01-01 15:03:15 +00:00
The default configuration is defined in config.def.h.
2012-04-16 16:40:56 +00:00
These can later be tweaked by using a config file.
2012-04-22 16:05:08 +00:00
A sample configuration file is installed to /etc/retroarch.cfg.
2011-01-01 15:03:15 +00:00
This is the system-wide config file.
2012-04-30 20:01:56 +00:00
Each user should create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg.
2011-01-01 15:03:15 +00:00
The 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
2012-04-30 20:01:56 +00:00
To configure joypads, use the < tt > retroarch-joyconfig< / tt > tool.
It is also possible to configure joypads using the RetroArch-Phoenix GUI frontend.
2010-12-24 01:00:13 +00:00
# Compiling and installing
2012-05-06 11:01:19 +00:00
< b > PC< / b > < br / >
Instructions for compiling on PC can be found in the [wiki ](https://github.com/Themaister/RetroArch/wiki ).
2012-02-02 12:45:59 +00:00
< b > PlayStation3< / b > < br / >
2012-05-06 02:56:36 +00:00
RetroArch PS3 needs to be compiled in the following order:
1) Compile RetroArch Salamander
2012-05-06 03:00:11 +00:00
< tt > make -f Makefile.ps3.salamander< / tt >
2012-05-06 02:56:36 +00:00
2) Compile the RGL video driver
< tt > make -f Makefile.ps3.rgl< / tt >
2012-06-20 06:25:23 +00:00
3) Compile RetroArch as a library
< tt > make -f Makefile.ps3.retroarch< / tt >
4) Finally, compile RetroArch packed together with the GUI:
2012-05-06 02:56:36 +00:00
2012-02-02 12:45:59 +00:00
< tt > make -f Makefile.ps3< / tt >
2012-06-24 11:38:06 +00:00
< b > PlayStation3 - Creating a PKG installable file< / b > < br / >
You can add 'pkg' as a parameter in order to make a PKG file - for example:
2012-05-06 02:56:36 +00:00
< tt > make -f Makefile.ps3 pkg< / tt >
This creates an NPDRM package. This can be installed on debug PS3s.
To make a non-NPDRM package that can be installed on a jailbroken/CFW PS3 (such as PSGroove or PS3 CFWs and other 3.55 CFW derivatives), do:
< tt > make -f Makefile.ps3 pkg-signed< / tt >
If you're using Kmeaw 3.55 firmware, the package needs to be signed:
< tt > make -f Makefile.ps3 pkg-signed-cfw< / tt >
2012-02-02 12:45:59 +00:00
2012-06-30 14:41:35 +00:00
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch PS3. This file needs to be called < em > < b > 'libretro_ps3.a'< / b > < / em > .
2012-02-02 12:45:59 +00:00
< b > Xbox 360 (XeXDK)< / b > < br / >
2012-04-21 21:27:15 +00:00
You will need Microsoft Visual Studio 2010 installed (or higher) in order to compile RetroArch 360.
2012-02-02 12:45:59 +00:00
The solution file can be found at the following location:
2012-05-07 15:00:39 +00:00
< tt > msvc-360/RetroArch-360.sln< / tt >
2012-02-02 12:45:59 +00:00
2012-05-07 15:00:39 +00:00
NOTE: A pre-existing libretro library needs to be present in the 'msvc-360/RetroArch-360/Release' directory in order to link RetroArch 360. This file needs to be
2012-06-30 14:41:35 +00:00
called < em > < b > 'libretro_xdk360.lib'< / b > < / em > .
2012-02-02 12:45:59 +00:00
< b > Xbox 360 (Libxenon)< / b > < br / >
2012-04-21 21:27:15 +00:00
You will need to have the libxenon libraries and a working Devkit Xenon toolchain installed in order to compile RetroArch 360 Libxenon.
2012-02-02 12:45:59 +00:00
< tt > make -f Makefile.xenon< / tt >
2012-06-30 14:41:35 +00:00
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch 360 Libxenon. This file needs to be called < em > < b > 'libretro_xenon360.a'< / b > < / em > .
2010-12-24 01:00:13 +00:00
2012-02-02 12:51:15 +00:00
< b > Wii< / b > < br >
2012-04-21 21:27:15 +00:00
You will need to have the libogc libraries and a working Devkit PPC toolchain installed in order to compile RetroArch Wii.
2012-02-02 12:51:15 +00:00
< tt > make -f Makefile.wii< / tt >
2012-06-30 14:41:35 +00:00
NOTE: A pre-existing libretro library needs to be present in the root directory in order to link RetroArch Wii. This file needs to be called < em > < b > 'libretro_wii.a'< / b > < / em > .
2012-02-02 12:51:15 +00:00