RetroArch 1.10.2 release!


RetroArch 1.10.2 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!

Highlights

Big improvements for Steam and Steam Deck users


We’re gearing up for Steam Deck, and in the process we are finally starting to turn the RetroArch Steam version into something more than just a plain port (courtesy of Mats).

We came up with a SteamWorks shim that allows RetroArch Steam to interface with the Steamworks API. Mist, our middleware tool, runs in a separate process, runs concurrently wtih RetroArch Steam, and functions as a bridge between this separate process interfacing with Steamworks and the GPL application itself running in an entirely different process. This is 100% GPL compliant and the same approach has been employed by numerous other examples on Steam, including the aforementioned Icculus.

Thanks to Mist, here are some of the big new features for Steam users (and in particular, Steam Deck users):

  • You can now install and uninstall cores directly from inside RetroArch by going to ‘Manage Cores’ from inside the menu. No longer do you have to manually browse Steam with your webbrowser and download random core DLCs for RetroArch, you can do it from within the convenience of the app running itself.
  • On Steam Deck, the native OSK (Onscreen Keyboard) will appear now instead of the RetroArch default OSK. This should give a more seamless experience. We have decided against enabling the Steam OSK with Big Picture since it seems partially broken and instantly dismisses itself (or at least those were our testing results on a Steam Deck).

As a result of these changes, the Steam port is starting to become its own thing rather than just a straightforward no-frills port of the Windows/Linux versions.

Improved audio sample pacing / latency in many cores

Big improvements have been made to several cores concerning improved audio latency and audio sample pacing.

Not only should performance be better, but you should also be able to lower audio latency buffers now while still getting perfect sound.

Here are some of the cores that have received work recently on this front:

  • Cannonball
  • Flycast
  • Gambatte
  • Nestopia
  • Snes9x
  • Snes9x 2002
  • Snes9x 2005
  • Snes9x 2010
  • SwanStation
  • UAE
  • VICE

For example, frame time deviations in a core like Snes9x 2010 are now extremely low with a default 64ms audio buffer. We measured 0.4 to 0.3% deviation, and this figure could likely be optimized even further by fiddling some more with audio buffer latency, or changing the audio driver.

Other measures have also been taken to further improve audio latency. Some cores have been updated now so that audio gets pushed to the frontend (i.e. RetroArch) AFTER the video frame has been uploaded. This is just in case the audio upload blocks for too long due to audio processing and syncing performed by the frontend. Uploading the video frame as soon as possible after the emulation loop is generally a good idea since it potentially avoids unnecessary input latency.

Steps have also been taken in cores to minimise use of the audio batch callback (for example, Tyrquake and Snes9x 2010), leading to better audio sample pacing, less overhead and better overall performance.

For Miyoo users

The following cores have been added for Miyoo platform users:

  • BlueMSX
  • ECWolf
  • FCEUmm

For OpenDingux users

The following cores have been added for OpenDingux platform users:

  • Dinothawr
  • NXEngine
  • XRick

UI/UX improvements


RGUI, MaterialUI and Ozone menu drivers now have new color themes. ‘Gray Dark / Gray Light’ themes have been added.

For XMB users, vertical fade adjustments have been made so that it functions a bit better like the original. Title margin can now also be adjusted, so that the title won’t cut off anymore on display devices with overscan (i.e. CRT TVs).

For RGUI users, 6×10 extended ASCII and Latin Extended A and B fonts have been added. These will enable most Latin alphabets to be displayed in RGUI.

For Ozone users, a thumbnail scaling option has been added (Settings->User interface->Appearance). This option scales the size of the thumbnail sidebar, which in turns means the thumbnails are scaled along with it. It should scale the thumbnails so that they should fill up more screen real estate now in the right sidebar. See the picture below for an example.

Manage Input Remapping Files

1.10.2 adds a new Manage Remap Files submenu to Quick Menu > Controls:

This updates correctly in real-time (the previous save/remove remap menu entries do not…), and only shows relevant options. When removing a remap, existing files are re-scanned and the one with the next highest priority (if found) will be loaded.

In addition, the currently active remap file will be saved automatically when closing content – i.e. it is no longer necessary (or indeed possible!) to save the file manually after each change.

We have also added a new Reset Input Mapping entry under Quick Menu > Controls > Manage Remap Files:

We have also fixed a nasty bug that could cause remap file corruption (incorrect or unwanted entries) when saving a remap after resetting one or more binds.

Prevent ‘global’ configuration of input libretro device type

Before, RetroArch allowed the input ‘libretro device type’ to be set globally per-user. This was nonsensical for a couple of reasons:

  • Input device type has no meaning unless a core is actually running, so the option to set it globally does nothing but confuse users
  • A global device type may be set that is incompatible with cores, leading to disabled input in-game. e.g. setting the global type to ‘RetroPad with Analog’ breaks Beetle PSX, since that is not a valid device type recognised by the core

1.10.2 fixes the issue by:

  • Removing the global option Settings > Input > Port N Controls > Device Type (device type can now only be set while a core is running, via Quick Menu > Controls > Port N Controls)
  • Ensuring that the ‘global’ device type is reset to the default RETRO_DEVICE_JOYPAD on startup and when closing cores (unless a device type override is set via the existing command line interface)

Note that device type is no longer stored in the main RetroArch config file, only in input remap files.

WiiU – Optimize for Gamepad

RetroArch WiiU adds a new option (Settings -> Video -> Output -> Optimize for GamePad). When enabled, it uses a 960p viewport if the user is on either 720p or 1080p (if they’re on 480p, they’re already optimized for GamePad). It defaults to off, so the native TV resolution is still preferred out of the box.

Explanation

The Wii U is a weird case with RetroArch because of the two screens (TV and Wii U GamePad). The Wii U can be configured to output video at 480p, 720p or 1080p (or interlaced equivalents), whereas the GamePad has a native 480-line display. While it is possible to send different images to the TV and GamePad, RetroArch currently sends the same image to both. This creates a bit of a conundrum as 480 does not divide evenly into any of the other available resolutions.

When running 240p content, setting the Wii U to 720p just works, because a 3x integer scale (240*3 = 720) on the TV also happens to be a 2x integer scale (240*2 = 480) on the GamePad. However, when running 480p content, having the Wii U set to 720p will result in a poor image all around, with non-integer scaling from 480->720 on the TV, and then even worse, 480->720->480 on the GamePad.

Running the Wii U at 1080p, you get the worst of all worlds. Absolutely nothing divides evenly into 1080, so no matter what content you’re playing, you’ll need either large borders or a filter/shader to stretch to that non-integer resolution, and putting that 1080p image back on the 480p GamePad makes it even worse again. Many users only use 720p because of the poor results you get from 1080p currently.

By running 1080p with a 960p viewport, you can do things like a 4x integer scale of 240p content which becomes a 2x integer scale on the GamePad, or a 2x scale of 480p content which becomes a 1x native display on the GamePad. Even more exotic resolutions like the Game Boy Advance (160p) are enhanced, with 160 dividing 6x into 960 or 3x into 480. This one change makes 1080p a lot less useless on Wii U.

  • when “Optimize for Gamepad” is OFF: use the system output resolution (previous behavior)
  • when “Optimize for Gamepad” is ON, pick the closest resolution based on the system resolution

And more

Not listed here of course are all the countless improvements made to individual cores since the last version. We might go into more detail on that sometime later, but rest be assured that cores are updated on a daily basis and receive heavy improvements, so keep updating your core library to get the latest benefits at all times!

Changelog

1.10.2

  • 3DS: Add a menu toggle for switching between old and new 3DS speeds, located in the ‘Power Management’ menu. Enabled by default, hidden on old 3DS devices.
  • AUDIO/MIXER: Free audio voices properly
  • CHEEVOS: Update to rcheevos 10.3.3
  • CHEEVOS: Support for Arduboy
  • CHEEVOS: Fix tab sequences in rich presence being turned into t character
  • CHEEVOS: Fix overflow when parsing float value that has more than 9 digits after the decimal
  • CHEEVOS: Fix memory mapping when disconnect mask breaks a region into multiple blocks
  • CORES: Enable manual selection of which cores are displayed in the ‘Standalone Cores’ menu
  • DATABASE/EXPLORE: Added more categories to the Explore menu
  • INPUT: Fix analog stick not working with ‘Unified Menu Controls’
  • INPUT/MAPPING: Add ‘Manage Remap Files’ submenu + automatically save input remaps when closing content
  • INPUT/MAPPING: Add ‘Reset Input Mapping’ option to ‘Manage Remap Files’ menu
  • INPUT/MAPPING: Fix keyboard device remap nulling
  • IOS/IOS13+: Support a toolbar that allows toggling of onscreen keyboard and touch mouse
  • LIBRETRO: RETRO_ENVIRONMENT_SHUTDOWN fix – ensure core is properly unloaded when RETRO_ENVIRONMENT_SHUTDOWN is called
  • LIBRETRO: RETRO_ENVIRONMENT_SHUTDOWN fix – ensure menu stack is properly flushed when RETRO_ENVIRONMENT_SHUTDOWN is called
  • LINUX/MALI FBDEV: Fix segfault switching video threaded from quickmenu
  • LOCALIZATION: Add Czech language support
  • MMAP: Handle disconnect bits on both sides of len
  • MIYOO: Improve CPU architecture and model name identification for Miyoo
  • MENU/SETTINGS: Remove ‘Advanced Settings’ flag from ‘Settings > Core’ menu
  • MENU/MATERIALUI: Add ‘Gray Dark + Light’ themes
  • MENU/RGUI: Add 6×10 extended ASCII and Latin Extended A and B fonts. These will enable most Latin alphabets to be displayed in RGUI.
  • MENU/RGUI: Add ‘Gray Dark + Light’ themes
  • MENU/XMB: Add title margin adjustment
  • MENU/XMB: Vertical fade corrections
  • MENU/OZONE: The size of the thumbnail bar can now be changed though a new option (Settings->User interface->Appearance) up to double its normal size.
  • MENU/OZONE: Add ‘Gray Dark + Light’ themes
  • MENU/OZONE: Add thumbnail scale option
  • HOTKEYS: Added hotkey for toggling sync to exact content framerate
  • HOTKEYS: Prevent log spam when using rewind hotkey with cores that don’t support rewind, if rewind functionality itself is disabled
  • HOTKEYS: Add hotkey for toggling sync to exact content framerate
  • PS3/PSL1GHT: Add RSX graphics support
  • PS3/PSL1GHT: Add libco support
  • PS3/PSL1GHT: Add experimental PSMove support
  • RS90: Optimise layout of sdl_rs90_video
  • STEAM: Use native OSK (Onscreen Keyboard) instead of built-in RetroArch version
  • STEAM: New built-in core DLC downloader
  • STEAM: Swap OK/Cancel buttons by default
  • VIDEO/HDR: Removed redundant copy of buffer in HDR mode if the shader has already a HDR format i.e. R10G10B10A2 (updated Vulkan/D3D11/D3D12 drivers)
  • VIDEO/HDR: Fixed crash when using stock shader and HDR and previous optimisation
  • WAYLAND: Dynamically load libdecor at runtime
  • WAYLAND: Fix splash screen when using xdg_toplevel
  • WAYLAND: SHM anti-collision for the splash screen
  • WAYLAND: Skip splash screen if window is not ready
  • WII: Fix find_connection_entry(): needs unsigned int Otherwise the USB gamepad cannot be found, if VID/PID has leading zero. This issue happened with Retrode gamepad adapter
  • WII: Rework Retrode gamepad implementation to support multi_pad interface
  • WII: Fix – Unplugging and re-plugging now works again
  • WII: vWii- Only gamepad 1 is supported, because multi_pad is currently only relevant in the Wii U implementation
  • WIIU: Implemented the multi_pad interface according to input/connect/connect_wiiugca.c
  • WIIU: Add Optimize for Gamepad option
  • WIIU: Fix USB gamepad support

Lakka 4.0 release

Original article here.

New version of Lakka has been released!

We are happy to announce the new and updated version of Lakka.

Release summary

Changes since version 3.7:

  • Build system based on LibreELEC 10.0.2
  • RetroArch updated to 1.10.1
  • Cores updated to their most recent versions
  • superbroswar: added new libretro core
  • sameduck: added new libretro core
  • Mesa updated to 22.0.0
  • Mainline kernel updated to 5.10.103 (PC, Amlogic, Allwinner, NXP)
  • Raspberry kernel updated to 5.10.95
  • Most ARM devices switched to aarch64
    Rockchip RK3288, RK3328 and RK3399 switched to mainline kernel 5.10.76
  • Added support for additional Allwinner and Amlogic devices (not tested on our side, as we do not own many of these devices)
  • Nintendo Switch: complete rewrite of the port with many fixes and enhancements
  • Tinkerboard and MiQi now use common system RK3288 (hence the change of the image names); you need to place empty file named .nocompat in the /storage/.update folder / Update Samba share
  • Dropped support for RPi4.arm

This is our first release with the updated build system. We tried to port all our changes to this new build system, but we might have missed some of our optimizations and enhancements. Please report us any regression or missing features or drivers via our issue tracker.

Not all platforms have been ported to the new build system yet. For these platforms we have released a maintenance update (3.7.1) with RetroArch and libretro cores updated to the same versions as in 4.0 release. Lakka users with Hardkernel’s Odroid XU3/4, Odroid Go Advance / Super, and Anbernic’s RG351M / RG351P / RG351MP / RG351V devices get update as well.

Known issues

See GitHub for information about currently open bugs and issues and also for possible workarounds for these bugs/issues.

Final notes

You can download the latest release from Lakka download page. If you want to follow the development of Lakka more closely, you can download latest Lakka nightly builds.

If you want to show your support for further development of the Libretro projects and ecosystem, you can learn more here.

Happy retro-gaming!

Libretro/RetroArch New Cores – A5200/WASM4/Arduous/SameCDi/JumpnBump

Libretro and its various contributors have certainly been busy these past few weeks. We bring to you a wide range of new cores, available for use in RetroArch, and/or any other Libretro-compatible frontend.

a5200

The a5200 core is an optimised Atari 5200 emulator based on Atari800 2.0.2. Originally developed for the GCW Zero, it runs full speed on even the weakest hardware (e.g. o3DS) – yet with a design focussed on ease of use and tight libretro integration it provides a simple ‘plug and play’ solution for Atari 5200 content on all platforms. The core debuts with robust input handling (including analog and number pad entry), audio filtering, CRT ghosting effects, an optional internal open-source BIOS and full save state support. Further enhancements are planned over the coming weeks.

WASM-4

WASM-4 is a low-level fantasy game console for building small games with WebAssembly. Game cartridges (ROMs) are small, self-contained .wasm files that can be built with any programming language that compiles to #WebAssembly.

You can now play these games/programs from within RetroArch, or any other Libretro-compatible frontend.

You can find more information at here.

Arduous

A Libretro core for the #Arduboy. The Arduboy is a handheld game console with open source software, based on the Arduino hardware platform.

SAME_CDi

SONY DSC

SAME CDi is a S(ingle) A(rcade) M(achine) E(mulator) for libretro, forked from MAME libretro, which is in turn a fork of MAME. It includes only the Philips CD-i driver, and simplifies the loading of CD content to provide a ‘plug and play’ experience. It emulates exclusively the Philips CD-i game console/settop box device from the early ’90s.

You can find more information at here and here.

Jump ‘n Bump

 

Jump ‘n Bump has finally been ported to Libretro/RetroArch. This is a game for the whole family. You play as a cute fluffy little bunnies and hop on each other’s heads.

At the beginning you are in the menu, where you have to let each active player jump over the tree trunk to enter the play area, and then walk to the right. You will then enter the arena. The aim is to jump on the other bunnies’ heads…

Jump ‘n Bump was originally a DOS game by Brainchild Design, which was open sourced under the GPL license and ported to SDL, and then SDL2.

How to use it
You can play Jump ‘n Bump by loading one of the .DAT files (levels) from Load Content. A fair few of them are available on Libretro/RetroArch’s ‘Content Downloader’.

RetroArch 1.10.1 release!


RetroArch 1.10.1 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!

Highlights

Good news for Gamecube/Wii users – after some downtime, RetroArch should work again on these platforms!

Improvements for contentless cores (or what we would call ‘standalone cores’). ‘Standalone core’ in this context means a core that either:

* doesn’t need any content of its own to start up (like 2048, Mr. Boom)
* Is only made for one specific game/purpose and is not an ’emulator core’ that is meant to run various content, but only one specific thing.

Lots of cores fall into the contentless/’standalone cores’ territory – NXEngine (Cave Story), Mr. Boom, Rick Dangerous, Dinothawr, The Powder Toy, Cannonball, 2048, etc. It’s important to realize that ‘standalone’ here does not mean what you would think it means when used outside of RetroArch parlance.

To make it even easier to work with these ‘contentless cores’, it has now also been made easier to obtain required/necessary content files that some of these cores need. If you go to ‘Online Updater’ and then go to ‘Core System Files Downloader’, it will show all the content files that are available for download from our server. Some of this content is required for certain cores to work as best they can, and some are even required for the core to start up at all. For instance, if you download ‘Dinothawr.zip’, it will download and install all the required asset files you need to play Dinothawr. After downloading this, you can then go to ‘Standalone cores’, select Dinothawr and play the game.

There is now a more energy-efficient way to fastforward. Instead of relying on the CPU to be as fast as it can be to fastforward frames (the default and only way up until now), now it’s also possible to fastforward based on ‘frame skipping’. To be more precise, this method of frame skipping is done by measuring the frame time and skipping based on frame time.

Some advantages to this new way of fastforwarding:

  • GPU MHz stay down, which is more energy efficient than presenting frames that are not visible anyway
  • Fast-forwarding with 3rd party frame limiting such as scanline sync is possible

It also means that with this option, fastforwarding is now possible for more cores on lower-end hardware. For instance, in the past, if you wanted to fastforward by x 2 in a specific game, the CPU of your machine had to actually be able to run the game with the core twice as fsat as the normal default.

In other news, tons of fixes for Wayland users on Linux machines. For Miyoo hardware users, the battery level is now supported. Tons of Cheevos/RetroAchievements improvements as usual (mastery placard, better description messages for missing RetroAchievements credentials, support for identifying Dreamcast CHD files, etc).

For netplay users, savestates have been disabled in stateless modes for stability reasons.

For RGUI menu fans, there is now dynamic theme support. This adds support for dynamically loading themes with RGUI based on the menu title from a playlist.

  • When Dynamic is chosen as a theme, a default theme will be loaded. It will look for default.cfg.
  • When a playlist is selected, it will load the theme *playlist_title.cfg.
  • With *playlist_title replaced as the actual title of-course.

Themes will be looked for in the dynamic wallpapers directory.

For Android 11 (and up) users, it is now possible to add external storage devices (i.e. from an SD card or NAS device), and add them as mount points. Note: the Google Play version is still not updated and we still need further Scoped Storage/Storage Access Framework improvements before we can update this version on there again. For now, we recommend you download the APK from our website instead.

User advice for Xbox users

There are apparently some issues people are experiencing with USB drives.

We recommend you follow these steps to solve potential issues:

  • Connect your drive to a Windows PC
  • Go to File Explorer
  • Right click on your NTFS drive
  • Do the following: Properties -> Security -> Advanced -> Add -> Select Principal -> Advanced -> Find Now > All App Packages > Ok > Tick Full Control > Ok > Enable Inheritance.

Changelog

1.10.1

  • ANDROID: Add HAVE_LANGEXTRA back to makefile
  • ANDROID: Include adaptive launcher icons
  • ANDROID: Populate external storage devices inside the file browser on Android 11+ devices
  • CHEEVOS: add mastery placard
  • CHEEVOS: more description message for missing RetroAchievements credentials
  • CHEEVOS: prevent occasional infinite wait loading multi-disc game from secondary disc
  • CHEEVOS: stop load process if unable to retrieve achievement data
  • CHEEVOS: support for identifying Dreamcast CHDs
  • CHEEVOS: Updated to 10.3.2
  • CONTENTLESS CORES: Disable per-game and per-content-directory remaps when running contentless cores
  • CONTENTLESS CORES: Disable per-game and per-content-directory shader presets
  • CONTENTLESS CORES: Enable config overrides
  • CONTENTLESS CORES: Enable runtime logging
  • CORE INFORMATION: Show core version
  • CORE UPDATER: Add ‘Core System Files Downloader’
  • CORES/SETTINGS: Add ‘Standalone Cores’ menu
  • D3D10/D3D11: Add Vsync swap interval
  • EMSCRIPTEN: Enable 7zip
  • GBA: New GBA filter Upscale_240x160-320×240
  • GONG: Removed now that it’s a standalone core
  • HISTORY/FAVORITES: Fix default core on ‘Add to Favorites’
  • INPUT/WAYLAND: Allow toggling mouse grabs
  • INPUT/WAYLAND: Release keys and mouse buttons on lost focus
  • iOS: Support for custom keyboard and touch mouse support, among other iOS 13 features
  • LIBRETRO: Fix crash when cores using RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK return false from retro_load_game()
  • LIBRETRO: Add optional frame skipping when fast-forwarding
  • LOCALIZATION: Fetch translations from Crowdin
  • LOCALIZATION: OSD fonts for Chinese, Korean, Arabic and Persian
  • LOCALIZATION: Translation fixes for various languages
  • MENU/RGUI: Add dynamic theme
  • MIYOO: Enable NEAREST audio resampler
  • MIYOO: Support battery level
  • NETPLAY: Disable savestates on stateless mode
  • NGC/Wii: Several improvements
  • OSX: Enable compilation on PPC
  • OZONE/XMB: Improve efficiency/accuracy of History/Favorites icon rendering
  • RECORDING/FFMPEG: Fix building against FFmpeg 5.0
  • RETROARCH INFORMATION: No longer report on enabled Python support, which was removed in RetroArch 1.7.8
  • SAVESTATES: Disable save states based on save state support level defined in core info files
  • UNIX/WINDOWS: Allow setting the default libretro_directory via environment variable
  • WAYLAND/VULKAN: Fix Wayland Vulkan not reacting to initial resize
  • WINDOWS/WINRAW: Enable mouse overlay control
  • Xbox/UWP: Fix CHD not working with Cheevos / Add 7zip support.