RetroArch: Difference between revisions

No edit summary
Ilyagredasov (talk | contribs)
No edit summary
Tags: Mobile edit Mobile web edit
 
(14 intermediate revisions by 9 users not shown)
Line 5: Line 5:
|version      = {{Version|RetroArch}}
|version      = {{Version|RetroArch}}
|active        = Yes
|active        = Yes
|platform      = [[Emulators on Windows|Windows]]<br/>[[Emulators on macOS|macOS]]<br/>[[Emulators on Linux|Linux]]<br/>[[Emulators on Haiku|Haiku]]<br/>[[Emulators on Android|Android]]<br/>[[Emulators on iOS|iOS]]<br/>[[Emulators on Raspberry Pi|Raspberry Pi]]<br/>[[Emulators on Pandora|Pandora]]<br/>[[Emulators on DragonBox Pyra|Pyra]]<br/>[[Emulators on PS2|PlayStation 2]]<br/>[[Emulators on PS3|PlayStation 3]]<br/>[[Emulators on PS4|PlayStation 4]] (Unofficial)<br/>[[Emulators on PSP|PlayStation Portable]]<br/>[[Emulators on Vita|PlayStation Vita/TV]]<br/>[[Emulators on Xbox|Xbox]]<br/>[[Emulators on Xbox 360|Xbox 360]]<br/>[[Emulators on Xbox One|Xbox One]]<br/>[[Emulators on GameCube|GameCube]]<br/>[[Emulators on Wii|Wii]]<br/>[[Emulators on Wii U|Wii U]]<br/>[[Emulators on Switch|Nintendo Switch]]<br/>[[Emulators on 3DS|Nintendo 3DS]]<br/>[[Emulators on GCW Zero|GCW Zero]] (Unofficial)<br/>OpenDingux<br/>BlackBerry<br/>Steam Link<br/>Leapfrog
|platform      = [[Emulators on Windows|Windows]]<br/>[[Emulators on macOS|macOS]]<br/>[[Emulators on Linux|Linux]]<br/>[[Emulators on Haiku|Haiku]]<br/>[[Emulators on Android|Android]]<br/>[[Emulators on iOS|iOS]]<br/>[[Emulators on tvOS|tvOS]]<br/>[[Emulators on Raspberry Pi|Raspberry Pi]]<br/>[[Emulators on Pandora|Pandora]]<br/>[[Emulators on DragonBox Pyra|Pyra]]<br/>[[Emulators on PS2|PlayStation 2]]<br/>[[Emulators on PS3|PlayStation 3]]<br/>[[Emulators on PS4|PlayStation 4]] (Unofficial)<br/>[[Emulators on PSP|PlayStation Portable]]<br/>[[Emulators on Vita|PlayStation Vita/TV]]<br/>[[Emulators on Xbox|Xbox]]<br/>[[Emulators on Xbox 360|Xbox 360]]<br/>[[Emulators on Xbox One|Xbox One]]<br/>[[Emulators on GameCube|GameCube]]<br/>[[Emulators on Wii|Wii]]<br/>[[Emulators on Wii U|Wii U]]<br/>[[Emulators on Switch|Nintendo Switch]]<br/>[[Emulators on 3DS|Nintendo 3DS]]<br/>[[Emulators on GCW Zero|GCW Zero]] (Unofficial)<br/>OpenDingux<br/>BlackBerry<br/>Steam Link<br/>Leapfrog
|type          = [[libretro]] frontend
|type          = [[libretro]] frontend
|prog-lang = {{Proglang|C}}, {{Proglang|C++}}
|prog-lang = {{Proglang|C}}, {{Proglang|C++}}
|website      = [https://www.libretro.com/ libretro.com]
|website      = [https://www.libretro.com/ libretro.com]
|support = [https://www.patreon.com/libretro Patreon]<br/>[https://github.com/sponsors/libretro GitHub Sponsor]<br/>[https://liberapay.com/Libretro/donate Liberapay]
|support = [https://www.patreon.com/libretro Patreon]<br/>[https://github.com/sponsors/libretro GitHub Sponsor]<br/>[https://liberapay.com/Libretro/donate Liberapay]
|source        = [https://github.com/libretro GitHub]
|source        = [https://github.com/libretro/RetroArch GitHub]
|issuetracker = [https://github.com/libretro/RetroArch/issues GitHub]
|license      = {{license|GPLv3}}
|license      = {{license|GPLv3}}
|release      = Jan 11, 2014 (v1.0.0.0)
}}
}}


Line 26: Line 28:
===Mobile/Console Versions===
===Mobile/Console Versions===
*[https://play.google.com/store/apps/details?id=com.retroarch RetroArch for Android on Play Store], 32-bit & 64-bit ARM (also [https://play.google.com/store/apps/details?id=com.retroarch.aarch64 Plus version])
*[https://play.google.com/store/apps/details?id=com.retroarch RetroArch for Android on Play Store], 32-bit & 64-bit ARM (also [https://play.google.com/store/apps/details?id=com.retroarch.aarch64 Plus version])
*[https://apps.apple.com/us/app/retroarch/id6499539433 RetroArch for iOS on App Store]
*[https://apps.apple.com/us/app/retroarch/id6499539433 RetroArch for iOS/tvOS on App Store]
*[https://buildbot.libretro.com/stable/{{RetroArchVer}}/apple/ios9/RetroArchiOS9.ipa RetroArch for iOS9] ({{RetroArchVer}})
*[https://buildbot.libretro.com/stable/{{RetroArchVer}}/apple/ios9/RetroArchiOS9.ipa RetroArch for iOS9] ({{RetroArchVer}})
*[https://buildbot.libretro.com/stable/{{RetroArchVer}}/apple/ios-arm64/RetroArch.ipa RetroArch for iOS-arm64] ({{RetroArchVer}})
*[https://buildbot.libretro.com/stable/{{RetroArchVer}}/apple/ios-arm64/RetroArch.ipa RetroArch for iOS-arm64] ({{RetroArchVer}})
Line 50: Line 52:


==Features==
==Features==
*Consistency across multiple platforms, using the same UI structure and a fully featured command line interface.
*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 [https://www.youtube.com/watch?v=hfuioGjCItw QT-based 'WIMP' desktop-style interface] for PC platforms that was announced before and released in version [https://www.libretro.com/index.php/retroarch-1-7-3-released/ 1.7.3].)
*Gamepad-controlled menu system with multiple styles available, such as XMB or Material UI. (There's also a {{YouTubeVideo|hfuioGjCItw|QT-based 'WIMP' desktop-style interface}} for PC platforms that was announced before and released in version [https://www.libretro.com/index.php/retroarch-1-7-3-released/ 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.
*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
*Per-core and per-game configuration overrides
Line 65: Line 67:
*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.
*Supports [[Input_lag|input lag-mitigating techniques]]. One of these setting is "Run-ahead" which allows cycle-accuracy emulators to run ahead of mandatory 1 or 2 frames of input lag. These settings allow emulators to [https://medium.com/@libretro/retroarch-1-7-2-achieving-better-latency-than-original-hardware-through-new-runahead-method-1b80d26bb5d1/ achieve better latency than original hardware] (Run-ahead option official debut in version 1.7.2).
*Supports [[Input_lag|input lag-mitigating techniques]]. One of these setting is "Run-ahead" which allows cycle-accuracy emulators to run ahead of mandatory 1 or 2 frames of input lag. These settings allow emulators to [https://medium.com/@libretro/retroarch-1-7-2-achieving-better-latency-than-original-hardware-through-new-runahead-method-1b80d26bb5d1/ achieve better latency than original hardware] (Run-ahead option official debut in version 1.7.2).
*[https://retroachievements.org/download.php#ralibretro RetroAchievements support].
*[https://retroachievements.org/downloads RetroAchievements support].
*Libretro cores compatible with [[BizHawk]] and [[Virtual_reality#VR_game_room_simulations|EmuVR]], so if you don't like using RetroArch as a [[Frontends|frontend]] you have other options as well.
*Libretro cores compatible with [[BizHawk]] and [[Virtual_reality#VR_game_room_simulations|EmuVR]], so if you don't like using RetroArch as a [[Frontends|frontend]] you have other options as well.


Line 82: Line 84:
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.
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.
Similarly 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 92: Line 94:


==Controversies==
==Controversies==
A number of controversies have sparked during the development of RetroArch, mostly due to Squarepusher/TwinAphex's attitude and actions towards upstream emulators. As a result, Reicast development has halted<ref>https://web.archive.org/web/20220201223114/https://old.reddit.com/r/emulation/comments/s8poim/pcsx2_qt_still_needs_to_be_split_up_into_parts/htkalk1//</ref><ref>https://github.com/skmp/reicast-emulator/issues/1928</ref>.
A number of controversies have sparked during the development of RetroArch, mostly due to Squarepusher/TwinAphex's attitude and actions towards upstream emulators. As a result, Reicast development has halted<ref>https://web.archive.org/web/20220201223114/https://old.reddit.com/r/emulation/comments/s8poim/pcsx2_qt_still_needs_to_be_split_up_into_parts/htkalk1//</ref><ref>https://github.com/skmp/reicast-emulator/issues/1928</ref>. For this reason many RA cores use different names (beetle for mednafen cores, swanstation for duckstation core, etc)


==Also See==
==Also See==
Line 101: Line 103:
*[https://docs.libretro.com/ Libretro Documentation] (Contains extensive documentation on the usage of Libretro, Retroarch, and its cores.)
*[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://forums.libretro.com/ Official forums]
*[https://discordapp.com/invite/27Xxm2h Official Discord server]
*[https://discord.com/invite/C4amCeV Official Discord server]
*[https://www.youtube.com/user/Libretro/ Official Youtube channel]
*{{YouTubeChannelOwner|Libretro|Official Youtube channel}}


==References==
==References==
{{Reflist}}
{{Reflist}}
 
[[Category:Software]]
[[Category:RetroArch|*]]
[[Category:RetroArch| ]]
[[Category:Frontends]]
[[Category:Frontends]]
[[Category:Netplay]]
[[Category:Netplay]]
[[Category:Windows emulation software‏‎]]
[[Category:Windows software]]
[[Category:Linux emulation software]]
[[Category:Linux software]]
[[Category:macOS emulation software]]
[[Category:macOS software]]
[[Category:Haiku emulation software]]
[[Category:Haiku software]]
[[Category:Raspberry Pi emulation software]]
[[Category:Raspberry Pi software]]
[[Category:Pandora emulation software]]
[[Category:Pandora software]]
[[Category:Android emulation software]]
[[Category:Android software]]
[[Category:iOS emulation software]]
[[Category:iOS software]]
[[Category:PlayStation Portable emulation software]]
[[Category:PlayStation Portable software]]
[[Category:PlayStation Vita emulation software]]
[[Category:PlayStation Vita software]]
[[Category:PlayStation 2 emulation software]]
[[Category:PlayStation 2 software]]
[[Category:PlayStation 3 emulation software]]
[[Category:PlayStation 3 software]]
[[Category:PlayStation 4 emulation software]]
[[Category:PlayStation 4 software]]
[[Category:GameCube emulation software]]
[[Category:GameCube software]]
[[Category:Wii emulation software]]
[[Category:Wii software]]
[[Category:Wii U emulation software]]
[[Category:Wii U software]]
[[Category:3DS emulation software]]
[[Category:3DS software]]
[[Category:Switch emulation software]]
[[Category:Switch software]]
[[Category:Xbox emulation software]]
[[Category:Xbox software]]
[[Category:Xbox 360 emulation software]]
[[Category:Xbox 360 software]]
[[Category:Xbox One emulation software]]
[[Category:Xbox One software]]
[[Category:Web emulation software]]
[[Category:Web software]]
[[Category:Active software]]