1. RetroArch
  2. News

RetroArch News

RetroArch 1.9.10 released!



Read very important linux changes!

RetroArch 1.9.10 has just been released.

If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.10 version) is scheduled to be released very soon!

Remember that this project exists for the benefit of our users, and that we wouldn't keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

Highlights


[h2]RetroArch is now finally on Steam![/h2]
On September 14, 2021, RetroArch finally appeared on Steam (available here). It is available right now for both Linux (SteamOS) and Windows. See our initial release article here. Since then, we have already had over 100K+ downloads on Steam and over one million visits. Thanks to you all! We aim to make RetroArch the very best it can be.

What you need to know:

  • New cores are coming as DLC additions.
  • There is no macOS version available on Steam yet (but we'd like to!)
  • Remote Play is supported. We make no guarantees as to how well this will work.
  • Steam Cloud sync should be supported for save files.
  • There is work underway on automation - the idea is that both cores and RetroArch on Steam would be updated automatically.


Lastly, we hope that new users can be understanding of the fact that RetroArch’s UI might have a bit of an initial learning curve. We are a small team, and we definitely intend to simplify the UI at least for beginners in the coming months, but we are simply not ready yet. So we hope people are understanding of this and appreciate the swiss knife flexibility and power of RetroArch in the meantime instead of focusing on the overall complexities or whatnot of the UI/UX.

The Steam version should be updated to 1.9.10 soon.

[h2]High Dynamic Range fixes for D3D11/D3D12![/h2]

  • Fixed contrast to be more correct - now scales from 0-10 linearly and behaves more the way you'd expect it to - changed name to ditch legacy settings users may have
  • D3D11/HDR: Fixed D3D11's blend, rasterizer and topology states not being set to the sames when using HDR and leaving the menu - caused issues with PCSX2's Shadow of the Colossus
  • Added ability to skip inverse tonemapper to the shader via the constant buffer using 'inverse_tonemap' - set to 0.0f to skip
  • Fixed potential bug when swapping between HDR and SDR and the bit depth not being set correctly


[h2]Filters[/h2]

1.9.10 adds a new Picoscale_256x-320x240 video filter. This uses a number of high quality, high performance algorithms developed by irixxxx for Picodrive standalone to upscale 256x224, 256x239 and 256x240 content to 320x240 (content of any other resolution is passed through unchanged).

Much like the existing Upscale_256x-320x240 filter, this is intended for use on platforms/devices with native 320x240 resolution support, where it greatly reduces aliasing while producing a significantly sharper image than conventional (hardware) bilinear filtering.

Three filter variants are provided:

Picoscale_snn_256x-320x240: 'Smoothed' nearest neighbour
Picoscale_bl2_256x-320x240: 2-level-bilinear with 2 quantized weights
Picoscale_bl4_256x-320x240: 4-level-bilinear with 4 quantized weights

Essentially, both image 'smoothness' and performance requirements increase in order of snn -> bl2 -> bl4.

Go here to see several screenshots demonstrating the output of each filter type: (click for full-size images)

These filters are highly efficient. Tested with the Snes9x 2005 Plus core (a lightweight core which is nonetheless at the upper limit of many low powered handheld devices), we see the following increase in total performance overheads when each filter is applied (note that the existing Upscale_256x-320x240 filter is included for comparison):



Filter

Performance



overheadbl2

+13%



No filter

+0%



snn

+8%



bl4

+30%



upscale_256x_320x240

+27%



The performance overheads relative to the existing Upscale_256x-320x240 filter are:



Filter

Performance overhead



snn

-69%



bl2

-45%



bl4

+14%



Important information for Linux users



Hello everyone!

We have been busy working on the Steam version to improve compatibility and stability. Right now, we need to make some changes for the Linux platform. For a long time, we have manually released everything on the Steam, this has now been automated for both platforms. Looking forward you can expect regular updates and soon a nightly branch. However, to simplify RetroArch on Steam we are moving to the same folder structure on all platforms. Additionally, on Linux, we are moving from the AppImage-based release to using the newer soldier runtime available in Steam to increase the likelihood of RetroArch working out of the box on more Linux distributions.

As there is a small risk for breakages for Linux users we felt the need to properly inform about this. So what does this change mean? Currently, the RetroArch base directory on Linux is RetroArch-Linux-x86_64-Nightly.AppImage.config/retroarch which you can see the retroarch's itself in a subdirectory instead of being in the main directory of the game, so our goal is basically same directory structure for every platform! Due to the chance of data loss our recommendation is to copy everything you care about, for example; save files, options, your cfg files etc. somewhere safe outside the Steam install. While Steam Cloud should keep everything safe, we do still feel the need to mention this, as the changes are not risk-free.

The update is currently scheduled to go out the 3rd of October together with the next frontend release.

Please contact us if you have any concerns!

RetroArch finally released on Steam!



Today, RetroArch has finally been released on Steam for both Windows and Linux/SteamOS. The Store page can be found here.
[h2]Differences between the Steam version and regular version[/h2]
Functionally, RetroArch on Steam should be identical to the version you can get on our website, except for the following:

  • There is no Core Downloader to stay compliant with Valve/Steam's Terms of Service.

Instead, you can download and install cores in either one of two ways:

  • Manually dragging the core file (a .dll file on Windows, .so on Linux) over to the 'cores' directory of RetroArch Steam.
  • Installing the core as a DLC.

[h2]10 Cores Available At Launch[/h2]
We have decided to launch with 10 cores at launch. These cores are available both for Linux/SteamOS and Windows users. A 'core' is a program that RetroArch loads. It can be an emulator, game, or any other program. RetroArch loads this 'core', and from there RetroArch becomes the program.

The cores currently available as DLC on Steam are as follows:

First, you install RetroArch on Steam. After that, you can install the cores either on Steam's browser page by clicking 'Manage DLC' and easily installing them all at once, or you can go to each respective page and install it from there.

More cores will be coming as DLC soon. We have no ETA on when these will arrive, but it will likely be a dripfeed of new cores on a periodic basis as it takes a lot of time preparing the pages, descriptions, logos, previews and whatnot that a Steam page requires.
[h2]Things to know[/h2]

  • RetroArch on Steam is available for 64bit Windows/Linux users only for now. We are not sure if we will be supporting 32bit on Steam as well.
  • Builds right now are not automated but might be later on.
  • There is no macOS version available on Steam yet. There are no plans yet for this, but if there are updates on this, we will tell you.
  • Remote Play is supported. We make no guarantees as to how well this will work.
  • Steam Cloud sync should be supported for save files.

Lastly, we hope that new users can be understanding of the fact that RetroArch's UI might have a bit of an initial learning curve. We are a small team, and we definitely intend to simplify the UI at least for beginners in the coming months, but we are simply not ready yet. So we hope people are understanding of this and appreciate the swiss knife flexibility and power of RetroArch in the meantime instead of focusing on the overall complexities or whatnot of the UI/UX.

RetroArch 1.9.9 released!



If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.9 version) is scheduled to be released very soon!

Remember that this project exists for the benefit of our users, and that we wouldn't keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!
Highlights

[h2]High Dynamic Range support for Direct3D 11/12 drivers![/h2]


We have now added HDR (High Dynamic Range) support to RetroArch's Direct3D 11/12 driver thanks to a generous contributor!
l
What you should know:

* The HDR settings can be found in Settings -> Video when you are using the Direct3D 11 or 12 driver. In order to change to D3D11/12, go to Settings -> Drivers, and change Video to 'D3D11/12'.

In case you don't see the option, and you have made sure first that your driver is set to Direct3D 11/12, it might be that HDR is disabled in Windows 10. Make sure HDR is enabled in Windows in case you don't see it pop up. In Windows, go to 'Display Settings' (pictured below) and make sure the HDR setting is turned on. If it doesn't show up, your display device might simply not support HDR.



* We now let Direct3D 11 compile frontend shaders against Shader Model 5.0 (SM 5.0) in case your graphics card driver supports D3D11 Feature Level 11.0 or higher. Previously, it would always compile frontend shaders against Shader Model 4.0, and unfortunately the AMD FSR shader that has just been added needs SM 5.0 capabilities in order to work.

* While HDR already works on the UWP version on PC, on Xbox there are currently several deal-breaking display issues with it, so it remains disabled there for now.
Thoughts on future RetroArch HDR support
* We still need HDR implementations for other modern graphics APIs, like Vulkan (and Metal and/or OpenGL core if possible). We have no ETA on when this will be done. Ideally a generous contributor submits it to us, just like what happened with D3D11/12.
* Slang [the shader format] will need HDR support as well in order to take full advantage of the expanded gamut. Right now the author that made the D3D11/12 implementation made a reference shader that he says can already take advantage of HDR - check out his new shader 'integer-scaling-scanlines.slangp'. You can find this preset inside the folder 'scanlines/shaders'. It is an integer scaling mode pixel perfect scanline shader for use with low resolution monitors, underpowered machines, the new HDR mode in RetroArch and for people who want pixel sharp scanlines with absolutely no moire patterns (but with the downside that integer scaling must be on and so not fill up the screen or over fill the screen).
* It needs to be pointed out that HDR support on Linux in general is very premature right now compared to Windows. Windows happens to be a bit further along at this point in this department. Hopefully this inequality will be addressed shortly. But just know that this might tie our hands a bit.
[h2]3DS Bottom touchscreen menu[/h2]
https://twitter.com/i/status/1434063889122140160

A fully interactive touchscreen menu for the bottom screen of the 3DS has been added by the very generous contributor bulzipke!

The following functions are currently available on this screen:

Resume Game
Toggles RetroArch menu, closes it and goes back to the game.
Create Restore Point
If you touch this, save it to SD card.
If the Save State Thumbnails option is enabled, you can see Screenshots at the Load Restore Point
Load Restore Point
Shows the date when you saved it. (And show Screenshot if exists). If you change the State Slot, bottom menu will refresh Screenshot / date / state.

[previewyoutube][/previewyoutube]

Some important convenience features came as a result of this too. Savestate loading / saving to RAM instead of to disk was added, so it's possible to have temporary suspend points without writing to disk. The state is only saved to disk when either:

* Closing the lid of the 3DS
* Pressing the HOME button
* Exiting RetroArch

This gives things a very seamless feel. Not only that, the saving of state to RAM is orders of magnitude faster vs. saving to disk, so now while doing these operations, things no longer slow to a crawl.

There's also the option to disable the bottom screen -
Settings->User Interface->3DS Bottom Screen

Although this option will not affect performance, it is estimated that "Tap the Touch Screen to go to the Retroarch menu" text may add additional battery consumption to draw the screen. So it's always nice to have the option to toggle it off if need be.
[h2]AMD FidelityFX Super Resolution (FSR) has been ported to Libretro/RetroArch![/h2]
https://twitter.com/libretro/status/1433511745641922572

A very generous contributor submitted a fully working implementation of AMD FSR as an slang shader for use in RetroArch! This shader should be fully compatible with the following video drivers in RetroArch:

* Metal
* OpenGL Core (or at least 4.0 with regular OpenGL driver)
* Vulkan
* Direct3D 11 (if your card supports Direct3D 11 Feature Level 11.0 or higher)
* Direct3D 12

We have had to update our Direct3D 11 driver to allow for the use of Shader Model 5.0 when your GPU supports it, since this shader requires SM 5.0 features and wouldn't work on D3D11 without it.

The contributor mentions in his pull request that implementing AMD FSR as a pixel shader seemed to work out just fine despite AMD insisting it is supposed to be implemented as a compute shader.

On top of this straight port of FSR, he also took the time to remake the SMAA shader. It is now supposed to be less of a port and just uses the original library unmodified, while adding a few features and higher quality search textures. The contributor wasn't too happywith the quality of this AA and wanted to check if it could be improved, mainly because FSR requires good looking AA (Anti-Aliasing) otherwise it wouldn't make much sense. In the end, quality gains were marginal, pretty much imperceptible. Despite that, there is also an AMD FSR+SMAA preset that you can use.

You can see some comparison images down below - to the far left is the image without any shaders, in the middle is AMD FSR, and to the right is AMD FSR + SMAA applied.



Ys Seven undub with the PCSX2 core in RetroArch. The image is zoomed in here by 2x. Left: no shaders, middle: AMD FSR shader, right: AMD FSR + SMAA.





1st image: Gradius V with the PSCX2 core in RetroArch, zoomed in to showcase how FSR can combat aliasing. Left: no shaders, middle: AMD FSR, right: AMD FSR + SMAA. Note how the jaggies become less pronounced by applying FSR, and how they become even less with SMAA added to the mix.

2nd image: Gradius V with the PCSX2 core in RetroArch, zoomed in. Top: no shaders, middle: AMD FSR, right: AMD FSR + SMAA.



3rd image: Panzer Dragoon running on Kronos with AMD FSR shader (click on the image to see it without shader applied).
[h2]Add enhanced search functionality to the 'Cheats' menu[/h2]
1.9.9 adds enhanced search functionality to the Quick Menu > Cheats menu, similar to that in the core downloader and core manager menus:



In addition, the search feature may be used to filter cheats that are currently on or off: this is done by searching for the 'key' string .on or .off

* The key string is case insensitive
* The actual on/off text is localised - it matches whatever is currently shown as the cheat value (i.e. if the user language is set to French, the on key is .Activé
* The leading period was chosen because (a) it should be available on most keyboard layouts, (b) it is available on the first 'page' of RetroArch's OSK and (c) it is easier to type than enclosing the string with brackets, as it is displayed in the cheat value text


[h2]Faster sinc resampler and audio conversion for ARM NEON platforms[/h2]
Previously, the audio sinc resampler and the audio conversion functions only had optimized SIMD codepaths written in ASM for ARM NEON. There are more and more platforms/toolchains now that prohibit or make it difficult to use assembly routines, or strongly recommend you resort to SIMD intrinsics instead.

So we have done exactly that now. All the audio conversion routines (float to signed 16bit integer, signed 16bit integer to float) and the sinc audio resampler now have ARM NEON intrinsic optimized codepaths available instead of just defaulting to C codepaths. This should contribute to performance on platforms like the Mac M1, Android devices, the PS Vita, iPhone devices, and ARM Linux hardware in general (both AArch64/ARMv7).

We have still left in these legacy ASM codepaths behind an ifdef in case someone still has a use for it, but from now on we will try to make sure to offer both intrinsic and ASM codepaths whenever possible, or intrinsic only if both can't be provided.
Important fixes
Fix cheat when using second instance runahead
Before, using cheats when second instance runahead was enabled caused undefined behaviour because the cheats are only applied to the primary core (and not the secondary one). 1.9.9 fixes the issue. It also ensures that cheats are correctly reapplied when second instance runahead is toggled on while content is running.

Fix menu sounds (audio mixing) when using the 'sinc' resampler with quality lower than 'normal'
Before, if the sinc resampler was used with a quality of lower or lowest, then enabling any 'menu sounds' (including cheevos notifications) would completely break in-game audio. 1.9.9 fixes the issue by ensuring that all audio mixer resamplers use the same quality setting as the main one. In addition, we ensure that the same backend driver is used.

1.9.9 also fixes a memory leak when loading system sounds without a driver reinit (i.e. when toggling menu sounds via the menu)

Fixed several crashes that could occur during fullscreen toggle
Fullscreen toggle should now be more robust in cores like PCSX2, Flycast and other 3D-based emulator cores.

Add option to (force-)write current core options to disk
RetroArch saves core options automatically when closing content - but if a badly behaved core causes a crash on close content, then the current core option settings will be lost.

1.9.9 adds a new Flush Options to Disk entry to the Quick Menu > Options > Manage Core Options menu. When selected, this will force the current core options to be written immediately to the active options file.

Since 99% of users will not need this functionality (it was requested for users testing the PCSX2 core) the entry is hidden by default, with visibility controlled via a new Settings > User Interface > Menu Item Visibility > Quick Menu > Show 'Flush Options to Disk' option.

This PR also fixes a rather nasty bug related to saving core options: At present, if a user has Use Global Core Options File enabled, and they create then delete a per-game or per-content directory options file via the Manage Core Options interface, when the current options are re-saved to the global file then any settings not related to the current core will be removed (!). This has been fixed by ensuring that all locally stored config file data is properly updated whenever per-game or per-content directory options files are deleted.

Highlight currently selected value in Shader Parameter drop-down lists

Before, when opening a shader parameter drop-down list via Quick Menu > Shaders > Shader Parameters, the selection cursor would always 'reset' itself to the top of said list. 1.9.9 ensures that the current parameter value will be auto-selected and marked.

Note that we may replace these shader parameter drop-down lists with keyboard input at some point, but we might as well fix this selection bug in the meantime (since it is so easy to do!).

Allow 'Vertical Refresh Rate' to be entered manually via keyboard/onscreen keyboard

Making significant changes to Settings > Video > Output > Vertical Refresh Rate (e.g. 60 Hz -> 50 Hz) is quite tedious, since holding left/right only modifies the value in 0.001 Hz steps.

1.9.9 adds the ability to set this parameter 'manually'. When Vertical Refresh Rate is selected, a new value can be entered via the OSK or physical keyboard.

For current settings where very long dropdown lists are spawned, we might consider switching over to this style of input instead.

Linux - udev - Look for "ID_INPUT_KEY", not "ID_INPUT_KEYBOARD"
Very important contribution by icculus (of SDL fame) -

This fixes programs using /dev/uinput to create a virtual keyboard failing to be detected on startup. Usual symptom is some sort of GPIO-based controller on a Raspberry Pi that looks like a keyboard to the OS and can control EmulationStation, but fails to work in-game unless you restart the controller's program while the game is running (in which case udev_input.c's hotplug code, which was using the correct string, would pick it up).

Core info cache files are now portable

Core info cache files should now be portable.

The core info cache stores absolute core paths, which breaks portability (i.e. if the cache is enabled and the core directory is moved, cores can no longer be loaded).

In truth, it is a mistake to cache the core path in the first place, since this is already retrieved from the filesystem regardless of whether the cache is enabled. 1.9.9 therefore removes core paths from the info cache, so the correct (dynamically determined) path is always used.

As a result, iOS now has core info cache files re-enabled again, which should lead to an increase in overall core info performance.
Changelog
1.9.9

  • 3DS: Add bottom touchscreen menu
  • 3DS/SAVESTATES: Save and load save states to and from RAM
  • AUDIO/MIXER: Ensure than menu sounds are re-enabled when calling CMD_EVENT_AUDIO_REINIT
  • AUDIO/RESAMPLER/MIXER: Fix menu sounds (audio mixing) when using the 'sinc' resampler with quality lower than 'normal'
  • AUDIO/CONVERSION/ARM NEON: Add intrinsic NEON versions for float_to_s16/s16_to_float - should lead to optimized codepaths for AArch64/ARMv7 architectures without being dependent on ASM codepaths.
  • AUDIO/RESAMPLER/ARM NEON: Add intrinsic NEON version for lanczos sinc function - should lead to optimized codepaths for AArch64/ARMv7 architectures without being dependent on ASM codepaths.
  • CHEEVOS: Upgrade to rcheevos 10.2
  • CHEATS: Add enhanced search functionality to the 'Cheats' menu
  • CHEATS/RUNAHEAD: Fix cheats when using second instance runahead
  • CONFIG: Add option to (force-)write current core options to disk (Quick Menu)
  • CORE INFO CACHE: Remove core path from core info cache. Should make core info caches portable now (for example: you can move RetroArch to a separate dir and they would still work).
  • D3D11: Use Shader Model 5.0 for frontend shaders if D3D11 Feature level is at least 11.0 or higher. Should fix some new shaders that require SM 5.0 (like AMD FSR)
  • D3D11: Add HDR support (not working for Xbox for now)
  • D3D12: Add HDR support (not working for Xbox for now)
  • EMSCRIPTEN: Fixed web player bug with filesystem and runtime
  • INPUT/OVERLAY: Fix overlay input when analog to digital mapping is enabled
  • INPUT/UDEV: Look for "ID_INPUT_KEY", not "ID_INPUT_KEYBOARD"
  • INPUT/WINRAW: Fix crash when overlay is enabled
  • MAC/METAL: Add Discord RPC support
  • MENU: Allow 'Custom Aspect Ratio (X Position)/(Y Position)/(Width)/(Height)' to be entered manually via keyboard
  • MENU: Allow 'Vertical Refresh Rate' to be entered manually via keyboard
  • MENU/SHADERS: Highlight currently selected value in Shader Parameter drop-down lists
  • STABILITY: Safer way of avoiding the race condition in audio_driver_sample/audio_driver_sample_batch - we can check audio-suspended to see if we're doing a fs/windowed toggle - enhances stability when fullscreen toggling/tearing down context
  • STABILITY: When audio driver write callback function fails, don't turn audio off completely - look if audio_driver_output_samples_conv_buf is non-NULL first before we attempt to write audio - enhances stability when fullscreen toggling/tearing down context
  • STABILITY: Input robustness for cores that use internal threading (full teardown/setup), no audio should be processed at this point in time
  • VIDEO: Screen resolution list sanitizing
  • VULKAN: Fix some Vulkan validation layer errors
  • UWP: Updated icons courtesy of Danp142
  • UWP/XBOX: Disable CPU model check on Xbox as it doesn't work and can even crash
  • UWP/VFS/XBOX: Code cleanup and simplification of UWP VFS driver

RetroArch 1.9.8 released!



If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.7 version) is scheduled to be released a week from today.

Remember that this project exists for the benefit of our users, and that we wouldn't keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!
Highlights




New RetroFW port

We added support for OpenDingux before for JZ4770-based handhelds. After this, we added support for RetroMini RS-90 devices.

And now thanks to Poligraf, we have a working build for all the JZ4760-based handheld devices running RetroFW. RetroFW is a Dingoo based firmware runnin on the MIPS 4760 which is around 50% the speed compared to other devices running Opendingux.

Which devices does this cover?
  • RS-97
  • LDK
  • RG-300
  • Powkiddy Q80


A full listing can be found here.

  • 29 cores available at launch: Atari800, BlueMSX, Cap32, FCEUmm, fMSX, FreeCHAF, FreeIntv, FUSE, Gambatte, Genesis Plus GX, gpSP, GW, Handy, LRMAME2003, LRMAME2003 Plus, Mednafen PCE Fast, NXEngine, O2EM, Picodrive, Pokemini, Potator, Prboom, Prosystem, QuickNES, RACE, Retro8, SMS Plus, Stella 2014, Vecx


We have been told these cores all run well on the hardware.

All of these low powered handheld devices help us tremendously in optimizing our cores for the low end spectrum of hardware devices. gpSP, PCSX ReARMed and Picodrive are already starting to reap the benefits of it.

Core option categories

We are going to be making a persistent effort now to enhance RetroArch's UX and lower the acessibility curve. To that end, we now have also implemented core option categories support.

Up to this point, every core option in a core (Quick Menu -> Options) has all been shown in a a flat alphabetical list. Users can quickly get confused if they have to scroll down a massive list of options.

So, 1.9.8 finally adds core option categories. Options assigned to a category will be displayed in a submenu of the main core options menu on supported frontends. For example - here we assign Gambatte's mulitplayer options to a Game Boy Link category:





If you do not like this new behavior, there are always options to turn it off. Go to Settings > Core > Core Option Categories setting (enabled by default). When disabled, core option categories are ignored, and core options will effectively be displayed using the old v1 format.

[h2]Cores that already support core option categories[/h2]
Core option categories have to be specifically added per core. Some of the cores that already support core option categories are as follows: