diff --git a/README.md b/README.md index cf70a956c6..d300e28dff 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,55 @@ # RetroArch -RetroArch (formerly known as SSNES) is a simple frontend for the libretro API. An API that attempts to generalize -a retro gaming system, such as SNES, NES, GameBoy, Arcade machines, etc. -Emulator/game cores are instantiated as loadable plugins. +RetroArch is the reference frontend for the libretro API, an API which attempts to generalize +a retro gaming system, such as emulators and game engines. +Popular examples include SNES, NES, GameBoy, Arcade machines, Quake, DOOM, etc. +Emulator and game cores are instantiated as dynamic libraries. -# libretro +## libretro -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. +[libretro](http://libretro.com) is an API that exposes the core of a retro gaming system. +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/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](https://github.com/Themaister/RetroArch/blob/master/libretro.h) -# Binaries +## Binaries -Latest Windows binaries are currently hosted on my [homepage](http://themaister.net/retroarch.html). +Latest Windows binaries are currently hosted on Themaister's [homepage](http://themaister.net/retroarch.html). +Builds can also be found on the [forum](http://forum.themaister.net/). -# Related projects +## Support + +To reach developers, either make an issue here on Github, make a thread on the [forum](http://forum.themaister.net/), +or visit our IRC channel: #retroarch @ irc.freenode.org. + +## Documentation + +See our [wiki](https://github.com/libretro/RetroArch/wiki). On Unix, man-pages are provided. +More developer-centric stuff is found [here](https://github.com/libretro/libretro.github.com/wiki/Documentation-devs). + +## Related projects - - 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) - Helper scripts to build libretro implementations: [libretro-super](https://github.com/libretro/libretro-super) -# Philosophy +## Philosophy -RetroArch attempts to be very small and lean, +RetroArch attempts to be 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. +It is designed to be very portable and features a gamepad-centric UI called RGUI. +It also has a full-featured command-line interface. -# Platforms +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), FFmpeg video recording, etc. + +RetroArch also emphasizes on being easy to integrate into various launcher frontends. + +## Platforms RetroArch has been ported to the following platforms outside PC: @@ -42,14 +62,14 @@ RetroArch has been ported to the following platforms outside PC: - iOS - Blackberry -# Dependencies (PC) +## Dependencies (PC) On Windows, RetroArch can run with only Win32 as dependency. On Linux, you need: - GL headers - X11 headers and libs, or EGL/KMS/GBM -OSX port of RetroArch still requires SDL 1.2 libraries. +OSX port of RetroArch requires latest versions of XCode to build. RetroArch can utilize these libraries if enabled: @@ -74,24 +94,24 @@ RetroArch needs at least one of these audio driver libraries: 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) +## Dependencies (Console ports, mobile) Console ports have their own dependencies, but generally do not require anything other than what the respective SDKs provide. -# Configuring +## Configuring -The default configuration is defined in config.def.h. -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. -Each user should create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg. -The users only need to configure a certain option if the desired value deviates from the value defined in config.def.h. +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. -To configure joypads, use the retroarch-joyconfig tool. -It is also possible to configure joypads using the RetroArch-Phoenix GUI frontend. +RetroArch will on startup create a config file in $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg if doesn't exist. +Users only need to configure a certain option if the desired value deviates from the value defined in config.def.h. -# Compiling and installing +To configure joypads, use RGUI or the retroarch-joyconfig command-line tool. + +## Compiling and installing PC
Instructions for compiling on PC can be found in the [wiki](https://github.com/Themaister/RetroArch/wiki). @@ -118,7 +138,7 @@ RetroArch PS3 needs to be compiled in the following order: PlayStation3 - Creating a PKG installable file
-You can add 'pkg' as a parameter in order to make a PKG file - for example: +You can add `pkg` as a parameter in order to make a PKG file - for example: make -f Makefile.ps3 pkg @@ -132,7 +152,7 @@ If you're using Kmeaw 3.55 firmware, the package needs to be signed: make -f Makefile.ps3 pkg-signed-cfw -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 'libretro_ps3.a'. +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 `libretro_ps3.a`. Xbox 360 (XeXDK)
@@ -142,8 +162,8 @@ The solution file can be found at the following location: msvc-360/RetroArch-360.sln -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 -called 'libretro_xdk360.lib'. +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 +called `libretro_xdk360.lib`. Xbox 360 (Libxenon)
@@ -151,7 +171,7 @@ You will need to have the libxenon libraries and a working Devkit Xenon toolchai make -f Makefile.xenon -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 'libretro_xenon360.a'. +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 `libretro_xenon360.a`. Wii
@@ -159,5 +179,5 @@ You will need to have the libogc libraries and a working Devkit PPC toolchain in make -f Makefile.wii -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 'libretro_wii.a'. +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 `libretro_wii.a`.