RetroArch is a frontend for emulators, game engines and media players. Among other things, it enables you to run classic games on a wide range of computers and consoles through its slick graphical interface. Settings are also unified so configuration is done once and for all. In addition to this, you are able to run original game discs (CDs) from RetroArch.
RetroArch has advanced features like shaders, netplay, rewinding, next-frame response times, runahead, machine translation, blind accessibility features, and more!
Features
Graphical user interface
- Ozone is the default graphical interface of RetroArch. It is optimized for navigation with a game controller and incorporates a database-driven playlist system to browse your collection with metadata and thumbnails. The graphic interface also allows you to tweak settings and perform other customizations on a game-by-game basis.
Cross Platform
- RetroArch can run on the usual platforms like Windows, macOS and Linux, but it stands alone in that it can support far more platforms beyond just that.
- We support operating systems that not even Microsoft and Apple themselves support anymore, such as macOS on PowerPC Macs, and RetroArch being available on Windows OSes as far back as Windows 95.
- On top of all that, RetroArch also runs on iOS and Android for tablets and phones, as well as on game consoles like PS2, PS3, PSP, PS Vita, Wii, Wii U, 2DS, 3DS, Switch, and more!
Latency
- RetroArch is capable of next-frame responsive time. This means that there should be no nearly no perceivable difference in terms of input latency from real hardware, FPGA/clone or original hardware.
- On top of all that, there are various settings you can configure to optimize the results even more.
Highly Configurable
- Our advanced settings interface lets you tweak every possible option about how the games are run and displayed.
- Of course every setting has a sane default so you can get started fast.
Automatic Controller Mapping
- Common game controllers are automatically configured when plugged in, just like on a real game console.
- Ideal to start a multiplayer game when a friend visits with their own controller.
- You can also configure everything manually, assign special actions to combos, and more!
Recording & Streaming
- RetroArch is able to record your playing session to a video file.
- The same mechanism also enables you to live stream your games to platforms like Twitch.tv or Youtube.
What’s New
- AI: Revert AI translation to previous version (fix for translation not working with HW rendered cores)
- APPLE: Try to use system preferred language
- APPLE: Correctly register for filetypes uniquely
- APPLE/MFI: improved Switch Online controller support through MFi
- AUDIO: Bring back audio toggling on menu toggle
- CHEEVOS: Build a default RetroAchievements memory map when no RetroAchievements game is loaded
- CHEEVOS: Update to rcheevos 11.3
- CHEEVOS: fix hardcore acting as if it’s enabled when it isn’t
- CLANG: Fix clang error incompatible-pointer-types-discards-qualifiers
- CLOUDSYNC/LINUX: Enable Cloud Sync by default on Linux builds with network (#16456)
- CLOUDSYNC/WEBOS: Enable Cloud Sync by default on Linux builds with network (#16456)
- CORE: Set compute fps stats logging to debug level
- EMSCRIPTEN: Added M2000 to core selection dropdown
- FFMPEG: Add compatibility with FFMPEG 7.0
- GLSLANG: Remove unneeded ENABLE_HLSL code from glslang
- GENERAL: Memory leak: Dynamic allocation from msg_hash_get_help_us_enum was not freed.
- INPUT/KEYBOARD: Add support for multimedia keys – Extended RETROK_ values with 18 new items, commonly found on
- “multimedia” keyboards. Mapping added for SDL, X11, Wayland, dinput, winraw keymaps.
- INPUT/MFI: Pressure sensitive left/right triggers
- INPUT/MFI: Fix Start + L1/L2/R2 combinations
- INPUT/MFI: Support strong and weak rumble
- INTL: Fetch translations from Crowdin
- INTL: Add Galician and Norwegian to list of languages
- LAKKA: Display reboot/shutdown message also when not saving config on exit
- LAKKA: Provide update URL and target name at buildtime
- LIBRETRO: Add a debug message for the SET_ROTATION callback
- macOS: Default Accessibility on if VoiceOver is on
- iOS: default audio sync on again, also more mfi logging
- iOS: Fix Import Content
- iOS: Fix ios-arm64 nightly build crash
- iOS: Import content from iCloud
- iOS: Fix #16485 crash on startup
- iOS: Display app icon in app icon picker in materialui
- iOS/tvOS: Various QoL improvements
- iOS/tvOS: Fix a couple more path name mangling bugs
- iOS/tvOS: Better way of packaging Frameworks
- iOS/tvOS: define PACKAGE_VERSION to be App Store MARKETING_VERSION
- iOS/tvOS: Fix keyboard handling for app store builds
- iOS/tvOS: Fix escaping the sandbox for jailbroken devices
- iOS/tvOS: default accessibility on if voice over is enabled
- iOS/tvOS: better way of reporting available memory
- macOS/iOS/tvOS: enable text-to-speech using AVSpeechSynthesizer.
- tvOS: Fix scaling for 720p
- MENU: New function in Quick Menu: Add to Playlist
- MENU/XMB: New theme: FlatUX, designed to merge FlatUI and Retroactive themes into a single, unified design
- NETWORKING/RETROPAD CORE: Fix socket close method
- PIXMAN: Update pixman-private.h – patch to fix build issue with musl
- PLAYLIST: Cleanup ‘Add to Playlist’ (#16495)
- SCANNING: Fix for scanning PSP ISOs (and probably few others)
- SAVES: Fix core config saving
- SAVES: Fix save new config name when core loaded
- SAVESTATES: Increase save state chunk size for all platforms – Even a class 6 or class 10 SD card can handle reads and writes on the order of MB/s, which means a 4KB chunk size is just wasting time in syscalls. This could maybe be fixed with a buffering reader but I don’t feel comfortable tweaking libretro-common’s VFS to handle that. Instead, I thought it would be good to both remove an ifdef and increase the chunk size to 128KB. For cores with small states this will should make state saving virtually instantaneous, and for cores with large states it should be a 32x speedup.
- VIDEO: Fix crash when using threaded video – for Mesa 23.2 and later
- VIDEO/GL: Fix reinitialization of the threaded gl drivers
- VIDEO/VULKAN: Add support for A2R10G10B10 HDR format
- VIDEO/VULKAN: Implement HDR readback – screenshot support
- WAYLAND: Ignore configure events during splash (fix not remembering window size)
- WAYLAND: Use frontend signal handler to quit (fix quit by window close)
- WAYLAND: Commit viewport resizes (window resize is more responsive)
- UWP: Align MESA to alpha-2-resfix – Remove wrong resolution special handling for OPENGL
- UWP: 4K fix: align MESA reading of ClientRect to retroarch procedure, this fixes max resolution being set to 1080p. As reading must be done inside an UI thread and is in fact an async operation which might delay frame generation, the reading itself is doen once and cached, give that changing resolution while the app is running is an unlikely corner-case use
- WINDOWS: Windows mouse ungrab must release the mouse instead of confine it to the current desktop (#16488)
- WINDOWS: Fix numlock/pause key release events