1. RetroArch
  2. News

RetroArch News

RetroArch 1.9.6 update postponed.

In light of today's events and out of respect for what has transpired, we've decided to delay the release of RetroArch 1.9.6 that was scheduled today. We thank you for your understanding.

Lakka 3.2 has just been released!

Lakka 3.2 has just been released! To learn more, check out this article here -
http://lakka.tv/articles/2021/06/19/lakka-3.2/

This version is based on the latest RetroArch version, 1.9.5.

Next version of RetroArch (v1.9.6) scheduled for next Sunday (26/6/2021).

RetroArch 1.9.5 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.5 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!

Release notes


Be sure to also read our Libretro Cores Progress Report (a link will appear here later).

Direct3D 10/11/12 should now allow for fastforwarding while in fullscreen mode. The window title should now fully update periodically as well when using Direct3D 10/11/12 drivers. For instance, frame count and fps was not shown in the window title before. This should now be corrected.

CRT SwitchRes support has been completely overhauled. Read below for the details.

Highlights


[h2]Enhanced search functionality to the ‘Manage Cores’ menu[/h2]
1.9.5 adds enhanced search functionality to the Settings > Cores > Manage Cores menu (with behaviour identical to that of the core downloader

1.9.5 also wires up proper left/right input actions for core manager entries, so the Manage Cores list can be scrolled rapidly by pressing/holding left/right.

[h2]API extension for setting ‘need_fullpath’ based on content file extension and to request persistent frontend content data buffers[/h2]
Before, the libretro API had two major shortcomings when it comes to handling content:

* The need_fullpath parameter, used to define whether content is loaded by the frontend or handled by a core, is set ‘globally’ at the core level. This means any core that supports both CD-type and ‘normal’ ROM content has to set need_fullpath = true for all content, since CD-type files are generally too large to fit in memory – and in doing this, they are then obliged to load small ROM files internally, disabling any frontend softpatching support, and requiring the frontend to extract compressed content to temporary files on disk.
* The content data buffer passed to retro_load_game() is transient – a core must assume that it will become invalid once retro_load_game() returns. This means any core that sets need_fullpath = false must duplicate the content data buffer – so for example, loading a 32 MB GBA ROM with mGBA requires 64 MB of free RAM. This is a substantial issue on platforms with limited memory, and means that some cores are forced to set need_fullpath = true just to minimise RAM consumption.

1.9.5 seeks to address these problems with the addition of a new RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE environment callback:

* This allows need_fullpath to be set based on file extension
* It also allows cores to request a persistent content data buffer, which is guaranteed to be valid for the lifetime of the core (such that data duplication is not required)

Accompanying this is a new RETRO_ENVIRONMENT_GET_GAME_INFO_EXT callback, which allows extended content information to be retrieved in retro_load_game() (specifically, it provides content file path/metadata information – often essential when loading content from compressed archives – and buffer ‘persistence’ status)

The manner in which this functionality is implemented has a further side benefit. On all platforms that support runahead, for any core that sets need_fullpath = false another copy of the content data buffer must be created and stored in case the user toggles second instance runahead on while the core is running. Now that we have a mechanism for maintaining persistent content data buffers, we just enforce persistence whenever runahead is supported – so the initial frontend-loaded content buffer can be used directly by the second instance core, with no duplication.

NOTE: A couple of cores are already implementing this new feature. Unfortunately, not every emulator will be able to directly use the persistent buffer without copying it first into a temporary buffer. Some emulators like writing back to the ROM buffer in-memory (such as adding speedhacks or other alterations). In instances where this happens, we unfortunately cannot just directly set a pointer to the persistent buffer and need to still have a memory buffer copy.

New CRT SwitchRes implementation


[previewyoutube][/previewyoutube]

Check out this article for all the details here.

[h3]What is new?[/h3]
  • Better modeline generation.
  • Faster and more stable switching.
  • Windows dynamic resolutions. No longer limited to locked resolutions/Hz. Timings are modified on-the-fly (ATI only)
  • ( Stable resolution restoration. (If RetroArch should crash you will be stuck in the previous resolution that RetroArch was in)
  • Improved super resolutions with Integer scaling.
  • Fixed primary monitor issue. You no longer have you use your primary monitor only.
  • Improved monitor indexing. Allowing for multi-monitor support.
  • Low and High resolution options for the RetroArch menu.
  • (RawInput support for absolute mice devices (Lightguns, to name a few) had issues with resolution changes, this has been fixed co-ordinates are reassigned after a resolution change.
  • New CRT SwitchRes Menu options to remove the need to edit the switchres.ini.
  • Switchres.ini can be used to set some advanced options.
  • Monitor profiles – these allow you to change the modeline generation profile to fit many TV/monitors. (Some available from the CRT SwitchRes menu)
  • Custom CRT ranges – this allows you to set custom monitor profiles. This can help with uncommon TV/Monitors and geometry issues.


Changelog

[h3]1.9.5[/h3]

  • ALSATHREAD: Make alsathread default for all ALSA devices with threads
  • ARCHIVE: Fix loading of archived content with file names containing ‘#’ characters
  • CHEEVOS: Upgrade to rcheevos 10.1
  • CHEEVOS: Challenge indicators
  • CHEEVOS: Group achievements by category in quick menu
  • CHEEVOS: Relabel ‘Start Active’ with ‘Encore Mode’
  • D3D10: Window title should now update
  • D3D11: Window title should now update
  • D3D11: Allow fastforward in fullscreen
  • D3D12: Window title should now update
  • D3D12: Allow fastforward in fullscreen
  • CRT/SWITCHRES: New implementation
  • FONTS: Improve message wrapping with CJK languages
  • FONTS: Fix garbled characters when converting encodings
  • INPUT: Allow the 8 analog stick directions to be used as keys for core keyboard mappings
  • LIBRETRO: Add API extension for setting ‘need_fullpath’ based on content file extension and to request persistent frontend content data buffers
  • MENU/SEARCH: Add enhanced search functionality to the ‘Manage Cores’ menu
  • OPENDINGUX: Fix black screens when triggering gfx driver initialisation via menu actions
  • UNIX: Get better battery stats on sysfs nodes
  • VIDEO: Extend Frame Delay range to 19 to accommodate PAL land too
  • WIFI/LAKKA: Add nmcli to wifi drivers
  • WIFI/LAKKA: Add wifi configuration menu
  • X11: fix fullscreen when swapping monitors/resolution

Lakka 3.1 Released!

Lakka 3.1 has just been released! To learn more, check out this article on our sister site Lakka.tv here.

This version is based on the latest RetroArch version, 1.9.4.

We have the next version of RetroArch (v1.9.5) scheduled for next Saturday (12/6/2021). You can always view our roadmap for Lakka and RetroArch here.

RetroArch 1.9.4 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.4 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!

Release notes


Be sure to also read our Libretro Cores Progress Report – lots of work has gone into all of the various cores that are maintained (either by us or elsewhere), and it’d be a shame if the work goes unnoticed. Read it here.

There were some issues with RetroArch on PlayStation TV devices which should now be resolved. Additionally, it’s possible to run RetroArch at 720p now on a PSTV if you use the Sharpscale plugin.

Just like in version 1.9.3, we have been going back and improving code in RetroArch to improve file I/O performance, something that is very important for systems suffering from slow disk storage. Most game consoles would fall in this boat because all file I/O tends to be typically unbuffered on homebrew SDKs. In the process, we have discovered some parts where RetroArch was being inefficient when loading files from compressed files (such as .zip or .7z files). In the past, it would extract this file first to a temporary directory on the disk, and then it would read from this file and load it into the RAM buffer. Now we load it into the RAM buffer directly from the compressed file without first extracting it to disk. As if that wasn’t bad enough, on any platform that supports runahead, we would have to create another copy – even when runahead is disabled. And if cheevos are enabled, that’s another copy. All things combined, it would take 128MB of RAM to load one 32MB GBA ROM. As of 1.9.4, this RAM usage is severely cut down for cores that set ‘need_fullpath’ to false.

PlayStation2 users get a new core, prboom (a Doom 1/2 game engine). Thanks to a new and improved toolchain for PS2, this runs at a very impressive framerate, targeting 60 frames per second with stock settings. There might be some minor dips to the 50s in the busier scenes but nothing too serious, and disabling settings like ‘Wiggle Geometry Fix’ might help alleviate that.

Highlights


[h2]Prevent unnecessary extraction (to disk) of compressed content files[/h2]

In previous versions, when loading content from compressed files, RetroArch always extracts the archive to a temporary file – even when cores specify need_fullpath = false. This is incorrect behaviour. If a core does not explicitly need to load a file from disk via some internal mechanism, the frontend should merely provide it with a data buffer. RetroArch was doing this, but in absurd fashion, i.e.:

  • Content is extracted to a temporary file on disk
  • Temporary file is loaded into a memory buffer and passed to the core
  • Temporary file is deleted when core is unloaded
  • This is a huge unnecessary performance overhead, and it causes significant unnecessary wear and tear on flash storage devices…


1.9.4 fixes the issue. Now if compressed content is loaded into a core that sets need_fullpath = false, the file will be loaded directly into memory – no disk writes will occur.

Additional notes:

Previously, it was in fact impossible to load content inside zip files directly into RAM. This has now also been resolved.

The end result? Less read/write on disk storage, which will make a big difference in terms of game content loading time on systems with slow file I/O (typically game consoles).

[h2]Option to select between ‘touched’ elements and physical controller inputs when showing inputs on overlays[/h2]

The ‘Show Inputs on Overlay’ option was previously ‘broken’ when using remaps: the mapped button is highlighted rather than the pressed button, which is confusing for users and at odds with every other application (in existence) that has on-screen touch controls.

1.9.4 remedies the situation by changing the ‘Show Inputs on Overla’y option from a bool to an enum, with the following settings:

  • OFF: No inputs will be highlighted
  • Touched: The overlay element that is touched/clicked will be highlighted, regardless of which RetroPad button it corresponds to (default setting on mobile platforms)
  • Physical (Controller): Actual inputs passed through to the core will be highlighted (including remaps). This is the default setting on non-mobile platforms, and can be used by streamers, speedrunners and suchlike to show the actual controls they are using


When Show Inputs on Overlay is set to Physical (Controller), the index of the ‘physical’ device to be monitored can be set via a new Show Inputs From Port option (this option did in fact exist already, but was hidden/disabled by a long standing bug)

[h3]Changelog[/h3]

1.9.4

  • CHEEVOS: update rcheevos to v10.0.0
  • CONTENT LOADING/FILE IO: Prevent unnecessary extraction (to disk) of compressed content files when need_fullpath is false
  • CORE INFO/FILE IO: Enable core info cache by default now for all platforms
  • CORE INFO/REGRESSION FIX: Fix regression caused by core info file caching – Downloads was no longer showing up in Load Content
  • FILE IO/COMPRESSED: Ability to load content inside ZIP files directly into RAM
  • INPUT/OVERLAYS: Add option to select between ‘touched’ elements and physical controller inputs when showing inputs on overlays
  • INPUT REMAPPING/OVERLAYS: Prevent duplicate inputs when using remaps with input overlays
  • LAKKA: Add brightness restore hook
  • LOCALIZATION: Fetch translations from Crowdin
  • MENU/OZONE: Added simple playlist entry enumeration
  • MENU/XMB: Fix display of ‘Maximum Users’ menu entry dropdown list
  • PS3/PSL1GHT: Joypad driver works again
  • PSTV: Fix Vita input driver for PSTV
  • PSTV: Support for 720p on PSTV when using ‘Unlock framebuffer’ in Sharpscale plugin
  • RPNG: Fix some memory corruption if processing broken input PNG file
  • SECURITY: Fix CVE-2021-28927