Difference between revisions of "RetroArch"
(Undo revision 20028 by LilShootDawg (talk) Not only later, but it has been released now.) |
m (Changed protection level for "RetroArch" ([Move=Allow only administrators] (indefinite))) |
||
(19 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{Infobox software | {{Infobox software | ||
− | |logo = | + | |logo = Retroarch.png |
|developer = Squarepusher, themaister, others | |developer = Squarepusher, themaister, others | ||
|version = {{RetroArchVer}} | |version = {{RetroArchVer}} | ||
|active = Yes | |active = Yes | ||
− | |platform = | + | |platform = Windows, macOS, Linux, [[Android emulators|Android]], [[iOS emulators|iOS]] (jailbroken), Raspberry Pi, OpenPandora, [[PlayStation 2 emulators|PlayStation 2]], [[PlayStation 3 emulators|PlayStation 3]], [[PlayStation Portable emulators|PlayStation Portable]], [[PlayStation Vita emulators|PlayStation Vita/TV]], [[Xbox emulators|Xbox]], [[Xbox 360 emulators|Xbox 360]], [[Xbox One emulators|Xbox One]], [[GameCube emulators|GameCube]], [[Wii emulators|Wii]], [[Wii U emulators|Wii U]], [[Nintendo Switch emulators|Nintendo Switch]], [[Nintendo 3DS emulators|Nintendo 3DS]], Steam Link |
|type = [[libretro]] frontend | |type = [[libretro]] frontend | ||
+ | |prog-lang = C, C++ | ||
|website = [http://www.libretro.com/ libretro.com] | |website = [http://www.libretro.com/ libretro.com] | ||
+ | |support = [https://www.patreon.com/libretro Patreon], [https://www.retroarch.com/index.php?page=donate Donate] | ||
|source = [https://github.com/libretro GitHub] | |source = [https://github.com/libretro GitHub] | ||
+ | |license = GNU GPLv3 | ||
}} | }} | ||
− | '''RetroArch''' (formerly '''SSNES''') is an open-source, multi-platform | + | '''[[wikipedia:RetroArch|RetroArch]]''' (formerly '''SSNES''') is an open-source, multi-platform [[libretro]] frontend written in C or C++. It is designed to be fast, lightweight, and portable. |
− | |||
− | |||
==Downloads== | ==Downloads== | ||
Line 21: | Line 22: | ||
===Mobile/Console Versions=== | ===Mobile/Console Versions=== | ||
− | *[https://play.google.com/store/apps/details?id=com.retroarch | + | *[https://play.google.com/store/apps/details?id=com.retroarch.aarch64 RetroArch for Android on Play Store] |
*[http://buildbot.libretro.com/repo/fdroid/repo RetroArch for Android - F-Droid nightly build repository] | *[http://buildbot.libretro.com/repo/fdroid/repo RetroArch for Android - F-Droid nightly build repository] | ||
− | *[ | + | *[https://buildbot.libretro.com/stable/1.7.7/apple/ios/RetroArch.ipa RetroArch for iOS] |
*[https://pyra-handheld.com/boards/threads/retroarch-1-7-2.81254/ RetroArch for Pandora on OpenPandora's repo] and [http://repo.openpandora.org/?page=detail&app=retroarch.lifning.001 old 2013 variant] | *[https://pyra-handheld.com/boards/threads/retroarch-1-7-2.81254/ RetroArch for Pandora on OpenPandora's repo] and [http://repo.openpandora.org/?page=detail&app=retroarch.lifning.001 old 2013 variant] | ||
− | *[https://anonfiles.com/file/d53ed28c60439a8479fe8ad6a614f5bb RetroArch for PS3 (CFW)] and [https:// | + | *[https://buildbot.libretro.com/stable/1.7.7/playstation/psp/RetroArch.7z RetroArch for Playstation Portable] |
− | *[https:// | + | *[https://buildbot.libretro.com/stable/1.7.7/playstation/vita/RetroArch.vpk RetroArch for PlayStation Vita/TV] |
− | *[ | + | *[https://buildbot.libretro.com/stable/1.7.7/playstation/ps2/RetroArch_elf.7z RetroArch for Playstation 2] |
− | + | *[https://anonfiles.com/file/d53ed28c60439a8479fe8ad6a614f5bb RetroArch for PS3 (CFW)] and [https://xbins.org/libretro/stable/1.7.7/playstation/ps3/RetroArch.PS3.DEX.PS3.pkg PS3 (DEX)] v.1.0.0.2 | |
+ | *[https://xbins.org/libretro/stable/1.7.7/xbox/xbox/RetroArch.zip RetroArch for Xbox] | ||
+ | *[https://anonfiles.com/file/3456af4be7bfd697b6f239d947960cfa RetroArch for Xbox 360] | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/windows-msvc2017-uwp/x64/RetroArch-msvc2017-UWP_1.7.7_alpha_x64.appx RetroArch for Xbox One] Pre-alpha | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/nintendo/ngc/RetroArch.7z RetroArch for GameCube] | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/nintendo/wii/RetroArch.7z RetroArch for Wii] | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/nintendo/wiiu/RetroArch.7z RetroArch for Wii U] | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/nintendo/switch/libnx/RetroArch.7z RetroArch for Nintendo Switch] | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/nintendo/3ds/RetroArch_cia.7z RetroArch for Nintendo 3DS (.cia)] | ||
+ | *[https://buildbot.libretro.com/stable/1.7.7/steam/steamlink/RetroArch.zip RetroArch for Steam Link] | ||
==Supported Systems== | ==Supported Systems== | ||
{{Main|libretro#Cores}} | {{Main|libretro#Cores}} | ||
Line 44: | Line 54: | ||
*Custom overlay support. | *Custom overlay support. | ||
*FFmpeg recording and playback support. It can record either the native resolution output of the core or the post-processed output of the frontend. Playback is handled through an internal FFmpeg libretro core. | *FFmpeg recording and playback support. It can record either the native resolution output of the core or the post-processed output of the frontend. Playback is handled through an internal FFmpeg libretro core. | ||
+ | *Streaming support. By adding your twitch account to RetroArch and making some small [https://www.retroarch.com/index.php?page=recording setup], it is possible to stream on Twitch the content of the game played. | ||
*[[GGPO]]-like netplay (latency hiding rollback). It should be lag-free if everyone involved emulates at full speed, doesn't live on opposite sides of the world and has decent internet speeds. It uses peer-to-peer UDP and supports two players. Due to rollback, it requires a fair amount of CPU power to run, and the core must support serialization. | *[[GGPO]]-like netplay (latency hiding rollback). It should be lag-free if everyone involved emulates at full speed, doesn't live on opposite sides of the world and has decent internet speeds. It uses peer-to-peer UDP and supports two players. Due to rollback, it requires a fair amount of CPU power to run, and the core must support serialization. | ||
*Options for decreasing input latency related to vsync by eliminating buffering by the video driver, as well as using frame delay to delay polling of inputs until right before a vsync occurs on the display. | *Options for decreasing input latency related to vsync by eliminating buffering by the video driver, as well as using frame delay to delay polling of inputs until right before a vsync occurs on the display. | ||
+ | *Run-ahead to reduce latency. This setting allows cycle-accuracy emulators to run ahead of mandatory 1 or 2 frames of input lag. It allows emulators to [https://www.libretro.com/index.php/retroarch-1-7-2%E2%80%8A-%E2%80%8Aachieving-better-latency-than-original-hardware-through-new-runahead-method/ achieve better latency than original hardware] (Official debut in version 1.7.2). | ||
+ | |||
==Building RetroArch== | ==Building RetroArch== | ||
{{Main|Building RetroArch}} | {{Main|Building RetroArch}} | ||
Line 58: | Line 71: | ||
You must specify whether you will be hosting (server) or joining (client) the game. If joining, you must also enter the host's IP address in the field below. Make sure your firewall is open on port 55435 (default; you can change it if you like) and that the port is forwarded in your router, if applicable. You can also specify 'spectator mode,' which will allow an arbitrary number of spectators to join and watch you play without being able to play themselves. | You must specify whether you will be hosting (server) or joining (client) the game. If joining, you must also enter the host's IP address in the field below. Make sure your firewall is open on port 55435 (default; you can change it if you like) and that the port is forwarded in your router, if applicable. You can also specify 'spectator mode,' which will allow an arbitrary number of spectators to join and watch you play without being able to play themselves. | ||
− | Delay frames denote the maximum number of frames RetroArch will need to emulate at once to maintain synchronization due to actual network latency. You can figure out an appropriate ballpark for this number by pinging the other player and dividing the time (in milliseconds) by 16 (roughly the number of milliseconds in a frame from a game running at 60 fps). If the gameplay is a bit choppy, try increasing the number of delay frames a bit. | + | Delay frames denote the maximum number of frames RetroArch's libretro cores will need to emulate at once to maintain synchronization due to actual network latency. You can figure out an appropriate ballpark for this number by pinging the other player and dividing the time (in milliseconds) by 16 (roughly the number of milliseconds in a frame from a game running at 60 fps). If the gameplay is a bit choppy, try increasing the number of delay frames a bit. |
− | Similar to the GGPO platform, RetroArch creates a constant stream of savestates which, along with button presses, are exchanged and compared between the server and client machines. If the savestates start to diverge, the game rolls back in time to a point where they both agree and then emulates the missing frames all at once to get back to the appropriate spot. This gives the illusion of completely lagless inputs, which is invaluable for twitchy, fine controls. | + | Similar to the GGPO platform, RetroArch creates a constant stream of savestates which, along with button presses, are exchanged and compared between the server and client machines. If the savestates start to diverge, the game rolls back in time to a point where they both agree and then the libretro cores emulates the missing frames all at once to get back to the appropriate spot. This gives the illusion of completely lagless inputs, which is invaluable for twitchy, fine controls. |
If you try to connect to a server and it immediately says client disconnected, open your log and make sure your ROMs match exactly (it will complain about a hash mismatch otherwise). If it gives you a weird time-out error, just close the window and try to connect again and it should work itself out (sometimes excessive spikes in network latency can cause the states to diverge catastrophically, resulting in this error). | If you try to connect to a server and it immediately says client disconnected, open your log and make sure your ROMs match exactly (it will complain about a hash mismatch otherwise). If it gives you a weird time-out error, just close the window and try to connect again and it should work itself out (sometimes excessive spikes in network latency can cause the states to diverge catastrophically, resulting in this error). | ||
Line 68: | Line 81: | ||
[https://romjacket.github.io/index.html skeletonKey] is the successor to retroInvader. In addition to a simple netplay interface, nearly every aspect of retroarch can be set using this GUI. | [https://romjacket.github.io/index.html skeletonKey] is the successor to retroInvader. In addition to a simple netplay interface, nearly every aspect of retroarch can be set using this GUI. | ||
− | ===retroInvader=== | + | ===[[retroInvader]]=== |
− | |||
[http://github.com/romjacket/retroInvader retroInvader] is designed to allow users to quickly install & configure the latest version of RetroArch, cores, and shaders. | [http://github.com/romjacket/retroInvader retroInvader] is designed to allow users to quickly install & configure the latest version of RetroArch, cores, and shaders. | ||
In addition to the GUI-driven configuration & installation, retroInvader supports drag and drop for quickly launching ROMs, hosting netplay sessions as well as installing BIOS files. retroInvader is for Windows only. | In addition to the GUI-driven configuration & installation, retroInvader supports drag and drop for quickly launching ROMs, hosting netplay sessions as well as installing BIOS files. retroInvader is for Windows only. | ||
===RAEM=== | ===RAEM=== | ||
− | |||
RAEM (formerly RA-Player) is another launcher for RetroArch, for those that want to try something that looks more like a native Windows program. It hasn't been updated in a while, though. | RAEM (formerly RA-Player) is another launcher for RetroArch, for those that want to try something that looks more like a native Windows program. It hasn't been updated in a while, though. | ||
− | ===Phoenix=== | + | ===[[Phoenix (frontend)|Phoenix]]=== |
− | |||
[https://github.com/team-phoenix/Phoenix Phoenix] is an alternative frontend for libretro that is independent of RetroArch, not to be confused with the discontinued RetroArch-Phoenix launcher. It is intended to mimic the style of [[OpenEmu]], except using libretro and being available on Windows and Linux. It is still in early development and requires that you build it yourself through Qt, though the main developer says an alpha release with prebuilt binaries is on the way. | [https://github.com/team-phoenix/Phoenix Phoenix] is an alternative frontend for libretro that is independent of RetroArch, not to be confused with the discontinued RetroArch-Phoenix launcher. It is intended to mimic the style of [[OpenEmu]], except using libretro and being available on Windows and Linux. It is still in early development and requires that you build it yourself through Qt, though the main developer says an alpha release with prebuilt binaries is on the way. | ||
===Minir=== | ===Minir=== | ||
− | |||
[https://github.com/Alcaro/minir Minir] is another alternative libretro frontend that is independent of RetroArch and inspired by bsnes-Qt. It is stated to be a complement to RetroArch, focusing on things that RetroArch does not focus on, such as a system native GUI, cheat search, debugging, etc. This frontend is still in early development and no binary builds are provided yet, but you can build it yourself from the source code on Github. | [https://github.com/Alcaro/minir Minir] is another alternative libretro frontend that is independent of RetroArch and inspired by bsnes-Qt. It is stated to be a complement to RetroArch, focusing on things that RetroArch does not focus on, such as a system native GUI, cheat search, debugging, etc. This frontend is still in early development and no binary builds are provided yet, but you can build it yourself from the source code on Github. | ||
==External links== | ==External links== | ||
− | *[ | + | *[https://docs.libretro.com/ Libretro Documentation] (Contains extensive documentation on the usage of Libretro, Retroarch, and its cores.) |
− | *[ | + | *[https://forums.libretro.com/ Official forums] |
− | + | *[https://discordapp.com/invite/27Xxm2h Official Discord server] | |
− | + | *[https://www.youtube.com/user/Libretro/ Official Youtube channel] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | [[Category: | + | [[Category:Frontends]] |
− | + | [[Category:Netplay]] | |
− | |||
− | |||
− | |||
− | |||
− | [[Category: | ||
[[Category:Windows emulation software]] | [[Category:Windows emulation software]] | ||
[[Category:Linux emulation software]] | [[Category:Linux emulation software]] | ||
[[Category:macOS emulation software]] | [[Category:macOS emulation software]] | ||
− | + | [[Category:Android emulation software]] | |
[[Category:RetroArch]] | [[Category:RetroArch]] |
Revision as of 22:20, 23 December 2019
![]() | |
Developer(s) | Squarepusher, themaister, others |
---|---|
Latest version | 1.19.1 |
Active | Yes |
Platform(s) | Windows, macOS, Linux, Android, iOS (jailbroken), Raspberry Pi, OpenPandora, PlayStation 2, PlayStation 3, PlayStation Portable, PlayStation Vita/TV, Xbox, Xbox 360, Xbox One, GameCube, Wii, Wii U, Nintendo Switch, Nintendo 3DS, Steam Link |
Type | libretro frontend |
Programmed in | C, C++ |
Website | libretro.com |
Support ($) | Patreon, Donate |
License | GNU GPLv3 |
Source code | GitHub |
RetroArch (formerly SSNES) is an open-source, multi-platform libretro frontend written in C or C++. It is designed to be fast, lightweight, and portable.
Contents
Downloads
- RetroArch Stable Builds
- RetroArch Nightlies
- Windows RetroArch-Nightly-Installer
- Ubuntu PPAs: Stable, Nightly/Testing
- Arch Linux User Repositories: Stable, Testing, All, libretro-super
Mobile/Console Versions
- RetroArch for Android on Play Store
- RetroArch for Android - F-Droid nightly build repository
- RetroArch for iOS
- RetroArch for Pandora on OpenPandora's repo and old 2013 variant
- RetroArch for Playstation Portable
- RetroArch for PlayStation Vita/TV
- RetroArch for Playstation 2
- RetroArch for PS3 (CFW) and PS3 (DEX) v.1.0.0.2
- RetroArch for Xbox
- RetroArch for Xbox 360
- RetroArch for Xbox One Pre-alpha
- RetroArch for GameCube
- RetroArch for Wii
- RetroArch for Wii U
- RetroArch for Nintendo Switch
- RetroArch for Nintendo 3DS (.cia)
- RetroArch for Steam Link
Supported Systems
- Main article: libretro#Cores
Features
- Consistency across multiple platforms, using the same UI structure and a fully featured command line interface.
- Gamepad controlled menu system with multiple styles available, such as XMB or Material UI. (There's also a QT-based 'WIMP' desktop-style interface for PC platforms that was announced before and released in version 1.7.3.)
- Gamepad auto-configuration profiles, so that gamepads are mapped automatically when connected. XInput controller autoconfig is built into the application, with other controller types available as external profiles.
- Per-core and per-game configuration overrides
- Custom resolution and refresh rate for video output, with exclusive fullscreen mode and monitor index for multi-monitor setups.
- Dynamic rate control for smooth audio and video, even when the game's output rate is different from your system. Especially obvious with systems like GBA that do not run 60Hz.
- Basic fast forward, SRAM saving, savestate, etc. It supports serialization of the emulation state which is used to provide real-time rewind and netplay.
- Pixel shaders, primarily using Cg and GLSL, with HLSL on Xbox 360. The shader format it uses is flexible and fairly easy to use, allowing for complex multi-pass effects with adjustable runtime parameters. Also supports traditional video filter plugins that are run in software.
- Supports audio DSP filter plugins through .dsp configuration files.
- Custom overlay support.
- FFmpeg recording and playback support. It can record either the native resolution output of the core or the post-processed output of the frontend. Playback is handled through an internal FFmpeg libretro core.
- Streaming support. By adding your twitch account to RetroArch and making some small setup, it is possible to stream on Twitch the content of the game played.
- GGPO-like netplay (latency hiding rollback). It should be lag-free if everyone involved emulates at full speed, doesn't live on opposite sides of the world and has decent internet speeds. It uses peer-to-peer UDP and supports two players. Due to rollback, it requires a fair amount of CPU power to run, and the core must support serialization.
- Options for decreasing input latency related to vsync by eliminating buffering by the video driver, as well as using frame delay to delay polling of inputs until right before a vsync occurs on the display.
- Run-ahead to reduce latency. This setting allows cycle-accuracy emulators to run ahead of mandatory 1 or 2 frames of input lag. It allows emulators to achieve better latency than original hardware (Official debut in version 1.7.2).
Building RetroArch
- Main article: Building RetroArch
Using RetroArch
- Main article: Using RetroArch
RetroArch for Dummies
- Main article: Dummies Guide: RetroArch
Netplay
Netplay is now usable from the menu in current builds, under Settings>Netplay Options. You can get it to work with the command line or the long-deprecated RetroArch-Phoenix Launcher as well in older builds.
You must specify whether you will be hosting (server) or joining (client) the game. If joining, you must also enter the host's IP address in the field below. Make sure your firewall is open on port 55435 (default; you can change it if you like) and that the port is forwarded in your router, if applicable. You can also specify 'spectator mode,' which will allow an arbitrary number of spectators to join and watch you play without being able to play themselves.
Delay frames denote the maximum number of frames RetroArch's libretro cores will need to emulate at once to maintain synchronization due to actual network latency. You can figure out an appropriate ballpark for this number by pinging the other player and dividing the time (in milliseconds) by 16 (roughly the number of milliseconds in a frame from a game running at 60 fps). If the gameplay is a bit choppy, try increasing the number of delay frames a bit.
Similar to the GGPO platform, RetroArch creates a constant stream of savestates which, along with button presses, are exchanged and compared between the server and client machines. If the savestates start to diverge, the game rolls back in time to a point where they both agree and then the libretro cores emulates the missing frames all at once to get back to the appropriate spot. This gives the illusion of completely lagless inputs, which is invaluable for twitchy, fine controls.
If you try to connect to a server and it immediately says client disconnected, open your log and make sure your ROMs match exactly (it will complain about a hash mismatch otherwise). If it gives you a weird time-out error, just close the window and try to connect again and it should work itself out (sometimes excessive spikes in network latency can cause the states to diverge catastrophically, resulting in this error).
Alternative Launchers and Frontends
skeletonKey
skeletonKey is the successor to retroInvader. In addition to a simple netplay interface, nearly every aspect of retroarch can be set using this GUI.
retroInvader
retroInvader is designed to allow users to quickly install & configure the latest version of RetroArch, cores, and shaders. In addition to the GUI-driven configuration & installation, retroInvader supports drag and drop for quickly launching ROMs, hosting netplay sessions as well as installing BIOS files. retroInvader is for Windows only.
RAEM
RAEM (formerly RA-Player) is another launcher for RetroArch, for those that want to try something that looks more like a native Windows program. It hasn't been updated in a while, though.
Phoenix
Phoenix is an alternative frontend for libretro that is independent of RetroArch, not to be confused with the discontinued RetroArch-Phoenix launcher. It is intended to mimic the style of OpenEmu, except using libretro and being available on Windows and Linux. It is still in early development and requires that you build it yourself through Qt, though the main developer says an alpha release with prebuilt binaries is on the way.
Minir
Minir is another alternative libretro frontend that is independent of RetroArch and inspired by bsnes-Qt. It is stated to be a complement to RetroArch, focusing on things that RetroArch does not focus on, such as a system native GUI, cheat search, debugging, etc. This frontend is still in early development and no binary builds are provided yet, but you can build it yourself from the source code on Github.
External links
- Libretro Documentation (Contains extensive documentation on the usage of Libretro, Retroarch, and its cores.)
- Official forums
- Official Discord server
- Official Youtube channel