1.9.0 / 09-08-2020
RetroArch is a frontend for emulators, game engines and media players. It enables you to run classic games using Libretro cores on a wide range of computers and consoles through its unified graphical interface. Settings are also unified so configuration can be done once and applied and applied to all. It has advanced features like shaders, netplay, rewinding, next-frame response times, and more.
Consoles covered include but are not limited to PlayStation 1, Super Nintendo, Nintendo Entertainment System, GameBoy/GameBoy Color, GameBoy Advance, Arcade, Neo Geo Pocket Color, Virtual Boy, Sega Genesis/Mega Drive, Sega Master System/Sega Game Gear, Sega CD/Mega CD, PC Engine/PC Engine CD, WonderSwan Color/Crystal, Cave Story, Doom(s) and much more!
It can run on the usual platforms like Windows, Mac OS X and Linux, but it stands alone in that it can support far more platforms beyond just that.
Lakka - lightweight Linux distribution for small computers like Raspberry Pi
Linux: Please follow their instructions
Mac: Apple macOS High Sierra+ with Metal2
Most Recent Changes
Explore View for playlists
Probably the highlight of this release – there is a new ‘Explore’ view for all playlists.
The Explore view takes advantage of the Libretro databases’ metadata history of content. It allows you to search / find content based on criteria such as:
Amount of players
System (game console/platform that the game released on)
Origin (country of origin that the game was developed in)
By Release Year
The ‘Explore’ view only shows the content that has been added to your playlists. It will not show entries that haven’t yet been added to your collection.
The metadata is currently a bit on the incomplete side, but you can expect us to add more and more metadata to the Libretro database as we go along. This is only the beginning.
There are tons of ways you can use the Explore view to find what you want. Here are some of them:
Here is a good example of the kind of powerful context-sensitive filtering that is possible with the Explore view.
Go to Explore
Type in ‘super’, will list all entries in your collection that has ‘super’ in the name. 219 entries are shown.
We will now filter the entries by a specific developer to narrow down our search. We go to ‘Additional Filters’, and select a developer of choice. Now out of 219 entries, only 25 entries are still shown that matches this criteria (name has ‘super’ in the title, AND is from a specific developer)
Let’s add another filter to narrow down the search even more. We go to ‘Additional Filters’ again, and this time we select ‘By Release Year’, ‘1993’. There’s now only 6 entries shown that matches this criteria (name has ‘super’ in the title, AND is from a specific developer, AND was released in the year 1993).
Let’s add another filter. We go to ‘Additional Filters’, ‘Region’, ‘Europe’). Now only 3 entries are shown that matches this criteria (name has ‘super’ in the title, AND is from a specific developer, AND was released in the year 1993, AND was released in region ‘Europe’).
NOTE: It should be mentioned that in the future, if you want the metadata to be updated automatically in existing versions of RetroArch, you should go to ‘Online Updater’ and select ‘Update Databases’. After this, you might have to restart.
Enhanced playlist search functionality
Before, RetroArch’s inbuilt ‘search’ function was woefully inadequate:
The user presses RetroPad ‘X’ (or keyboard ‘/’, or Material UI’s search icon), and enters a search term
The navigation pointer jumps to the first match
That’s it. There is no way to continue searching from that point, or to do much of anything, really. It’s mostly a non-feature…
The search functionality has now been enhanced as follows:
When viewing a playlist, the user presses RetroPad X (or /, etc.) as normal, and enters a search term
This becomes a filter – all matching entries will be displayed
The user can then perform another search to further refine the results. An arbitrary number of filters may be stacked in this fashion
Pressing ‘cancel’ clears the last entered filter
Content loading animations
A new “Load Content” Startup Notification option has been added under Settings > On-Screen Display > On-Screen Notifications. When enabled, a brief animation is shown whenever content is launched – it looks something like this –
The animation is disabled when running a core without content (there are some underlying technical issues that prevent this)
The animation is disabled when running content with ‘in-built’ cores (imageviewer, music/video player).
The animation works both for content launched via the menu and via the command line
Easy dropdown lists for input remapping
Before, when you wanted to remapp inputs via the Quick Menu (Quick Menu > Controls > Port N Controls), the user had to press left/right ad nauseam in order select an appropriate core input for each controller button. This is somewhat cumbersome, and highly awkward on touchscreen devices.
In this new version we have added drop-down lists to the input remap entries.
You can now use the RetroPad start button to reset (unbind) controller keyboard remaps (when Device Type is a keyboard type, obviously!)
Fixed a bug whereby pressing RetroPad select on certain entries would spawn a message box with no text – this would be invisible, and would therefore appear to ‘hang’ the menu.
FFMpeg/Video Player Improvements
A new progress overlay bar has been added to the ffmpeg core (embedded in RetroArch for Windows/Linux). When you skip forwards or backwards via the directional keys or D-pad, you will see this interface appear for a brief period of time.
Lockups could occur when playing videos if a forwards seek operation would take the target playback position past the end of the file. We have added the following workaround: seek operations are limited to a point 1 second before the end of the file, and if the user attempts to seek past the end then playback of the file will restart from the beginning.
Solved several big memory leaks upon opening videos
iOS/tvOS Metal Renderer
RetroArch on iOS/tvOS now supports Apple’s Metal graphics API. Slang shader support is already implemented and all software rendered cores should work.
Currently the iOS/tvOS build will default to OpenGL because of a few outstanding issues that still have to be resolved:
Slang shaders degrade performance noticeably on most cores
When audio is interrupted, it doesn’t resume with the Metal renderer (OpenGL seems ok)
Other general menu improvements
The RGUI menu now shows boolean settings as a ‘toggle switch’ if you have the setting ‘Show Switch Icons’ enabled (Settings -> User Interface -> Appearance).
Previously, RetroArch would have the bad habit of resetting the selection cursor to the first entry in the menu after returning from almost every list of selectable values for a setting. For example, if you go to Settings -> Drivers -> Audio and change the audio driver (or press Back), the selection cursor will be reset to the first entry of the Drivers menu instead of the Audio item from where we were originally. This has been fixed.
People previously complained that it was possible to set drivers to ‘null’ that are necessary for RetroArch to work, such as ‘Menu’ and ‘Video’. It’s now no longer possible to set a driver to ‘null’ unless there is no driver available for this type.
MaterialUI – The Playlist screen now shows icons of the associated system.
The three separate Scan Directory/Scan File/Manual Scan entries are now moved into a submenu called ‘Import Content’. They are no longer shown in any ‘top level’ menu. This unclutters the Playlist screen.
You can now selectively hide/enable widget notifications of several types. For instance, autoconfig messages, load content animation popups, cheat code notifications, fastforward notifications, screenshot indications, and more can all be individually configured. You no longer have to disable widgets altogether if you don’t like any one of the widget UI elements, you can now just opt to disable the widget that you don’t like.
(Windows only) Screen resolution dropdown list improvements – it no longer includes multiple duplicate entries.
File I/O/Memory improvements
A significant amount of time has been spent reducing RetroArch’s memory footprint and reducing disk I/O overhead when doing menial operations such as loading a configuration file or a playlist inside RetroArch.
3DS: Fix sound crackling when paused
ANDROID/VIBRATION: Fixes “Vibrate on Key Press” having no effect on Android devices, which occurred because only the off time/strength was defined in what should have been a pair of off/on values
AUTOCONFIG: Ensure correct directory is used when saving autoconfig profiles
BLUETOOTH: Add a Bluetooth driver (Lakka-only for now)
CHEATS: Fix for wrong number of remaining cheat search matches on some machines
CHEEVOS: Option to play sound on achievement unlock.
CHEEVOS: Upgrade to rcheevos 9.1
CHEEVOS: Restore display of unlocked achievements across hardcore modes
CHEEVOS: Hash buffered data when available
CHEEVOS: Fix ‘Auto Save State freezes RetroArch while Cheevos is enabled’
CORE OPTIONS: Pressing OK (or clicking/tapping) on a ‘boolean toggle’ core option no longer opens a drop-down list. The value now toggles directly, just like boolean options everywhere else in the menu
CORE OPTIONS: Toggling an option that changes the number of core options being displayed (i.e. things like `Show Advanced Audio/Video Settings) no longer resets the navigation pointer to the start of the list
CORE OPTIONS: Before, RetroArch would identify core option values as being ‘boolean’ if they had labels matching the specific strings enabled or disabled. Most core devs would abide by this, but not always… As a result, we sometimes would end up with misidentified values, with all kinds of Enabled, Off, True, etc. strings littering the menu, in place of proper toggle switches. All boolean-type value labels are now detected, and replaced with standard ON/OFF strings.
CLI: A new command line option –load-menu-on-error has been added
CRT: On the fly CRT porch adjuments – these changes allow a user to adjust how the porch algorithm generates the 15khz/31khz output. Giving the ability to change over/under scan.
CONFIG FILE: Optimise parsing of configuration files
D3D9/D3D11: Fix core-initiated D3D9/D3D11 driver switches
DRIVERS: Implemented protection to avoid setting critical drivers to nothing thus preventing the user from locking him/herself out of the program
EMSCRIPTEN: Fix input code to ignore unknown keys
FFMPEG CORE: Prevent seeking past the end of files (hang fix)
FILE I/O: VFS and NBIO interfaces will now use 64-bit fseek/ftell where possible, should allow for reading/writing to files bigger than 2GB
INPUT MAPPING/REMAPPING: Add input remap drop-down lists
IOS: Fixed iOS 6 version
IOS: Hide the home indicator as it obscures the content too frequently
IOS/METAL: Metal video driver now works on RetroArch iOS
IOS/METAL: Support getting video metrics to support proper touchscreen interactions
LOCALIZATION: Updates for several languages (synchronized from Crowdin)
MEMORY/LINUX/ANDROID: Fix reporting of free memory
MEMORY/WINDOWS: Fix reporting of free memory
MENU: Enlarged INT/UINT selection limit from 999 to 9999
MENU: Fix cursor forced to first entry after displaying lists
MENU: Make Notification Font option visible when Graphics Widgets are enabled
MENU/RGUI: Add optional ‘toggle switch’ icons
MENU/WIDGETS: Add optional widget-based ‘load content’ launch feedback animation
MENU/WIDGETS: Make notification font size option visible when graphics widgets are enabled
ODROID GO ADVANCE: Video driver – fix race condition with RGUI callback
PLAYLISTS: Change playlists to use dynamic arrays. Instead of a fixed initial 12MB memory allocation (99999 * 128 byte (on 64bit arch)), use a dynamically growing array
PLAYLISTS: Playlist base content directory paths – portable playlists
PLAYLISTS/SEARCH: Enhanced playlist search functionality
PLAYLISTS/DATABASE: Add ‘Explore’ view
PLAYLISTS/DATABASE/EXPLORE: Show system icons in explore view
PS2: Improve FPS Limiter
RUNAHEAD: Prevent runahead from being disabled permanently when an error occurs
SCANNER: Add more region codes for GameCube/Wii game detection
SHADERS/SLANG: Increased Slang max Parameters, Textures & Passes
VIDEO FILTERS/BLARGG: Make Blargg_snes filter customizable
WINDOWS/RAWINPUT: Fix invalid calls to dinput_handle_message when input driver is not set to dinput
X11: Add lightgun support