RetroArch 1.13.0 has just been released.

Grab it here.

If you’d like to learn more about upcoming releases, please consult our roadmap here.

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. We have always prioritized the endusers experience, and unlike others, we have never emburdened them with in-app ads, monetization SDKs or paywalled features, and we intend to continue to do so. 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!

NOTE: Since it has been a very long time since the last core progress update report, there will be a Core Progress report very soon listing all the changes over the past 6 months that have been made to all the cores in our repertoire. A ton of stuff has happened, lots of things have been improved, and it’d be criminally negligient not to talk about it at all. So stay tuned for that blog post.

Android

The feature ‘Vibrate On Key Press’ has been enabled by default now on Android. You will get haptic feedback when pressing any of the overlay gamepad elements onscreen, improving the user experience.

In addition, several big improvements are being made under the hood to improve and refine overlay touchscreen controls. Read more about that later in this article (see ‘Overlay / onscreen gamepad controls improvements’).

Threaded Video is also disabled now by default on new installs/configs. We have left this setting on since 2013 when frame time spikes were dreadful on Android due to SoCs being underpowered and tons of processes running in the background. Fastforward nearly 10 years later and we feel times have changed since and it’s a little safer to disable it now. Threaded video can theoretically be faster than non-threaded video but also leads to more judder and less precise frame times. Non-threaded video therefore (if frame time deviation is below 5% margins) should lead to smoother frame times. It’s still possible for the user to enable Threaded video if they desire, so nothing has been lost in the process.

Note – another benefit of non-threaded video being the default is that it fixes some issues that were experienced upon focus loss of an app and re-entering RetroArch.

iOS 13+ port

Thanks to the new Swift backend targeting iOS 13 and up, it has become easier to add several new QoL features, such as iPad trackpad support for iOS 13.4 and above.

macOS

Users upgrading to the recent macOS Ventura would have discovered that RetroArch had issues going into fullscreen. This has been fixed in this newer version.

Some keyboard keys have also been hooked up that were not added to the key symbol map before, such as Z/X, and the left meta key.

Overlay / onscreen gamepad controls improvements

Android/iOS users are going to benefit a lot in this release and upcoming versions from various improvements being made to neil4 to overhaul and improve touch controls.

Several gamepad overlays have already been updated to take advantage of these new features. These are as follows:

  • gamepads/neoretropad
  • gamepads/neoretropad-clear

There are also new ‘lite’ overlays that take advantage of all the new features described below. In particular, the lite overlays rely heavily on ‘exclusive’ hitboxes.

Let’s go into what has been added so far to this release:

Add eightway area types

  • New descriptors: ‘dpad_area’ and ‘abxy_area’
  • Each has a diagonal sensitivity setting, 100% being 8-way symmetry
  • Buttons can be redefined in the cfg file

E.g. This would create a d-pad area, then redefine it to use analog directions:

overlay0_desc0 = “dpad_area,0.85,0.57,rect,0.166228,0.295516”
overlay0_desc0_up = “r_y_minus”
overlay0_desc0_down = “r_y_plus”
overlay0_desc0_left = “r_x_minus”
overlay0_desc0_right = “r_x_plus”

Note: If ‘Hide Overlay in Menu’ is enabled and the menu is up, the overlay preset will be read (loaded & unloaded without being shown) to know which overlay types are in the preset, i.e. whether to show eightway settings or not.

Add ‘reach’ and ‘exclusive’ for hitboxes

These allow stretching (or shrinking) hitboxes and handling their overlap. Does not affect image, analog range, or analog/eightway center.

Hitbox Reach

reach_up, reach_down, reach_left, reach_right:

  • Stretches hitbox in one direction:

reach_x, reach_y

  • Stretches hitbox symmetrically

E.g. In the overlay cfg, this creates a D-Pad area and extends its hitbox left & right 50%, up 15%, and down 30%:

overlay0_desc0 = “dpad_area,0.15,0.57,rect,0.166228,0.295516”
overlay0_desc0_reach_x = 1.5
overlay0_desc0_reach_up = 1.15
overlay0_desc0_reach_down = 1.3

Exclusive Hitboxes

exclusive:

If true, blocks input from overlapped hitboxes

range_mod_exclusive:

Similar, but only applies when this hitbox is extended by range_mod
After range_mod takes effect, has priority over ‘exclusive’
E.g.

overlay0_desc0_exclusive = true
overlay0_desc1_range_mod_exclusive = true

Expected use cases:

  • A ‘range_mod_exclusive’ hitbox placed close enough to other hitboxes that its range_mod value would otherwise cause unwanted overlap.
  • A smaller ‘exclusive’ hitbox placed inside (or partially inside) a larger one; the smaller hitbox would “carve out” space for itself.
  • A combination of the two: A smaller ‘exclusive’ hitbox carves out space for itself, but the larger hitbox has ‘range_mod_exclusive’. Whichever is hit first effectively has priority.

Ignore hitboxes with zero area

I.e. Set ‘reach_x’ or ‘reach_y’ to zero to ensure no hitbox math is done.

This simplifies designating animation-only descriptors (e.g. for eightway areas) or obsolete descriptors.

Content scanning

PS1 and PS2 content scanning has been improved significantly in RetroArch. All PS2 discs should now be able to be scanned. Previously, only CD-based PS2 games could be scanned and not DVD-based ones.

PS1 content scanning has also been improved. More content should be able to be recognized now that the system is also able to scan PSX.EXE files on a disc. For instance, it was not possible to scan ‘Street Fighter: Real Battle on Film’ before because of this. Also, all LSP- titles were previously ignored, which has also been fixed.

Menu QoL improvements

Various improvements made to the menu system in terms of usability and UX thanks to sonninos.

  • Quick Menu entries were pretty random in regards of doing scrolling with left & right, so it’s been cleaned up a bit, and we made sure all submenus behave in unison.
  • Ozone – Show metadata helper in footer only with second thumbnail. Removed metadata toggle helper from footer when second thumbnail is not enabled – which is the default – because the button won’t do anything without second thumbnail enabled.
  • We made the background image selector usage more comfortable by starting from assets directory or current selection instead of drive letter root, and showing image previews while browsing.
  • File selector globally removes file from selection path, uses path instead and sets file as selection
  • File selector title corrected to have : separator
  • It’s possible to control the menu now with the right analog stick, or both at the same time if you want to do so.
  • Cursor memory for most menu screens
  • (Applicable to Ozone) Footer improvements – show metadata helper in footer only with second thumbnail, add “Cycle thumbnails” helper when suitable, show “Search” helper only when search function is enabled, fix “Thumbnails available” helper for save states, tighten padding between icon and title, and widen between helpers
  • For a more exhaustive list of all changes made to the menu, consult the Changelog.

    Vulkan fix for HDR mode

    After RetroArch 1.11.1, an unexpected side effect caused many shaders (e.g. crt-easymode-halation or newpixie.crt) to render an oversaturated and dark image when using Vulkan and HDR on Windows 10/11. To fix this now with the Vulkan driver, we only skip the tonemapper if HDR10 is explicitly enabled by the last shader pass. Otherwise, we are simply just inheriting the bit-depth of the swapchain.

    Changelog

    1.13.0

    • 3DS: Remove debug button combo to shutdown RA
    • 3DS: Remove MaterialUI as per MrHuu recommendation
    • ANDROID: Enable ‘Vibrate On Key Press’ haptics by default
    • ANDROID: Turn ‘Threaded Video’ off by default
    • CHEEVOS: Upgrade to rcheevos 10.5
    • COMPILATION: Fixed compiling with –disable-menu
    • CONFIG: Don’t show override notification with appendconfig alone
    • DATABASE/PLAYLISTS: Playlist + database changes – Cleanup ‘entry_slot’, fallback label + logging
    • FRONTEND: Fix default remaps folder for various cores: remap should … …be nested in config folder
    • HOTKEYS: Fix shader toggle and add hotkey + sublabel
    • HOTKEYS: Cleanups and corrections – Keep hotkey pause and menu pause separate in order to not trigger unwanted pause when toggling menu regardless if menu will pause or not
    • HOTKEYS: Cleanups and corrections – Allow unpausing with Start (makes resuming more convenient after controller disconnect if menu does not pause)
    • IOS13+: Pointer movement accuracy. iPad Trackpad Pointer Movement Accuracy through absolute location (for iOS 13.4 and above)
    • IOS13+: Adds iPad Trackpad Support to iOS13 Project (for iOS 13.4 and above)
    • INPUT: Fixed the way devices were previously indexed. Input devices were only being indexed in order and would stop at the first time an input has no device connected to it. The problem is when a device gets disconnected, that input will have no devices connected to it, but the next input may still have a device connected. So, that makes changing the port of the currently connected devices impossible.
    • INPUT/AUTOCONFIG: Add option for pause on controller disconnect
    • INPUT/AUTOCONFIG: Driver independent disconnection notification. Should show disconnect notification now properly on Windows with XInput and/or DirectInput pads
    • INPUT/HID: Added usb hid controllers for the famous ZeroDelay encoder and also for “Kade: Kick Ass Dynamic Encoder” to be able to use some custom arcade sticks.
    • INPUT/OVERLAY: Add eightway area types.
    • INPUT/OVERLAY: Fix overlay next_index for unnamed targets
    • INPUT/OVERLAY: Ignore hitboxes with zero area. I.e. Set ‘reach_x’ or ‘reach_y’ to zero to ensure no hitbox math is done. This simplifies designating animation-only descriptors (e.g. for eightway areas) or obsolete descriptors.
    • INPUT/OVERLAY: Add ‘reach’ and ‘exclusive’ for hitboxes. Allows stretching hitboxes and handling their overlap.
    • INPUT/MENU: Addition to analog stick menu navigation
    • INPUT/MENU: Enable menu navigation also with right analog stick
    • INPUT/MENU: Add option for swapping menu scrolling buttons
    • LOCALIZATION: Updates
    • LOCALIZATION: Add Hungarian language option
    • MENU: Thumbnail fullscreen toggle behavior correction
    • MENU: Consistent left-right scrolling for Quick Menu items
    • MENU: Remove useless sublabel from System Information
    • MENU: Improve widget appearance with missing assets
    • MENU/QT/WIMP: Remove SSL/TLS check at startup
    • MENU/OZONE: Show metadata helper in footer only with second thumbnail
    • MENU/OZONE: Footer improvements – Add “Cycle thumbnails” helper when suitable
    • MENU/OZONE: Footer improvements – Show “Search” helper only when search function is enabled
    • MENU/OZONE: Footer improvements – Fix “Thumbnails available” helper for save states
    • MENU/OZONE: Footer improvements – Tighten padding between icon and title, and widen between helpers
    • MENU/OZONE: Launching anything from a View no longer throws Quick Menu off the screen
    • MENU/OZONE: Save state thumbnails in slot dropdown obeys fullscreen toggle properly when content launched via CLI
    • MENU/OZONE: Save state thumbnail dropdown won’t allow fullscreen toggle when it shouldn’t
    • MENU/OZONE: Selection position remembering in non-playlists won’t flash the first entry
    • MENU/OZONE: Remember selection per main tabs
    • MENU/OZONE: Remove incomplete assets warning
    • MENU/OZONE: Add option to adjust cursor memory when changing menu tabs
    • MENU/OZONE: Further extend texture support for Core Option categories
    • MENU/XMB: Remove incomplete assets warning
    • MENU/XMB: Add truncate playlist name option
    • MENU/XMB: Improve background image selector
    • MENU/XMB: Add option to adjust cursor memory when changing menu tabs
    • MENU/XMB: Further extend texture support for Core Option categories
    • MENU/MATERIALUI: Remove incomplete assets warning
    • OSX: Fixed Z/X keys not working on the macOS port
    • OSX: Fixed RETROK_LMETA not working on macOS port. The RETROK_LMETA key was not defined in the rarch_key_map_apple_hid
    • OSX: Fix broken fullscreen mode in macOS Ventura
    • PS2: Fix Error saving remaps and runtime logs
    • PS3: Fix Core Remap Overwrite Fail
    • QB: Don’t fail if OSDependent/OGLCompiler libraries are not present
    • SCANNER/PS1: Improved scanning of PS1 discs
    • SCANNER/PS2: Added serial scanning of PS2 discs – should now scan DVDs and other discs which were previously missed
    • THREADED VIDEO/GLCORE: Fix regression ‘Shader presets dont load, when video driver is set to glcore’
    • VULKAN: Fix HDR inverse tonemapping. Only skip tonemapper if HDR10 is explicitly enabled by last shader pass. Otherwise, we are simply just inheriting the bit-depth of the swapchain.