RetroArch 1.11.1 release!


RetroArch 1.11.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!

NOTE: The Android version on Samsung Galaxy Store, Huawei AppGallery, and Amazon App Store will be updated soon. We will remove this notice when it has been updated. Until then, grab the APK from our site.

NOTE: Several size optimizations have been made to the packages. We no longer pre-install all of the optional XMB theme packs or other miscellaneous assets. Previously we also shipped autoconfig files that were irrelevant for that specific platform. By excluding these files from the package, we have managed to reduce the filesize and overall amount of files of RetroArch downloads/installs significantly. On consoles this will be very helpful where SD card/FTP installs can tend to be very slow.

If you still want to have all assets, you can go to Online Updater and select ‘Update Assets’. This will install all assets.

Changelog

1.11.1

  • GENERAL: Fix DEFAULT_FILL_TITLE_MACRO
  • NETWORKING: Add the const qualifier to some function parameters
  • NETWORKING/NETPLAY/UPNP: Add a private or CGNAT address warning to UPnP
  • SAVESTATES/SCREENSHOTS: Avoid ‘video_gpu_screenshot’ with savestates
  • UWP: Better ‘Save on quit’ fix

1.11.0

  • 3DS: Add unique ID’s
  • 3DS: Add bottom menu options
  • 3DS: Set bottom_asset directory default
  • 3DS: Only enable internal counter with CONSOLE_LOG defined
  • 3DS: Set default bottom font values
  • 3DS: Fix CIA installation issues
  • 3DS: Support latest libctru
  • ANDROID: Add HAVE_ACCESSIBILITY
  • ANDROID: Gingerbread support
  • ANDROID: Touchpads support
  • ANDROID: Builtin Xperia Play autoconfig profile
  • ANDROID: Disable Feral GameMode for Android – only available on Linux
  • ANDROID: Add a configurable workaround for Android reconnecting devices
  • ANDROID/FDROID: Add F-Droid metadata to repo in Fastlane format
  • AUDIO/AUDIO MIXER: Add missing locks for thread safety
  • AUDIO/AUDIO MIXER: Fix audio mixer memory leak + remove redundant ‘single threaded’ rthreads implementation
  • AUTOSAVE: Change/improve exit behavior of autosave thread – if condition variable is signaled, the loop is ran another last time so we can do a final check/save before stopping the thread.
  • CDROM: Fix memory leak caught with asan – buf passed to filestream_read_file
  • CORE INFO/NETPLAY: Ensure current core info is initialized at runloop_event_init_core when netplay is enabled
  • CHEEVOS: Upgrade to rcheevos 10.4
  • CHEEVOS: Allow creating auto savestate in hardcore
  • CHEEVOS: prevent invalid memory reference if game has achievements but core doesn’t expose memory
  • CHEEVOS: Release achievement badge textures when video driver is deinitialized
  • CHEEVOS: Re-enforce hardcore limitations once achievements are loaded
  • CHEEVOS/MENU/MATERIALUI: Show achievement badge icons in MaterialUI driver
  • D3D9: D3D9 has been split up into two drivers – D3D9 HLSL (max compatibility, no shader support yet) and D3D9 Cg (dependent on deprecated Nvidia Cg runtime library)
  • D3D9/HLSL/XMB: XMB fix
  • D3D9/CG: D3D9 Cg driver fixed
  • D3D11: Fix overlay not showing up
  • D3D11/12: Reduce lag with WaitForVBlank – this rather simple addition seems to make D3D11/12 very very close to Vulkan/GLCore regarding input lag.
  • D3D11/12: Add waitable swapchains and max frame latency option
  • D3D11/12: Make waitable swapchains optional
  • DATABASE: Reformat ‘rdb_entry_int’ – Nitpick adjustments for database entries: Capitalize “Release Date”, and remove space before : from Release Date rows which use integer
  • DATABASE/EXPLORE: Allow On-Demand Thumbnails in Explore menu
  • DATABASE/EXPLORE/MENU/OZONE/XMB/RGUI: Explore menu thumbnails
  • DISC CONTROL: Better Disc Control append focus
  • DOS/DJGPP: Add a workaround for libc bug
  • AUTOMATIC FRAME DELAY: Added slowmotion resiliency
  • AUTOMATIC FRAME DELAY: Added string representation for seeing the current effective delay without opening statistics
  • AUTOMATIC FRAME DELAY: Added “ms” to logging and “(ms)” to label just like in Audio Latency
  • GENERAL: Don’t bake in OpenAL and libcaca by default unless explicitly enabled with configure switch.
  • GENERAL: Reduce amount of strlen calls
  • GENERAL: Reduce or simply sin/cosf calls
  • GFX: Fix readability and precision issues in aspectratio_lut
  • GFX: Add option to manually enable/disable automatic refresh rate switching
  • GFX: Enable automatic configuration of ‘VSync Swap Interval’
  • GFX/FONT/FREETYPE: Use FT_New_Memory_Face – first read it from file to memory beforehand –
    this solves an asset extraction issue when selecting ‘Update Assets’ – apparently FT_New_Face keeps an open file handle to the font file which
    prevents it from being overwritten/deleted while the program is still running.
  • GFX/THUMBNAILS: Thumbnail aspect ratio fix
  • GFX/THREADED VIDEO: Optimizations, fixes and cleanups
  • GFX/VIDEO FILTERS: Add Upscale_240x160-320×240 video filter with ‘mixed’ method
  • GLSLANG: Fix compilation with ./configure –disable-builtinglslang – was missing linking against -lMachineIndependent and -lGenericCodeGen static libs
  • INPUT: Fix off by one error for input_block_timeout setting. Also default to 0 for this setting (pretty massive performance gain)
  • INPUT: Analog button mapping fixes
  • INPUT/HID/OSX: Fix DualShock3 support
  • INPUT/HID/LINUX: (qb) Disable HAVE_HID by default for now for Linux as long as there are no working backends for both
  • INPUT/HID/WINDOWS: (qb) Disable HAVE_HID by default for now for Windows as long as there are no working backends for both
  • INPUT/HID/WIIU: Fix DualShock3 support
  • INPUT/OVERLAY: Block pointer input when overlay is pressed
  • INPUT/REMAPPING: input_remapping_save_file – existing remapping file was needlessly reloaded
  • INPUT/REMAPPING: Add option to disable automatic saving of input remap files
  • INPUT/LINUX/UDEV: Fix lightgun scaling on Y axis
  • INPUT/LINUX/X11/LED: Add LED keyboard driver
  • INPUT/WINDOWS/LED: LED keyboard driver cleanup
  • INPUT/WINDOWS/WINRAW: Clear key states when unfocused
  • INPUT/WINDOWS/WINRAW: Fix pointer device position
  • IOS: iOS app icon fixes & revisions
  • LIBRETRO/SAVESTATES: Implement an api call for context awareness
  • LOCALIZATION: Updates
  • LOCALIZATION: Add Catalan language option
  • LOCALIZATION: Fix some bad localization
  • LINUX: Make memfd_create call more backwards compatible by calling it through syscall – on older systems, you’ll have to include linux/memfd.h for the MFD_ defines, and call memfd_create() via the the syscall(2) wrapper (and include unistd.h and sys/syscall.h for it work). We exclude linux/memfd.h header include because we already provide the MFD_ defines in case they are missing
  • LINUX/MALI FBDEV: Fix assertion failed on video threaded switch
  • MENU: Menu paging navigation adjustments
  • MENU: New Menu Items for disabling Info & Search buttons in the menu
  • MENU: Allow the user to use volume up/down/mute hotkeys from within the menu
  • MENU: Add missing sublabels for non-running Quick Menu
  • MENU: Reorganize Quick Menu Information
  • MENU: Savestate thumbnails – Savestate slot reset action
  • MENU: Allow changing savestate slots with left/right on save/load
  • MENU: Add ‘Ago’ to playlist last played styles
  • MENU: Add proper icons for shader items
  • MENU/MATERIALUI: Add icon for ‘Download Thumbnails’
  • MENU/XMB: Add options for hiding header and horizontal title margin
  • MENU/XMB: Dynamic wallpaper fixes
  • MENU/XMB: Add Daite XMB Icon Theme
  • MENU/XMB/OZONE: Savestate thumbnail aspect ratio
  • MENU/XMB/OZONE: Core option category icon refinements
  • MENU/XMB/OZONE: Fullscreen thumbnail browsing
  • MENU/XMB/OZONE: Add playlist icons under ‘Load Content’
  • MENU/XMB/OZONE: Thumbnail improvements
  • MENU/XMB/OZONE: Savestate thumbnail fullscreen + dropdown
  • MENU/XMB/OZONE: Prevent unnecessary thumbnail requests when scrolling through playlists
  • MENU/OZONE: Fix playlist thumbnail mouse hover after returning from Quick Menu
  • MENU/OZONE: Thumbnail visibility corrections
  • MENU/OZONE: Playlist metadata reformat
  • MENU/OZONE: Savestate thumbnail fixes
  • MENU/OZONE: Add savestate thumbnails
  • MENU/OZONE: Header icon spacing adjustment
  • MENU/RGUI: Savestate thumbnails
  • MENU/SETTINGS: Turn Advanced Settings on by default, this entire filtering of settings will need a complete rethink anyways
  • MENU/WIDGETS: Widget color + position adjustments
  • MIYOO: Exclude unused HAVE_HID for Miyoo
  • MIYOO: Enable screenshots
  • MIYOO: Enable rewind
  • NETWORK: Allow MITM server selection on OK callback
  • NETWORK: Replace socket_select calls
  • NETWORK: Implement binary network streams
  • NETWORK: Poll support
  • NETWORK: Check connect errno for successful connection
  • NETWORK: Get rid of the timeout_enable parameter for socket_connect
  • NETWORK: Fix getnameinfo_retro’s port value for HAVE_SOCKET_LEGACY platforms
  • NETWORK: Define inet_ntop and inet_pton for older Windows versions
  • NETWORK: Define isinprogress function
  • NETWORK/NATT: Move natt files to “network”
  • NETWORK/NETWORK STREAMS: Add function netstream_eof
  • NETWORK/NETPLAY: Fix game CRC parsing
  • NETWORK/NETPLAY: Disable and hide stateless mode
  • NETWORK/NETPLAY: Change default for input sharing to “no sharing”
  • NETWORK/NETPLAY: Enforce a timeout during connection
  • NETWORK/NETPLAY: Disallow clients from loading states and resetting
  • NETWORK/NETPLAY: Special saves directory for client
  • NETWORK/NETPLAY: Ensure current content is reloaded before joining a host
  • NETWORK/NETPLAY: Fix client info devices index
  • NETWORK/NETPLAY: Fix input for some cores when hosting
  • NETWORK/NETPLAY: Memory leak fixes
  • NETWORK/NETPLAY: Force a core update when starting netplay
  • NETWORK/NETPLAY: Fix NAT traversal announce for HAVE_SOCKET_LEGACY platforms
  • NETWORK/NETPLAY: Refactor fork arguments
  • NETWORK/NETPLAY: Fix content reload deadlocks on static core platforms
  • NETWORK/NETPLAY: Disallow netplay start when content is not loaded for static core platforms
  • NETWORK/NETPLAY: Show client slowdown information
  • NETWORK/NETPLAY: Improve check frames menu entry
  • NETWORK/NETPLAY: Do not try to receive new data if the data is in the buffer
  • NETWORK/NETPLAY: Copy data on receive, even if the buffer is full
  • NETWORK/NETPLAY: Fix lobby sublabel CRC display on some platforms
  • NETWORK/NETPLAY: Support for customizing chat colors
  • NETWORK/NETPLAY: Small launch compatibility patch adjustments
  • NETWORK/NETPLAY: Support for banning clients
  • NETWORK/NETPLAY: Minor tweaks to the find content task
  • NETWORK/NETPLAY: Support for gathering client info and kicking
  • NETWORK/NETPLAY: Fix possible deadlock
  • NETWORK/NETPLAY: Initialize client’s allow_pausing to true
  • NETWORK/NETPLAY: Disable netplay for unsupported cores – with stateless mode being disabled for now, there is no reason not to include this. Refuse to initialize netplay when the current core is not supported (no proper savestates support)
  • NETWORK/NETPLAY/DISCOVERY: Ensure fixed width ints on packet struct
  • NETWORK/NETPLAY/DISCOVERY: Support for IPv4 tunneling (6to4)
  • NETWORK/NETPLAY/DISCOVERY/TASKS: Netplay/LAN Discovery Task refactor – aims to prevent blocking the main thread while awaiting for the LAN discovery timeout; This is accomplished by moving the whole discovery functionality into its task and using a non-blocking timer to finish the task. Also fixes discovery sockets not being made non-blocking, which could cause the main thread to hang for very long periods of time every pre-frame.
  • NETWORK/NETPLAY/TASKS: Find content task refactor – fixes many issues along the way, including a couple of nasty memory leaks that would leak thousands of bytes each time the task ran. It also expands the original concept by matching currently run content by filename (CRC matching is always performed first though).
  • NETWORK/NETPLAY/TASKS: Find content task refactor – Ensure CRC32 is 8 characters long
  • NETWORK/NETPLAY/LOBBY: Add setting for filtering out rooms with non-installed cores
  • NETWORK/NETPLAY/LOBBY: Hide older (incompatible) rooms
  • NETWORK/NETPLAY/LOBBY: Add a toggleable filter for passworded rooms. In addition, move lobby filters into its own submenu for better organization.
  • NETWORK/NETPLAY/MENU: Chat supported info for the host kick submenu
  • NETWORK/NETPLAY/MENU: Localize relay servers
  • NETWORK/NETPLAY/MENU: Host Ban Submenu
  • NETWORK/NETPLAY/MENU: Add client devices info to the kick sub-menu
  • NETWORK/NETPLAY/MENU: Path: Netplay -> Host -> Kick Client – Allows the host to kick clients. Allows the host to view client information: connected clients (names), status (playing/spectating) and ping.
  • NETWORK/NETPLAY/VITA: Add net_ifinfo support
  • NETWORK/NETPLAY/VITA: Enable partial LAN discovery
  • NETWORK/NETPLAY/VITA: Change default UDP port to 19492
  • NETWORK/NETPLAY/VITA: Do not multiply negative timeout values
  • NETWORK/NETPLAY/VITA: Fix epoll’s timeout parameter
  • NETWORK/NETPLAY/VITA: Launch compatibility patch
  • NETWORK/NETPLAY/3DS: Launch compatibility patch
  • NETWORK/NETPLAY/3DS: Adapt POLL for 3DS platform
  • NETWORK/NETPLAY/PS3: Launch compatibility patch
  • NETWORK/NETPLAY/WII: Enable net_ifinfo for some features. In practice, this only allows the netplay’s UPnP task to succeed on the Wii.
  • NETWORK/NETPLAY/WIIU: Launch compatibility patch
  • NETWORK/NETPLAY/SWITCH: Launch compatibility patch
  • NETWORK/UPNP: Attempt support for remaining platforms
  • NETWORK/UPNP: Support for IPv4 tunneling
  • ODROID GO2: Increase DEFAULT_MAX_PADS to 8 for ODROIDGO2, since that impacts the RG351[X] consoles. The RG351[X] have a USB host controller and can have an arbitrary number of USB gamepads.
  • ONLINE UPDATER: Online Updater menu reorganizing
  • OSX: Fixed items of system top menu bar on macOS
  • OSX: Revision to macOS app icon set
  • PLAYLISTS: Ensure history list will contain CRC32
  • PLAYLISTS: Fix CRC32 comparison – as state->content_crc has “|crc” suffix.
  • PS4/ORBIS: Orbis/PS4 Support using OrbisDev toolchain
  • PS4/ORBIS: Update xxHash dependency
  • PS4/ORBIS: Shader cache
  • RETROFW: Exclude unused HAVE_HID for RetroFW
  • RETROFW: Support battery indicator on RetroFW
  • RETROFW: Enable menu toggle button on retrofw devices
  • SHADERS: Shader Preset Loading of Multiple additional #references lines for settings
  • SHADERS: Shader Load Extra Parameter Reference Files – this adds the ability to put additional #reference lines inside shader presets which will load additional settings. The first reference in the preset still needs to point at a chain of presets which ends with a shader chain, and subsequent #reference lines will load presets which only have parameter values adjustment. This allows presets to be made with a modular selection of settings. For example with the Mega Bezel one additional reference could point at a preset which contained settings for Night mode vs Day mode, and another reference could point to a preset which contained settings for how much the screen should be zoomed in.
  • SHADERS/MENU: Increase shader scale max value
  • SCANNER/DC: Fix Redump bin/cue scan for some DC games
  • SCANNER/GC/WII: Add RVZ/WIA scan support for GC/Wii
  • SCANNER/PS1: Improved success rate of Serial scanning on PS1 by adding support for the xx.xxx format
  • SCANNER/PS1: Changed return value of detect_ps1_game function to actually return a failure when the Serial couldn’t be extracted. Scanner will then fallback on crc check, and usually ends up finding the games in the database.
  • SWITCH: Enable RWAV (WAV audio file) support
  • STRING: Do not assume char is unsigned
  • TASKS: More thread-awareness in task callbacks
  • TASKS: Fix race condition at task_queue_wait
  • TVOS: Revised tvOS icons w/ updated alien.
  • VFS: Fix various VFS / file stream issues
  • VULKAN: Fix more validation errors
  • VULKAN: Attempt to fix validation errors with HDR swapchain. Always use final render pass type equal to swapchain format. Use more direct logic to expose if filter chain emits HDR10 color space or not
  • VULKAN/ANDROID: Honor SUBOPTIMAL on non-Android since you’d want to recreate swapchains then. On Android it can be promoted to SUCCESS.
  • SUBOPTIMAL_KHR can happen there when rotation (pre-rotate) is wrong.

  • VULKAN/DEBUG: Automatically mark buffer/images/memory with names
  • VULKAN/DEBUG: Move over to VK_EXT_debug_utils. Debug marker is deprecated years ago.
  • VULKAN/HDR: Fix leak of HDR UBO buffer
  • VULKAN/BFI: Fix BFI (Black Frame Insertion) regression
  • WINDOWS: Fix exclusive fullscreen video refresh rate when vsync swap interval is not equal to one – refresh rate in exclusive fullscreen mode was being incorrectly multiplied by vsync swap interval, breaking swap interval functionality at the gfx driver level
  • WIN32: Do optimization for Windows where we only update the title with SetWindowText when the previous title differs from the current title
  • WIN32: Skip console attach when logging to file
  • WIN32: Remove black margins with borderless non-fullscreen window
  • WIN32/TASKBAR: Release ITaskbarList3 on failed HrInit – pointer wasn’t NULL’d, thus set_window_progress would cause weird behavior
  • WII/GX: Fix potential datarace
  • WIIU: Implement sysconf and __clear_cache
  • WIIU: Add OS memory mapping imports
  • UWP: Added launch protocol arg ‘forceExit’ so a frontend can tell an already-running RetroArch UWP instance to quit.
  • UWP: Enable core downloader/updater
  • UWP: Remove copy permissions as its inefficient as we can just directly assign the new ACL and that works
  • Xbox/UWP: Remove expandedResources
  • Xbox/UWP: UWP OnSuspending crash fix
  • Xbox/UWP: Enable savestate file compression by default for UWP/Xbox – got told there are no more issues with it
  • Xbox/UWP: Add support for 4k to angle on xbox for MSVC2017 build

RetroArch 1.8.7 released!


RetroArch 1.8.7 has just been released.

Grab it here.

We will release a Cores Progress report soon going over all the core changes that have happened since the last report. It’s an exhaustive list, and especially the older consoles will receive a lot of new cores and improvements.

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

There are many things this release post will not touch upon, such as all the extra cores that have been added to the various console platforms. We’ll spend some more time on that in a future Cores Progress Report post. We’ll go over some of the other highlights instead.

Netplay bugfixes

Some major netplay regressions snuck into version 1.8.5 and has remained a problem ever since. 1.8.7 finally fixes these issues.

New desktop-style Playlist View mode for MaterialUI

1.8.7 adds a new Desktop Thumbnail View to Material UI, available when using landscape display orientations. This is similar to Ozone’s playlist view. Above is a random screenshot showing what it looks like.

Notes:

  • The status bar at the bottom can be hidden by disabling Settings > Playlists > Show Playlist Sub-Labels
  • Touching/clicking the thumbnail bar toggles the fullscreen thumbnails view

This also represents a major refactor of MaterialUI’s menu entry handling code, which will make other kinds of playlist view mode easier to implement in the future.

Finally, this fixes two small existing issues:

  • Entry dividers now fade correctly during menu transition animations (this is subtle, and I only just realised that is wasn’t working!)
  • The ‘missing thumbnail’ placeholders now fade into view, just like normal thumbnails (previously, they were always displayed instantly, which was quite jarring)

Disable ‘Use Global Core Options File’ by default

1.8.7 changes the default setting of Use Global Core Options File to OFF.

This was only set to ON by default for consistency with legacy setups. There is no material benefit to this – in fact, a global core options file has the following downsides:

More file I/O – all options have to be read/written every time content is loaded or options are saved

Difficulty in editing option values by hand – e.g. sometimes this is necessary if a particular setting causes a core to crash, and if options for all cores are bundled together then sifting through them to find the one you need becomes a chore

Obsolescence – settings for old/unused/outdated cores hang around forever, and bloat the global options file without purpose. With per-core options, it is easy to remove settings for unwanted cores

Since settings are automatically imported from the legacy global file on first run when per-core files are enabled, changing the default behaviour will not harm any existing installation.

Don’t perform unnecessary cheevos initialisation when cheevos are disabled

Before, on all platforms with cheevos support rcheevos_load() is called each time content is loaded. This means the following happens even when cheevos are disabled:

  • If the core does not require the full content path (i.e. if RetroArch passes a data buffer directly), then a copy of the content data is made (up to 64 MB in size)
  • If the content is an m3u file, the file is opened and parsed to get the extension of the first file listed inside
  • A checksum is calculated for the content file extension
  • A task is pushed
  • A mutex is locked/unlocked several times

When Cheevos (Achievements) are disabled, all these things are unnecessary work, causing increased loading times and memory usage. On platforms with low memory (i.e. consoles) the unnecessary content data duplication is potentially harmful and may cause crashes.

1.8.7 very simply adds an ‘early out’ to rcheevos_load() which prevents the above unnecessary work when cheevos are disabled.

Cheevos: option to start a session with all achievements active

Adding an option to allow the players to start a gaming session with all achievements active (even the ones they have as unlocked on RetroAchievements.org).

When cheevos_start_active = true, instead of You have X of Y achievements unlocked, the player will see a message like this:

How the option looks in XMB:

And in Ozone:

Fallback directories for shader presets

This allows us to use the Menu Config and config file directories as fallback to store shader presets when the Video Shader directory is not writable by the user, thus following the same behavior shown by the “Save shader as” menu option.

This allows users to handle their own presets without having to mess with the directory configuration on distros such as ArchLinux, where shaders (among other assets) are managed through additional packages. But it also goes a bit further and changes the order of the preset directories, searching first on the Menu Config path, then on the Video Shader path, and finally on the directory of the config file.

This would improve the portability of the configuration for Android users, because they cannot explore the default shaders directory without rooting their devices. Moreover, I think it makes more sense, as regular configuration overrides are already being stored on the Menu Config path by default.

Testing
Assuming these directory values:

  • menu_config: /home/user/.config/retroarch/config/ (non-writable for testing purposes)
  • video_shaders: /home/user/.local/share/libretro/shaders/ (non-writable)
  • retroarch.cfg: /home/user/.config/retroarch/retroarch.cfg
  • The following menu options have all been successfully tested (see appended log output).

    Save options

    Save Shader Preset As

    [WARN] Failed writing shader preset to /home/user/.config/retroarch/config/foobar.glslp.
    [WARN] Failed writing shader preset to /home/user/.local/share/libretro/shaders/foobar.glslp.
    [INFO] Saved shader preset to /home/user/.config/retroarch/foobar.glslp.

    Save Global Preset

    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/global.glslp.

    Save Core Preset

    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/Snes9x/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/Snes9x/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/Snes9x/Snes9x.glslp.

    Save Content Directory Preset
    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/Snes9x/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/Snes9x/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/Snes9x/SNES.glslp.

    Save Game Preset
    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/Snes9x/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/Snes9x/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/Snes9x/Legend of Zelda, The – A Link to the Past (USA).glslp.

    Apply Changes option
    [WARN] Failed writing shader preset to /home/user/.config/retroarch/config/retroarch.glslp.
    [WARN] Failed writing shader preset to /home/user/.local/share/libretro/shaders/retroarch.glslp.
    [INFO] Saved shader preset to /home/user/.config/retroarch/retroarch.glslp.

    Run content log output
    Game specific shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/Snes9x/Legend of Zelda, The – A Link to the Past (USA).glslp.
    [INFO] [Shaders]: game-specific shader preset found.

    Folder specific shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/Snes9x/SNES.glslp.
    [INFO] [Shaders]: folder-specific shader preset found.

    Core specific shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/Snes9x/Snes9x.glslp.
    [INFO] [Shaders]: core-specific shader preset found.

    Global shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/global.glslp.
    [INFO] [Shaders]: global shader preset found.

    Remove options

    Remove Global Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/global.glslp.

    Remove Core Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/Snes9x/Snes9x.glslp.

    Remove Content Directory Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/Snes9x/SNES.glslp.

    Remove Game Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/Snes9x/Legend of Zelda, The – A Link to the Past (USA).glslp.

    Some other noteworthy things

    • RetroArch WiiU now has working graphics widgets. OSD notifications are no longer just plain yellow-colored text.
    • RetroArch 3DS now has basic networking and Cheevos (RetroAchievements) support.
    • With RetroArch 1.8.7 and overclocking, NeoCD reaches fullspeed on RetroArch PSVita. Even audio playback doesn’t stutter any more

    Changelog

    What you’ve read above is just a small sampling of what 1.8.6 has to offer. There might be things that we forgot to list in the changelog listed below, but here it is for your perusal regardless.

    1.8.7

    • 3DS: Add IDs for Frodo
    • 3DS: Enable basic networking / cheevos
    • CHEEVOS/BUGFIX: Opening achievements list would crash RetroArch with badges enabled (on new games)
    • CHEEVOS: Option to start a session with all achievements active
    • CHEEVOS: Don’t perform unnecessary cheevos initialisation when cheevos are disabled. Should reduce startup times when loading content.
    • CORE OPTIONS: Disable ‘Use Global Core Options File’ by default
    • DOS/DJGPP: Add 32bit color support for cores
    • GLCORE: Switch to glcore video driver when requested by a core
    • LINUX/XDG: Use GenericName correctly in desktop entry
    • MAC/COCOA: Fix mouse cursor tracking
    • MENU/MATERIALUI: Add desktop-style playlist view mode
    • MENU/MATERIALUI/DESKTOPVIEW: When scrolling playlists, show last selected thumbnails while waiting for next entry to load
    • MENU/MATERIALUI: Limit tab switch rate when input repeat is active
    • MENU/OZONE: Fix sidebar playlist sort order when ‘Truncate Playlist Names’ is enabled
    • MENU/RGUI: Adjusted menu defaults, adjusted default scrolling speed
    • MENU/RGUI: Enable custom wallpaper when menu size is reduced at low resolutions
    • MENU/XMB: Limit tab switch rate when input repeat is active
    • NETPLAY: Fix regressions introduced in 1.8.5
    • RGUI: Add option to always stretch menu to fill the screen
    • WIIU: Enable graphics widgets

RetroArch 1.8.3 released!


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

Big features

ANGLE brings OpenGL ES support to Xbox One and generic Direct3D 11 video cards!

We wanted to bring this feature to you as early as version 1.8.2, but due to time constraints we couldn’t make it in time. You can read our older article about it here.

Now, with version 1.8.3, we’re finally ready to deliver on the ANGLE promise. We’re rolling out ANGLE support for two platforms:

  • Windows (64bit version)
  • UWP version (64bit x64 version)

ANGLE is middleware developed by Google that serves as an OpenGL compatibility layer on systems where OpenGL support is either spotty or missing entirely. It converts OpenGL calls to Direct3D 9/11.

In this video, you will see ANGLE being used on RetroArch UWP. In specific, it allows us to run OpenGL cores now on the Xbox One, where only Direct3D 11/12 are available as graphics APIs. Mupen64plus Next is shown running in this video on an Xbox One S with fairly acceptable results.

RetroArch debuts with ANGLE support for the first time since version 1.8.3.

  • For the regular Windows version, there are two binaries from now on – one with ANGLE (retroarch_angle.exe), one without (retroarch.exe). The non-ANGLE version will use your system-provided OpenGL driver, while the ANGLE version will use the ANGLE version of the OpenGL dynamic libraries.
  • ANGLE works over OpenGL ES. This means that ANGLE requires separately compiled cores targeting OpenGL ES 2/3 instead of desktop OpenGL. What this means is that 1) you need separate cores for every Libretro OpenGL core you want to run, since the current OpenGL cores available for Windows assume that desktop OpenGL will be targeted, and 2) a libretro core has to have a working OpenGL ES 2 or 3 implementation in order for it to work. This will mean that currently, cores like Quake 2/3/Doom 3 won’t work since there are no working OpenGL ES 2 codepaths in those cores. However, Mupen64plus Next and Flycast do have OpenGLES 2 codepaths.

What usecases are there for using ANGLE instead of regular OpenGL?

There are several scenarios imaginable where you would want to use ANGLE. Here are some of them –

  • UWP (shorthand for Universal Windows Platform) allows you to make one binary that will work on Windows Mobile 10, Windows 10 and Xbox One. The only graphics API available for UWP programs is Direct3D 11 or 12. So for OpenGL cores to work, a middleware layer like ANGLE which converts OpenGL to Direct3D is our only option. Therefore, ANGLE allows us to run OpenGL ES 2 cores on the Xbox One.
  • Certain graphics cards might have nonexistent OpenGL support on Windows 10 and therefore fall back to Microsoft’s reference OpenGL 1.1 drivers. This is pretty much the worst case imaginable and really limits what you can do with OpenGL on such graphics cards. Intel HD 2000/3000 series integrated GPUs are pretty much in this position. For such GPUs, ANGLE might be your only option to get any kind of acceptable level of hardware accelerated graphics support with openGL-based cores.
  • OpenGL driver support might be stagnating for certain graphics cards, and therefore several bugs go unresolved in their OpenGL driver implementations. ANGLE is a good way to work around that assuming you are OK with an OpenGL ES 2/3 feature set.

Which ANGLE-specific cores are ready to go right now?

The following two cores are ready right now for the 64bit version of RetroArch Windows and the 64bit x64 UWP version (compatible with Xbox One) –

  • Flycast (GLES2)
  • Mupen64Plus Next (GLES3)

Instructions on how to use them on the desktop 64bit Windows version

NOTE: To use these, make sure you start retroarch-angle.exe instead of retroarch.exe.

Make sure you have downloaded these cores first. Go to Online Updater, and download ‘Mupen64Plus Next (GLES3)’ and ‘Flycast (GLES2)’. These are the ANGLE-specific cores.

You will now have to start your content with either one of these two cores. For example – to start Flycast with RetroArch ANGLE, you select ‘Flycast (GLES2)’ from the list as the core instead of the regular Flycast core.

WARNING – YOU CANNOT use the normal Mupen64Plus Next/Flycast cores as long as you’re running retroarch-angle.exe. Those cores are compiled against desktop OpenGL instead of OpenGL ES 2/3, so they won’t work with the ANGLE version of RetroArch. Make sure you’re aware of this before you walk away with the mistaken impression that these cores don’t work.

Instructions on how to use them on the 64bit UWP version (Xbox One and Windows 10)

Fortunately, it’s much easier to use these cores with this version. For one, typically only the ANGLE-specific cores are available for these builds, and second, thanks to the automatic driver switching feature from version 1.8.2, it will be able to switch video driver seamlessly from Direct3D 11 to OpenGL (ANGLE) depending on the requirements of the core. This way, you get the best performance possible with the native Direct3D 11 driver for every core that doesn’t require OpenGL, and for the cores that do, it will seamlessly switch to it. No manual configuration necessary.

Performance recommendations for Xbox One

You will want to tinker with the following options to get an acceptable baseline performance on Xbox One systems:

* Make sure that Core Options -> Threaded Rendering is enabled.
* You can enable Div Match which might get you an extra 5 to 10% performance gain. Be aware though that on some games this might cause compatibility issues.
* Lowering resolution might help too.

Xbox One X users should on average expect a 10fps or more performance increase over regular Xbox One/Xbox One S.

Netplay enhancements

As indicated in our earlier blog post, we have done many netplay improvements:

– We fixed a critical bug that would cause all players to be disconnected from the relay server if one player was leaving the game. That bug had been open for one year and we were finally able to fix it.

Fix the “spectator” bug when using the relay server – When a player switches into the spectator mode (pressing “i”) while using the relay server, all players will disconnect.

– Overall stability has also improved. We fixed a memory leak that would cause the relay server to become unresponsive after some time.

We also opened a new relay server in Sao Paulo, Brazil, since Brazil represents such a large part of our netplay audience.

Furthermore, in the short term we are going to be writing the netplay lobby server from scratch. It will be published under the Affero GPL license as open source code once it’s ready, and the existing lobby will be replaced. You can expect much improved code over what is currently being used.

RetroArch PSP and Vita – Massively increased core collection

Something that separates RetroArch from so many other projects is how it simultaneously caters to the extreme high-end as well as the extreme low-end with its ecosystem of software. So while on the extreme high end we have been busy adding 300fps/360fps modes for some of the impending cutting-edge 300/360Hz monitors to arrive, at the same time core developers are working on backporting optimized assembly versions of the Z80/68000 CPU cores.

The backporting of Cyclone and DrZ80 to the libretro cores has led to a dramatic increase in performance for MAME 2000, 2003, and 2003 Plus.

But that is not all. So many other cores have been effortlessly backported to PSP now that debugging is far less painful on the system. FreeIntv, MAME 2000, TGB Dual and Handy are all new cores, all running effortlessly!

RetroArch 3DS – RACE added

For RetroArch 3DS, we have added the Neo Geo Pocket Color emulator RACE.

– On o3DS you get ~45-50 FPS
– On new 3DS, you get fullspeed performance

OpenDingux now a supported platform in the future

We have recently added support for the OpenDingux family of devices. It has been tested on an RG350 and should theoretically work on the GCW Zero as well. You can expect to see a proper release of the OpenDingux version later on. For now it can be built from sourcecode.

Bugfixes

Many outstanding bugs have been fixed in this release. For the full details, see the Changes section further below.

Changes

1.8.3

  • ANDROID/BUGFIX: Fix ‘Install or Restore Core’ regression
  • BUGFIX: Ensure core info is always initialised when calling ‘drivers_init()’. This bug could prevent cores from doing content runtime logging
  • BUGFIX/MENU: History size can only be set to 1 at a minimum
  • BUGFIX/MENU: (XMB/OZONE) Fix ‘quick menu’ detection. XMB would not display savestate thumbnails in the quick menu if it was accessed via the main menu
  • BUGFIX/CRASH/CORE UPDATER: Fix potential double free error
  • BUGFIX/CRASH/OPENGL/WINDOWS: Fix regression in 1.8.2 that would cause GL-based cores to fail because it would try to erroneously load libGLESv2.dll instead of OpenGL32.dll (cores affected: VitaQuake 2/3/Dhewm3, possibly more)
  • BUGFIX/MENU/DESKTOP UI: Show desktop menu on startup does not launch Qt UI on Linux
  • CHEEVOS: Don’t disable achievement when AddAddress generates an out-of-range address
  • CHEEVOS: Don’t reset triggers/leaderboards that failed to load
  • CHEEVOS: Don’t count unsupported achievements as unlocked
  • CORE UPDATER: Display number of cores updated when updating installed cores
  • DINGUX: Initial port
  • D3D11: Block FL9_3 devices from D3D11 driver because they don’t work anyway (current D3D11 driver uses SM4.0 which requires FL10_0 and up)
  • D3D11: Fallback to GL driver when D3D11 fails
  • EMSCRIPTEN: Fix assets
  • HISTORY/FAVORITES: Bump up default to 200 entries from 100
  • FFMPEG CORE: Implement packet buffer, fixes MP4 video playback for many files
  • LOCALIZATION: Update Italian translation
  • LOCALIZATION: Update Polish translation
  • LOCALIZATION: Update Russian translation
  • LOCALIZATION: Update Spanish translation
  • MENU: Added ‘Hosting’ menu under Netplay menu
  • MENU: Added ‘Subsystems’ menu
  • MENU/FILEBROWSER: Fix file selection issues when starting from (or navigating to) the top level directory
  • MENU/WIDGETS: Prevent looping of task title text
  • RASPBERRY PI: Fix BGRA8888 color inversion issues in the menu and elsewhere with VideoCore GL drivers
  • NETPLAY/RELAY: Add Sao Paulo (Brazil) relay server
  • NETPLAY/RELAY: Fix the “spectator” bug when using the relay server – When a player switches into the spectator mode (pressing “i”) while using the relay server, all players will disconnect.
  • NETPLAY/RELAY: Overall stability has improved. Fixed a memory leak that would cause the relay server to become unresponsive after some time
  • NETPLAY/RELAY: Fixed critical bug that would cause all players to be disconnected from the relay server if one player was leaving the game. That bug had been open for one year and we were finally able to fix it
  • SWITCH/LIBNX/BUGFIX: Fix onscreen keyboard input regression
  • UWP: Add ANGLE support
  • UWP: Wire up get_metrics to the fake context of D3D9/10/11/12 driver, enabling proper scaling and mouse/touch gestures
  • VITA: Re-add Online Updater
  • VULKAN: Fix font driver ‘vulkan_get_message_width()’ function
  • VIDEO FILTERS: Only use threads when the number exceeds 1. Fixes race conditions with some CPU filters on Vita
  • WINDOWS: Add ANGLE support for x64, separate binary (for now?)

Libretro Cores Progress Report

Also check out our Libretro Cores Progress Report from today to see how the various Libretro cores have progressed since last time around.

RetroArch – Netplay Relay server updates

We are going to release a new hotfix update soon, probably called RetroArch 1.8.3. This will not be a spectacular new release but a necessary patch/bugfix release.

We will also be releasing more information soon about many exciting Libretro core developments that have happened recently.

Netplay Relay server updates

– We fixed a critical bug that would cause all players to be disconnected from the relay server if one player was leaving the game. That bug had been open for one year and we were finally able to fix it.

Fix the “spectator” bug when using the relay server – When a player switches into the spectator mode (pressing “i”) while using the relay server, all players will disconnect.

– Overall stability has also improved. We fixed a memory leak that would cause the relay server to become unresponsive after some time.

We also updated our relay server infrastructure so that we can roll out new server locations easier should the need arise. This also enables us to roll out server fixes faster.

Roadmap

There is one on our roadmap that we are going to address soon:

  • Fix the “header bug” when using the relay server –
    Currently some client combination can’t play together using the relay server, since they get a “invalid header” error message when joining the netplay session . For example, some Android devices can suffer from this with a netplay session hosted by a PC user.

You don’t need to upgrade your current RetroArch version to benefit from these improvements. It’s all server-bound.

RetroArch Netplay – FlyCast – Dreamcast Online Multiplayer gaming! Now with Windows CE support!

Flycast is an amazing Dreamcast emulator that is perhaps unique for having true zero-configuration online multiplayer capabilities! Flycast WinCE has recently gained support for zero-configuration online connectivity as well, but in this video we will first teach you how to input your ISP settings (most Dreamcast games that supported online multiplayer will require that you have set this up in at least one game once).

In this video (the first of a new series dedicated to online multiplayer gaming with RetroArch), we walk you through how to setup the ‘fake’ ISP online settings that allows you to connect to unofficial Dreamcast servers for the purpose of being able to netplay against other players in online multiplayer-enabled Dreamcast games. Note that Quake III Arena, NFL 2K2 and 4×4 Evolution are some of the only games that allow you to input these ISP settings inside the game itself.

Note also that all the settings you input can be bogus, but make sure the phone number is at least a fictitious 7-digit phone number. It can literally be ‘1234567’ for all we care here.

The online multiplayer is truly cross platform – you can play against other users that are using the standalone Flycast emulator instead of the Libretro core inside RetroArch, but you can even play against people playing with their real Dreamcasts (if they happen to use the same service). To learn more about Dreamcast Live, go to their website <a href=”https://www.dreamcastlive.net/connection-guide”>here</a>.

NOTE: Some games like Starlancer (Windows CE-based game) might require you to input Dial Account 2 as well inside ISP settings. In this video, you only see us setting up Dial Account 1.