RetroArch 1.19.0 release

RetroArch 1.19.0 has just been released.

Grab it 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!


We never got to release 1.18.0 so we’re moving straight to 1.18.0. Therefore we include all the changes for 1.18.0 as well.


  • AI: Revert AI translation to previous version (fix for translation not working with HW rendered cores)
  • APPLE: Try to use system preferred language
  • APPLE: Correctly register for filetypes uniquely
  • APPLE/MFI: improved Switch Online controller support through MFi
  • AUDIO: Bring back audio toggling on menu toggle
  • CHEEVOS: Build a default RetroAchievements memory map when no RetroAchievements game is loaded
  • CHEEVOS: Update to rcheevos 11.3
  • CHEEVOS: fix hardcore acting as if it’s enabled when it isn’t
  • CLANG: Fix clang error incompatible-pointer-types-discards-qualifiers
  • CLOUDSYNC/LINUX: Enable Cloud Sync by default on Linux builds with network (#16456)
  • CLOUDSYNC/WEBOS: Enable Cloud Sync by default on Linux builds with network (#16456)
  • CORE: Set compute fps stats logging to debug level
  • EMSCRIPTEN: Added M2000 to core selection dropdown
  • FFMPEG: Add compatibility with FFMPEG 7.0
  • GLSLANG: Remove unneeded ENABLE_HLSL code from glslang
  • GENERAL: Memory leak: Dynamic allocation from msg_hash_get_help_us_enum was not freed.
  • INPUT/KEYBOARD: Add support for multimedia keys – Extended RETROK_ values with 18 new items, commonly found on
    “multimedia” keyboards. Mapping added for SDL, X11, Wayland, dinput, winraw keymaps.
  • INPUT/MFI: Pressure sensitive left/right triggers
  • INPUT/MFI: Fix Start + L1/L2/R2 combinations
  • INPUT/MFI: Support strong and weak rumble
  • INTL: Fetch translations from Crowdin
  • INTL: Add Galician and Norwegian to list of languages
  • LAKKA: Display reboot/shutdown message also when not saving config on exit
  • LAKKA: Provide update URL and target name at buildtime
  • LIBRETRO: Add a debug message for the SET_ROTATION callback
  • macOS: Default Accessibility on if VoiceOver is on
  • iOS: default audio sync on again, also more mfi logging
  • iOS: Fix Import Content
  • iOS: Fix ios-arm64 nightly build crash
  • iOS: Import content from iCloud
  • iOS: Fix #16485 crash on startup
  • iOS: Display app icon in app icon picker in materialui
  • iOS/tvOS: Various QoL improvements
  • iOS/tvOS: Fix a couple more path name mangling bugs
  • iOS/tvOS: Better way of packaging Frameworks
  • iOS/tvOS: Fix keyboard handling for app store builds
  • iOS/tvOS: Fix escaping the sandbox for jailbroken devices
  • iOS/tvOS: default accessibility on if voice over is enabled
  • iOS/tvOS: better way of reporting available memory
  • macOS/iOS/tvOS: enable text-to-speech using AVSpeechSynthesizer.
  • tvOS: Fix scaling for 720p
  • MENU: New function in Quick Menu: Add to Playlist
  • MENU/XMB: New theme: FlatUX, designed to merge FlatUI and Retroactive themes into a single, unified design
  • NETWORKING/RETROPAD CORE: Fix socket close method
  • PIXMAN: Update pixman-private.h – patch to fix build issue with musl
  • PLAYLIST: Cleanup ‘Add to Playlist’ (#16495)
  • SCANNING: Fix for scanning PSP ISOs (and probably few others)
  • SAVES: Fix core config saving
  • SAVES: Fix save new config name when core loaded
  • SAVESTATES: Increase save state chunk size for all platforms – Even a class 6 or class 10 SD card can handle reads and writes on the order of MB/s, which means a 4KB chunk size is just wasting time in syscalls. This could maybe be fixed with a buffering reader but I don’t feel comfortable tweaking libretro-common’s VFS to handle that. Instead, I thought it would be good to both remove an ifdef and increase the chunk size to 128KB. For cores with small states this will should make state saving virtually instantaneous, and for cores with large states it should be a 32x speedup.
  • VIDEO: Fix crash when using threaded video – for Mesa 23.2 and later
  • VIDEO/GL: Fix reinitialization of the threaded gl drivers
  • VIDEO/VULKAN: Add support for A2R10G10B10 HDR format
  • VIDEO/VULKAN: Implement HDR readback – screenshot support
  • WAYLAND: Ignore configure events during splash (fix not remembering window size)
  • WAYLAND: Use frontend signal handler to quit (fix quit by window close)
  • WAYLAND: Commit viewport resizes (window resize is more responsive)
  • UWP: Align MESA to alpha-2-resfix – Remove wrong resolution special handling for OPENGL
  • UWP: 4K fix: align MESA reading of ClientRect to retroarch procedure, this fixes max resolution being set to 1080p. As reading must be done inside an UI thread and is in fact an async operation which might delay frame generation, the reading itself is doen once and cached, give that changing resolution while the app is running is an unlikely corner-case use
  • WINDOWS: Windows mouse ungrab must release the mouse instead of confine it to the current desktop (#16488)
  • WINDOWS: Fix numlock/pause key release events


  • AI: Fix narrator language when AI translation and menu languages are different
  • DISK CONTROL: Add option to disable initial disk change
  • DISK CONTROL: Visibility option for disk control notifications
  • DRM: Fix mode vrefresh calculation. When using an interlaced/doublescan mode, the vertical refresh rate is mis-calculated.
  • EMSCRIPTEN: Fix mouse Y parameter translation in rwebinput
  • INPUT: Fix input state combos including R3 and false triggers of RETROK_UNKNOWN
  • INPUT: Add a new turbo mode, “Classic (Toggle)”
  • INPUT: Fix bind hold when axis does not rest at 0
  • INPUT: Limit axis threshold setting to sensible values
  • INPUT: Add Overlay Mouse, Lightgun, and Pointer
  • INPUT/ANDROID: Fix mouse grab behavior on Android
  • INPUT/LINUXRAW: Fix device name and hotplug reconnect
  • IOS: Minor iOS JIT availability information
  • IOS/TVOS: Pause application on applicationWillResignActive
  • LIBRETRO: Add Doxygen-styled comments to parts of the libretro API
  • LUA: Update Lua to version 5.3.6
  • MENU: Add sublabels for input bind common entries
  • MENU: Don’t load history and favorites if size is 0
  • MENU: Don’t disable fast forward when entering menu
  • MENU: Widget position, size, color, icon adjustments
  • MENU: Fix savestate slots in Qt UI
  • MENU: Reorder and reduce depth of User Interface menu
  • MENU/OZONE: Fix sidebar wraparound, visibility after config load, crash after playlist delete
  • MENU/OZONE: Fix sidebar and sublabel animations
  • OSX/MACOS: Fix crash on non-Metal build
  • OSX/MACOS: Add portable.txt as flag for portable install
  • REMOTE RETROPAD: add display for analog axes, indication of inputs already pressed
  • SAVES: Allow combining saves in content dir with save sorting
  • SHADER: Added rolling scan line simulation based on the shader subframe feature. This is implemented with a scrolling scissor rect rather than in the shader itself as this is more efficient although may not work for every shader pass – we may need an option to exclude certain passes. The implementation simply divides the screen up by the number of sub frames and then moves the scissor rect down over the screen over the number of sub frames
  • TVOS: Force asset re-extraction when cache is deleted
  • TVOS: Add history and favorites to Top Shelf
  • TVOS: Fix crash when history item does not have a label
  • UWP: Enable HAVE_ACCESSIBILITY for UWP builds
  • UWP: Allow UWP build to work with a modified version of Mesa Gallium D3D12
  • VIDEO: Add subframe shader support for Vulkan/GLcore/DX10-11-12, enabling shaders to run at higher framerate than the content
  • VIDEO: Fix restoring fullscreen/windowed setting when unloading override
  • VIDEO/VULKAN: Fix HDR with Vulkan after reinit
  • VIDEO/VULKAN: Remove the use of oldSwapchain
  • VIDEO/GL2: Fix OpenGL ES version detection
  • WEBDAV: Fixed SEGFAULT in WebDav task sync + type changes
  • WEBOS: Fix build, add core location on
  • WIN32: Fix Alt+Enter not working when menubar is disabled

More new cores: MelonDS, SameBoy, ARM Linux cores!

This week will be all about a dripfeed of new cores along with a version bump of RetroArch, which will be needed for some of the new cores that will be arriving this week.


This is an up-and-coming Nintendo DS emulator by StapleButter, and it now has a libretro port. Some of the things that are still not properly implemented is touchscreen/mouse support and multithreading for the software 3D rasterizer, but we will take care of that soon. This emulator might not yet be a replacement for DesMuMe, but it’s quickly progressing so definitely keep your eyes on it, as DesMuMe certainly needs some competition.

You can get this new core on our buildbot. Start up RetroArch, go to ‘Online Updater’, and check for ‘MelonDS’.

For more information on MelonDS, check out its official homepage here.

Available for

The MelonDS core is currently available for:

  • Windows (64bit/32bit)
  • Linux (32bit/64bit)
  • macOS
  • iOS
  • Android

BIOS instructions, etc. (required)

MelonDS requires a real BIOS file in order to work. These need to be placed inside your System directory. If you don’t know where your System directory is, inside RetroArch, go to Settings -> Directories and read where your System Directory is located.

The following three files are all required:

  • bios7.bin
  • bios9.bin
  • firmware.bin



SameBoy is an accuracy-focused Game Boy/Game Boy Color emulator in the vein of Gambatte. We now have a libretro core of it and its author has also helped us earlier with some implementation details, so that is very much appreciated!

Some features that are still missing is savestate support, but we intend to get that done soon.

For more information on SameBoy, check out its official homepage here.

Available for

The SameBoy core is currently available for:

  • Windows (64bit/32bit)
  • Linux (32bit/64bit)
  • macOS
  • iOS
  • Android

BIOS instructions, etc. (optional)

Here is a tiny convenience feature you added – normally SameBoy relies on reverse engineered Game Boy/Game Boy Color boot ROMs in order to load. You can load these instead of the real BIOS file. For this libretro core, instead of requiring you to put these homebrew boot roms somewhere so that the emulator can read them, we have baked these into the core itself. So you don’t even need to put them somewhere in your system directory.

However, if you’d like to override these, you can do that too. Go to your system directory (if you don’t know what this is, inside RetroArch, go to Settings -> Directories and read where your System Directory is located) and put these files there:

Game Boy boot ROM – ‘dmg_boot.bin’

Game Boy Color boot ROM – ‘cgb_boot.bin’

ARM Linux cores!

Our buildbot is now providing fresh new ARM Linux cores for hardfloat configurations! These cores could be used for instance on Lakka-based devices as well as the NES Mini!

You can grab them here:

Miscellaneous updates

  • Mednafen/Beetle Saturn has been updated to the latest version.
  • Updates to ParaLLEl N64 core.

What’s still coming up this week?

In no particular order:

  • Redream (new Sega Dreamcast emulator made by inolen)
  • OpenLara (Tomb Raider 1 game engine, in early alpha development stages but already promising)
  • Dolphin (will have Gamecube controls only at first, will work for both GL and Vulkan)
  • Citra