RetroArch 1.19.0 has just been released. Read the full article on our website here.
Changelog
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 its enabled when it isnt 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 LIBRETRO: Add a debug message for the SET_ROTATION callback 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 dont feel comfortable tweaking libretro-commons 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 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: Dont load history and favorites if size is 0 MENU: Dont 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 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 webosbrew.org WIN32: Fix Alt+Enter not working when menubar is disabled
RetroArch 1.19.0 has just been released. Changes 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 its enabled when it isnt 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 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: define PACKAGE_VERSION to be App Store MARKETING_VERSION 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 dont feel comfortable tweaking libretro-commons 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: Dont load history and favorites if size is 0 MENU: Dont 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 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 WIN32: Fix Alt+Enter not working when menubar is disabled
We added a new core, Dosbox Pure. This brings the total number of available cores on Steam to 65 now. https://store.steampowered.com/app/3005610/RetroArch__DOSBox_Pure/ DOSBox Pure is a hard fork of the multiplatform MS-DOS emulator. It was built by Psyraven in 2020 specifically for RetroArch/Libretro and implements advanced features like save states, an on-screen keyboard, highly customizable controller setup or rewinding. DOSBox Pure aims for simplicity and ease of use. https://www.youtube.com/watch?v=rHkIz4-SewI
We added a new core, Geolith. This brings the total number of available cores on Steam to 62 now. Geolith is a highly accurate core for a popular console/arcade system released in the early 1990s, and surviving into the mid 2000s. It is written in modern C and takes a unique approach compared to other emulators for this system. This core focuses on providing a user experience similar to a traditional home console, both by defaulting to home console mode and the use of single-file game files. However, despite this focus, it also maintains full support for playing games in arcade form. https://store.steampowered.com/app/2857800/RetroArch__Geolith/
RetroArch 1.17 expands Netplay to support playing multiplayer games that were originally played on two or more separate consoles or computers connected together. This is currently supported by two cores: DOSBox Pure (not available on Steam) and gpSP (available on Steam). https://store.steampowered.com/app/1227468/RetroArch__gpSP/ In DOSBox Pure it is now possible to play DOS and early Windows multiplayer games that used IPX, Ethernet or a modem over the internet. In gpSP, games that support the Wireless Adapter can also benefit from this feature, although only a subset of games work well at the moment. Those curious about more details can read David G.F.s article about the gpSP implementation here. In order to use this new functionality just use the regular Netplay menu, where you can host and/or join netplay games. It works seamless with the existing Netplay feature (including lobbies) with no additional settings required. Make sure however, that you use the same or compatible games, since this wont be automatically enforced.
RetroArch 1.17.0 has just been released. Read the full article on our website here. We also added a new core, PX68K. This brings the total number of available cores on Steam to 61 now. https://store.steampowered.com/app/1227463/RetroArch__PX68k/
Changelog
- ACCESSIBILITY/TTS: fix target language and missing espeak handling on Linux
- AI: AI service reworked: performance increase, automatic translation, configurable subtitle placement, and more
- APPLE: Fix WebDAV crash with digest auth (Cloud Sync)
- APPLE: Cloud sync fixes
- ignore .DS_Store files and re-sync on app foreground
- APPLE: Don't re-create default directories
- APPLE: Show Git information correctly
- AUDIO/SYNC: Handle Hz skew adjustment for high refresh rates better (BFI, swap interval)
- AUDIO/MIXER: Separate ffmpeg/mpv and audiomixer conditionals
- AUDIO/WASAPI: Reworked shared buffer operation for more flexibility, fixed exclusive mode last buffer looping when entering menu
- CONFIG/OVERRIDES: Fix setting savefile_directory in override file
- CONFIG: Force fixed locale for numbers
- CHEEVOS: Upgrade to rcheevos 11.0
- CHEEVOS: Use rc_client for state management
- CHEEVOS: Don't track disc changes when achievements are disabled
- CHEEVOS: Reinitialize rewind buffer after loading game with achievements
- CHEEVOS: Inform user when server is unreachable
- CHEEVOS: Fix crash on first load of game with achievements with threaded video
- EMSCRIPTEN: Increase chunk size for reads/writes
- EMSCRIPTEN: Modularize the JavaScript and clean up the web build
- EMSCRIPTEN: Prefix core name with libretro_ for exports
- EMSCRIPTEN: replace dashes with underscores in corenames (fix for vitaquake cores)
- EMSCRIPTEN: Use ZipFS for web player asset bundle
- EMSCRIPTEN: Change default audio rate to 44100
- INPUT: Fix ghost input when setting RETROK_UNKNOWN
- INPUT: Default 'Bind Hold' to 0 to prevent problems with controllers not resting at null state
- INPUT: Add a setting to allow turbo d-pad directions
- INPUT: Don't save mouse buttons to autoconfig
- INPUT/MENU: Add option for merging 'Hotkey Enable' device types
- INPUT/mFI: disable secondary_joypad to prevent issues with controllers detected both as HID and mFI
- INPUT/UDEV: Change event detection to polling in udev_joypad
- INPUT/WAYLAND: Use unaccelerated pointer motion to prevent mouse dead zone
- LAKKA: Add new menu options for Switch (overclock, CEC, BT ERTM)
- LIBRETRO: Add environment command to get playlist path
- LIBRETRO/NETPACKET: Switch environment call number from 76 to 78 (retire 76 as it was never used by any core) Simplify broadcasts by removing the option to send to all but one client, use an explicit RETRO_NETPACKET_BROADCAST constant instead Separate explicit flushing and querying of incoming packet into two operations Enable a core to specify a protocol version string which can get used instead of core version to determine compatibility between two players Log and notify a separate message when there is a content crc mismatch while using this interface to convey it being less severe
- MENU: Fix menu analog stick navigation (1.16.0.1)
- MENU: Add option to find thumbnail images by playlist rom filename (1.16.0.2)
- MENU: Don't process menu events while input is being flushed (1.16.0.2)
- MENU: Prevent proceeding to next bind when single binding (1.16.0.3)
- MENU: Fix touchscreen menu false positives in case of overlap
- MENU: Sort playlists ignoring extension (Playstation 2 should come after Playstation)
- MENU: Treat System Volume Information folder as hidden on all platforms
- MENU: Add Belarusian language option
- MENU: Fix savestate thumbnail behavior when navigating back to playlist while content is still running
- MENU: Fix word wrapped widget length
- MENU: Add help text to controller drivers
- MENU: Fix quit on content close option
- MENU: Fix thumbnails in History for content loaded through Load Content
- MENU: Flexible thumbnail matching (ROM name
- database name
- short name)
- MENU: Remove legacy thumbnail pack downloader
- MENU/GLUI: Icon corrections
- MENU/OZONE: Thumbnail related fixes (missing thumbnail bar, fullscreen thumbnail flashing, sidebar focus)
- MENU/RGUI: Fix text scaling in 16:9
- MENU/XMB: Background images take precedence over color themes, default image opacity set the same as color theme opacity
- MENU/XMB: Fix segmentation fault when background image is missing
- MENU/XMB: Several corrections and cleanups
- MENU/XMB: Layout/thumbnail fixes
- Thumbnail layout adjustments, Header title improvements, Handheld layout adjustments
- NETWORKING/NETPLAY: Add support for joining MITM servers from command line
- NETWORKING/NETPACKET: Interface connection flow improvements
- OSX: Fix mouse support for MelonDS DS on OSX
- OSX: Option to create a portable build
- PATCHES: Add support for XDelta-formatted patches.
- PATCHES: Fix patching for cores that support contentless mode
- RUNLOOP: Frame Rest, experimental sleep feature aiming to lower CPU usage and temperature when using certain CPU hungry vsync modes
- SCAN: Do CRC check on PSP/PSP(PSN) content
- VIDEO/BFI: Black Frame Insertion added to DirectX10/11/12. BFI Hz range now covers every 60hz multiple under 1000hz. Variable Strobe length via new 'Dark Frames' option, algorithm to auto select 'decent' Dark Frames choice.
- VIDEO/GLSL: Add FinalViewportSize support to GLSL
- VIDEO/GLSL: Change rotation type to int to maximize compatibility
- VIDEO: Use video refresh rate instead of core refresh rate for menu frame limiting
- VIDEO: Limit paused video refresh rate
- VIDEO: Enforce swap interval 1 in menu if vsync is on
- WIN32: Prefer D3D11 and WASAPI as default video and audio drivers
- WIN32: Fix window size when aspect ratio is < 0
- WIN32: Fix screen resolution always tied to the main monitor
- WAYLAND: Enable fallback for screensaver inhibit via D-Bus
- WAYLAND: Introduce wp_fractional_scale_v1 protocol for proper fractional scaling
- WAYLAND: Update wayland-protocols version to 1.31
RetroArch 1.16.0 has just been released. Read the full article on our website here.
Changelog
- AUDIO: Fast-Forward Audio Resampling
- AUDIO: Reinit audio on audio sync toggle
- AUDIO: Count audio samples in stats when rate control is disabled
- AUDIO/PULSEAUDIO: Support device list for PulseAudio
- AUDIO/WASAPI: WASAPI Frame Delay fix + cleanups
- AUDIO/WASAPI/MIDI: Frame Delay correction
- ARCHIVE/ZIP: Improve ZIP decompression This reduces the amount of memory Retroarch needs to extract a ROM file. It will only need the size of the ROM plus 128KiB to extract the file from the ZIP. Previously it needed as much as twice that amount if the compression ratio was not great. This is useful on memory constrained platforms and has no impact on platforms with plenty of memory. Handles all cases correctly (with and without MMAP, for cores that require fullpath or not, small and big ZIP files).
- APPLE: Add default keyboard overlay directory to platform_darwin
- APPLE: Update to MoltenVK 1.2.4
- APPLE: Don't include MoltenVK library in Load Core menu list
- APPLE: Enable AltServer JIT for builds installed by Xcode
- APPLE: The default pthread stack size on Apple is too small for detect_ps2_game, so increase it
- CHEEVOS: Upgrade to rcheevos 10.7
- CHEEVOS: Don't initialize rcheevos memory unless used
- CHEEVOS: Add progress tracker widget
- CHEEVOS: Eliminate leaderboard tracker stutter
- CHEEVOS: Expand leaderboard visibility settings
- CHEEVOS: Collapse trackers with same value definition
- CHEEVOS: prevent frame step when hitting rewind button while paused in hardcore
- CHEEVOS: disallow video_swap_interval and black_frame_insertion in hardcore
- CRT/SWITCHRES: Don't always force core aspect ratio
- CRT/SWITCHRES: Fix aspect ratio for tate games on a horizontal screen
- CRT/SWITCHRES: Add PAL threshold option for automatic refresh rate switch
- CRT/SWITCHRES/KMS: Add KMS modeswitch
- COMMAND: Make cmd interface more useful for replay information
- CONFIG: Allow all systems to check for backslashes (Windows) as last slash in path. Improves portable core logic
- D3D11: Fix memory corruption in d3d11_gfx_init
- D3D12: Enable blending when drawing the menu
- D3D12: Move fence signaling out of d3d12_gfx_sync
- D3D12/LIBRETRO: Add D3D12 HW_render support
- DOWNLOADS/THUMBNAILS: Prevent directory creation on bogus thumbnail downloads
- EMSCRIPTEN: Fix Emscripten sleep function/macro
- EMSCRIPTEN/RWEBAUDIO: Fix RWebAudioInit race condition
- EMSCRIPTEN/OPENAL: Make openal default audio driver
- FFMPEG: Fix RetroArch fails to restart streaming when video re-inits and instead starts recording
- FRAMESKIP: Use refresh rate instead of core fps for frameskip timing
- INPUT: Combo hold + 'enable_hotkey' correction. Fixed issue with having menu toggle hold combo in different button than 'enable_hotkey', which caused 'enable_hotkey' to also act as menu toggle if held long enough, and simplified and unified duplicate code in start+select holds to a single function.
- INPUT: input_keyboard_event: Don't check hotkey binds when device is RETRO_DEVICE_POINTER
- INPUT: Add input_keymaps_translate_rk_to_ascii() for correct character input to input_keyboard_event
- INPUT: input_overlay_poll: Delay clearing INPUT_OVERLAY_BLOCKED flag until there is no overlay input (Avoids stray input after osk_toggle)
- INPUT: Send keyboard events for modifiers before other keys (for correct modifier+key input if hitboxes overlap)
- INPUT: Remember currently set keyboard mapping bits during same config read, because otherwise customized keybinds can get cleared out of the bits on the next iteration, causing keyboard events to get passed to the core when they should get blocked.
- INPUT/AUTOCONFIG: Reinit after updating autoconf profiles
- INPUT/LINUX/UDEV: Log mouse devices in info level
- INPUT/LINUX/UDEV: First working version of udev driver with touchscreen support and gestures.
- INPUT/WAYLAND: Add wayland to input driver list
- INPUT/MENU: move port X binds into retropad binds submenu and add appropriate help text and sublabels to discourage people from messing around in there unnecessarily
- INPUT/MENU: Add menu icons to 'RetroPad Binds'
- INPUT/MENU/OSK: Allow more keyboard actions with menu osk
- INPUT/REMAP: Remap label fix when no autoconf profile active
- INPUT/REMAP: Add 'Save As' option for remaps and overrides
- INPUT/OVERLAY: Add overlay parameter to control x/y separation in auto-scale mode
- INPUT/OVERLAY: Revive/rewrite Keyboard Overlay and OSK Toggle. Add keyboard overlay preset, keyboard submenu, and osk_toggle hotkey. Use overlay caching for osk_toggle.
- INPUT/OVERLAY: Overlay Caching. Adds overlay_cache_ptr to keep a disabled overlay in memory when it's expected to be shown again. Most input_overlay_deinit calls are replaced with input_overlay_unload, which caches the overlay unless initing/deiniting core or disabling overlays. Loading a cached overlay is done as a swap, intended for osk_toggle.
- INPUT/OVERLAY: Add input_overlay_check_mouse_cursor() to preserve show/hide mouse behavior
- INPUT/OVERLAY: Don't apply input_overlay_show_mouse_cursor in windowed mode (controlled by mouse grab only)
- INPUT/REMAPPING: Stop always reseting to defaults on remap delete
- INPUT/SDL: Fix rumble on PS4/PS5 controllers connected via bluetooth
- INTL: Fix language detection in Canada to English
- LANGEXTRA: Enable language autodetect for all builds with LANGEXTRA
- LIBRETRO: Add new context hardware render enums - enables autodetection of DX12 for PS2 core
- LIBRETRO: Add API to check JIT availability on iOS
- LIBRETRO: Allow RETRO_ENVIRONMENT_SET_MEMORY_MAPS also after core startup. Change the comment in libretro.h about the removed limit and handle the environment call during core runtime in RetroArch.
- LIBRETRO/MICROPHONE: Add new API for microphone support.
- LIBRETRO: Add new API for querying the device's power state.
- LIBRETRO/VFS: Rewrite retro_vfs_file_remove_impl
- LINUX: Input driver fix 8+ joypads. It was reported that controllers beyond 8 worked only partially (analogs yes, but not buttons), and the found fix was also confirmed.
- MIDI: Show MIDI output first
- MENU: Reorganize 'Saving' menu
- MENU: Start directory browsing from current value
- MENU: Fix menu toggle combo hold with same 'enable_hotkey'
- MENU: Add menu scroll home+end actions
- MENU: Move 'systemfiles_in_content_dir' from Saving to Core
- MENU: Menu navigation acceleration adjustments
- MENU: Audio synchronization menu cleanup
- MENU: Menu value label cleanup
- MENU: Show playlist history/favorites icons by default
- MENU: Remove advanced option flag from video rotation + orientation
- MENU: Combine audio resampler menu with audio output menu
- MENU: Microphone menu cleanup
- MENU: Add missing menu visibility option for content dir override
- MENU: Fix menu refresh in action_ok_network
- MENU: Video settings menu cleanup
- MENU: Try to declutter Quick Menu
- MENU: Change network port menu options to 'allow_input' mode
- MENU: Preselect current core in "Set Core Assocation" menu for more carefree usage
- MENU: Focus back to "Set Core Association" item after returning from the menu instead of first item
- MENU: Replaced hack fix for focusing the first item after returning from core suggestion "Run" menu after association reset
- MENU: Fixed setting core association in history/favorites after resetting it and running without setting
- MENU: Relocate playlist manager core association options to prevent accidental resets with Start
- MENU: Fraction setting wraparound rounding correction
- MENU: Add more missing sublabels
- MENU: 'Updater Settings' relocation
- MENU: Search box usability improvements
- MENU/RGUI: Implement 'Remember Selection' option
- MENU/RGUI: Fix savestate thumbnail fullscreen cancel action
- MENU/RGUI: Fix and add toggle for playlist thumbnails
- MENU/OZONE: Update Dracula theme
- MENU/OZONE: Return to sidebar from playlist manage quick access
- MENU/OZONE: Sidebar multiline scrolling
- MENU/OZONE: Avoid crash if ozone sidebar_index_size is 0
- MENU/OZONE: Prevent metadata and footer overlap
- MENU/OZONE: Sublabel width tweak
- MENU/OZONE: Mouse hover selection fix
- MENU/XMB: Message/help box adjustments
- MENU/XMB: XMB menu playlist index bugfix
- MENU/XMB: Playlist label limit fixes
- MENU/XMB: Prevent playlist label truncating long items even when right thumbnail is not enabled/visible
- MENU/XMB: Prevent playlist label length resetting to full width on every item change while thumbnail is pending
- MENU/XMB: Stop showing playlist entry index outside of playlists
- MENU/XMB: Fix menu focus issue when returning from "Set Core Association" if playlist index is greater than the previous menu
- MENU/EXPLORE: Prevent flashing when browsing fullscreen thumbnails
- MENU/EXPLORE: Match label ticker length behavior with playlists
- MENU/SOUNDS: Fix certain audio drivers from hanging when menu pause is enabled with menu sounds
- MENU/SOUNDS: Fix menu sounds stopping after fullscreen toggle / video reinit
- MENU/QT/WIMP: Cleanup Desktop Menu welcome text
- MENU/OVERLAYS: Reorder overlay menu
- MICROPHONE: Add support for microphones.
- MICROPHONE/ALSA: Add alsa and alsathread microphone drivers.
- MICROPHONE/SDL: Add sdl2 microphone driver.
- MICROPHONE/WASAPI: Add wasapi microphone driver.
- MOBILE: On mobile in portrait mode, don't override custom viewport
- NETWORKING: Enhance netpacket interface
- NETWORKING/NETPLAY: Enable core host to refuse connecting new players to limit the number of connected players
- NETWORKING/NETPLAY: Enable a core to flush outgoing packets and read incoming packets without waiting for the next frame (can be used for lower latency or blocking reads)
- OPENDINGUX/RG350: Enable networking for RG350
- OPENGL/WAYLAND: Add frame callback after egl_swap_buffers to improve latency when max_swapchain <= 2
- OSD/STATISTICS: Show current video + audio drivers in statistics
- OSD/STATISTICS: Ensure statistics text is aligned left
- OSX/MACOS: Fix steam OSX core path
- OSX/MACOS: Add HAVE_STDIN_CMD support
- OSX/MACOS: fix mouse grab in windowed mode
- OSX/MACOS/IOS/TVOS: Enable SSL in macos/ios/tvos builds
- PLAYLIST: Change default playlist last played time format
- RUNLOOP: Don't count frames while paused
- SERENITYOS: Add SerenityOS to the list of supported operating systems
- SCANNER: Improve scanner console output
- SCANNER: More scanner console output coloring
- SCANNER: Improve CLI scan console output
- SCANNER: Add content import/scan via CLI
- SCANNER/PS1: Serial extraction is now considered a failure if PSX.EXE is found, allowing CRC fallback and actually fixing the game scanning
- VIDEO: Correct rotated core provided aspect ratio
- VIDEO: Minor adjustments to refresh rate switch behavior
- VIDEO: Fix windowed viewport with libretro rotation
- VIDEO/SDL2: Use "nearest" scaling in menus
- TASKS: Fix corrupt task progress percentage
- XVIDEO/MENU: Add menu support to xvideo gfx driver, making it usable
- UWP: Fix modifier keys ( shift, ctrl, alt ) as well as F10 not being detected on the UWP platform
- VULKAN: Ignore Fast-Forward Frameskip option
- VULKAN/KHR_DISPLAY: Support screen refresh rate with Vulkan KHR_Display context
- WIN32: Increase maximum window limit
- WIN32/WINDOWSXP/MSVC2010: Fix invisible menu display
- WAYLAND: Remove splash screen
- WAYLAND: Check for pointer before locking it
- WAYLAND: Add mouse grab/lock functionality
- WAYLAND: Get system wayland-protocols path via pkg-config
We added a new core, DirkSimple. This brings the total number of available cores on Steam to 60 now. DirkSimple is a core written from scratch by icculus, one of the original creators/maintainers of popular open source projects like SDL. It can play some of the 1980s LaserDisc arcade games. https://store.steampowered.com/app/2342900/RetroArch__DirkSimple/?curator_clanid=35417007 [previewyoutube=GACe_kG58Fw;full][/previewyoutube]
RetroArch 1.15.0 updated
A maintenance update/fix has been pushed for 1.15.0. This replaces the current 1.15.0 version. New changes: - INPUT/AUTOCONFIG: Check for 'enable_hotkey' also from autoconf binds - LIBRETRO-COMMON/VFS/FILESTREAM: Fixes filestream_vscanf regression - MENU/XMB: Horizontal icon animation fix - OSD/STATISTICS: Notification font + statistics adjustments - OSD/STATISTICS: Finetuned statistics layout to be more compact and aligned - OSD/STATISTICS: Group Run-Ahead and Frame Delay as "Latency" - OSD/STATISTICS: Try to scale font as small as possible/readable if stats won't fit - OSD/STATISTICS/FONT: Allow reseting notification font with RetroPad Y to "null", which uses the fallback pixel font - OSD/STATISTICS/FONT: Show "Default" instead of empty with default font - OSD/STATISTICS/FONT: Start browsing font from assets instead of root - WIN32: Ignore window limiting with fixed position. The other resizing part already took this into account, but WM_GETMINMAXINFO did not.
Link to our full blog article here, snippet below - A new concept were going to try, well see if it lasts. Expect irregular blog posts like this, whenever something is on our mind that we want to share. Its basically like a development diary where we discuss future plans for upcoming versions and what we have been thinking about doing. Raising the lowest common denominator RetroArch pushes the concept of backwards compatibility to an absolute extreme. Its one of our definite pet peeves and something were quite proud of. The degree to which we push this is quite irregular in the modern day software industry but we believe it differentiates us from the rest of the pack, and in a good way. That being the case, recently we believe that in order to improve the out of the box enduser experience, it is perhaps necessary to start making some general baseline assumptions on what endusers realistically are using in terms of hardware. Lets explain what is behind this idea. The Steam Mac version was a good opportunity for us to establish some minimum baseline system requirements to make sure that RetroArch on Mac would run well out of the box. We have some plans for the Windows version which we hope will provide a much better out of the box experience. To learn more about them, read our blog article here on our website.
RetroArch 1.15.0 has just been released. Read the full article on our website here.
Now available for macOS
RetroArch for Mac is now on Steam! Minimum system requirements:
- Your Mac should be running macOS 10.13 (High Sierra) or later. It is technically possible to try to run it on a version as low as macOS 10.11 (El Capitan), but in order to use it with all features reliably working wed recommend 10.13 or later.
- Your GPU should at least support the Apple Metal 2 graphics API. This is because Vulkan is the default video driver, which in turn relies on MoltenVK. MoltenVK is a Vulkan to Metal abstraction layer which converts Vulkan API calls to Metal. Therefore, a GPU that supports the Metal graphics API is essential for an optimal out of the box experience. Thankfully, most Macs produced in the past 10 years should be able to meet this requirement. If you want to know if your Mac meets the minimum Metal requirements, refer to this page here. TLDR you should be good to go with a Mac that came out mid 2012 or later.
New cores added
On top of that, we added two new cores, bringing the total number of available cores on Steam to 59 now. https://store.steampowered.com/app/1227442/RetroArch__Theodore/ https://store.steampowered.com/app/1227465/RetroArch__XRick/
Changelog
- AI SERVICE: Fix NVDA switching to Powershell on speak
- APPLE: Add App Category to a few places it should have been
- APPLE/MFI: Prevent crash when controller player index is unset (-1)
- AUTOMATIC FRAME DELAY: Helped delay to decrease easier when it should and helped delay to stay put when it should when triggering pause & menu with or without pause & fast-forward & slow-motion & geometry change
- AUTOMATIC FRAME DELAY: Recalibrate delay on video reinit (fullscreen toggle and such)
- AUTOMATIC FRAME DELAY: Show (x effective) only in menu item and not in dropdown list items when auto is enabled
- CHEEVOS: Allow repositioning of RetroAchievement notifications
- CHEEVOS/MENU: Add Achievements Visibility submenu option
- CHEEVOS/MENU: Startup Summary split off from Verbose Mode, added option to hide for games with zero core cheevos
- CHEEVOS/MENU: 'Unlocks/Mastery' split into two options
- CHEEVOS/MENU: 'Account/Login Messages' split off from 'Verbose', gated all login success/error messages
- CONFIG/INPUT: Unload restores current global config
- CONFIG/INPUT/OVERRIDES: Removing a file does not unload current override
- CONFIG/INPUT/OVERRIDES: Saving an empty override removes the file if it exists, and won't save when it does not
- CONFIG/INPUT/OVERRIDES: Prevent the use of RUNLOOP_FLAG_OVERRIDES_ACTIVE with appendconfig
- CORE OPTION: Core option setting type checks. Added checks for getting and setting core option type, since otherwise there will be a crash on close content after browsing to core option categories. Also fixed the no-show switch icon for lone wolf "Lock Installed Core".
- CLI: Update selected save slot when start with cli --entryslot
- CLI: Decouple config CLI append and config overrides
- CLI/MENU/XMB: Stop showing bogus previous icon on CLI launch
- D3D9: Fixed display driver scissoring implementation - can now accept 0 width/height
- D3D10: Fixed display driver scissoring implementation - can now accept 0 width/height
- D3D11: Fixed display driver scissoring implementation - can now accept 0 width/height
- D3D11: Fixed build when HAVE_DXGI_HDR is not defined
- D3D11: Moved waitable swapchain waiting to happen always even when resizing swapchain
- D3D12: Fixed display driver scissoring implementation - can now accept 0 width/height
- D3D12: Fixed window scaling issue, which was caused by swapchain resize function not using the same flags (waitable swapchain) as swapchain creation
- D3D12: Fixed swapchain scissoring issue (visual + crash) after manually resizing window to smaller size
- D3D12: Fixed eventual crashing issue on video reinit when swapchain is being freed
- D3D12: Moved waitable swapchain waiting to happen always even when resizing swapchain
- EMSCRIPTEN: Add HAVE_PATCH support for Emscripten
- EMSCRIPTEN: Add BSV/Replay support for Emscripten
- EMSCRIPTEN: Add command and stdin_cmd features to emscripten RA. update libretro.js to show how commands could be sent over emscripten stdin.
- FRAME DELAY/MENU: Show Frame Delay without VSync
- GENERAL: Start unpause restriction. Limit the feature using retropad start button to unpause RA to the setting it was made for; "pause on controller disconnect".
- GENERAL: Savestate thumbnail aspect ratio fallback. Thanks to at least one certain core that announces aspect ratio as 0, we have to add the same fallback in savestate thumbnails that is happening elsewhere in normal video driver use anyway.
- GENERAL: Add support for system subdirs per core/database. Added the trivial and graceful automatic ability to send a different system directory to cores if it exists, for keeping the system dir more sane. First by using the core/library name just like in configs and saves, and then by playlist name, like in thumbnails, and of course default to the current global system dir.
- GENERAL: Ignore system subdir replacement if subdir has subdirs.
- GENERAL: Restore cached video driver always on quit
- LATENCY/PREEMPTIVE FRAMES: Add Preemptive Frames to Latency Settings. RunAhead alternative that reruns core logic to "rewrite history" before the current frame. Frames are only rerun when the controller state changes, so it's faster overall.
- LATENCY/PREEMPTIVE FRAMES: Call retro_run before retro_serialize (#14893). Fixes preemptive frames not starting up with a few cores
- LOCALIZATION: Updates
- LOCALIZATION: Enable localization of video rotation, orientation, and aspect ratio option values.
- LOCALIZATION: Mixer stream localization also added
- LOCALIZATION/MENU/HELP: Context dependent help text for audio and video drivers. Language corrections
- LOCALIZATION/MENU/LANGUAGE: Language submenu now shows the progress of translated strings for each language.
- LOCALIZATION: Help texts now localizable through Crowdin.
- LIBRETRO: Enable RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME for libretro-video-processor
- LIBRETRO/HW: Add GET_HW_CONTEXT_NEGOTIATION_INTERFACE_SUPPORT. Works around issues in v1 interface where it was not possible to query what frontend would do when faces with newer interface versions. This env-call gives stronger guarantees how things have to work.
- INPUT: Allowing keyboard hotkeys to work without hotkey modifier if modifier is only mapped to RetroPad
- INPUT: Allowing keyboard hotkey keys for typing if hotkey modifier is set to keyboard but not pressed
- INPUT: Allowing keyboard RetroPad keys for typing if emulated device type is "None"
- INPUT/BLUETOOTH: Fix a crash in for BT HID devices. (#14922) pad_connection_destroy() frees slots, no need to free it again.
- INPUT/BSV/REPLAY: Don't start video recording when BSV recording starts
- INPUT/BSV/REPLAY: Don't double-record inputs in BSV recording
- INPUT/BSV/REPLAY: Don't autoload states if a BSV file is being played back or recorded
- INPUT/BSV/REPLAY: Moved BSV initialization before autoload code
- INPUT/BSV/REPLAY: Don't trigger autoload code if there is bsv movie state
- INPUT/BSV/REPLAY: Allow for both -e and -R to start a BSV file recording at a state
- INPUT/BSV/REPLAY: Add keyboard recording support to BSV
- INPUT/BSV/REPLAY: Fix BSV playback from a starting state for DOSbox
- INPUT/BSV/REPLAY: Associate states with replays. Now states can be saved and loaded during replay recording and playback in a way that keeps the integrity of the recording. Recordings also have a (moderately) unique identifier associated with them.
- INPUT/BSV/REPLAY: Add checkpointing feature for replay recordings. If cores are not deterministic, or if they only have bounded determinism, we can obtain less drift if replay files also contain periodic checkpoint states. These are configured by the new retroarch setting replay_checkpoint_interval (measured in seconds). States are inserted into the replay file in between frames. This also fixes the settings display for the replay autoincrement max keep setting.
- INPUT/FRAMEADVANCE: Use non-rendering pause mode when frameadvance is triggered
- INPUT/HOTKEYS/OVERLAYS: Do not block input overlay hotkeys
- INPUT/HOTKEYS: Hotkey blocking correction. Turned out the previous hotkey blocking changes worked properly only with winraw driver and not the rest (at least with Windows), because input_keyboard_event() could be called at the wrong moment, and thus storing keyboard menu press there broke the separation of controller Guide menu button and keyboard menu key. Also allowed the blocking to work in both directions so that controller hotkeys won't get blocked if only keyboard has "enable_hotkey" bind.
- INPUT/LINUX/UDEV: Fix udev guns input when id_mouse is not id_joystick
- MENU: Rename 'Standalone Cores' to 'Contentless Cores'
- MENU: Music files should also obey builtin_mediaplayer_enable (#14967) Disabling the built in media player should be possible for music files as well. Without this, sound files can not be opened from file browser with cores that support them.
- MENU: Relocated items to a more logical order
- MENU: Corrected some title capitalizations (when/before/after are not low case, but for/the/a are)
- MENU/AUDIO: Add dropdown menu for audio device
- MENU/HELP: Help for turbo modes (#14919). Help text added for each of the selectable turbo modes.
- MENU/INPUT: Add unified back action to all menu drivers. Usability boost for all menu drivers resulting in similar behavior as with Ozone currently, which is pressing back/cancel enough the selection jumps first to Main Menu and when pressed again jumps to the first item, so that when a core is running, Quick Menu is very quickly accessible from anywhere. And when core is not running, the first item would be Load Core.
- MENU/INPUT: Override bind save + menu manager overhaul
- MENU/INPUT: Allowed and fixed input bind saving to overrides
- MENU/INPUT: Overhauled override menu
- MENU/INPUT: Pressing Start on the top active file entry reloads current overrides as startup would
- MENU/SUBLABELS: All under "Configuration File" + moved "Reset to Defaults" to bottom
- MENU/SUBLABELS: Quick Menu > Controls > Port x Controls
- MENU/SUBLABELS: Port x Controls > Device Type
- MENU/RGUI: Fix disabled menu item color. The effect was not working properly, since transparency meant using the core output color as background.
- MENU/XMB: Fixed playlist manager icons to take Explore Views into account properly
- MENU/XMB: Changed XMB Explore View title to match Ozone
- MENU/XMB: Added "Switch Icons" option
- MENU/XMB: Fix MENU_ACTION_CANCEL when search is active. Nasty issue discovered in XMB which broke search term cancelation.
- MENU/XMB: Layout corrections:
- MENU/XMB: More room for longer item labels and values
- MENU/XMB: "Core Downloader" has extra space for item and "installed" indicator
- MENU/XMB: Fixed "Menu Scale Factor" to not require restarting to get the actual end result
- MENU/XMB: Adjusted scale factor to behave better with both layouts
- MENU/XMB: Fixed savestate thumbnails and adjusted vertical fade factor in "Handheld" layout
- MENU/XMB: Changed thumbnail shadow to outline and tightened fullscreen thumbnail margins
- MENU/XMB: Adjusted global shadow opacity
- MENU/XMB: Remove "Framebuffer opacity" from XMB as it does not use it. Also, rename the corresponding menu title, since "framebuffer" is not that intuitive.
- MENU/OZONE: Fixed playlist manager icons to take Explore Views into account properly
- MENU/OZONE: Refresh thumbnail on close content hotkey
- MENU/OZONE: Ozone footer enhancements (#14926). Add Help button (Select) and Reset to Default (Start) to footer where applicable.
- MENU/OZONE: Ozone footer enhancements (#14934). Display Help footer only if there is actual info to be displayed, either actual help, or sublabel if it is not visible otherwise.
- MENU/OZONE: Ozone footer enhancement: Scan button (#14949). Display Scan button in footer when it is applicable.
- MENU/OZONE: Add Clear button to Ozone footer (#14947). Add indication of Clear button when it is applicable (currently: keybinds).
- MENU/MATERIALUI: Added missing Favorites+History icons in playlist manager
- MENU/MATERIALUI: Added "Switch Icons" option
- MENU/CHEATS: Added missing icons in cheats (Delete + Copy After/Before)
- MENU/CHEATS: Fixed label capitalization in cheats (Add New After/Before This)
- MENU/SOUNDS: Add scrolling sounds for RGUI, XMB, MaterialUI and Ozone.
- MENU/SOUNDS: Better scrolling sound implementation, add new 'notice back' sound
- MENU/SOUNDS: Scroll sound fixes. Correctly get list size in xmb.c for playing scrolling sound when switching categories, play the scrolling sound when pressing cancel in ozone, play the sound when scrolling with ZL and ZR, play the correct sound when scrolling with L- MIYOO: L3/R3 support for Dingux Gamepad controller device.
- MENU/WIDGETS: Show square sized widget on volume mute. Volume widget is currently fixed size always, and thus showing a lot of empty space when muting, therefore shorten the box to icon size only when muting.
- NETWORKING: Call ssl_socket_close for SSL sockets
- NETWORKING/CHEEVOS: net_http - Temporary fix for cheevos crash. Don't use new timeout/poll code for cheevos HTTP requests.
- NETWORKING/MENU: Network information cleanup:
- NETWORKING/MENU: Remove extra space from : delimiter
- NETWORKING/MENU: Trim useless/duplicate garbage from the end of ipv6 address. Windows shows %[adapter number], Linux shows %[adapter name], which already shows before the address
- NETWORKING/STDIN: Add LOAD_STATE_SLOT N command to stdin/network protocol
- OSD/STATISTICS: Add Run-Ahead data to on-screen statistics
- OSX/MACOS: Steam platform support
- OSX/MACOS: Set LSApplicationCategoryType to games
- OSX/MACOS: Include OpenGL video driver on Metal macOS builds (10.13 and higher)
- OSX/MACOS: Fix a few mac windowed mode settings -
- OSX/MACOS: Use "Remember window position and size" setting (fixes #14806)
- OSX/MACOS: Implement window opacity
- OSX/MACOS: Enable "Show window decorations" toggle
- OSX/MACOS: Hide "Disable composition" option (osx does not support disabling composition)
- OSX/MACOS: Make sure to use the file system path name, not the URL name
- OSX/MACOS/IOHIDMANAGER: Various memory access fixes to prevent crashes (#14459) (#15000). Prevent double free and null dereference when the controller is quickly reconnected. Handle error when controller device query returns null instead of crashing.
- OSX/MACOS/METAL BUILD: Fix input events (keyboard/mouse) sometimes going lost when switching between fullscreen and windowed mode. Fixes lots of longstanding issues
- OSX/MACOS/OPENGL: Fix for fullscreen OpenGL driver in Metal macOS build
- OSX/MACOS/VULKAN/MOLTENVK: Default to Vulkan driver when available (for 10.13 Metal Universal build)
- OSX/MACOS/VULKAN/MOLTENVK: Updated Vulkan on Metal for OSX via MoltenVK
- OSX/MACOS/VULKAN/MOLTENVK/HDR: Fix non-HDR colors
- OSX/MACOS/SLANG: The change to apply shaders would be executed and then a command to apply shaders would immeidately be enqueued, to run asynchronously after the current event handler, which then did exactly the same. Fixes issue #14789 - Turning on shaders on Metal build 1.14.0 stable for Mac OS will slow emulation drastically thing, creating a busy loop.
- RECORDING: Add recordings to video history playlist
- REWIND: Don't take rewind steps while menu pause active
- RUNLOOP: Currently when core is paused, video output will be stopped completely too, making it impossible to animate widgets while paused, therefore:
- RUNLOOP: Added a new runloop state for pause which renders last cached frame
- RUNLOOP: Allowed rewinding while paused so that it acts like backwards frameadvance. Also moved rewind step taking before menu iteration so that steps won't be lost while in menu when menu_pause is disabled
- RUNLOOP: State load and reset while paused will forget pause for x frames in order to show proper output
- RUNLOOP: Allowed reading pause hotkey while menu is active
- RUNLOOP: Allowed reading screenshot hotkey while menu is active
- RUNLOOP: Joined 2 fullscreen hotkey checks to one (Any ideas why they were separated for paused and non-paused states, since one works fine for both..?)
- RUNLOOP: Implement GET_HW_CONTEXT_NEGOTIATION_INTERFACE_SUPPORT. Fairly trivial. Just report the latest version.
- SAVESTATES: State slot hotkey adjustments -
- SAVESTATES: Allow selecting -1 Auto slot with hotkeys
- SAVESTATES: Allow wrap-around from -1 to 999 and backwards
- SAVESTATES: Show failure message when trying to load a state that does not exist instead of plain "Loading state"
- SAVESTATES: Shorten the duration of slot change notification
- SAVESTATES: Change the widget type to the same type as shader toggle for better back and forth action. Closes [Widgets] Save state slot switcher
- SHADERS: Append Preset feature
- SHADERS: Prepend Preset feature
- SHADERS: Shader Preset - Wildcard Replacement in Paths on Load. When a simple preset loads, text wildcards which are found in paths inside the presets will be replaced with values coming from the current RetroArch context. The replacement will be executed on both texture paths and reference paths.
- SHADERS/SLANG/SPIRVCROSS: Update to latest SPIRV-Cross, fixing Metal shader compilation issues along the way
- VIDEO: Allow manual video swap interval forcing. The addition of auto swap interval effectively prevented manual forcing, which is beneficial when the rate is not reported properly. Therefore use the interval in the calculation only when using automatic interval.
- VULKAN: Fix crash when using multiple physical devices and HW core (#14889)
- VULKAN: Detect if wrong PhysicalDevice is returned.
- VULKAN: Actually query physical device before creating core device.
- VULKAN: Define and implement v2 of context negotiation interface
- VULKAN: Add v2 of context negotiation interface.
- VULKAN: Add vkEnumerateInstanceVersion symbol.
- VULKAN: Implement v2 context negotiation
- VULKAN: Use compute shaders to upload RGB565
- VULKAN: Fix regression with RGB565 and OriginalHistory.
- VULKAN/WAYLAND: Don't clamp the number of requested images. Due to an unfortunate "feature", MESA always reports 4 as the Vulkan surface's minImageCount in Wayland. However, values of 2 and 3 work perfectly well, even if they are out of spec, providing way better latencies when using the Vulkan backend on Wayland. So this removes the artificial clamping that was being done to desired_swapchain_images, because it's not really necessary and was causing very noticeable input lag on Wayland+Vulkan.
- VULKAN/MENU/RGUI: Fix RGUI on Vulkan on platforms that don't have _pack16 VkFormats
- VULKAN/MACOS/OSX: avoid using _PACK16 pixel formats on platforms without them
- WAYLAND: On scaled desktops the wayland backend deciding to resize based on values multiplied by the scale factor twice. Resulting in continuous attempts to rebuild the swapchain when in fullscreen.
- WAYLAND: Wait for splash screen configuration. Before, configuration (resize) events for the initial wayland window could happen before or after set_video_mode which could result in a small or corrupted window. Now we make sure that the initial window has processed it's resize events before window size is set by set_video_mode.
- WAYLAND: Changes the initial window to show a RetroArch logo copied from the icon of the X11 backend.
- WAYLAND: Build pointer-constraints and relative-pointer protocols.
- WAYLAND/GL: GL is sometimes not rescaling property (Super + Left).
- WIN32/INPUT: Add support for mouse button swap
- WIN32: Fix keyboard event characters. Added sending key chars to all input drivers (currently they only send scan codes), and also missing mods for raw.
- WIN32: Fix restart if path has spaces. CreateProcess does not like to have anything executable path related in the second parameter lpCommandLine if the path has spaces. Thus strip everything from args except the actual parameters.
New cores added for RetroArch Steam. https://store.steampowered.com/app/2301080/RetroArch__Numero/ https://store.steampowered.com/app/2345800/RetroArch__ScummVM/ You can download these cores either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. There are now 57 cores available in total for RetroArch Steam.
New core added for RetroArch Steam brought to you by icculus https://store.steampowered.com/app/2246910/RetroArch__MojoZork/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. There are now 55 cores available in total for RetroArch Steam. ---------------- https://www.youtube.com/watch?v=Ps9uB8tY1HI This is an implementation of Infocom's Z-Machine. The Z-Machine is a virtual machine that's something like a high-level CPU. To keep their games portable and easier to write, Infocom's games all use this fake processor and ship with a platform-specific Z-Machine "emulator" ... so a game could run wherever someone had implemented the Z-Machine. This project is just for fun; everyone should write this at some point as an educational activity. If you want a serious Z-Machine implementation, there are certainly better ones out there (I personally recommend "Frotz" and there are many others, too). This program currently supports most of the Version 3 Z-Machine. This is enough to play the vast majority of Infocom's catalog. Later Infocom games used version 4, 5, and 6 of the Z-Machine, and those will currently not run here. Most modern Interactive Fiction is built with a tool called Inform and usually targets version 5 at the lowest; these games currently don't work with this project. Maybe later. If you want to write your own Z-Machine, there is an "official" specification on how to implement it, written by people that spent significant time reverse engineering the originals from Infocom, and extending the ecosystem with new tools. You can find that specification here. As usual, Wikipedia offers a wonderful rabbit hole to fall down, too, in their Z-machine article.
Changelog since 1.14.0: D3D12: Fixed some shaders not appearing with the d3d12 driver - this reintroduces a validation error though but it seems to work as in not crash and is the old RA behaviour. Guess we need a different way of fixing the validation issue.
RetroArch 1.14.0 has just been released. Read the full article on our website here. Check our Libretro Core Progress Report (May to December 2022) article here.
Changelog
- CHEEVOS: Fix construction of Cheevos badge path
- CLI: Fixed not getting any output when running --version or --features without --verbose
- CLI: Fixed crash when running empty - parameter (it proceeded to content loading)
- CLI: Reformatted --features to require less rows and to be more consistent
- CLI: Added -V shorthand for --version
- CLI: Tab removal + whitespace nits
- CONFIG/MIDI: Prevent MIDI startup error with old configurations
- D3D11: Fix when using shaders with TATE mode arcades etc
- D3D12: Fix when using shaders with TATE mode arcades etc
- D3D12: Added support for break on errors (development aid - define DEVICE_DEBUG to use)
- D3D12: Added support for DRED (device remove extended data) (development aid - define DEVICE_DEBUG to use)
- D3D12: Made D3D12 viewport and scissors to behave more like Vulkan drivers (or be more correct)
- D3D12: Fixed validation error on start up due to buffers not being setup correctly for one frame
- DATABASE/EXPLORE/VIEW: Bugfix - RGUI did not clear thumbnail on non-playlist items such as Save and Delete menu_explore_get_entry_playlist_index() returns -1 on invalid entries, but the variable where it was stored was unsigned
- DATABASE/EXPLORE/VIEW: Bugfix - XMB+Ozone cleared thumbnail in Quick Menu when navigating away from Run
- FASTFORWARD: Restore framelimit on fastforward toggle. Fast-forward was broken after toggling vrr_runloop off, since it will force frame limit to 1.0 (even on every frame) and never restores it. So let's make sure the wanted ratio is applied when toggling FF (Fastforward).
- GFX/VIDEO FILTERS: (picoscale_256x_320x240) Added snn function to upscale Fuse (ZX Spectrum) core borderless output to 320x240. ZX Spectrum resolution of 256x192 was previously unsupported.
- HOTKEYS: Further reorder internal hotkey items for consistency and removed SEND_DEBUG_INFO, OVERLAY_NEXT and OSK from visible hotkey bind list. "Send Debug Info" stuff is removed as much as possible without breakage due to translation files.
- INPUT/AUTOCONFIG: Disable 'pause on controller disconnect' by default - was enabled by default on 1.13.0
- INPUT/MENU: Device Index menu refactor
- INPUT/OVERLAY: Fix analog drift blocking touch input (could occur on overlay_next if physical inputs shown on overlay)
- INPUT/OVERLAY: Fix overlay_next buttons lighting up in unison
- INPUT/OVERLAY: Skip meta keys in input_overlay_add_inputs (not supported by input_state_internal)
- INPUT/WINDOWS/WINRAW: Fix mouse position when using input overlay with mouse cursor
- INPUT/WINDOWS/WINRAW: Fixed mouse position to use the same method required for menu items and pointer when simulating input overlays with mouse, since it won't work with multi mouse method
- INPUT/WINDOWS/WINRAW: Fixed passing mouse position to core also when using aforementioned method
- LOCALIZATION: Updates
- LOCALIZATION/INPUT/IME/MENU/ONSCREEN KEYBOARD: Extended IME and Korean OSK
- MENU: Cleanup of help texts
- MENU: Allow toggling info off with the same button
- MENU: Allow menu wallpaper/background reset. Let's also remove the current wallpaper from the screen when pressing Start.
- MENU: Null driver shows with different color (Added for all menus the ability to show "disabled" items with a muted color)
- MENU/DRIVERS: Menu driver first, Audio Resampler removed because it is enough to exist under audio settings
- MENU/INPUT: Moved "Confirm Quit" to Input menu
- MENU/INPUT/HOTKEYS: Input hotkey menu completely overhauled to keep related entries together, and also adjusted some labels and sublabels
- MENU/OVERLAY: Fix overlays behind menu without core running. "Show Overlay Behind Menu" is currently broken with Ozone and XMB (with any other color theme than Plain) when running without a core.
- MENU/MATERIALUI: Fix home screen on first startup - no more stray entries
- MENU/OZONE: Allowed drawing sidebar and thumbnail bar background color also when core is running
- MENU/OZONE: Stopped using different padding and position for savestate thumbnails vs imageviewer
- MENU/OZONE: Removed gradient background effect when core is running, because some themes already have gradient background, which creates ugly rough steps
- MENU/OZONE: Fixed "Gray Light" theme from using the same background as "Gray Dark", which makes selection cursor near impossible to see
- MENU/OZONE: Some whitespace corrections
- MENU/UX: Extend OFF menu value colors
- MENU/UX: Menu icon improvements - Menu Visibility icons (Quick Menu + Settings)
- MENU/UX: Menu icon improvements - Playlist Manager icons
- MENU/UX: Menu icon improvements - Explore icon as database icon
- MENU/UX: Menu icon improvements - View and filter icons as cursor icon (folder icon in GLUI)
- MENU/UX: Menu icon improvements - View save + delete icons
- MENU/UX: Menu icon improvements - Moved Explore + Views below Standalone Cores
- MENU/UX/OZONE: Removed icons from menus where others items don't have icons, and added icons to menus where the rest have icons
- MENU/UX/OZONE: Changed the way "no icon" is handled from kludgy way of not drawing SUBSETTING icon
- MENU/UX/XMB: Changed playlist entry index positioning to bottom right when thumbnails are in vertical mode, because big lists will overlap with arrow and current "breadcrumb" icons when the position is next to current selection
- MENU/UX/XMB: Added a rather nasty hack to prevent showing wrong icons under Explore as "breadcrumb" icon
- MENU/UX/XMB: Optimized certain icon drawing loops (Main horizontal icons were looped even when not visible, and all previous "breadcrumb" icons were looped when only one certain was needed)
- MENU/UX/MATERIALUI: Fixed showing icons where there should not be any (Waitable Swapchains, Show Recording + Streaming)
- SRAM: Don't init SRAM saving without content (gets rid of the redundant logging)
New core added for RetroArch Steam https://store.steampowered.com/app/2234340/RetroArch__ep128emu/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. There are now 54 cores available in total for RetroArch Steam. Leverage the convenience of libretro/RetroArch to emulate the Z80 based home computers that the original ep128emu supports - that is, Enterprise 64/128, Videoton TVC, Amstrad CPC and ZX Spectrum. Focus is on Enterprise and TVC. Since the emulated machines are 8-bit platforms from the 1980's, modern setups should have no problem emulating them. Tested on Raspberry Pi 2.
RetroArch 1.13.0 has just been released. Read the full article on our website here.
Overlay / onscreen gamepad controls improvements
Android/iOS users in particular 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
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
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:
- Stretches hitbox symmetrically
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
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 its 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 wont 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
- Its 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
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
- CHEEVOS: Upgrade to rcheevos 10.5
- COMPILATION: Fixed compiling with disable-menu
- CONFIG: Dont 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)
- 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 wont allow fullscreen toggle when it shouldnt
- MENU/OZONE: Selection position remembering in non-playlists wont 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
- 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.
RetroArch 1.12.0 has just been released. Read the full article on our website here.
Views
There is now an entirely new way to display and organize content Views! You can turn a filter set in the Explore menu into a so called View file which then gets listed alongside playlists. This also adds the ability to filter a category by range in the Explore menu and not just filter on exact matches. The views are saved into .lvw (libretro view) files that just like playlist .lpl (libretro playlist) files are in JSON format and are stored in the same playlists directory. You can combine several filters in whichever order you see fit and then save the results as a viewYou can combine several filters in whichever order you see fit and then save the results as a view Heres some examples of views that are now possible with the new range filtering:
- Games made between 1992 and 1996 by developers Capcom and Capcom Production Studio 1
- Games supporting 5 to 8 players
- Games containing Mario in the title released between 1988 and 1994
Changelog
1.12.0
- CONFIG/CLI: Allow use of appendconfig with override cfgs instead of getting ignored
- CONFIG/LOGGING: No more console startup logging if logging to file
- CONFIG: Saves config on exit only once instead of (worst case scenario) 3 times
- DATABASE/EXPLORE/VIEW: Add View feature Add saving of a filter set in the Explore menu into a so called View file which then gets listed alongside playlists. This also adds the ability to filter a category by range in the Explore menu and not just filter on exact matches.
- FILEBROWSER: Fix regression certain extensions keep disappearing
- INPUT/HAPTIC/OVERLAYS/ANDROID: Improve haptic feedback for input overlays
- LINUX/MALI FBDEV: Add conditional support for OpenGL ES 3.x
- LOCALIZATION: Updates
- LOCALIZATION/ENGLISH: Add British English language option
- LOGGING/QT: Increase log buffer to 2048 characters Vulkan validation layer messages output correctly now.
- MENU/XMB: Remember selection per main tabs. Addresses the following : collection playlists can contain hundreds or thousands of items. When scrolling through one, pressing left or right by accident can be common. This resets the playlist to the top
- MIST/STEAM/STEAMDECK: Dont expose Black Frame Insertion (BFI) if we are running on a Steam Deck
- NETWORKING/WINDOWS: Disable poll support for MSVC 2010 and earlier. WSAPoll is not supported on Windows XP and earlier.
- SAVESTATES/NOTIFICATIONS: Add delay to savestate notifications, so that GPU savestate screenshots stay untouched
- SAVESTATES/SCREENSHOTS: Avoid video_gpu_screenshot with savestates. Allow GPU screenshots with savestates only when there is no other way of getting a screenshot.
- SCREENSHOTS/VULKAN: Unload screenshot widget texture early. Fixes Vulkan crash when closing content while a screenshot widget is still on-screen
- SCREENSHOTS/VULKAN: Fix screenshot widget crash when ticker animating
- WAYLAND: Set correct app ID
Changelog: - CONFIG/CLI: Allow use of --appendconfig with override cfgs instead of getting ignored - CONFIG/LOGGING: No more console startup logging if logging to file - CONFIG: Saves config on exit only once instead of (worst case scenario) 3 times - DATABASE/EXPLORE/VIEW: Add View feature - Add saving of a filter set in the Explore menu into a so called "View" file which then gets listed alongside playlists. This also adds the ability to filter a category by range in the Explore menu and not just filter on exact matches. - FILEBROWSER: Fix regression - certain extensions keep disappearing - INPUT/HAPTIC/OVERLAYS/ANDROID: Improve haptic feedback for input overlays - LINUX/MALI FBDEV: Add conditional support for OpenGL ES 3.x - LOCALIZATION: Updates - LOCALIZATION/ENGLISH: Add British English language option - LOGGING/QT: Increase log buffer to 2048 characters - Vulkan validation layer messages output correctly now. - MENU/XMB: Remember selection per main tabs. Addresses the following : collection playlists can contain hundreds or thousands of items. When scrolling through one, pressing left or right by accident can be common. This resets the playlist to the top - MIST/STEAM/STEAMDECK: Don't expose Black Frame Insertion (BFI) if we are running on a Steam Deck - NETWORKING/WINDOWS: Disable poll support for MSVC 2010 and earlier. WSAPoll is not supported on Windows XP and earlier. - SAVESTATES/NOTIFICATIONS: Add delay to savestate notifications, so that GPU savestate screenshots stay untouched - SAVESTATES/SCREENSHOTS: Avoid 'video_gpu_screenshot' with savestates. Allow GPU screenshots with savestates only when there is no other way of getting a screenshot. - SCREENSHOTS/VULKAN: Unload screenshot widget texture early. Fixes Vulkan crash when closing content while a screenshot widget is still on-screen - SCREENSHOTS/VULKAN: Fix screenshot widget crash when ticker animating - WAYLAND: Set correct app ID
Point fix update. Read the full article here. 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
RetroArch 1.11.0 has just been released! Months of work has gone into significantly improving RetroArch across the board. Particular points of focus have been networking/netplay and user interface improvements. Read the full article on our website here. Patch notes: 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 doesnt 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 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: Dont 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-320240 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/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 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, youll 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 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_retros 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 clients 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/UPNP: Attempt support for remaining platforms NETWORK/UPNP: Support for IPv4 tunneling 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. 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 couldnt be extracted. Scanner will then fallback on crc check, and usually ends up finding the games in the database. STRING: Do not assume char is unsigned TASKS: More thread-awareness in task callbacks TASKS: Fix race condition at task_queue_wait 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/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 wasnt NULLd, thus set_window_progress would cause weird behavior
RetroArch 1.11.0 has been released! Patch notes: 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 doesnt 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 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: Dont 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-320240 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/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 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, youll 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 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_retros 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 clients 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/UPNP: Attempt support for remaining platforms NETWORK/UPNP: Support for IPv4 tunneling 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. 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 couldnt be extracted. Scanner will then fallback on crc check, and usually ends up finding the games in the database. STRING: Do not assume char is unsigned TASKS: More thread-awareness in task callbacks TASKS: Fix race condition at task_queue_wait 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 youd 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 wasnt NULLd, thus set_window_progress would cause weird behavior
A new core has been added for RetroArch Steam. https://store.steampowered.com/app/2066880/RetroArch__A5200/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. There are now 53 cores available in total for RetroArch Steam.
A new core has been added for RetroArch Steam. https://store.steampowered.com/app/1238580/RetroArch__A800/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. If you'd like to learn more about these cores, you can go to our Documentation Center site. Documentation for the A800 core can be found here. There are now 51 cores available in total for RetroArch Steam.
2 new cores have been added for RetroArch Steam. https://store.steampowered.com/app/2010121/RetroArch__BlueMSX/ https://store.steampowered.com/app/1876450/RetroArch__WASM4/ 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 download these cores either from within RetroArch Steam by going to Manage Cores, or by simply downloading them for free from Steam. If you'd like to learn more about these cores, you can go to our Documentation Center site. Documentation for the BlueMSX core can be found here. Documentation for the WASM-4 core can be found here. There are now 50 cores available in total for RetroArch Steam.
4 new cores have been added for RetroArch Steam. https://store.steampowered.com/app/1227485/RetroArch__Gearboy/ https://store.steampowered.com/app/1227484/RetroArch__Gearsystem/ https://store.steampowered.com/app/1222637/RetroArch__TIC80/ https://store.steampowered.com/app/2062460/RetroArch__Handy/ You can download these cores either from within RetroArch Steam by going to Manage Cores, or by simply downloading them for free from Steam. If you'd like to learn more about these cores, you can go to our Documentation Center site. Documentation for the Gearboy core can be found here. Documentation for the Gearsystem core can be found here. Documentation for the TIC-80 core can be found here. Documentation for the Handy core can be found here. There are now 48 cores available in total for RetroArch Steam.
Three new cores have been added for RetroArch Steam. https://store.steampowered.com/app/2004070/RetroArch__Gambatte/ https://store.steampowered.com/app/1227457/RetroArch__FreeIntv/ https://store.steampowered.com/app/1227482/RetroArch__CrocoDS/ You can download these cores either from within RetroArch Steam by going to Manage Cores, or by simply downloading them for free from Steam. If you'd like to learn more about these cores, you can go to our Documentation Center site. Documentation for the Gambatte core can be found here. Documentation for the FreeIntv core can be found here. Documentation for the CrocoDS core can be found here. There are now 44 cores available in total for RetroArch Steam.
A new core has been added for RetroArch Steam - FreeChaF. https://store.steampowered.com/app/1227458/RetroArch__FreeChaF/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. If you'd like to learn more about this core, you can refer to more information on our Documentation Center site. There are now 41 cores available in total for RetroArch Steam.
Two new cores have been added for RetroArch Steam - Beetle Saturn and FUSE. https://store.steampowered.com/app/1905200/RetroArch__Beetle_Saturn/ https://store.steampowered.com/app/2004140/RetroArch__Fuse/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. If you'd like to learn more about these two cores, you can refer to more information on our Documentation Center site. There are now 40 cores available in total for RetroArch Steam.
A new core has been added for RetroArch Steam! https://store.steampowered.com/app/2008300/RetroArch__vecx/ You can download this core either from within RetroArch Steam by going to Manage Cores, or by simply downloading it for free from Steam. If you'd like to learn more about these two cores, you can refer to more information on our Documentation Center site. Documentation for Vecx core can be found here. There are now 38 cores available in total for RetroArch Steam.
Two new cores have been added! https://store.steampowered.com/app/1227450/RetroArch__GW/ https://store.steampowered.com/app/2010120/RetroArch__TGB_Dual/ You can download these cores either from within RetroArch Steam by going to Manage Cores, or by simply downloading them for free from Steam. If you'd like to learn more about these two cores, you can refer to more information on our Documentation Center site. Documentation for GW core can be found here. Documentation for the TGB Dual core can be found here. There are now 37 cores available in total for RetroArch Steam.
Flycast updated with Naomi2 arcade game support
RetroArch 1.10.3 has just been released. This is a condensed version of the original article on our website. If you want to read the article in full, click here.
RetroArch Updates
See the Changelog below for a detailed breakdown of all the changes that have happened. One of the biggest changes for Steam users by far is the new Steam Discord Rich Presence support. NOTE: You will need to use the desktop client in order for this to work. It wont work with the webbrowser client.
Core Updates
Nestopia
FourScore support (4 player multitap) has been added for the following games:
- Spacey McRacey
- NNNNNN
- Arkade Rush
- Justice Duel
- BMX Simulator
- Way of the Exploding Fist
PCSX ReARMed
This core has a new auto frameskip mode (based on free audio buffer space). The Lightrec dynamic recompiler has been updated, and it should fix several crashes and bugs that occurred before. This would only affect users on x86/x86_64 and MIPS architecture processors, as ARM architecture-based systems continue to use the Ari64 dynarec instead. There has been a GunCon overhaul, the following input descriptors have been added:
- Add Trigger, Reload, Aux A, and Aux B as mappable buttons in RetroArch menu for players 1 and 2.
- GunCon trigger, A, and B buttons are mapped to Gun Trigger, Gun Aux A, and Gun Aux B instead of hard coded to left click, right click, and middle click.
- Force cursor to corner of screen for offscreen reload so that reloading works on all four edges of the screen.
- Allow Gun Reload RetroArch input to emulate an offscreen shot.
- Switch gun coordinates from Pointer type to Lightgun type.
gpSP
The gpSP Libretro core now uses a small translation cache for the Miyoo platform.
Beetle Virtual Boy
Fixed a couple inaccuracies in the VSU modulation emulation, fixing a few sound effects in Virtual Boy Wario Land.
Mesen
The Nintendo Entertainment System emulator core has seen a couple of improvements. Before, the core would upload audio by using the audio batch callback multiple times per frame, unduly stressing the frontend audio buffer and leading to poor AV synchronisation. We now ensure that the audio batch callback is only used once per frame (unless the frontend does not support batches of sufficient size, in which case the samples will be split appropriately). We also did the following:
- Sets the default audio sample rate to 48000 Hz. The previous default of 96000 Hz is so high that RetroArch is required to flush the audio driver twice per frame, which is bad for AV synchronisation.
- Removes the 192000 and 384000 sample rate options, since these are in fact unsupported by the underlying emulator code
Snes9x 2005
This Super NIntendo Entertainment System emulator core has seen several improvements. Before, the core had bad audio sample pacing:
- Neither variant of the core sent a number of samples per frame that would match the nominal expected values given by the sample rate and fps set in retro_get_system_av_info()
- Due to integer rounding errors, the non-plus core always would send too few samples
- The plus version of the core would send the correct number of samples, in terms of actual emulation but this does not tally with the sample rate reported to the frontend. Moreover, the plus core would call the audio batch callback twice per frame, which unduly stresses the frontend audio buffer.
- As a result, the core had bad audio/video synchronisation, affecting frame pacing.
- The audio sample rate is now reported as 32040 Hz
- The non-plus core uses an accumulator to ensure that fractional audio samples are accounted for and sent when required
- The plus core now uploads audio samples only once per frame
- In addition, we did the following
- Fixed three memory leaks that were found in the core
- Modified the Console Region core option to require a restart (since it has never been possible to change this at runtime)
- Snes9x2005 Non-Plus: Add optional low pass audio filter
- Apart from a substantial difference in audio emulation accuracy, probably the most obvious difference between the plus and non-plus versions of the core is that the latter has an inadequate level of low pass audio filtering, leading to tinny/scratchy sound.
Snes9x 2010
This Super NIntendo Entertainment System emulator core has seen several improvements. Use audio batch callback only once per frame Before, the core would upload samples in batches of ~64, which means the audio batch callback is used many (~9) times per frame. This overstresses the frontend audio buffer and leads to bad AV synchronisation. We have fixed the issue by ensuring that the audio batch callback is used to send all available samples only once per frame. Improve save state efficiency + fix save state size At present, every time that retro_serialize_size() is called (i.e whenever save states are used), the core determines the save state size by allocating a temporary 5 MB buffer and writing into this an actual save state. Moreover, it then fails to report the actual size correctly due to a bug in the memory stream wrapper code which means save states are always 5 MB in size. This represents a terrible inefficiency. Now, the save state size is now calculated independently of regular save state creation. No temporary buffer is required, and there is no need to actually write a save state to memory and save states now have the correct size (~830 kb)
60Hz modes for > 60Hz emulated platforms
Beetle Cygne/WonderSwan
At present the core runs at ~75Hz, matching the native refresh rate of the WonderSwan hardware. This is fine if the core is run on a VRR display (or one that natively supports 75Hz), but on regular 60Hz panels it can cause issues. In particular, screen tearing is very likely to occur. You can experience this on Linux (when not using a compositor and without vsync forced at the driver level) and on 3DS. The tearing is so bad on 3DS that we would previously consider the core to be unusable on that platform We now added a new 60Hz Mode core option, which can be used to force the core to run at 60Hz (actually 60.38Hz, but RetroArch handles this nicely via dynamic rate control). Note that the core still runs at the correct speed when this option is enabled internally, the core is running the nominal ~75 frames per second, but every 5th frame is dropped. This reduces video smoothness, but then 75Hz on a 60Hz display is not smooth either. More importantly, enabling this option eliminates screen tearing. In addition, we have also made the following minor changes:
- The frontend reported framerate is now set correctly in 75Hz mode (previously this was truncated, leading to a slight tendency for the frontend audio buffer to under-run)
- The internal audio samples buffer has been reduced from a ~64kb (!) static array to a tiny, dynamically created array of just the correct size
- On 3DS, the video buffers are now allocated in linear memory (for improved performance)
- The 96000, 192000 and 384000 audio sample rate options have been removed, because they are nonsensical and harm AV synchronisation
Changelog
- AI/SERVICE: Disable AI Service setting by default
- CHEEVOS: Disallow manual frame delay setting in Hardcore Mode
- DATABASE: Serial scanning for Wii now includes WBFS
- INPUT/MAPPING: Fix offset + crash when clearing input port binds
- INPUT/MAPPING: Fix saving of Analog to Digital Type when configuration overrides are used
- LOCALIZATION: Add Valencian language option
- LOCALIZATION: Updates
- MENU/SETTINGS: Move Show Menu Bar under Windowed Mode settings
- MENU/SETTINGS: Add sublabels for Subsystems and Input Deadzone/Sensitivity
- MENU/SETTINGS: Move On-Screen Notifications to top
- MENU/XMB: Unified the shadow alpha value to a slightly darker one for better readability
- MENU/XMB: Corrected the option label and sublabel for actual behavior
- STATIC PLATFORMS: Populate all history list metadata when launching content from playlists
- STEAM: Introduce Steam Rich Presence
- VIDEO: Fast-Forward Frameskip improvement
- VIDEO/THREADED: Stability fixes
- WINDOWS/WINRAW: Fix multiple light guns
AI/SERVICE: Disable AI Service setting by default CHEEVOS: Disallow manual frame delay setting in Hardcore Mode DATABASE: Serial scanning for Wii now includes WBFS INPUT/MAPPING: Fix offset + crash when clearing input port binds INPUT/MAPPING: Fix saving of Analog to Digital Type when configuration overrides are used LOCALIZATION: Add Valencian language option LOCALIZATION: Updates MENU/SETTINGS: Move Show Menu Bar under Windowed Mode settings MENU/SETTINGS: Add sublabels for Subsystems and Input Deadzone/Sensitivity MENU/SETTINGS: Move On-Screen Notifications to top MENU/XMB: Unified the shadow alpha value to a slightly darker one for better readability MENU/XMB: Corrected the option label and sublabel for actual behavior STATIC PLATFORMS: Populate all history list metadata when launching content from playlists STEAM: Introduce Steam Rich Presence VIDEO: Fast-Forward Frameskip improvement VIDEO/THREADED: Stability fixes WINDOWS/WINRAW: Fix multiple light guns
RetroArch 1.10.2 has just been released. You can read the full article on our website here. The condensed version here has been stripped of everything not relevant to the Steam version in specific.
Highlights
Big improvements for Steam and Steam Deck users
Were 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 (but not limited to) 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).
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:
- Flycast
- Gambatte
- Nestopia
- Snes9x
- Snes9x 2002
- Snes9x 2005
- Snes9x 2010
- UAE
- VICE
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 wont cut off anymore on display devices with overscan (i.e. CRT TVs). For RGUI users, 610 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
- 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)
Changelog
- 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
- 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
- MENU/SETTINGS: Remove Advanced Settings flag from Settings > Core menu
- MENU/MATERIALUI: Add Gray Dark + Light themes
- MENU/RGUI: Add 610 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 dont support rewind, if rewind functionality itself is disabled
- HOTKEYS: Add hotkey for toggling sync to exact content framerate
- 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
RetroArch 1.10.1 has just been released. Read our full article here on our website.
Highlights
Improvements for contentless cores (or what we would call standalone cores). Standalone core in this context means a core that either:
- doesnt 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.
- 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
RetroArch 1.10.0 has just been released. Read our full article here on our website.
RetroArch Open Hardware
Please take a moment to sign up for our RetroArch Open Hardware newsletter. We would also hugely appreciate it if you could fill out the user survey. The link can be found here.
If there is sufficient demand, we have the possibility to start building hardware that will help regular users preserve their old videogames at affordable prices. Every person filling in this survey counts towards making this a future reality, so please take a moment to look at it.
Highlights
HDR support for Vulkan has been added. Its been confirmed working on Windows. Also,
HDR support for Slang shaders has been added. The first shader to support HDR is
crt\crt-sony-pvm-4k-hdr.slangp.
Numerous improvements have been made to netplay. uPnP support has received a complete overhaul (and is no longer reliant on miniupnpc). Relay servers should now be fully operational. A new relay server has been added in Singapore to help out users in South East Asia and bordering countries.
A summary of the new features:
Netplay features: Text chat, host ping limiter, client ping counter.
Netplay relay: New relay system is now functional.
Netplay relay: The canadian server was replaced in favor of an asian one.
Netplay relay: Custom relay server support.
Netplay hosting: A warning will be shown if your room is not connectable from the internet when announcing to the lobby server.
Netplay fixes: Many netplay fixes and improvements.
Lobby Viewer (Internet): Filter out rooms that are not compatible with RetroArchs netplay.
Lobby Viewer (Internet): Display a non-connectable tag to non-connectable rooms.
Lobby Viewer (LAN): LAN rooms now have their own refresh button, no longer mixing together with internet rooms.
The XMB menu now has a new (optional) effect to hide menu items that are near the edge of the screen, very similar to the original XMB. You can adjust the fade effect to your liking if you want it to fade out more items onscreen. The new setting is called Vertical Fade Factor and can be found in Settings -> User Interface -> Appearance.
A VSync swap interval has been added for the Direct3D 10 and 11 drivers. Before, Swap/sync interval was merely on/off based on VSync, leaving the existing option unused.
Big improvements for Xbox / UWP users see the changelog for more details.
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.0
ARCHIVE: Allow loading files from archive subdirectory
AUDIO: Remove frame limit from audio batch callback. Before, if a core used the audio batch callback, there would be a hidden cap of 1024 on the number of audio frames that could be sent. If a core exceeded this value, any excess samples were silently discarded. While this is sufficient for normal samplerates/framerates, it means that e.g. a core using the batch callback to send 44100 Hz audio at 30 fps with would have entirely broken sound. This has been fixed by removing the audio batch frame limit.
AUDIO/RESAMPLER/NEON: Implement sinc kaiser NEON function
CHEEVOS: Reset hardcore default to enabled; show message when trying to load state in hardcore
CHEEVOS: Fix memory map conversion
CHEEVOS: Check netplay status when unlocking achievements
CHEEVOS: Support for hashing buffered NDS ROMs
CHEEVOS: Fix hung task whe badge doesnt exist
CLI: Load save states from command-line or playlist
CORE INFO CACHE/SETTINGS: Restore missing Cache Core Info Files menu entry
DATABASE: Serial scanning for Gamecube/MegaCD/SegaCD/Saturn/PSX/PSP/Dreamcast/Wii
D3D10/D3D11: Add Vsync swap interval
EMSCRIPTEN: Add Jaxe, WASM4 cores
FILE IO: Fix incorrect file names for remap files when the content path doesnt have a preceding slash
INPUT/OVERLAY: Added support for showing the overlay behind the menu instead of in front. This is currently only supported on the GL, Vulkan, D3D 9/10/11/12 and 3DS drivers.
INPUT/UDEV: Convert abs mouse from screen to viewport coordinates; fix relative mouse coords
INPUT/WAYLAND: Ignore mouse clicks on window decoration
INPUT/WAYLAND: Add scroll wheel support
LINUX: Added support for Linux GameMode (https://github.com/FeralInteractive/gamemode), which can be toggled on/off in the Power Management or Latency settings menus.
LOCALIZATION: Fetch translations from Crowdin
LOCALIZATION: Add Indonesian, Swedish and Ukrainian language options
LOCALIZATION/MENU/RGUI: Enable Indonesian and Swedish localisations for RGUI
LOGGING: Logging cleanups
LOGGING: Stop logging FPS statistics twice on quit
LOGGING: Log font rendering backend only once
HOTKEYS: Added a hotkey toggle for the on-screen technical statistics.
HOTKEYS: Add delay + acceleration to volume hotkeys
MENU: Add option for showing notifications only in menu
MENU/RGUI: Add Finnish to supported languages
MENU/XMB: Optional vertical list item fade
MENU/XMB/OZONE: Category + History/Favorites icons
NETWORK: Fix dummy notification no longer shows a netplay initialization failed notification when netplay is not enabled
NETWORK: LAN addresses only for UPnP Some router devices might accept non-LAN addresses without raising an error.
NETWORK: Filter out non-connectable rooms. Add an option for filtering out non-connectable netplay rooms.
NETWORK: Netplay spectator notification fix. Fix double notification when the host switches to spectator.
NETWORK: Prevents long-term pausing from clients dishonoring allow pausing
NETWORK/LOBBY: Lobby Viewer: Filter out rooms that are not running RetroArch
NETWORK/LOBBY: Lobby Viewer: Display a non-connectable tag to non-connectable rooms
NETWORK/LOBBY: Host: Display warning if we are announcing to the internet but our room isnt connectable from there
NETWORK/RELAY: Custom relay server support Add support for custom user-ran relay servers
NETWORK/RELAY: Replace Canadian relay server with Singapore relay server. Current relays: New York/USA, Madrid/Spain, Sao Paulo/Brazil, Singapore
NETWORK/UPNP: Various refactors/improvements, no more dependent on miniupnpc
NETWORK/UPNP: Various UPnP binding fixes for specific routers
NETWORK/UPNP: Accept IGD v2 service types
NETWORK/UPNP: Delay lobby server announcing delay the announcing in order to give UPnPs port forwarding more time. Fix the remaining truncation warnings.
NETWORK/UPNP: Smart interface selection Find the most suitable address for UPnP by scoring interfaces on how close their address is to the devices address
OPENGL1: Fix buffer overflow RetroArch would sometimes crashes at startup when loading asset textures with GL1 driver
VULKAN: Double combined image sampler descriptor pool size fix segfaults with AMD GPUs using RADV
VULKAN: Emulate mailbox only with Vsync enabled otherwise have it disabled useful for VRR/G-Sync/FreeSync
VULKAN/SWAPCHAIN: Vulkan max swapchain images option adjustments: removed value 1, since it wont be used Video reinit on change, so that there is no need to restart or toggle fullscreen
VULKAN/HDR: HDR support tested on Windows
WAYLAND: Add libdecor for client side decoration
WAYLAND: Use any display for initial metrics
WAYLAND: Fix the window closing, if RetroArch is build without libdecor
WAYLAND: Use checked sizes in EGL resize
WAYLAND: Fix window title update
New RetroArch version 1.9.10 just released. Changelog down below: ARCHIVE: Allow loading files from archive subdirectory AUDIO: Remove frame limit from audio batch callback. Before, if a core used the audio batch callback, there would be a hidden cap of 1024 on the number of audio frames that could be sent. If a core exceeded this value, any excess samples were silently discarded. While this is sufficient for normal samplerates/framerates, it means that e.g. a core using the batch callback to send 44100 Hz audio at 30 fps with would have entirely broken sound. This has been fixed by removing the audio batch frame limit. AUDIO/RESAMPLER/NEON: Implement sinc kaiser NEON function CHEEVOS: Reset hardcore default to enabled; show message when trying to load state in hardcore CHEEVOS: Fix memory map conversion CHEEVOS: Check netplay status when unlocking achievements CHEEVOS: Support for hashing buffered NDS ROMs CHEEVOS: Fix hung task whe badge doesnt exist CLI: Load save states from command-line or playlist CORE INFO CACHE/SETTINGS: Restore missing Cache Core Info Files menu entry DATABASE: Serial scanning for Gamecube/MegaCD/SegaCD/Saturn/PSX/PSP/Dreamcast/Wii D3D10/D3D11: Add Vsync swap interval EMSCRIPTEN: Add Jaxe, WASM4 cores FILE IO: Fix incorrect file names for remap files when the content path doesnt have a preceding slash INPUT/OVERLAY: Added support for showing the overlay behind the menu instead of in front. This is currently only supported on the GL, Vulkan, D3D 9/10/11/12 and 3DS drivers. INPUT/UDEV: Convert abs mouse from screen to viewport coordinates; fix relative mouse coords INPUT/WAYLAND: Ignore mouse clicks on window decoration INPUT/WAYLAND: Add scroll wheel support LINUX: Added support for Linux GameMode (https://github.com/FeralInteractive/gamemode), which can be toggled on/off in the Power Management or Latency settings menus. LOCALIZATION: Fetch translations from Crowdin LOCALIZATION: Add Indonesian, Swedish and Ukrainian language options LOCALIZATION/MENU/RGUI: Enable Indonesian and Swedish localisations for RGUI LOGGING: Logging cleanups LOGGING: Stop logging FPS statistics twice on quit LOGGING: Log font rendering backend only once HOTKEYS: Added a hotkey toggle for the on-screen technical statistics. HOTKEYS: Add delay + acceleration to volume hotkeys MENU: Add option for showing notifications only in menu MENU/RGUI: Add Finnish to supported languages MENU/XMB: Optional vertical list item fade MENU/XMB/OZONE: Category + History/Favorites icons NETWORK: Fix dummy notification no longer shows a netplay initialization failed notification when netplay is not enabled NETWORK: LAN addresses only for UPnP Some router devices might accept non-LAN addresses without raising an error. NETWORK: Filter out non-connectable rooms. Add an option for filtering out non-connectable netplay rooms. NETWORK: Netplay spectator notification fix. Fix double notification when the host switches to spectator. NETWORK: Prevents long-term pausing from clients dishonoring allow pausing NETWORK/LOBBY: Lobby Viewer: Filter out rooms that are not running RetroArch NETWORK/LOBBY: Lobby Viewer: Display a non-connectable tag to non-connectable rooms NETWORK/LOBBY: Host: Display warning if we are announcing to the internet but our room isnt connectable from there NETWORK/RELAY: Custom relay server support Add support for custom user-ran relay servers NETWORK/RELAY: Replace Canadian relay server with Singapore relay server. Current relays: New York/USA, Madrid/Spain, Sao Paulo/Brazil, Singapore NETWORK/UPNP: Various refactors/improvements, no more dependent on miniupnpc NETWORK/UPNP: Various UPnP binding fixes for specific routers NETWORK/UPNP: Accept IGD v2 service types NETWORK/UPNP: Delay lobby server announcing delay the announcing in order to give UPnPs port forwarding more time. Fix the remaining truncation warnings. NETWORK/UPNP: Smart interface selection Find the most suitable address for UPnP by scoring interfaces on how close their address is to the devices address OPENGL1: Fix buffer overflow RetroArch would sometimes crashes at startup when loading asset textures with GL1 driver PS3: PSL1GHT port added to Gitlab CI VULKAN: Double combined image sampler descriptor pool size fix segfaults with AMD GPUs using RADV VULKAN: Emulate mailbox only with Vsync enabled otherwise have it disabled useful for VRR/G-Sync/FreeSync VULKAN/SWAPCHAIN: Vulkan max swapchain images option adjustments: removed value 1, since it wont be used Video reinit on change, so that there is no need to restart or toggle fullscreen VULKAN/HDR: HDR support tested on Windows WAYLAND: Add libdecor for client side decoration WAYLAND: Use any display for initial metrics WAYLAND: Fix the window closing, if RetroArch is build without libdecor WAYLAND: Use checked sizes in EGL resize WAYLAND: Fix window title update WEBOS: Fix webOS build and run
A busy year passed by and there was a lot of silence on the Open-Hardware Project. The promise of RetroArch Open-Hardware has always been open hardware with open software delivering an open solution. We stand by this goal to this day, however we felt that the DIY market alone will not help the cause significantly to bring emulation to the mainstream. Thus we partnered with a hardware manufacturer for a commercial release bringing the peripheral into everyones hands while still keeping a free and open DIY route. With that in mind we are re-designing the hardware to be modular meaning there would be a base unit & addon modules for other console hardware (the main focus for initial release will still be N64). Our goal is to reach more people with this approach while only slightly increasing the difficulty for DIY folks (req. of a second PCB). If things go well, we could enter production in mid 2022 and have a product by the end of the year (knowing current global shipping tho, there will be some nightmares down the road). To help gauge interest and keep the community up-to-date, we launch today the RetroArch Open-Hardware Newsletter & User survey! Please sign-up if you want to stay updated. We wont spam you and only write you when really needed. Even if you arent interested please still take the survey. Its up to 10 questions max. and should only take 2 minutes to complete. It will help us a lot! The project depends on you Newsletter: https://retroarchopenhardware.com/ Survey: https://retroarchopenhardware.com/survey.php The article can be read in full here: https://www.libretro.com/index.php/introducing-the-retroarch-open-hardware-project/
We're happy to announce that Potator has been added to RetroArch Steam as core DLC! Potator is a handheld emulator. It is a monochrome handheld gaming system released in 1992. Link to the new DLC is here - https://store.steampowered.com/app/1844930/RetroArch__Potator/
We're happy to announce that Beetle VB has been added to RetroArch Steam as core DLC! An emulator for a portable handheld console released in the mid '90s. It was a virtual reality handset console, and one of the first to showcase stereoscopic 3D graphics. Link to the new DLC is here - https://store.steampowered.com/app/1844870/RetroArch__Beetle_VB/ The user guides can be found here - https://docs.libretro.com/library/beetle_vb/
We're happy to announce that Beetle Cygne has been added to RetroArch Steam as core DLC! Emulates a handheld game console from the late '90s. It had a D-pad on each side and could be held in both horizontal and vertical orientation. Link to the new DLC is here - https://store.steampowered.com/app/1843660/RetroArch__Beetle_Cygne/ The user guides can be found here - https://docs.libretro.com/library/beetle_cygne/
We're happy to announce that EasyRPG has been added to RetroArch Steam as core DLC! EasyRPG Player allows you to play compatible RPG games from within RetroArch. Compatible RPG games are:
- RPGM 2000
- RPGM 2003
We're happy to announce that Beetle PCE has been added to RetroArch Steam as core DLC! Comes in three versions:
- Beetle PCE
- Beetle PCE Fast
- Beetle Supergrafx
RetroArch 1.9.14 has just been released. If youd like to learn more about upcoming releases, please consult our roadmap here. This post is an edited version of the article on our website, and it only includes changes relevant to the Steam version (and associated DLC). If you'd like to read the complete untouched article, visit this link here.
Highlights
Vulkan Avoid hard crash when capturing screenshot in emulating mailbox
The emulating mailbox infrastructure is very hacky and needs a rethink to be able to properly support screenshots. Emulating mailbox is pretty nasty to begin with and should be considered a hack. The next version might have a setting to allow you to disable mailbox emulation entirely. Mailbox emulation as it is only takes effect in fullscreen mode.
Steam updates
We have been busy since 1.9.13! The following cores have been added:
- Caprice32
- RACE
- gpSP
- Prosystem
- Beetle PSX
- UAE
- VICE
- bsnes
Netplay improvements
Netplay has received plenty of improvements thanks to the efforts of Cthulhu. We have a lot more prepared for the next version, so consider this a prelude to the main event.
- Added setting to allow/disallow players other than the host from pausing the game.
- Added a sublabel for netplay max connections.
- Changed unknown commands to be ignored instead of forcing a disconnection.
- Fixed port override macro from not being set immediately after the port setting.
- Fixed memory leaks.
- Show passworded rooms on lobby. Small improvement to the lobby viewer it should now make a distinction between passworded rooms and non-passworded rooms.
- uPnP: Fixes more memory leaks
- uPnP: Added a task_queue_wait to prevent executing two nat tasks at once, so its also thread safe now
- uPnp: Fix UPNP port mapping failed error switch to a permanent lease time, but request it to be removed when we do netplay_free
WiiU improvements
* Keyboard support has been fixed. The problem was caused by changing the driver lookup point. The deferred lookup resulted in the WIIU trying to treat the keyboard as a gamepad which didnt work. This change short-circuits at the connection event by ignoring mouse & keyboard connection events.
Core improvements
As mentioned before, as part of Project IO, we are going over every core and performing some basic quality control checks. This already resulted in numerous Quality of Life enhancements to cores. Not all of the improvements listed below can be attributed to Project IO, but its fair to estimate over 90% of them are.
VICE
- Updated to use VFS instead of straight file I/O (ProjectIO)
- Core option sublabel adjustments
- Audio detection for AutoLoadWarp
- More moderate tape warp detection
- Press play on tape change
- Mapper additions
- Dupecheck for disk append
- More distinguishable light gun cursor
- Diskwarp audio detection correction
- Mute Datasette with Autoloadwarp
- Diskwarp audio detection improvement
- Autoloadwarp automuting fixes
- Fix sound muting on rewind
- Add Automatic Zoom Mode
- Aspect toggle correction
- Touch pointer cleanups
FCEUmm
Add automatic Crowdin synchronization Mapper 196: Support IRQ for The Ancient & Modern Heroes Mapper 319: Use hp898f.c only for the old incorrect UNIF bank order, and 319.c for all NES 2.0 ROMs. Add CNROM mode and solder pad switch to the latter. Mapper 57: Change default DIP for YH-xxx Olympic multicarts, always reset to menu Mapper 178: Always reset to menu. CNROM/UNROM: Only emulate bus conflicts when explicitly specified by NES 2.0 header Added support for mapper 383 Add UNROM modes and two-chip variant to mapper 242 Add Realtec 8099 PCB support to mapper 236
Nestopia
- Add automatic Crowdin synchronization
QuickNES
- Add automatic Crowdin synchronization
Beetle PSX
- Add core options to change crosshair color + remove light gun warnings
- Add automatic Crowdin synchronization
Prosystem
- Fix base height. This system only have one resolution depending on if it is NTSC or PAL. Before it was even worse because it was always reporting a hardcoded 320240 which is totally wrong, so better to output the correct one even if it is also hardcoded.
gpSP
Improved audio frame pacing
Previously, the core was susceptible to crackling audio, particularly when using low frontend audio latency settings. This is because the core was handling audio output suboptimally. At the set audio sample rate, the frontend expected between 1097 and 1098 audio samples per frame but the core was sending samples in multiples of 256. This means that the audio output becomes desynchronised with retro_run() sometimes 1024 samples will get sent to the frontend for the current frame, sometimes 1280 as the core either falls behind or overcompensates. As a result, when the frontend tries to synchronise on audio, jitter can occur and if the frontend audio buffer is small (when using low latency values), it can sometimes run dry or reach capacity, causing crackling. 1.9.14 modifies audio handling such that the correct expected number of samples is sent to the frontend in proper synchronisation with retro_run(). This greatly improves audio quality, even on the notoriously crackly Mother 3. To demonstrate the effect of this, here are a couple of figures measured from the core on a Linux desktop with an audio latency setting of 64 ms, averaged over 5k frames: Time spent close to audio buffer underrun: * Current master: 8.68 % * With this PR: 2.37 % In addition, a Miyoo port has also been added.
PPSSPP
- Move audio callback to the main thread (fixes the longstanding hang issues when using OpenGL)
- 64ms on desktop isnt enough due to excess buffering going on in this emulator. Set default to 128ms instead for now.
- Different audio approach is necessary due to the following: it sets a fixed framerate of 60, then sends either too many or too few audio samples per frame in order to force the frontend to run at the correct speed (.e.g. making the frontend run in slow motion for games that run at 30fps) this is undesirable for libretro, we want a consistent amount of audio samples per batch.
Miscellaneous core improvements
Caprice32: [event] changed mouse pointer to absolute position Caprice32: [event] better first the default mouse mode code. Caprice32: [KoS] little fix to avoid render problem on WiiU Caprice32: Should work now on WiiU Caprice32: [KoS] changed to RETRO_DEVICE_ID_POINTER_PRESSED Caprice32: [dsk] clean base Caprice32: [fdc,slots] new loader endian compatible WIP Caprice32: [loader] compatible wiiu basic loader. FBNeo: (libretro) xybots remapping FBNeo: (libretro) llander remapping FBNeo: megadrive update from gab75 FBNeo: nes update from gab75 FBNeo: gijoe: all clones have a 4 players mode FBNeo: gaelco: modernize driver, fix thoop stg. 4 crash FBNeo: atarivad, fix runahead w/some games using this FBNeo: tempest: add some hacks FBNeo: msx update from gab75 FBNeo: d_taitof2.cpp: add Majestic Twelve The Space Invaders Part IV (US) FBNeo: batman, more drums volume, vad offset, ssriders oops FBNeo: xmen6p, note about resetting FBNeo: In Your Face (inyourfa), fix priority FBNeo: ssriders, fix # of players FBNeo: speccy update c/o gab75 FBNeo: galaxian, update pisces date FBNeo: 7z: fix cpp ODR (second attempt) FBNeo: spectrum fix 48ks ay FBNeo: vector, underp mode change FBNeo: video, less derpy mode changes for megadrive, etc FBNeo: grdnstrm: also fix cloness dips FBNeo: grdnstrm: fix dips FBNeo: sms: update Voyage A Sorceress Vacation to 1.05 FBNeo: ssv, buffer spriteram for every game in driver FBNeo: d_namcos2.cpp: added Mirai Ninja (Japan, set 2) [Corrado Tomaselli] FBNeo: d_cps1: marked forgottnj as a prototype, its an unfinished version of the game FBNeo: d_hyperpac.cpp: added New HyperMan (3-in-1 with Cookie & Bibi & Hyper Man) (set 2) [jordigahan] FBNeo: d_cps1.cpp: Fixed 2 players mode DIP switch for sf2cejx and sf2hfj. FBNeo: spectrum update from gab75 FBNeo: williams, add Playball!, fix lottofun FBNeo: lua: fix window not opening after closing a game w/lua console opened FBNeo: cbombers, undrfire: impl. contrast/luma settings as recommended by Tatsuya79 FBNeo: ssv, experimental lag fix plus fix pastelis 2p split screen mode FBNeo: d_m107.cpp: hiscore support FBNeo: ssv, add spritebuffering to stmblade to fix lines in stage 6, cleanup a little FBNeo: experimental cheat fix for midway (mk/umk3/etc) games FBNeo: md, updates from gab75 FBNeo: megadrive palette fix (0 bit ignored) FBNeo: sys16b doesnt have highlights, only shadows. i think? revert if breaks something FBNeo: add ktiger2p [DsNo] Genesis Plus GX: Fetch translations & Recreate libretro_core_options_intl.h mGBA: Add automatic Crowdin synchronization PPSSPP: Reimplement audio Picodrive: Fix loading of SMS/GG ROMs Picodrive: sound, fix ym2612 ladder effect, add option Picodrive: 32x, fix DMA mem-2-mem copying for big endian Picodrive: sound, add ym2612 channel clipping, ladder effect Picodrive: sms, set non-TMR images to region Japan SameBoy: Update the SameBoy core with latest changes SameBoy: Add GB_is_cgb_in_cgb_mode SameBoy: Add memory write callback, optimize memory access with likely/unlikely SameBoy: Add a safe memory read API SameBoy: Initial MBC7 support SameBoy: Mouse controls for MBC7 Yabause/Kronos: Add automatic Crowdin synchronization
Changelog 1.9.14
- ANDROID/PLAYSTORE: Implement MANAGE_EXTERNAL_STORAGE permission
- ANDROID/PLAYSTORE: Bump up SDK level to 30 to comply with Play Store policies
- AUDIO/MIXER: Increase sample buffer padding
- CHEEVOS: Disallow achievements when spectating netplay
- CHEEVOS: Fix need-to-activate achievement logic for non-hardcore
- CHEEVOS: Dont queue rewind re-init if already on main thread
- CHEEVOS: Ignore unofficial achievements unless setting is enabled
- CHEEVOS: Use SSL host when available
- CHEEVOS: Validate hashes for secondary discs in multi-disc games
- CHEEVOS: Ensure placard is initialized on main thread when game has no achievements
- CHEEVOS: Audit achievement settings defaults and visibility
- CHEEVOS: Show error message when no password provided
- CHEEVOS: Use widget for game loaded achievement progress
- CONFIG: Honor config_save_on_exit when Reboot/Shutdown is called
- DISK CONTROL: Focus on current content entry in Disk Control append/insert
- FRAMEDELAY: Auto Frame Delay Improvements swap interval handling, D3DX handling, and delay target resets also on core restart. It should now work with high refresh rates and also with Direct3D 10/11/12 drivers
- INPUT/GYRO/ACCELEROMETER/ANDROID: Re-enable Gyroscope & Accelerometer when RetroArch resumes or regains focus
- INPUT/HID: Fix gamepad disconnect on unrecognized HID device
- LAKKA: Patch to fix keyboard typing
- LAKKA: CD-ROM eject menu item
- LAKKA/BLUETOOTH: Add option to remove pairing
- LAKKA/SWITCH: Disable rumble gain
- LAKKA/SWITCH: Disable cpu scaling, uses its own CPU governor
- LOGGING: Logging cleanups. A bunch of unifications and reformattings (capitalizations, dots, quotes, prefixes etc). Also added a few missing things, such as Run-Ahead error logging and LED interface init logging when it is enabled.
- NETPLAY: Networking should not print country for a local lobby
- NETPLAY: Added setting to allow/disallow players other than the host from pausing the game.
- NETPLAY: Added a sublabel for netplay max connections.
- NETPLAY: Fixed port override macro from not being set immediately after the port setting.
- NETPLAY: Show passworded rooms on lobby
- NETWORK: Make HTTP header parsing case insensitive
- NETWORK/UPNP: Fixed memory leaks
- NETWORK/UPNP: Added a task_queue_wait to prevent executing two nat tasks at once, so its also thread safe now
- NETWORK/UPNP: Switch to a permanent lease time, but request it to be removed when we do netplay_free. Switch to a permanent lease time, but request it to be removed when we do netplay_free.
- NETWORK/UPNP: Only use a single interface for UPnP, return on the first one found instead of iterating over all of them and opening them one by one
- OVERLAYS: Revert changes
- RETROFW: Add OSS audio
- VIDEO/ROTATION: Always return false if rotation cant occur. RETRO_ENVIRONMENT_SET_ROTATION should return false when rotation has been forcefully disabled in frontend, that way the core can decide if aspect ratio should be rotated or not for vertical games. Useful for FBNeo for instance.
- VULKAN: Avoid hard crash when capturing screenshot in emulating mailbox.
- WIIU: Make wiiu_gfx_load_texture code safer
- WIIU: Fix keyboard support.
1.9.14 ANDROID/PLAYSTORE: Implement MANAGE_EXTERNAL_STORAGE permission ANDROID/PLAYSTORE: Bump up SDK level to 30 to comply with Play Store policies AUDIO/MIXER: Increase sample buffer padding CHEEVOS: Disallow achievements when spectating netplay CHEEVOS: Fix need-to-activate achievement logic for non-hardcore CHEEVOS: Dont queue rewind re-init if already on main thread CHEEVOS: Ignore unofficial achievements unless setting is enabled CHEEVOS: Use SSL host when available CHEEVOS: Validate hashes for secondary discs in multi-disc games CHEEVOS: Ensure placard is initialized on main thread when game has no achievements CHEEVOS: Audit achievement settings defaults and visibility CHEEVOS: Show error message when no password provided CHEEVOS: Use widget for game loaded achievement progress CONFIG: Honor config_save_on_exit when Reboot/Shutdown is called DISK CONTROL: Focus on current content entry in Disk Control append/insert FRAMEDELAY: Auto Frame Delay Improvements swap interval handling, D3DX handling, and delay target resets also on core restart. It should now work with high refresh rates and also with Direct3D 10/11/12 drivers INPUT/GYRO/ACCELEROMETER/ANDROID: Re-enable Gyroscope & Accelerometer when RetroArch resumes or regains focus INPUT/HID: Fix gamepad disconnect on unrecognized HID device LAKKA: Patch to fix keyboard typing LAKKA: CD-ROM eject menu item LAKKA/BLUETOOTH: Add option to remove pairing LAKKA/SWITCH: Disable rumble gain LAKKA/SWITCH: Disable cpu scaling, uses its own CPU governor LOGGING: Logging cleanups. A bunch of unifications and reformattings (capitalizations, dots, quotes, prefixes etc). Also added a few missing things, such as Run-Ahead error logging and LED interface init logging when it is enabled. NETPLAY: Networking should not print country for a local lobby NETPLAY: Added setting to allow/disallow players other than the host from pausing the game. NETPLAY: Added a sublabel for netplay max connections. NETPLAY: Fixed port override macro from not being set immediately after the port setting. NETPLAY: Show passworded rooms on lobby NETWORK: Make HTTP header parsing case insensitive NETWORK/UPNP: Fixed memory leaks NETWORK/UPNP: Added a task_queue_wait to prevent executing two nat tasks at once, so its also thread safe now NETWORK/UPNP: Switch to a permanent lease time, but request it to be removed when we do netplay_free. Switch to a permanent lease time, but request it to be removed when we do netplay_free. NETWORK/UPNP: Only use a single interface for UPnP, return on the first one found instead of iterating over all of them and opening them one by one OVERLAYS: Revert changes RETROFW: Add OSS audio VIDEO/ROTATION: Always return false if rotation cant occur. RETRO_ENVIRONMENT_SET_ROTATION should return false when rotation has been forcefully disabled in frontend, that way the core can decide if aspect ratio should be rotated or not for vertical games. Useful for FBNeo for instance. VULKAN: Avoid hard crash when capturing screenshot in emulating mailbox. WIIU: Make wiiu_gfx_load_texture code safer WIIU: Fix keyboard support.
We're happy to announce that Beetle PSX has been added to RetroArch Steam as core DLC! Beetle PSX is a heavily modified fork of Mednafen's PSX module to the libretro API. It can be compiled in C++98 mode. Notable additions in this fork are: [olist]
We're happy to announce that Prosystem has been added to RetroArch Steam as core DLC! The ProSystem emulator is an A7800 emulator. It was originally written in C++ using the Windows API and DirectX. It runs the ANTSC and PAL TV standards. It was originally written by Greg Stanton and then updated by others. For libretro it has been rewritten in C and made more portable, along with some additional enhancements. Link to the new DLC is here - https://store.steampowered.com/app/1227481/RetroArch__ProSystem/ The user guide can be found here - https://docs.libretro.com/library/prosystem/
We're happy to announce that gpSP has been added to RetroArch Steam as core DLC! gpSP is one of the fastest emulators of a very popular 32bit handheld game console released in the early '00s. It was originally made for that console's biggest competitor, quite a feat at the time and as a result it is very hard to beat in terms of performance. It has also recently seen numerous improvements over the original release by dedicated contributors who keep improving this emulator. Link to the new DLC is here - https://store.steampowered.com/app/1227468/RetroArch__gpSP/ The user guide can be found here - https://docs.libretro.com/library/gpsp/
We're happy to announce that Caprice32 has been added to RetroArch Steam as core DLC! Caprice32 is a software emulator of the CPC 8-bit home computer series that were manufactured by the British company between 1984 and 1993. The hardware has great features, like an operating system, CP/M and a HIRES display mode of 80-column. Its custom Gate-array and CRTC chips, exclusively designed, allows scroll effects, custom graphics modes, overscan, and many more. The emulator faithfully imitates the CPC464, CPC664, CPC6128, CPC6128+ and GX4000 models. By recreating the operations of all hardware components at a low level, the emulator achieves a high degree of compatibility with original CPC software. Link to the new DLC is here - https://store.steampowered.com/app/1227454/RetroArch__Caprice32/ The user guide can be found here - https://docs.libretro.com/library/caprice32/
We're happy to announce that RACE has been added to RetroArch Steam as core DLC! Rather A Cardfighter Emulator, RACE is a fast emulator for a 16bit handheld game console that was released in the late '90s. It came in both monochrome and color versions and had a D-pad on each side. Link to the new DLC is here - https://store.steampowered.com/app/1227453/RetroArch__RACE/ The user guide can be found here - https://docs.libretro.com/library/race/
We're happy to announce that UAE has been added to RetroArch Steam as core DLC! This core emulates the old '80s/'90s home computer Commodore Amiga. It also emulates the Amiga CD32. Link to the new DLC is here - https://store.steampowered.com/app/1829870/RetroArch__UAE/ The user guide can be found here - https://docs.libretro.com/library/puae/
We're happy to announce that VICE has been added to RetroArch Steam as core DLC! This DLC includes various cores all based on the same emulator. Each core emulates a different type of Commodore system. You can choose between 'Commodore 64' (C64), 'Commodore 64 + SuperCPU' , 'Commodore - CBM-II 5x0', 'Commodore - CBM-II 6x0/7x0', 'Commodore - PET', 'Commodore - PLUS/4', and 'Commodore - VIC-20'. What also needs mentioning is that there are two different versions for 'Commodore 64'. One is a 'fast' performance core, while the other is an 'accurate' core. The accurate one will, as the name suggests, have higher compatibility and a higher degree of accuracy, but it will also be slower. If you have a computer with low specifications, you might want to try the 'fast' version instead of the 'accurate' one. Link to the new DLC is here - https://store.steampowered.com/app/1828340/RetroArch__VICE/ The user guide can be found here - https://docs.libretro.com/library/vice/
We're happy to announce that bsnes has been added to RetroArch Steam as core DLC! This DLC includes two cores, bsnes and bsnes hd beta. The difference between the two is that bsnes hd beta also includes experimental widescreen, gradient and windowing features added by DerKoun, who also originated the HD Mode 7 effects included in mainline bsnes"
A ninjafix release was just pushed for RetroArch 1.9.13. This overwrites the current 1.9.13 build. Download it here. The main reason for this was that the overlays had been changed in 1.9.13. This would lead to many peoples existing overlay config files being broken due to the paths no longer working. So we changed it back to defaults. We apologize for the inconvenience. For example, because of this, the default overlay for Android would fail to start, and some overlays for 3DS would fail to show up. Several Cheevos-related fixes have also been pushed. Changes ANDROID/PLAYSTORE: Implement MANAGE_EXTERNAL_STORAGE permission ANDROID/PLAYSTORE: Bump up SDK level to 30 to comply with Play Store policies CHEEVOS: Fix need-to-activate achievement logic for non-hardcore CHEEVOS: Dont queue rewind re-init if already on main thread CHEEVOS: Ignore unofficial achievements unless setting is enabled NETPLAY: Networking should not print country for a local lobby NETPLAY: Add Text Chat functionality OVERLAYS: Revert changes VIDEO/ROTATION: Always return false if rotation cant occur. RETRO_ENVIRONMENT_SET_ROTATION should return false when rotation has been forcefully disabled in frontend, that way the core can decide if aspect ratio should be rotated or not for vertical games. Useful for FBNeo for instance. WIIU: Make wiiu_gfx_load_texture code safer
The submission process is taking a while, but we are happy to report that the following core DLCs have now been added for use with RetroArch Steam:
Enjoy!Should fix several RetroAchievements-related isssues that were plaguing 1.9.13. CHEEVOS: Fix need-to-activate achievement logic for non-hardcore CHEEVOS: Don't queue rewind re-init if already on main thread CHEEVOS: Ignore unofficial achievements unless setting is enabled VIDEO/ROTATION: Always return false if rotation can't occur. RETRO_ENVIRONMENT_SET_ROTATION should return false when rotation has been forcefully disabled in frontend, that way the core can decide if aspect ratio should be rotated or not for vertical games. Useful for FBNeo for instance.
RetroArch 1.9.13 has just been released.
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. If youd 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
Project IO continues
Project IO continues as we try to abstract all file I/O in libretro cores and RetroArch to meet the Google Play Store's new policies. Android 11/12 requires the use of the Storage Access Framework for file I/O, as libc stdio access is being restricted as much as possible. One of the beneficial side effects of Project IO is that in going over each core, we find out all sorts of long standing issues along the way, and we try to improve the cores along the way. So it serves as a much needed quality control check as well.
No RetroArch 1.9.13 for Google Play Store for now
Do not expect frequent updates to the Google Play Store version until further notice for now. This is because of the new Play Store requirements (as explained bove in the Project IO section). Basically what it comes down to is that despite our hardest work and effort, we have missed the deadline, and so any new APK that is pushed to Google Play is likely to be rejected until the minimum SDK Level (30) and SAF is being used. We are trying to work as fast as we can to get to that stage. A realistic target is possibly two weeks from now, but we'd rather not make promises and see how far we can get by that point. In the meantime, downloading it from our site (the non-Google Play Store version), the Amazon App Store, or Huawei AppGallery or all valid alternatives that should receive an update.
Automatic Frame Delay
https://twitter.com/libretro/status/1457056214588788742 After introducing unique innovations like runahead in the past, RetroArch continues to innovate once more and remains at the forefront of latency reduction: introducing automatic frame delay! Read all about it in our separate article here. The aim of this option is to lessen the burden of creating core-specific and also game-specific overrides for Frame Delay, and instead go for "set it and forget it". With 0 value, the starting point will be half frame time. It is fairly simple and it is based on frame time averaging with a few different thresholds which filter out false positives and provide quick stabilization with bigger steps depending on the need. It only goes down, it is temporary, and it will reset on core unload and on SET_SYSTEM_AV_INFO. The necessary values are shown in video statistics and all actions are logged in info level. Some notes by the author: * For Windows users - use the XAudio driver for now, WASAPI and DirectSound does not lead to reliable results with Auto Frame Delay for now. * Early polling could behave better with frame delay. Try setting Polling Behavior from 'Late' to 'Early' and see if you prefer it that way. Note that that polling setting needs (restart) info with it, since it does not properly refresh in realtime. If it is anything but Late at startup, putting it to Late will be always one frame behind.
'All Users Control The Menu' option is back
A much requested feature by WiiU users is back again! This allows all the connected gamepad devices to control the menu simultaneously. It is enabled by default for WiiU and disabled for all other devices. NOTE: Only player 1 can toggle the menu. This is a limitation of the current input system. But any set Menu Toggle Controller Combo will work fine for all users, so it is probably acceptable for now.
Initialise 'Explore' menu on a background thread
Before, accessing the Explore menu would freeze the user interface for up to several seconds (depending on host hardware performance) while playlists and databases are scanned. 1.9.13 just pushes the Explore menu initialisation onto a background thread, so the UI remains responsive while the various processing occurs. (Note that the host platform must of course have threading support - if not, Explore menu initialisation will remain on the main thread)
RetroAchievements - Replace co-routines with tasks
Not important much to endusers but still worthy of a mention to people familiar with the codebase. Replaces the single long-running load task for RetroAchievements with several smaller tasks (which are threaded). This also eliminates the coroutine code as that was only being used to yield the long-running load task - there wasn't actually anything else to be coroutine with. Subtasks (i.e. 1a/1b) are queued together and can be executed in parallel. RetroArch's task system only has one task thread, but the HTTP task does sort of interleave the server requests so they are more-or-less executed at the same time.
Core improvements
As mentioned before, as part of Project IO, we are going over every core and performing some basic quality control checks. This already resulted in numerous Quality of Life enhancements to cores. Not all of the improvements listed below can be attributed to Project IO, but it's fair to estimate over 90% of them are.
mGBA
Description: mGBA is a Game Boy Advance emulator
Fixed audio pacing - no more crackles and bad frame pacing
GBA content ran with the mGBA core was sometimes subject to crackling audio and intermittent bad frame pacing (particularly when using low frontend audio latency settings). It turns out that the core was handling audio suboptimally in the libretro layer. At the set audio sample rate, the frontend expects between 548 and 549 audio samples per frame - but the AVStream audio callback reads and sends exactly 512 samples. This means that the audio callback becomes desynchronised with retro_run() - sometimes 512 samples will get sent to the frontend for the current frame, sometimes 1024 as the core either falls behind or overcompensates. As a result, when the frontend tries to synchronise on audio, jitter can occur - and if the frontend audio buffer is small (when using low latency values), it can sometimes run dry or reach capacity, causing crackling. Our changes modifies audio handling in the libretro layer such that the correct expected number of samples is sent to the frontend in proper synchronisation with retro_run(). With this change we no longer experience cracking audio in GBA games, and the 240p test suit demonstrates smooth scrolling. Note that the changes here only affect GBA content. GB/GBC emulation produces irregular audio sample pacing that is not consistent with the set sample rate, and so I am unsure how best to handle it. The existing AVStream audio callback and fixed buffer size of 512 is therefore maintained for GB/GBC content (since it already seems to produce acceptable results in most cases)
Miscellaneous
While working on the above, we noticed that the audio produced by this core is somewhat 'harsh' sounding. We have added an optional (fast) low pass audio filter (with associated strength setting), which softens the generated output to a more comfortable level. Since we had to modify the core options, we also took this opportunity to update the options to v2 format, with category support.
LRMAME
Description: This is the mainline MAME core based on current sourcecode
Update to 0.237
We have updated the LRMAME core to version 0.237.
1 frame of input lag removed from core
In addition, we are happy to report that a longstanding issue with this core has been resolved. There was previously 1 additional frame of input latency in this core. This has thankfully been shaved off now.
gpSP
Description: This is a Game Boy Advance emulator
x86 32bit/64bit dynamic recompilers
gpSP now has a dynamic recompiler for x86 x64 architecture processors! Now both 32bit and 64bit CPUs have a working dynamic recompiler. This is now hands down the fastest Game Boy Advance emulator in existence on x86 x64 platforms, outside or inside of libretro/RetroArch. We have benchmarked it ourselves - on an i9 10900KF, we get a regular reading of 2270/2280 fps in fastforward mode with Super Mario Advance 2. This makes it even faster than QuickNES, an 8bit Nintendo Entertainment System emulator. It is a little bit slower than Gambatte (still one of the kings in terms of performant cores) at ~2300fps, but it bears reminding that Gambatte is only targeting 8bit Game Boy consoles as opposed to the 32bit Game Boy Advance. With Advance Wars, we can get even crazier readings like anywhere from ~4000 to ~5000fps in windowed mode. Suffice to say, this kind of performance before was simply unheard of for a GBA emulator. Suffice to say, if you were still hurting for performance with a Game Boy Advance emulator before (on whatever ghetto rig you have repurposed), give this a try!
prBoom
Description: This is a Doom/Doom 2/Ultimate Doom/Final Doom game engine core. In addition to this core now using the VFS for file I/O, we also improved the following listed below.
Fix core options version detection
On recent versions of RetroArch the core options are currently falling back to v0 format (missing sublabels) due to a trivial 'supported version check' error in libretro_core_options.h. We fixed the issue.
Fix memory leaks + prevent potential segfault when saving/loading games
We tried fixing every memory leak that we could find in the core. It also works around a nasty bug in the code for saving/loading games, where an array index can easily go out of bounds. Note that we had to stub a certain deinit out for the Windows build, the z_zone memory management seems to be pretty hairy on Windows and we unfortunately haven't found a clean way to fix that yet. However, we don't expect this to be a big issue on Windows regardless since it's a dynamically linked core that gets deallocated after unloading anyway. Most of the leaks on the statically linked consoles should be all gone, and that is what ultimately counts at the end of the day.
TyrQuake
Description: This is a Quake 1 game engine core. In addition to this core now using the VFS for file I/O, we also improved the following listed below.
Fix startup crash on x64 systems
The core would segfault under some circumstances when running the shareware version of Quake on Windows. It turns out that the code makes a number of assumptions about the width of certain data types when casting pointers, which are not true on a number of platforms. On 64bit Windows this can cause pointer addresses to be determined incorrectly - leading to chaos. We fixed the issue by using standard fixed-width types for the affected pointer casts. It also cleans up some other related compiler warnings.
Clean up file path handling + fix segfault when loading content from 'non-standard' directories
Before, the core would segfault on certain platforms when loading PAK files from non-standard directories (anything other than id1, quoth, hipnotic, rogue) due to illegal usage of strncpy(). This can be observed most easily by attempting to run the shareware version of Quake from RetroArch's online content downloader. We fixed this issue, and also cleaned up all file path handling in libretro.c (using libretro-common routines). A number of libretro-common files have also been updated to the latest version.
Fixed memory leaks
We fixed three sources of memory leaks in the core: * A relatively minor one related to loading PAK files (the file handle was always left open) * Two serious ones in the sprite handling code, which may potentially trigger multiple times per frame (and which were likely to cause crashes on RAM limited platforms...)
Miscellaneous core improvements
We have been spending time improving fMSX (MSX emulator core), PX68K (X68K emulator core), and Frodo (Commodore 64 emulator core), but are not quite done yet. We will probably spend some time detailing the changes to these cores by the time the next release comes along (two weeks from now). For WiiU users: Frodo has been added to the WiiU build.
- Beetle PSX: Add static crop behavior for "Crop Overscan" alongside dynamic
- Beetle PSX: Set game specific tweak to get Monkey Hero running past the title screen
- FBNeo: Numerous updates - see below:
- FBNeo: CPS1 - fix Strider palette fades
- FBNeo: CPS1 - Stars: simplify/fix
- FBNeo: CPS2 - added Super Street Fighter II: The New Challengers Super 2 (bootleg, USA 930911)
- FBNeo: CPS2 - Corrected some overdumps for Alien Vs Predator [Guru]
- FBNeo: Sync FB Neo with MAME 0.237
- FBNeo: Spectrum updates from gab75
- FBneo: Mega Drive updates from gab75
- FBNeo: NES updates from gab75 - also add Goemon 2 Translation (English)
- FBNeo: Fix Vigilante breakage
- FBNeo: M90 - Hiscore support
- FBNeo: PC Engine - Add sprite limit override DIP
- FBNeo: PC Engine - Fix timing, arrange render pipeline, scale windowing for Supergrafx
- FBNeo: Supergrafx - Dai Makai - perfect background scrolling fix
- FBNeo: SNK - Fix Psychos DIPs
- FBNeo: Colecovision - Fix v-linecount (glitch in Frogger)
- FBNeo: Pacman - added Buccaneer (set 2) [Jeremy Locke, Cam]
- FBNeo: d_seta.cpp: add dumps for plds in blandia set, and info for undumped plds
- FBNeo: neogeo: add "The King of Fighters '98 (Ratio hack)"
- FBNeo: d_cps2.cpp: add Street Fighter Zero 2 Alpha (Asia 960805) [Genaro Rodarte]
- FBNeo: New WORKING clone - Floritas (Multivideo Spanish Moon Cresta bootleg) [Retromaniacs]
- FBNeo: Renamed 'spcdraga' as 'floritas'
- FBNeo: Add 'floritasm' and rename 'spcdraga' as 'floritas'
- FBNeo: Homogenized all "bootleg on Galaxian hardware" descriptions
- FBNeo: Now there's only one "Space Dragon" set
- Frodo: Added WiiU build
- Gambatte: Fix loading of custom palettes with CRLF line terminators
- Genesis Plus GX Wide: Fix specific Plane B scrolling bug - This bug occurred when HSRAM values for Plane B were `>= 0x10000 - config.h40_extra_columns * 4` (e.g., `0xFFD8` when h40_extra_columns = 10) because of a bit carry into the upper 16-bit word of `xscroll`.
- Kronos: Latest updates
- MAME2003 Plus: Improve sound tempo for Dolmen and Twin Action - some sound niggles a constant crackling noise still remain
- MAME2003 Plus: Use control name before universal default - uses the specific control name before filling with our universal defaults. Also update DAT.
- MAME2003 Plus: Support a couple more Afega games - these just hang off the standard NMK16 code so can be added easy enough to nmk16.c rather than afega.c which would be more complicated
- MAME2003 Plus: New gfx scrolling routine for Twin Action
- MAME2003 Plus: Speed up macro search - refine search to look for player specific joycodes.
- MAME2003 Plus: Add Amlogic S812 platform + cleanup unused vars in Makefile
- PCSX2: Numerous updates - see below:
- PCSX2: GS: Don't propagate 24bit textures on download
- PCSX2: GS: Properly loop when reading 32bit CLUT from offset
- PCSX2: GS: Fix up CLUT offset handling in 32bit I8 mode
- PCSX2: GameDB: Add gamefixes for Ruff Trigger
- PCSX2: GameDB: Port Iridium Runners patch, update fixes
- PCSX2: GameDB: Patch rounding problem in Playmobil Hype The Time Quest
- PCSX2: GameDB: Sports (RTL)
- PCSX2: GameDB: Katamari Games
- PCSX2: GameDB: add VU clamping to 'Enthusia Professional Racing'
- PCSX2: GameDB: fix serial for 'Panzer Elite Action - Fields of Glory'
- PCSX2: GameDB: add EE clamping to 'Max Payne 2 - The Fall of Max Payne'
- PCSX2: GameDB: add VU clamping to 'Battle Engine Aquila'
- PCSX2: GS-hw: Don't write clamped depth test value to depth buffer when ZMSK is enabled
- PCSX2: GameDB :add VU clamping to Monster Rancher 3
- PCSX2: GS-hw: Add Slam Tennis to automatic mipmapping.
- PCSX2: EE: Cyclerate > 1 caused some cycles to be lost
- PCSX2: GS-fx/glsl: Get rid of PS_ATST 0 condition. It does nothing so no need to have it in shader.
- PCSX2: SIF: Kind of revert a SIF timing change made a while back to fix Parappa the Rapper 2
- PCSX2: COP2: Fix reg allocation issue. Really fixes Devil May Cry which was a bug hidden by clamping hidden by a bug, yeah i think that covers it all...
- Yabause: Fix pixel format on android
Changelog
1.9.13
- CHEEVOS/MSVC2010: Add Cheevos support
- CRT/SWITCHRES: Fixes some issue where scaling is incorrect in some video modes for CRT output.
- FRAMEDELAY: Add 'Automatic Frame Delay' option
- INPUT: Add 'All users control the menu' setting - any gamepad can control the menu when this is enabled. Only limitation right now is that only player 1 can toggle the menu, but any set Menu Toggle Controller Combo will work fine for all users, so this should be acceptable for now
- INPUT/UDEV: Fix Dolphin bar and safeguard against not adding devices with no mouse or touch buttons detected
- NETPLAY/CLI: -C/--connect commandline fix
- NETPLAY: Other improvements
- NETPLAY: Remove forced disconnection on unknown netplay command - will be backwards compatible with any version that removed this disconnect. instead of disconnecting, we just read the data and ignore, like most network implementations do
- TASKS/CHEEVOS: Replace coroutines with tasks/thread
- TASKS/DATABASE/EXPLORE: Initialise 'Explore' menu on a background thread - no more stall when hovering over the Explore tab
After introducing unique innovations like runahead in the past, RetroArch continues to innovate once more and remains at the forefront of latency reduction: introducing automatic frame delay! Read all about it in this separate article: https://www.libretro.com/index.php/retroarch-1-9-13-automatic-frame-delay/
The Neo CD libretro core is now available for download! Get it here - https://store.steampowered.com/app/1227456/RetroArch__NeoCD/
RetroArch 1.9.12 has just been released.
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. If youd 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
Steam
New cores are on the verge of being approved on Steam. First out of the gates is Picodrive, a Sega Genesis/Master System/Sega CD/32X emulator. You can grab that for RetroArch right now here. We'd also like to remind users that are still using the RetroArch Play Test version on Steam to please migrate over to the mainline Steam release now and to stop using it. The Play Test version is outdated and won't really be updated anymore after this point.
Miyoo - Pocket Go, PowKiddy Q90-V90 and New BittBoy - Over 28 cores now
For version 1.9.11, we added support for Miyoo devices, such as the Pocket GO, PowKiddy Q90-V90 and New BitBoy. Back then, we only had one or two cores available. Version 1.9.12 now comes with a whopping 28 cores - quite the improvement over 1.9.11. List of all cores so far -
- 81
- CAP32
- fMSX
- FUSE
- Gambatte
- Genesis Plus GX
- GW
- Handy
- LRMAME2003
- LRMAME2003 Plus
- Mednafen PCE Fast
- Mednafen Wswan
- mGBA
- NXEngine
- O2EM
- Picodrive
- PokeMini
- Potator
- PrBoom
- Prosystem
- QuickNES
- RACE
- Retro8
- ScummVM
- SMS Plus
- Stella 2014
- Theodore
- Vecx
NOTE: We are not affiliated or have any association with the companies behind these devices.
HID subsystem unification - improvements/bugfixes
1.9.11 added a new unified HID subsystem that works on both Mac and WiiU. Version 1.9.12 features several crucial bugfixes and additions that were plaguing the initial implementation in 1.9.11. See the CHANGELOG at the end of this blog post for more details.
Increased backwards compatibility for macOS cores
Since the migration to our new infrastructure, the minimum OS requirements for macOS cores unintentionally went up. We have since taken steps to address this. Here are the current minimum OS requirements:
- 2048: 10.9
- 81: 10.9
- atari800: 10.9
- bk: 10.1
- blastem: 10.9
- bluemsx: 10.9
- bsnes2014_accuracy: 10.9
- bsnes2014_balanced: 10.9
- bsnes2014_performance: 10.9
- bsnes_cplusplus98: 10.9
- bsnes_hd_beta: 10.9
- bsnes: 10.9
- bsnes_mercury_accuracy: 10.9
- bsnes_mercury_balanced: 10.9
- bsnes_mercury_performance: 10.9
- cannonball: 10.9
- cap32: 10.9
- craft: 10.7
- crocods: 10.9
- desmume: 10.7
- dinothawr: 10.8
- dosbox_core: 10.9
- dosbox_pure: 10.9
- dosbox_svn: 10.9
- duckstation: 10.15
- easyrpg: 10.9
- ecwolf: 10.9
- fbalpha2012_cps1: 10.9
- fbalpha2012_cps2: 10.9
- fbalpha2012_cps3: 10.9
- fbalpha2012: 10.9
- fbalpha2012_neogeo: 10.7
- fbneo: 10.9
- fceumm: 10.9
- fixgb: 10.9
- flycast: 10.9
- fmsx: 10.9
- freechaf: 10.9
- freeintv: 10.9
- frodo: 10.9
- fuse: 10.9
- gambatte: 10.9
- gearboy: 10.9
- gearcoleco: 10.9
- gearsystem: 10.9
- genesis_plus_gx: 10.9
- genesis_plus_gx_wide: 10.9
- gme: 10.9
- gpsp: 10.1
- gw: 10.9
- handy: 10.9
- hatari: 10.9
- lowresnx: 10.9
- lutro: 10.9
- mame2000: 10.9
- mame2003: 10.9
- mame2003_plus: 10.9
- mame2010: 10.9
- mame: 10.9
- mednafen_gba: 10.9
- mednafen_lynx: 10.9
- mednafen_ngp: 10.9
- mednafen_pce_fast: 10.7
- mednafen_pce: 10.7
- mednafen_pcfx: 10.9
- mednafen_psx: 10.9
- mednafen_saturn: 10.9
- mednafen_snes: 10.9
- mednafen_supergrafx: 10.9
- mednafen_vb: 10.9
- mednafen_wswan: 10.7
- melonds: 10.9
- mesen-s: 10.9
- mesen: 10.9
- mgba: 10.9
- mrboom: 10.9
- mu: 10.9
- nekop2: 10.9
- neocd: 10.9
- nestopia: 10.9
- np2kai: 10.7
- nxengine: 10.9
- o2em: 10.9
- oberon: 10.9
- opera: 10.9
- parallel_n64: 10.7
- pcsx_rearmed: 10.9
- picodrive: 10.6
- play: 10.14
- pocketcdg: 10.9
- pokemini: 10.9
- potator: 10.9
- ppsspp: 10.9
- prboom: 10.9
- prosystem: 10.9
- puae: 10.6
- px68k: 10.7
- quasi88: 10.9
- quicknes: 10.9
- race: 10.9
- reminiscence: 10.9
- retro8: 10.9
- sameboy: 10.9
- scummvm: 10.9
- smsplus: 10.7
- snes9x2002: 10.9
- snes9x2005: 10.9
- snes9x2005_plus: 10.9
- snes9x2010: 10.9
- snes9x: 10.9
- squirreljme: 10.9
- stella2014: 10.7
- stella: 10.9
- tgbdual: 10.7
- theodore: 10.7
- thepowdertoy: 10.15
- tic80: 10.15
- tyrquake: 10.9
- uzem: 10.9
- vba_next: 10.9
- vbam: 10.9
- vecx: 10.9
- vemulator: 10.9
- vice_x128: 10.9
- vice_x64: 10.9
- vice_x64sc: 10.9
- vice_xcbm2: 10.9
- vice_xcbm5x0: 10.9
- vice_xpet: 10.9
- vice_xplus4: 10.9
- vice_xscpu64: 10.9
- vice_xvic: 10.9
- virtualjaguar: 10.9
- vitaquake2: 10.9
- x1: 10.9
- xrick: 10.9
- yabause: 10.9
Project IO - Continued
You've read in our previous blog post that we were working on a long-term project to wrap/abstract all file system I/O in cores, and also correct and improve cores along the way. This work has continued for version 1.9.12, and we are happy to report that various cores have been improved substantially as a result. Below are all the cores we managed to cover so far. The ones listed in bold are the new cores we have covered since 1.9.11.
- 2048
- Beetle PCE
- Beetle PCE Fast
- Beetle PCFX
- Beetle PSX
- Beetle NeoPop
- Beetle Wonderswan
- BlastEm
- FCEUmm
- Gambatte
- gpSP
- GME/Game Music Emu
- Handy
- Mesen
- Nxengine
- Opera
- Pokemini
- Prosystem
- Prboom
- Potator
- QuickNES
- RACE
- Reminiscence
- SameBoy
- SMS Plus
- Snes9x 2002
- Snes9x 2005
- Snes9x 2010
- TGBDual
- Vecx
- VirtualJaguar
- xRick
- VBA Next
Project IO - FCEUmm improvements
We replaced all direct file access in the core with VFS routines (libretro/RetroArch#12949) In addition, it turned out that this core had been violating the libretro API for some time by setting need_fullpath = false but then requiring the content fullpath to detect the region of iNES v1.0 ROMs. This PR fixes the issue by setting need_fullpath = true by default, but then lifting this restriction for frontends that support the RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE environment callback (which allows a valid content name to be extracted even when using a frontend-provided data buffer) Built-in Game Genie support FCEUmm has long supported emulation of the Game Genie cartridge add-on, but this is currently unavailable in the libretro core. 1.9.12 wires up said functionality: A new core option Game Genie Add-On (Restart) has been added (disabled by default) In order for the option to apply, the Game Genie ROM file named gamegenie.nes must be present in the frontend system directory Game Genie support is disabled for FDS and arcade content Save states do not function (and are disabled) while the Game Genie boot screen is open After enabling Game Genie Add-On (Restart), launching a game will cause the Game Genie boot screen to appear. Codes can be entered with the gamepad (as on real hardware): D-Pad to move, A to select, B to delete. For example:
Super Mario Bros. YSAOPE + YEAOZA + YEAPYA Start on World 8
Why would we want this functionality, when the regular cheat interface is already available? Because: * It provides an authentic experience * It enables cheats when using frontends that don't support the regular cheat interface * All the code was already in place, and it was easy to enable :) In addition, during the process of implementing this, the core's OSD messaging code was overhauled and cleaned up. OSD warnings will be displayed when appropriate if the Game Genie ROM file is missing, and also if the FDS bios is missing. OSD message durations have been shortened a little, and the core makes use of the extended messaging interface when available. Color palette switching
At present it is difficult to compare the core's Color Palette options, because these can only be set via the quick menu. 1.9.12 adds the ability to switch to the next/previous colour palette by holding RetroPad L2 and pressing D-Pad Left/Right while content is running. Memory leaks fixed Numerous memory leaks have been fixed while going over this core. This should benefit in particular all the statically linked platforms, such as game consoles.
Project IO - SameBoy improvements
1.9.12 makes the following changes to the core: Direct file access has been replaced with VFS routines (libretro build only) (Cores with straight stdio file I/O RetroArch#12949) The core now sets need_fullpath = false, such that content is loaded from the frontend-supplied memory buffer. (Cores that should be turned into need_fullpath = false) Since the core no longer receives a content path, automatic ROM type detection cannot be based on file extension (.gb, .gbc). We now therefore inspect the ROM header, which means we can also distinguish SGB-enhanced content. As a result, the System - Emulated Model core option has been modified such that the Auto settings are: Auto Detect DMG/CGB (default): Emulated hardware will be set to either Game Boy or Game Boy Color depending upon the ROM. Auto Detect DMG/SGB/CGB: Emulated hardware will be set to either Game Boy, Super Game Boy or Game Boy Color depending upon the ROM. A new Auto Detected SGB Model has also been added, to enable selection of which type of SGB hardware to emulate when content is detected as being SGB-enhanced. Since it was necessary to edit the core options anyway, these have been updated to v2 and option categories have been added. Note that all changes here (apart from two .gitignore additions) are limited to the libretro directory - no 'emulator' code has been modified. Fixes issue #58 - 'Better Auto System Model Support #58' Fixes issue #52 (since the core no longer loads ROMs directly) - 'Can't load ROM files with special characters in filename'
PCSX ReARMed - Improvements
Lots of improvements have been made to PCSX ReARMEd courtesy of gameblablabla -
- Literals are deduplicated, so there's no guarantee they will be stored next to each other, even if they're written sequentially. verify_dirty and get_bounds must use the offsets on each instruction, instead of assuming values are stored sequentially. According to neonloop, this fixes a dynarec crash in FF7 on ARMv5 platforms like the F1C200S as used in the TrimUi handheld. Given that the old3DS is ARMv6, it may also possibly fix some crashes there as well.
- GTE stalls/timings - This is to fix an issue with Battle Arena Toshinden 1 and Zero Divide going too fast. To test the GTE fix with Battle Arena Toshinden : Boot the game and go to "Vs.computer" at the titlescreen. Then, choose any character except rungo and select Rungo for the computer. Before, the game would go too fast. Now, it will run at the correct speed. (well very close, PCSX rearmed's clock counting is still kinda finicky). The fix in question was inspired by a similar fix from PCSX-Revolution. Might also fix NBA Jam Extreme.
- Fix for Armored Core misdetecting a Link cable being detected -fFor some reason, the game would detect that a link cable is plugged in and disables the local multiplayer as a result.
- Various CDROM fixes from Swanstation and Mednafen. These fixes aim to address the inaccuracies of some CDROM commands and make it on par with nocash's doc and mednafen. So far, it mostly fixes some delay issues in the Simple 1500 sound novel game as well as F1 2000 (which is notoriously time sensitive).
- Merge several fixes from PCSX Redux and adjust delay for SetLocPending. There's a game, PoPoLoCrois Monogatari II, that unfortunately locks up during the intro screen. I should have known that code was wrong as Mednafen did not have anything like that in their code either, hence the confusion.Their fix however still don't include the Driver fix so the game would still crash if we don't have the "+ Seektime". To be honest, i'm not sure why the PCSX Reloaded team did it this way... In any case, i adjusted it so it doesn't mess up the audio for Driver's titlescreen and doesn't crash in Worms Pinball either. Seems like setting it to 100000 was not enough for that game. I noticed the fastword and FastBackward were not being used in any way. Looked at Mednafen and all they do is just adjust the cursector and make sure that fastword & backword trigger the AUTO_REPORT code so i did the latter.
- CDROM: Rename Reset+Init commands, fix "This is Football 2" lockup
- CDROM: Ignore sectors with channel number 255 - This was tested on "Blue's Clues : Blue's Big Musical" and it fixed the missing audio there. Taxi 2 is also said to be affected by this.
- ICache emulation (Interpreter) from PCSX redux. Known games to be affected by the lack of or improper ICache emulation : Formula F1 99, Formula F1 2000 (EA), Formula One Champion Season 2000 Formula One Arcade, Formula F1 2001 (Confirmed to be fixed), Buster Bros. Collection, ISS Pro 98
- Dare to set MDEC_BIAS to 10 - This based on an original fix by dmitrysmagin in PCSX4ALL. "This fixes graphic artifacts during cinematics in Vandal Hearts and R-Types, other games seem to be unaffected. (?)"
- GTE: Fix gteH division and sign extension (from PCSX4ALL) - Original comment by senquack : "gteH register is u16, not s16. DIVIDE macro/func assumed it was s16 for some reason. Behavior now matches Mednafen." I also put in there the "GTE_USE_NATIVE_DIVIDE" stuff but currently unless manually enabled, it's not used. You may wish to use this on some low end platforms but that's up to you.
- [SPU] Emulate SPUSTAT[5:0] as a mirror of SPUCNT[5:0] - I have tested the fix against Loonies 8192 (a PSn00bSDK made homebrew game) and it no longer locks up during loading. This affects all games and demos that uses PSn00bSDK. (I've been told it's unlikely this will affect games that uses the official SDK)
- Implement fix from Mednafen for Fantastic Pinball Kyuutenkai - this also fixes 'Multi Track games crash on .CHD'.
- CDROM timing changes - fixes Crash Team Racing's intro music cutting off too soon - FF8 Lunar Cry FMV freeze (Disc 3) - Worms Pinball not booting - Xenogears (Deus fight)
- Fix CD Volume issue in Star Wars Dark Forces - CD Volume is 16-bits signed, not unsigned. Otherwise in Star Wars - Dark Forces : if you lower the music volume slider all the way down, the volume will wrap around and instead be set at the highest volume.
Ozone - new color themes
Solarized Light theme for Ozone menu driver
Solarized Light theme for Ozone menu driver
Solarized Dark theme - Ozone Two new color themes got added - Solarized Light and Solarized Dark.
Libretro additions - Enable SRAM for contentless cores
Before, the saving/loading of SRAM data is disabled for contentless cores - which means that cores such as 2048 have to handle save data internally instead of utilising frontend-provided functionality. 1.9.12 simply disables this artificial and unnecessary restriction.
Changelog
1.9.12
- 3DS: Ensure parallax barrier is disabled when '3DS Display Mode' is '2D'
- COMMAND: Command interface should work again
- INPUT/HID: Rewrote the HID deregistration algorithm; it should no longer cause issues when dealing with multiple pads of the same HID/VID combo
- INPUT/HID: Fix initialization bug that caused wiimotes to fail to register without an accessory attached
- INPUT/HID: Fix Wiimote regression
- INPUT/HID/MAC: Get Sony Sixaxis (DualShock 3) working on MacOS
- INPUT/UDEV: Add extra abs check for dolphinbar
- INPUT/UDEV: Add relative left mouse button when pointer device is not abs
- INPUT/WAYLAND: Fix keyboard input on Wayland - fixes 'Certain cores ignore user input'
- NETPLAY: Improvements from Cthulhu
- OPENDINGUX: Fix HAS_ANALOG/HAS_MENU_TOGGLE defines in sdl_dingux joypad driver
- LIBRETRO: Enable SRAM for contentless cores
- LIBRETRO: Add environment callback to get the rate retro_run is called - GET_THROTTLE_STATE and RETRO_THROTTLE_UNBLOCKED environment callback
- LINUX: Update metadata manifest
- MENU/OZONE: New themes - Solarized Light, Solarized Dark
- WINDOWS/WIN9X: Fix non-ASCII text display in window title
Full blog post / announcement will arrive tomorrow, but here is already the changelog:
- ANDROID: New launcher logo - will fill the corners on the homescreen
- D3D9: Driver works again (RGUI only and software rendered cores work, no shader support yet)
- HID/MAC: WiiU GameCube Adapter now works
- HID/WIIU: WiiU and general HID subsystem unified/merged
- INPUT: Refactor menu toggle combo button logic to allow quit combo button
- INPUT/UDEV: Add mouse relative check and set appropriately to fix issue
- LIBNX/SWITCH: Splitted Joycon button mapping
- LIBRETRO: Add environment callback to enable cores to notify the frontend that a core otion value has changed
- MIYOO: Add initial port
- OPENDINGUX/RG350: Enable tinyalsa for the RG350
- PS2: Add 'Change Resolution' option
- PS2: Add option to change video windows offsets
- STEAM/LINUX: Move to new 'soldier' runtime
- WAYLAND: Remove xdg-shell-v6 protocol
- WINDOWS: Fix non-ASCII text display in window title
- UWP: Further improvements to WinRT VFS layer
Read very important linux changes!
RetroArch 1.9.10 has [strike]just[/strike] been released.
If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.10 version) is scheduled to be released very soon!
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. If youd 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
RetroArch is now finally on Steam!
On September 14, 2021, RetroArch finally appeared on Steam (available here). It is available right now for both Linux (SteamOS) and Windows. See our initial release article here. Since then, we have already had over 100K+ downloads on Steam and over one million visits. Thanks to you all! We aim to make RetroArch the very best it can be. What you need to know:
- New cores are coming as DLC additions.
- There is no macOS version available on Steam yet (but we'd like to!)
- Remote Play is supported. We make no guarantees as to how well this will work.
- Steam Cloud sync should be supported for save files.
- There is work underway on automation - the idea is that both cores and RetroArch on Steam would be updated automatically.
High Dynamic Range fixes for D3D11/D3D12!
- Fixed contrast to be more correct - now scales from 0-10 linearly and behaves more the way you'd expect it to - changed name to ditch legacy settings users may have
- D3D11/HDR: Fixed D3D11's blend, rasterizer and topology states not being set to the sames when using HDR and leaving the menu - caused issues with PCSX2's Shadow of the Colossus
- Added ability to skip inverse tonemapper to the shader via the constant buffer using 'inverse_tonemap' - set to 0.0f to skip
- Fixed potential bug when swapping between HDR and SDR and the bit depth not being set correctly
Filters
1.9.10 adds a new Picoscale_256x-320x240 video filter. This uses a number of high quality, high performance algorithms developed by irixxxx for Picodrive standalone to upscale 256x224, 256x239 and 256x240 content to 320x240 (content of any other resolution is passed through unchanged). Much like the existing Upscale_256x-320x240 filter, this is intended for use on platforms/devices with native 320x240 resolution support, where it greatly reduces aliasing while producing a significantly sharper image than conventional (hardware) bilinear filtering. Three filter variants are provided: Picoscale_snn_256x-320x240: 'Smoothed' nearest neighbour Picoscale_bl2_256x-320x240: 2-level-bilinear with 2 quantized weights Picoscale_bl4_256x-320x240: 4-level-bilinear with 4 quantized weights Essentially, both image 'smoothness' and performance requirements increase in order of snn -> bl2 -> bl4. Go here to see several screenshots demonstrating the output of each filter type: (click for full-size images) These filters are highly efficient. Tested with the Snes9x 2005 Plus core (a lightweight core which is nonetheless at the upper limit of many low powered handheld devices), we see the following increase in total performance overheads when each filter is applied (note that the existing Upscale_256x-320x240 filter is included for comparison): [table] [tr] [td]Filter[/td] [td]Performance[/td] [/tr] [tr] [td]overheadbl2[/td] [td]+13%[/td] [/tr] [tr] [td]No filter[/td] [td]+0%[/td] [/tr] [tr] [td]snn[/td] [td]+8%[/td] [/tr] [tr] [td]bl4[/td] [td]+30%[/td] [/tr] [tr] [td]upscale_256x_320x240[/td] [td]+27%[/td] [/tr] [/table] The performance overheads relative to the existing Upscale_256x-320x240 filter are: [table] [tr] [td]Filter[/td] [td]Performance overhead[/td] [/tr] [tr] [td]snn[/td] [td]-69%[/td] [/tr] [tr] [td]bl2[/td] [td]-45%[/td] [/tr] [tr] [td]bl4[/td] [td]+14%[/td] [/tr] [/table] [table] Thus SNN and BL2 in particular have very little performance impact. All credit goes to irixxxx - many thanks for giving us permission to use your work in RetroArch! In other video filter news, the Switch/libnx port now also has video filters support!
Playlist Manager - New 'Refresh Playlist' option
The manual content scanner provides a quick and easy method for generating playlists - but there exists no convenient way to update playlists that already exist. If a user adds content to a ROM directory then they must go to the trouble of reconfiguring and re-running the manual scan (including selecting the ROM directory, system name, default core, etc.); if they have simultaneously removed some files, then they are also obliged to go to the relevant 'playlist manager' menu and 'clean' the playlist. This is time consuming and tedious. 1.9.10 adds a new Refresh Playlist option to the 'playlist manager' menus. When selected, the current playlist will be re-scanned with the manual scan configuration that was last used to generate/edit the playlist. 'Refreshing' a playlist also populates all entries of the Manual Scan menu - so it is easy to tweak values should the user wish to update the allowed file extension list, etc.. In addition: a new Validate Existing Entries option has been added to the manual scan interface. When enabled, any existing playlist is checked before commencing the content scan; entries referring to missing files, or files with invalid extensions, are then removed. Validate Existing Entries is disabled by default, but automatically enabled whenever a playlist is refreshed. Thus selecting Refresh Playlist will both add new content and remove missing/invalid entries. Note:
- This functionality will not work with playlists generated before this commit, since they will lack the required metadata. It will be necessary for the user to re-run a 'normal' manual scan for any playlist they might want to later refresh; thereafter, the Refresh Playlist option will appear in the relevant 'playlist manager' menu and maintenance becomes a one-button affair.
- We can only 'refresh' playlists created via the manual content scanner - not the database scanner. When performing a database scan, there is no practical method for extracting all required metadata for a repeat operation.
3DS - Add bottom screen idle state
Some nice QoL improvement for RetroArch 3DS users! 1.9.10 allows the bottom screen on the 3DS to be disabled when idle. On compatible devices, the bottom screen backlight is toggled. If no core is running, the bottom screen is always idle with the backlight turned off. If a core is running with the bottom screen in it's 'default state', the bottom screen will idle in ~6 seconds. The displayed text "Tap the bottom screen to go to the Retroarch menu" fades out and the LCD backlight is disabled. When interacted with the screen, the backlight turns on and toggles the menu as usual. When in the menu / paused, the bottom screen remains active. [previewyoutube=S6GXltlr0F8;full][/previewyoutube]
RetroAchievements/Cheevos improvements
Don't write achievement credentials to override Ignores changes to cheevos_token, cheevos_password, and cheevos_username when generating config override files. While this is particularly important for not remembering a stale authentication token, not entering any credentials until after loading content, and then saving the override could lead to the actual password being stored in the override even after the authentication token is generated and put in the master settings file. Since neither the authentication token nor the password should be stored in the override file, I believe it also makes sense to exclude the username, as having a per-override username would also require a per-override authentication token or password. If a players wants to have a separate retroachievements user for a specific core, they can still manually add the entries to the override file, but those will be cleared out any time they update the override file from within the application. A better solution would be to use separate master configs and launch using the --config option. Disable slowmotion when enabling hardcore mode There's already code preventing the user from toggling (or otherwise using) slowmotion when achievement hardcore mode is enabled. Slowmotion provides an advantage for the user's reflexes, so we don't allow it in hardcore mode. This addresses an issue where the user could enable hardcore mode with slowmotion already toggled on, and it would remain on. The user would be locked in slowmotion as the toggle would be disabled, but with enough patience, it could be worth it. With this change, slowmotion is disabled when enabling hardcore mode.
Changelog
1.9.10
- 3DS: Add bottom screen idle state
- 3DS: Add unique IDs for Gearboy/Gearcoleco/Gearsystem, correct CAP32 code
- 3DS/SAVESTATES: Fix RAM states to file when core deinits
- AUDIO/MIXER: Pad sample buffers to prevent potential heap-buffer-overflows when resampling (fixes crash when using 30 kHz menu audio files)
- AUDIO/LINUX/SNAP: Add JACK support
- CHEEVOS: Don't write achievement credentials to overrides
- CHEEVOS: Disable slowmotion when enabling hardcore mode
- D3D9: Fixed MVP matrix issue for RGUI texture (main game frame still won't show up though)
- D3D11/D3D12/HDR: Fixed contrast to be more correct - now scales from 0-10 linearly and behaves more the way you'd expect it to - changed name to ditch legacy settings users may have
- D3D11/HDR: Fixed D3D11's blend, rasterizer and topology states not being set to the sames when using HDR and leaving the menu - caused issues with PCSX2's Shadow of the Colossus
- D3D11/D3D12/HDR: Added ability to skip inverse tonemapper to the shader via the constant buffer using 'inverse_tonemap' - set to 0.0f to skip
- D3D11/D3D12/HDR: Fixed potential bug when swapping between hdr and sdr and the bit depth not being set correctly
- D3D11/D3D12/HDR: Added numerous helper functions to help create the correct values to colour the UI - normally the white UI elements should be rendered at paper white not max brightness for various reasons
- BUGFIX/ANDROID: Fix crash that could happen on Android with Sameboy core - would crash on rumble function
- GFX/WIDGETS: New regular widget message appearance
- INPUT/MOUSE: Add distinct mouse zero index label for drivers that do not support multimouse
- INPUT/RUMBLE: Add generic rumble gain to input settings
- INPUT/UDEV/X11: Add workaround to fix keyboard input when using X11 + Udev
- LIBNX/SWITCH: Add Video Filters support
- LOCALIZATION: Fetch translations from Crowdin
- OPENDINGUX/BETA: Disable OpenAL
- PLAYLISTS: Add 'Refresh Playlist' option
- STEAM: Initial release on Steam
- UWP/VFS/XBOX: Improvements and bugfixes to UWP VFS driver
- VIDEO/REFRESH RATE: Automatic PAL/NTSC refresh rate switch where available - as long as the platform display server allows changing refresh rates and the display has the desired refresh rate
- VIDEO FILTERS: Add 'Picoscale_256x-320x240' video filter
- WIIU/HID: Fix analog inputs on HID devices
Hello everyone!
We have been busy working on the Steam version to improve compatibility and stability. Right now, we need to make some changes for the Linux platform. For a long time, we have manually released everything on the Steam, this has now been automated for both platforms. Looking forward you can expect regular updates and soon a nightly branch. However, to simplify RetroArch on Steam we are moving to the same folder structure on all platforms. Additionally, on Linux, we are moving from the AppImage-based release to using the newer soldier runtime available in Steam to increase the likelihood of RetroArch working out of the box on more Linux distributions.
As there is a small risk for breakages for Linux users we felt the need to properly inform about this. So what does this change mean? Currently, the RetroArch base directory on Linux is RetroArch-Linux-x86_64-Nightly.AppImage.config/retroarch which you can see the retroarch's itself in a subdirectory instead of being in the main directory of the game, so our goal is basically same directory structure for every platform! Due to the chance of data loss our recommendation is to copy everything you care about, for example; save files, options, your cfg files etc. somewhere safe outside the Steam install. While Steam Cloud should keep everything safe, we do still feel the need to mention this, as the changes are not risk-free.
The update is currently scheduled to go out the 3rd of October together with the next frontend release.
Please contact us if you have any concerns!
[strike]Today[/strike], RetroArch has finally been released on Steam for both Windows and Linux/SteamOS. The Store page can be found here.
Differences between the Steam version and regular version
Functionally, RetroArch on Steam should be identical to the version you can get on our website, except for the following:
- There is no Core Downloader to stay compliant with Valve/Steam's Terms of Service.
- Manually dragging the core file (a .dll file on Windows, .so on Linux) over to the 'cores' directory of RetroArch Steam.
- Installing the core as a DLC.
10 Cores Available At Launch
We have decided to launch with 10 cores at launch. These cores are available both for Linux/SteamOS and Windows users. A 'core' is a program that RetroArch loads. It can be an emulator, game, or any other program. RetroArch loads this 'core', and from there RetroArch becomes the program. The cores currently available as DLC on Steam are as follows:
- Mupen64 Plus Next
- Kronos
- PCSX ReARMed
- Stella
- SameBoy
- mGBA
- Mesen
- Mesen S
- Genesis Plus GX
- Final Burn Neo
Things to know
- RetroArch on Steam is available for 64bit Windows/Linux users only for now. We are not sure if we will be supporting 32bit on Steam as well.
- Builds right now are not automated but might be later on.
- There is no macOS version available on Steam yet. There are no plans yet for this, but if there are updates on this, we will tell you.
- Remote Play is supported. We make no guarantees as to how well this will work.
- Steam Cloud sync should be supported for save files.
If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.9 version) is scheduled to be released very soon! 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. If youd 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
High Dynamic Range support for Direct3D 11/12 drivers!
We have now added HDR (High Dynamic Range) support to RetroArch's Direct3D 11/12 driver thanks to a generous contributor! l What you should know: * The HDR settings can be found in Settings -> Video when you are using the Direct3D 11 or 12 driver. In order to change to D3D11/12, go to Settings -> Drivers, and change Video to 'D3D11/12'. In case you don't see the option, and you have made sure first that your driver is set to Direct3D 11/12, it might be that HDR is disabled in Windows 10. Make sure HDR is enabled in Windows in case you don't see it pop up. In Windows, go to 'Display Settings' (pictured below) and make sure the HDR setting is turned on. If it doesn't show up, your display device might simply not support HDR.
* We now let Direct3D 11 compile frontend shaders against Shader Model 5.0 (SM 5.0) in case your graphics card driver supports D3D11 Feature Level 11.0 or higher. Previously, it would always compile frontend shaders against Shader Model 4.0, and unfortunately the AMD FSR shader that has just been added needs SM 5.0 capabilities in order to work. * While HDR already works on the UWP version on PC, on Xbox there are currently several deal-breaking display issues with it, so it remains disabled there for now.
Thoughts on future RetroArch HDR support
* We still need HDR implementations for other modern graphics APIs, like Vulkan (and Metal and/or OpenGL core if possible). We have no ETA on when this will be done. Ideally a generous contributor submits it to us, just like what happened with D3D11/12. * Slang [the shader format] will need HDR support as well in order to take full advantage of the expanded gamut. Right now the author that made the D3D11/12 implementation made a reference shader that he says can already take advantage of HDR - check out his new shader 'integer-scaling-scanlines.slangp'. You can find this preset inside the folder 'scanlines/shaders'. It is an integer scaling mode pixel perfect scanline shader for use with low resolution monitors, underpowered machines, the new HDR mode in RetroArch and for people who want pixel sharp scanlines with absolutely no moire patterns (but with the downside that integer scaling must be on and so not fill up the screen or over fill the screen). * It needs to be pointed out that HDR support on Linux in general is very premature right now compared to Windows. Windows happens to be a bit further along at this point in this department. Hopefully this inequality will be addressed shortly. But just know that this might tie our hands a bit.3DS Bottom touchscreen menu
https://twitter.com/i/status/1434063889122140160 A fully interactive touchscreen menu for the bottom screen of the 3DS has been added by the very generous contributor bulzipke! The following functions are currently available on this screen: Resume Game Toggles RetroArch menu, closes it and goes back to the game. Create Restore Point If you touch this, save it to SD card. If the Save State Thumbnails option is enabled, you can see Screenshots at the Load Restore Point Load Restore Point Shows the date when you saved it. (And show Screenshot if exists). If you change the State Slot, bottom menu will refresh Screenshot / date / state. [previewyoutube=LB6zeIVly_U;full][/previewyoutube] Some important convenience features came as a result of this too. Savestate loading / saving to RAM instead of to disk was added, so it's possible to have temporary suspend points without writing to disk. The state is only saved to disk when either: * Closing the lid of the 3DS * Pressing the HOME button * Exiting RetroArch This gives things a very seamless feel. Not only that, the saving of state to RAM is orders of magnitude faster vs. saving to disk, so now while doing these operations, things no longer slow to a crawl. There's also the option to disable the bottom screen - Settings->User Interface->3DS Bottom Screen Although this option will not affect performance, it is estimated that "Tap the Touch Screen to go to the Retroarch menu" text may add additional battery consumption to draw the screen. So it's always nice to have the option to toggle it off if need be.
AMD FidelityFX Super Resolution (FSR) has been ported to Libretro/RetroArch!
https://twitter.com/libretro/status/1433511745641922572 A very generous contributor submitted a fully working implementation of AMD FSR as an slang shader for use in RetroArch! This shader should be fully compatible with the following video drivers in RetroArch: * Metal * OpenGL Core (or at least 4.0 with regular OpenGL driver) * Vulkan * Direct3D 11 (if your card supports Direct3D 11 Feature Level 11.0 or higher) * Direct3D 12 We have had to update our Direct3D 11 driver to allow for the use of Shader Model 5.0 when your GPU supports it, since this shader requires SM 5.0 features and wouldn't work on D3D11 without it. The contributor mentions in his pull request that implementing AMD FSR as a pixel shader seemed to work out just fine despite AMD insisting it is supposed to be implemented as a compute shader. On top of this straight port of FSR, he also took the time to remake the SMAA shader. It is now supposed to be less of a port and just uses the original library unmodified, while adding a few features and higher quality search textures. The contributor wasn't too happywith the quality of this AA and wanted to check if it could be improved, mainly because FSR requires good looking AA (Anti-Aliasing) otherwise it wouldn't make much sense. In the end, quality gains were marginal, pretty much imperceptible. Despite that, there is also an AMD FSR+SMAA preset that you can use. You can see some comparison images down below - to the far left is the image without any shaders, in the middle is AMD FSR, and to the right is AMD FSR + SMAA applied.
Ys Seven undub with the PCSX2 core in RetroArch. The image is zoomed in here by 2x. Left: no shaders, middle: AMD FSR shader, right: AMD FSR + SMAA.
1st image: Gradius V with the PSCX2 core in RetroArch, zoomed in to showcase how FSR can combat aliasing. Left: no shaders, middle: AMD FSR, right: AMD FSR + SMAA. Note how the jaggies become less pronounced by applying FSR, and how they become even less with SMAA added to the mix. 2nd image: Gradius V with the PCSX2 core in RetroArch, zoomed in. Top: no shaders, middle: AMD FSR, right: AMD FSR + SMAA.
3rd image: Panzer Dragoon running on Kronos with AMD FSR shader (click on the image to see it without shader applied).
Add enhanced search functionality to the 'Cheats' menu
1.9.9 adds enhanced search functionality to the Quick Menu > Cheats menu, similar to that in the core downloader and core manager menus:
In addition, the search feature may be used to filter cheats that are currently on or off: this is done by searching for the 'key' string .on or .off * The key string is case insensitive * The actual on/off text is localised - it matches whatever is currently shown as the cheat value (i.e. if the user language is set to French, the on key is .Activ * The leading period was chosen because (a) it should be available on most keyboard layouts, (b) it is available on the first 'page' of RetroArch's OSK and (c) it is easier to type than enclosing the string with brackets, as it is displayed in the cheat value text
Faster sinc resampler and audio conversion for ARM NEON platforms
Previously, the audio sinc resampler and the audio conversion functions only had optimized SIMD codepaths written in ASM for ARM NEON. There are more and more platforms/toolchains now that prohibit or make it difficult to use assembly routines, or strongly recommend you resort to SIMD intrinsics instead. So we have done exactly that now. All the audio conversion routines (float to signed 16bit integer, signed 16bit integer to float) and the sinc audio resampler now have ARM NEON intrinsic optimized codepaths available instead of just defaulting to C codepaths. This should contribute to performance on platforms like the Mac M1, Android devices, the PS Vita, iPhone devices, and ARM Linux hardware in general (both AArch64/ARMv7). We have still left in these legacy ASM codepaths behind an ifdef in case someone still has a use for it, but from now on we will try to make sure to offer both intrinsic and ASM codepaths whenever possible, or intrinsic only if both can't be provided.
Important fixes
Fix cheat when using second instance runahead Before, using cheats when second instance runahead was enabled caused undefined behaviour because the cheats are only applied to the primary core (and not the secondary one). 1.9.9 fixes the issue. It also ensures that cheats are correctly reapplied when second instance runahead is toggled on while content is running. Fix menu sounds (audio mixing) when using the 'sinc' resampler with quality lower than 'normal' Before, if the sinc resampler was used with a quality of lower or lowest, then enabling any 'menu sounds' (including cheevos notifications) would completely break in-game audio. 1.9.9 fixes the issue by ensuring that all audio mixer resamplers use the same quality setting as the main one. In addition, we ensure that the same backend driver is used. 1.9.9 also fixes a memory leak when loading system sounds without a driver reinit (i.e. when toggling menu sounds via the menu) Fixed several crashes that could occur during fullscreen toggle Fullscreen toggle should now be more robust in cores like PCSX2, Flycast and other 3D-based emulator cores. Add option to (force-)write current core options to disk RetroArch saves core options automatically when closing content - but if a badly behaved core causes a crash on close content, then the current core option settings will be lost. 1.9.9 adds a new Flush Options to Disk entry to the Quick Menu > Options > Manage Core Options menu. When selected, this will force the current core options to be written immediately to the active options file. Since 99% of users will not need this functionality (it was requested for users testing the PCSX2 core) the entry is hidden by default, with visibility controlled via a new Settings > User Interface > Menu Item Visibility > Quick Menu > Show 'Flush Options to Disk' option. This PR also fixes a rather nasty bug related to saving core options: At present, if a user has Use Global Core Options File enabled, and they create then delete a per-game or per-content directory options file via the Manage Core Options interface, when the current options are re-saved to the global file then any settings not related to the current core will be removed (!). This has been fixed by ensuring that all locally stored config file data is properly updated whenever per-game or per-content directory options files are deleted. Highlight currently selected value in Shader Parameter drop-down lists Before, when opening a shader parameter drop-down list via Quick Menu > Shaders > Shader Parameters, the selection cursor would always 'reset' itself to the top of said list. 1.9.9 ensures that the current parameter value will be auto-selected and marked. Note that we may replace these shader parameter drop-down lists with keyboard input at some point, but we might as well fix this selection bug in the meantime (since it is so easy to do!). Allow 'Vertical Refresh Rate' to be entered manually via keyboard/onscreen keyboard Making significant changes to Settings > Video > Output > Vertical Refresh Rate (e.g. 60 Hz -> 50 Hz) is quite tedious, since holding left/right only modifies the value in 0.001 Hz steps. 1.9.9 adds the ability to set this parameter 'manually'. When Vertical Refresh Rate is selected, a new value can be entered via the OSK or physical keyboard. For current settings where very long dropdown lists are spawned, we might consider switching over to this style of input instead. Linux - udev - Look for "ID_INPUT_KEY", not "ID_INPUT_KEYBOARD" Very important contribution by icculus (of SDL fame) - This fixes programs using /dev/uinput to create a virtual keyboard failing to be detected on startup. Usual symptom is some sort of GPIO-based controller on a Raspberry Pi that looks like a keyboard to the OS and can control EmulationStation, but fails to work in-game unless you restart the controller's program while the game is running (in which case udev_input.c's hotplug code, which was using the correct string, would pick it up). Core info cache files are now portable Core info cache files should now be portable. The core info cache stores absolute core paths, which breaks portability (i.e. if the cache is enabled and the core directory is moved, cores can no longer be loaded). In truth, it is a mistake to cache the core path in the first place, since this is already retrieved from the filesystem regardless of whether the cache is enabled. 1.9.9 therefore removes core paths from the info cache, so the correct (dynamically determined) path is always used. As a result, iOS now has core info cache files re-enabled again, which should lead to an increase in overall core info performance.
Changelog
1.9.9
- 3DS: Add bottom touchscreen menu
- 3DS/SAVESTATES: Save and load save states to and from RAM
- AUDIO/MIXER: Ensure than menu sounds are re-enabled when calling CMD_EVENT_AUDIO_REINIT
- AUDIO/RESAMPLER/MIXER: Fix menu sounds (audio mixing) when using the 'sinc' resampler with quality lower than 'normal'
- AUDIO/CONVERSION/ARM NEON: Add intrinsic NEON versions for float_to_s16/s16_to_float - should lead to optimized codepaths for AArch64/ARMv7 architectures without being dependent on ASM codepaths.
- AUDIO/RESAMPLER/ARM NEON: Add intrinsic NEON version for lanczos sinc function - should lead to optimized codepaths for AArch64/ARMv7 architectures without being dependent on ASM codepaths.
- CHEEVOS: Upgrade to rcheevos 10.2
- CHEATS: Add enhanced search functionality to the 'Cheats' menu
- CHEATS/RUNAHEAD: Fix cheats when using second instance runahead
- CONFIG: Add option to (force-)write current core options to disk (Quick Menu)
- CORE INFO CACHE: Remove core path from core info cache. Should make core info caches portable now (for example: you can move RetroArch to a separate dir and they would still work).
- D3D11: Use Shader Model 5.0 for frontend shaders if D3D11 Feature level is at least 11.0 or higher. Should fix some new shaders that require SM 5.0 (like AMD FSR)
- D3D11: Add HDR support (not working for Xbox for now)
- D3D12: Add HDR support (not working for Xbox for now)
- EMSCRIPTEN: Fixed web player bug with filesystem and runtime
- INPUT/OVERLAY: Fix overlay input when analog to digital mapping is enabled
- INPUT/UDEV: Look for "ID_INPUT_KEY", not "ID_INPUT_KEYBOARD"
- INPUT/WINRAW: Fix crash when overlay is enabled
- MAC/METAL: Add Discord RPC support
- MENU: Allow 'Custom Aspect Ratio (X Position)/(Y Position)/(Width)/(Height)' to be entered manually via keyboard
- MENU: Allow 'Vertical Refresh Rate' to be entered manually via keyboard
- MENU/SHADERS: Highlight currently selected value in Shader Parameter drop-down lists
- STABILITY: Safer way of avoiding the race condition in audio_driver_sample/audio_driver_sample_batch - we can check audio-suspended to see if we're doing a fs/windowed toggle - enhances stability when fullscreen toggling/tearing down context
- STABILITY: When audio driver write callback function fails, don't turn audio off completely - look if audio_driver_output_samples_conv_buf is non-NULL first before we attempt to write audio - enhances stability when fullscreen toggling/tearing down context
- STABILITY: Input robustness for cores that use internal threading (full teardown/setup), no audio should be processed at this point in time
- VIDEO: Screen resolution list sanitizing
- VULKAN: Fix some Vulkan validation layer errors
- UWP: Updated icons courtesy of Danp142
- UWP/XBOX: Disable CPU model check on Xbox as it doesn't work and can even crash
- UWP/VFS/XBOX: Code cleanup and simplification of UWP VFS driver
If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.7 version) is scheduled to be released a week from today.
Remember that this project exists for the benefit of our users, and that we wouldn't keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If youd 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
New RetroFW port
We added support for OpenDingux before for JZ4770-based handhelds. After this, we added support for RetroMini RS-90 devices. And now thanks to Poligraf, we have a working build for all the JZ4760-based handheld devices running RetroFW. RetroFW is a Dingoo based firmware runnin on the MIPS 4760 which is around 50% the speed compared to other devices running Opendingux. Which devices does this cover?
- RS-97
- LDK
- RG-300
- Powkiddy Q80
- 29 cores available at launch: Atari800, BlueMSX, Cap32, FCEUmm, fMSX, FreeCHAF, FreeIntv, FUSE, Gambatte, Genesis Plus GX, gpSP, GW, Handy, LRMAME2003, LRMAME2003 Plus, Mednafen PCE Fast, NXEngine, O2EM, Picodrive, Pokemini, Potator, Prboom, Prosystem, QuickNES, RACE, Retro8, SMS Plus, Stella 2014, Vecx
Core option categories
We are going to be making a persistent effort now to enhance RetroArch's UX and lower the acessibility curve. To that end, we now have also implemented core option categories support. Up to this point, every core option in a core (Quick Menu -> Options) has all been shown in a a flat alphabetical list. Users can quickly get confused if they have to scroll down a massive list of options. So, 1.9.8 finally adds core option categories. Options assigned to a category will be displayed in a submenu of the main core options menu on supported frontends. For example - here we assign Gambatte's mulitplayer options to a Game Boy Link category:
If you do not like this new behavior, there are always options to turn it off. Go to Settings > Core > Core Option Categories setting (enabled by default). When disabled, core option categories are ignored, and core options will effectively be displayed using the old v1 format.
Cores that already support core option categories
Core option categories have to be specifically added per core. Some of the cores that already support core option categories are as follows:
- Final Burn Neo
- Mupen64Plus Next
- Beetle Saturn
- Beetle PSX
- Beetle PCE
- Beetle PCE Fast
- Genesis Plus GX
- Snes9x 2010/2005/2002
- DOSbox Pure
- DOSbox Core
- UAE (Amiga)
- VICE (Commodore 64)
- Settings > Video > Windowed Mode > Maximum Window Width (default: 1920)
- Settings > Video > Windowed Mode > Maximum Window Height (default: 1080) ...which can be used to cap the maximum window size to a 'sane' value.
- AUDIO/WINDOWS/WASAPI: Stop deactivating audio on fast forward
- CHEEVOS: Hide challenge indicators when resetting
- CHEEVOS: Support for more than 64 memory regions
- CHEEVOS: Automatically retry 'http error code -1'
- CONTENT INFORMATION: Show content info label+path rows always
- CORE OPTIONS: Core option categories implemented
- CORE OPTIONS: Add option to disable core option categories
- D3D10/11/12: Fix gfx_display_draw_texture - fixes OSK (On-Screen Keyboard) issues
- DATABASE: Fix heap-buffer-overflow when fetching CRC values
- DATABASE/EXPLORE: Fix CRC32 reading in explore menu
- DATABASE/LIBRETRODB: Fix writing of numerical values
- DATABASE/LIBRETRODB: Fix libretro-db loading on big endian platforms
- DUMMY CORE: Skip state_manager_event_{deinit/init} when core type is dummy, should skip warning spam 'Implementation uses threaded audio. Cannot use rewind..' when using rewind
- INPUT/UDEV: Limit udev device scan to subsystem 'input'
- INPUT/SDL2/WINDOWS: Fix keyboard event keycodes
- INPUT/WAYLAND: Fixes a bug where the first player's mouse, pointer, and lightgun are echoed to the other ports. Now, those other ports correctly report zero. In the future support for multiple mouselike devices will need to be added, which is a bigger project
- INPUT/WAYLAND: The driver now respects keyboard_mapping_blocked
- INPUT/WAYLAND: When possible, deprecated lightgun defines are replaced with the new ones. The coordinates are still using the old relative callbacks
- INPUT/WINRAW: Trigger joypad driver reinit on DEVICECHANGE - avoids fullscreen toggle
- INPUT/WINRAW: Alt sticky fix
- INPUT/WINRAW: Prevent Alt getting stuck when Alt-Tabbing
- INPUT/WINRAW: Add pointer status
- INPUT/WINRAW: Add missing analog keybinds
- LIBNX/SWITCH: Fix poll missing for controller 2-8
- LIBNX/SWITCH: Fix layout not applied correctly and hangs when splitting joycons
- LIBRETRO: Core options category API implemented
- LIBRETRO: Fix RETRO_ENVIRONMENT_SET_FASTFORWARDING_OVERRIDE callback when runahead is enabled
- LIBRETRO: Add environment callback for enabling core option menu visibility updates without toggling Quick Menu
- LOGGING: Starting logging and verbose mode before first config load
- LINUX: In some Linux Desktop Environments, like Budgie, task bar feature is unable to pin applications. With StartupWMClass= present in .desktop file, it is possible to pin the application
- LOCALIZATION: Fetch translations from Crowdin
- MENU: Relocate 'Manage Playlists' to top
- MENU: Fullscreen resolution width/height settings no longer require 'advanced settings'
- MENU/REFRESH RATE: Fix double notifications with refresh rate settings
- MENU/OZONE: Ensure the existence of values used in selection calculation
- MENU/OZONE/VULKAN: Casting to unsigned caused an integer overflow and after float promotion would lead to 'x' being a garbage value, leading to problems when this value was passed to vkCmdSetViewport. This stops Vulkan validation layers from complaining about it
- METAL: Fixed font driver memory leaks
- MOUSE: Change default mouse index to port index
- MOUSE: Friendly names for mice where available
- OSX: Fix some memory leaks
- OSX: Fix controller duplication bug
- PS2: Implement alpha for the video driver
- PS2: Aspect ratio handling
- RETROFW: Initial port
- UWP/XBOX: Enable Explore tab by default - seems to work fine
- UWP/XBOX: Fix startup issues with latest Xbox Dashboard updates - ANGLE cores still show up wrong
- UWP/XBOX: fix issue where files where opened as OPENALWAYS instead of OPENEXISTING this fixes beetle cores
- UWP/XBOX: fix issue where filesizes where not returned properly, this fixes loading arcade dat files
- UWP/TRANSLATION: Enabled translation services for both UWP MSVC2017 and 2019. No TTS speech yet.
- VIDEO: Fix refresh rate 59Hz rounding
- WINDOWS: Remember original refresh rate
- WINDOWS/VULKAN: Refresh rate fixes + cleanups
- WIIU: Fix L3/R3 buttons
- WIIU: Compress RPX libretro cores
- WIIU: Add ICInvalidateRange (necessary for JITs)
- WIIU: Slight filesystem optimisation
- WIIU: Add option for running without core info (emscripten-style)
Have you ever noticed RetroArch starting a game in windowed mode and then blowing up the window to ridiculous sizes that exceeds the boundaries of your desktop? Well, we now have a solution for that! At present, when RetroArch is in windowed mode with Remember Window Position and size disabled, the window size will be equal to the core provided base_width/base_height multiplied by the Windowed Scale. This is potentially 'catastrophic': if a core has a very large base_width/base_height (e.g. PPSSPP with a x7 internal scale factor) and Windowed Scale is set to the default x3, then the window size can be enormous - potentially exceeding the capacity of the host GPU and causing RetroArch to crash. 1.9.8 adds two new options:
Auto-updating core option menu visibility updates without toggling Quick Menu
Cores are able to show or hide their options via the RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY callback on supported fontends. A significant shortcoming here is that if a change to one core option (via the frontend) affects the visibility of another option, the frontend cannot update the menu state until the core has run for at least one frame. So with the core options menu open, visibility updates cannot happen in real-time - instead, the user must toggle the quick menu off then on before the menu will change. This is ugly and confusing. 1.9.8 adds a new RETRO_ENVIRONMENT_SET_CORE_OPTIONS_UPDATE_DISPLAY_CALLBACK environment callback which allows the core to register a function that enables the frontend to (a) force a core-side option visibility update and (b) allows the frontend to check whether option visibility has changed. This means all show/hide operations can now generate real-time menu updates.
Windows
Plenty of important fixes for Windows users. If you experienced lockups in the past when disconnecting an audio device while using the WASAPI audio driver, well, rejoice, this will no longer happen. Simultaneous shift sticky fixes were made to the DirectInput input driver. Dinput would not send WM_KEYUP for both Shifts if they were pressed together and released, resulting in sticky Shifts = Pinball games ruined in DOSBox. The following fix was made to the Windows RawInput driver - the Left Alt key could get stuck when Alt-Tabbing. No more. The keyboard can now also be mapped to analog input axes, meaning you can bind the left and right analog stick on the RetroPad to your keyboard keys.
PlayStation2 version
1.9.8 solves the flickering issues that appear in the cores that use the FRAME_SKIP as Snes9x2002 does. Also, 1.9.8 basically mounts HDD partition if RetroArch actually started from the HDD unit. In this way, we skip the mount partition if the user just wants to use USB.
macOS/OSX version
Plenty of important fixes for macOS users this time! There were several serious memory leaks with the Metal video driver. These have now been fixed. Serious bugs related to the input autodetection subsystem have finally been fixed. Now when you connect a gamepad, it will no longer try to attach the same pad to two controller ports simultaneously. This has been a longstanding bug that we're glad has finally been consigned to the dustbin of history thanks to the help of a generous contributor who did quite some work to delve deep into this issue. We also made sure everything still works across a wide variety of macOS machines (from a PowerPC Mac running OSX 10.5 to an Intel and ARM Mac running more recent macOS versions).
WiiU version
Lots of improvements have been made once again to the WiiU port. All the libretro RPX cores are now compressed. Not only do they load faster (leading to faster startup times), but it means you have a lot more space left on your SD card. L3 and R3 buttons have been fixed on several gamepads, they were previously completely nonfunctional. Furthermore, promising work is underway for a PlayStation1 emulator core running on RetroArch WiiU. More on that later once more news is forthcoming.
UWP/Xbox versions
We have been fixing several bugs with the UWP port, many of these affecting in particular RetroArch users on Xbox One/Series. Microsoft recently released a new Dashboard update that caused some breakage for existing RetroArch installs. We have managed to fix the startup problem that occurred on the latest dashboard. We also fixed the onscreen keyboard display which was previously completely glitched out. Note that on the latest Dashboard, some compatibility problems still persist. For instance, it has been reported that several games on PCSX2 no longer work as of the recent update. This will require investigation and it is our guess if anything can be done about this, we will have to determine this after more investigation has occurred. For now, you might experience scaling issues with some of the ANGLE/GL powered cores like Mupen64Plus Next and Flycast because of the Dashboard update. We hope that we will be able to transition from ANGLE to something like GLon12 soon. What this would buy us is full desktop OpenGL support instead of just OpenGLES. This would mean a more complete superset of OpenGL (up to 3.3 from what we can hear), more cores that would work out of the box instead of custom cores made to work with ANGLE, etc. We will see if we succeed in this, but that's something for a later version. In the meantime, we have also enabled Translation features. Note that we haven't been able to implement the Text-to-Speech accessibility feature yet, but all other features should be there now for experimentation. We have also re-enabled the "Explore" tab on the Main Menu. We haven't found any issues with this anymore after the recent bugfixes/improvements we made to the underlying database code, but let us know if there are any more issues on that front. Several cores that used the libretro VFS subsystem and/or CHD loading previously no longer worked. Examples include the Beetle cores. This has been fixed.
Screen resolution settings improvements
Currently the "Screen Resolution" list wrongly alters also video_refresh_rate to the rounded value, as in 59.940 Hz becomes 59.000. This change makes sure all the 59.94 multiples (59/119 etc) result in the proper float value instead of integer. Also, previously notifications when setting the refresh rate would repeat itself twice. This has been fixed.
Changelog
1.9.8
What's next
It has been often requested during our project's history, but yes, we finally want to do something on the UI/UX front. We have been considering introducing an 'Easy Mode' that should aim at making things much less of a maze to navigate for non savvy users. Stay tuned for more info!
Lakka 3.3 release
New version of Lakka has been released! We are happy to announce new and updated version of Lakka. Changes since version 3.2:
- RetroArch updated from 1.9.5 to 1.9.7
- Optimized scanning of large data sets
- Added support for mapping multiple controllers to a single input device
- Analog to Digital Type usability improvements
- Updated translations from Crowdin
- Cores updated to their most recent versions
- Dolpin: add dolphin-emu/Sys folder to RetroArch system folder
- New: np2kai core (PC-98)
- Generic: enable MIDI sequencer support
- Generic: add Gamecon support
- RPi: disable 4K modes
If you'd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.7 version) is scheduled to be released a week from today.
Remember that this project exists for the benefit of our users, and that we wouldn't keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If youd 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: We will update this notice as soon as we have uploaded the 1.9.7 version for UWP/Xbox as well to our server. For now, these still point to the previous version (1.9.6). We thank you for your understanding.
Release notes
A brand new platform port has been added for RetroMini RS-90 (and similar devices). These are low-powered mass-produced MIPS handheld devices that are sold for very cheap. To us, it is yet another opportunity to optimize our cores for low-end devices. PlayStation2 users are in for a treat. gpSP (Game Boy Advance emulator core) has been optimized and tuned for PS2 to the point where it should run most games at fullspeed. RetroArch should also have a bitmap font driver implemented now instead of relying on gsKit like before. WiiU users benefit from many improvements to file I/O optimizations (faster loading/startup times), network speed, and menu/font rendering. Switch users should benefit from the 7zip compatibility added to this release. Many improvements to the CRT SwitchRes feature have been made. For more details, see 'Changelog' below.
Highlights
New RetroMini RS-90 port
Following on from the success of our OpenDingux port for JZ4770-based handhelds, we are pleased to announce official support for RetroMini RS-90 devices running OpenDingux Beta. This tiny console has one of the weakest CPUs we have ever targeted; it has just 32 MB of RAM, an ultra-low resolution 240x160 display and is available for as little as $20 - but still it provides an enjoyable RetroArch experience.
- All regular frontend features are working (excluding rewind and runahead support)
- RGUI offers surprisingly comfortable performance at 240x160 (even thumbnails are supported - with a fullscreen toggle mapped to the start button)
- Content can be displayed with integer scaling, or nearest neighbour and semi-linear software filters are provided for fullscreen viewing
- Gambatte: All GB games (GBC games have mixed success)
- Genesis Plus GX: Master System & Game Gear games
- Pokemini
- QuickNES
- Mednafen PCE Fast
- Picodrive: Genesis
- Potator
- RACE
- gpSP
PlayStation2 - playable Game Boy Advance emulator added
https://twitter.com/fjtrujy/status/1413833994983071744 https://twitter.com/fjtrujy/status/1417898776510013440 gpSP should now be available for RetroArch PS2 starting as of version 1.9.7. This is a Game Boy Advance emulator core. Davidgf has been working hard on this core for the past few months and the results speak for themselves - this should be the first time that a PlayStation2 is able to run Game Boy Advance games at fullspeed.
WiiU improvements
In addition to the improvements listed for WiiU previously, there's also the following to mention: Fix inputs breaking when connecting/disconnecting remotes When a KPAD controller (Wiimote, Pro Controller, etc.) gets disconnected or has its accessory changed, the Wii U's API gives nonsensical results for a little while, even while claiming these results have no errors whatsoever. This was wreaking havoc in the input system and ended up leaving the controllers useless. 1.9.7 attempts to work around the console's API by filtering out some of the unknown results. Download progress indicator fixed for large transfers An important bug was fixed that was causing issues while downloading the Assets from within the program. When downloading a large file on a 32-bit platform, the progress indicator will get pinned to 100% after downloading roughly 40MiB. This causes a lot of stress for assets.zip, where the 40MiB mark is about halfway. This bug has been fixed. Note that this improvement is not only beneficial for WiiU but should benefit other 32-bit platforms in general.
Linux / xdg-screensaver improvements
1.9.7 provides a workaround for the long-standing issue of "protocol error" messages being written to stderr whenever the "Suspend Screensaver" option is enabled and the X11 context driver is used. These messages don't actually come from RetroArch - they're xdg-screensaver's, which is a script for cross-DE screensaver suspending that RetroArch calls to do its job. It turns out, the script has a problem with title-less windows. See the related bsnes issue for analysis - kudos to Screwtapello for figuring this out. The proposed solution is to check if there's already a title, and if there isn't, to set it to a single "space" character, which is surprisingly enough for xdg-screensaver to work. The space character is picked so that there's no visible difference between the bogus title and no title at all. The alternative is to make sure that RA's window has a title at all times - too much of a hassle for something this trivial.
Changelog
1.9.7
- 3DS: Add unique ID's
- CRT/SWITCHRES: Fixed some Monitor index bugs ad updated to the latest SR2
- CRT/SWITCHRES: Fixed monitor index corruption on Windows and added correct fractal scaling. Only used when required
- CRT/SWITCHRES: Updated log defines to match SR upstream.
- CRT/SWITCHRES: Added new SR_CONFIG_PATHS for non Windows and Linux systems. Not that SR works on them but to fix RA compile issues
- CRT/SWITCHRES: Updated SR2 code base to latest. Added supprt for windows monitor indexing. Fixed monitor index bug where index 1 was not being used correctly and "auto" was not being sent.
- CRT/SWITCHRES: Updated swithres for x86 windows fix
- CRT/SWITCHRES: fixed SR2 auto issue
- CRT/SWITCHRES: Fixed auto monitor bug
- CRT/SWITCHRES: Fixed monitor index corruption on Windows
- CRT/SWITCHRES: Fixed buffer size bug
- CRT/SWITCHRES: Added correct fractal scaling. only used when required.
- CORE INFO: Automatically disable core info cache when core info directory is read-only
- EMSCRIPTEN: add MAME2003 / MAME2003-plus to web.libretro
- INPUT/UDEV: udev fixes add pointer pressed to pointer device to allow udev users to access this device
- LIBNX/SWITCH: Enable 7zip support
- LINUX/XDG: Prevent xdg-screensaver's "Protocol error" messages
- LOCALIZATION: Fetch translations from Crowdin
- LOCALIZATION: Add missing languages for the first startup
- MENU/XMB/WIDGETS: Add workaround for FPU bug that breaks scale factor comparisons on certain platforms (fixes XMB thumbnails on 32bit Linux/Windows)
- MENU/RGUI: Enable fullscreen thumbnail toggle using RetroPad 'start' button
- MENU/RGUI: Fix sublabel length when menu clock is disabled
- NETWORK/HTTP: Fix HTTP progress indication for large files on 32-bit systems
- NETWORK/NATT: implement natt fix from void()
- OPENDINGUX: Fix display when cores 'drop' frames
- OPENDINGUX BETA: Use ALSA audio driver by default
- OPENDINGUX BETA: Fix IPU scaling when running 256x224 (SNES/Genesis) content
- PATHS: Fix garbled path string
- PS2: Implement proper ps2_font driver instead of using the font driver from gskit
- PS2: Use BDM for increasing up USB stability
- PS3: First basic RSX driver for PSL1GHT
- RS90: Initial port
- RS90: Fix offset of OSD text
- RS90: Disable menu clock by default
- RS90: Hide 'Bilinear Filtering' video option
- RS90: Move appdata (retroarch) base directory to external MicroSD card
- RS90: Add optional approximate 'semi-linear' scaling filter
- SHADERS: Max Shader Parameters increased to 1024
- VIDEO: Add 'Integer Scale Overlay' - Force integer scaling to round up to the next larger integer instead of rounding down
- VIDEO: New 'Full' aspect ratio added. This aspect ratio is useful when used with a shader which has a border in it. The aspect ratio is set to the full window area, so that the viewport spans the whole viewport. When using a border type shader like the Mega Bezel this allows the graphics to span the whole window regardless of the user's monitor aspect ratio
- VITA: Wrong flags for not piglet version
- UNIX: Correct backlight max_brightness path
- UWP/XBOX: Default to Direct3D11 driver on UWP builds
- UWP/XBOX: Do not use windowed mode on UWP/Xbox by default, set default resolution to 1920x1080 by default. Should fix display issues with Dolphin/PCSX2 on Xbox
- WIIU: Fix inputs breaking when connecting/disconnecting remotes
- WIIU: Input - ignore some bogus KPAD results
- WIIU: Font rendering fixes - render font lines with correct spacing, and only sample alpha channel when rendering fonts
- WIIU/NETWORK: Network speed optimisations - WINSCALE, TCP sACK, large buffers
- WIIU/LIBFAT: Increase cache size on WiiU
- WIIU/FILE IO: Filesystem optimisations - add fast path for already aligned buffers
- WIIU/FILE IO: Use 128K vbufs for WiiU - we have loads of RAM and large vbufs are very beneficial
- WIIU/MENU/OZONE: Fix Ozone rendering error (scissor fix)
- WIIU/MENU/OZONE: Use Ozone icons instead of XMB Monochrome
[previewyoutube=eY3diF6G-M8;full][/previewyoutube] RetroArch is now available on the Amazon App Store! Note: Will work best with a gamepad. Link here. As of this moment, RetroArch is available on the Google Play Store (here and here), Amazon App Store (here),Steam (here, available by requesting access) and Itch.io(here).
If youd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.6 version) is scheduled to be released a week from today. Remember that this project exists for the benefit of our users, and that we wouldnt 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 youd like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!
Release notes
Be sure to also read our Libretro Cores Progress Report (a link will appear here later). Windows users (with XAudio2 audio driver): RetroArch would previously hang/lock up if you happened to disconnect your current audio device. For instance, this could happen if you were playing with headphones on and you decided to suddenly disconnect your headphones. This has now been fixed. Instead of it locking up the program, instead the sound is just lost instead. Security concerns over the AI Service on Windows have been addressed. Improvements to the Windows installer have been made. This should hopefully prevent potentially disasterous situations from happening again. This could happen for instance when the user pointed the installer to install to a directory he should not be pointing to (like C:\Program Files for instance or the desktop), and did not heed the warning. Linux users should hopefully no longer experience crashes when toggling between normal and threaded video mode with OpenGL thanks to a patch by grant2258. The Direct3D 11 driver has been improved for Windows users thanks to Stenzek (DuckStation author). Several fixes: tear control support is queried. If not supported, flip mode presentation will not be used and Direct3D will resort back to the legacy blit model instead (less optimal and worse windowed mode). DXGI Alt+Enter handling has been disabled since it would conflict with RetroArchs fullscreen mode switch. Non-vsynced output without the flip model should also be properly fixed now, when tear support is enabled and flip model is used, it should be possible to fastforward.
Highlights
Optimize scanning of large data sets
When scanning content, the amount of time required to push each new entry to the resultant playlist increases exponentially with playlist size. For small romsets this is typically unnoticeable, but when dealing with very large data sets (e.g. arcade romsets) scanning quickly becomes impractical. A full arcade romset can take several hours to scan or days on Linux (where certain file operations that are a NOOP on Windows, etc. are very slow). This happens because the push entry to playlist routine is highly inefficient. It has to check whether the entry being added already exists in the playlist, which requires a content path comparison which in turn involves several expensive operations to resolve real file paths and deal with any inconsistencies in archive path notation. The problem is that these expensive operations happen every time: push an entry to the playlist, and it will process and compare every existing content path until it finds (or does not find) a match; push another entry and it will process every path again. Once a playlist hits a couple of thousand entries, this constant reprocessing grinds the scanning process to an effective halt. 1.9.6 solves the issue by caching all parameters derived from content paths on first use, so when pushing multiple entries to playlists the expensive path operations are only carried out once per existing entry. In addition, hash keys are used to minimise lengthy string comparisons. This greatly improves the efficiency of content scanning and also of playlist management features (since these require nested playlist searches, which now also use the cached content path values/hashes). For example, before with 1.9.5 and earlier, it was effectively impossible to scan 100k files. Now with 1.9.6, on a low spec development machine running Linux:
- A manual scan of 100k files takes 20 minutes
- Performing a Clean Playlist operation on the resultant playlist takes 5 minutes
Add support for mapping multiple controllers to a single input device
1.9.6 adds support for the remapping of individual controllers to arbitrary core input devices. This allows multiple controllers to be assigned to one input. To configure this, a new Mapped Port option has been added to the Quick Menu > Controls > Port N Controls menu:
Here, the Port 2 Controls refers to the physical controller; Mapped Port refers to the core port that will receive input from this controller. For example, to map physical controllers 1 and 2 to the player 1 input of a core, set the following:
- Port 1 Controls > Mapped Port > 1
- Port 2 Controls > Mapped Port > 1
- It allows multiple controllers to be used when playing hotseat multiplayer games that normally support only a single controller
- It allows hybrid-type controllers (e.g. two joysticks mounted in a cabinet) to be used as a single device
- It allows easy swapping of player 1/player 2 (etc.) inputs for example, when the PSX version of Metal Gear Solid asks the player to plug their controller into port 2
Analog to Digital Type usability improvements
RetroArch is able to map the left or right analog stick of a gamepad to D-Pad input via the per-port Analog to Digital Type menu setting. Unfortunately, this is a trap for new users: mapping a stick in this fashion disables its analog input, which creates confusion when using cores that have native analog support. Many users enable Analog to Digital Type by default, then complain on reddit/discord that analog controls do not work for PSX/N64/etc. games. 1.9.6 modifies the Analog to Digital Type functionality such that it can be disabled automatically for cores that have native analog support. The setting now has the following values:
- None: No mapping
- Left Analog: Map left stick to D-Pad, but disable mapping if core attempts to read analog input
- Right Analog: Map right stick to D-Pad, but disable mapping if core attempts to read analog input
- Left Analog (Forced): Always map left stick to D-Pad, disabling left stick analog input
- Right Analog (Forced): Always map right stick to D-Pad, disabling right stick analog input
- There is no longer contention between analog stick inputs when an input overlay and physical controller are attached to the same port
- Input overlays no longer generate analog stick input in addition to D-Pad input when Analog to Digital Type is set to the left or right stick
AI Service (Windows) Security Improvements
Several security-related improvements have been made to the AI Service functionality for Windows in an attempt to address concerns that this could be abused. Speech input is no longer sent as a commandline argument to PowerShell, and both the language and speed parameters are properly sanitized and only allow for a few hardcoded safe values to be passed now. This should mitigate most of the attacks that could be thought of with regards to injection.
Windows Installer improvements
Several safeguards have been put in place to prevent people from making a severe mistake during the installation process on Windows. With the installer program, it is no longer possible to install RetroArch to a directory that has existing files or subdirectories. Instead, it has to be written in a new directory. We have to insist on this because the uninstallation process involves wiping RetroArchs entire directory and everything in it. In the past, people could have made the mistake of pointing it to C:\Program Files without putting it in a separate subdir, with disastrous results on deinstallation. While the installer program did warn about this and asked you with a dialog prompt if you were sure, nevertheless we cannot take this risk to begin with. This has been resolved by simply deallowing this to happen by forcing you to install RetroArch to a new empty dir.
Changelog
1.9.6
- ARCHIVE: Fix archive delimiter detection when file path contains no slashes
- ANDROID: Do not duplicate port 0 mouse and gun inputs to other ports
- AUDIO/XAUDIO2: Fail instead of crashing when disconnecting an audio device
- CHEEVOS: Reset cached progress each time menu is opened
- CRT/SWITCHRES: Add support for switchres.ini core and directory overrides
- D3D11: Dont use allow tearing flag with blit swap chains. Also disables the flip model if the allow tearing flag is not supported.
- D3D11: Disable DXGIs ALT+ENTER handling
- D3D11: Dont pass ALLOW_TEARING when unsupported
- D3D11: Fix non-vsynced output without flip, black screens in fullscreen
- D3D12: Relocated d3d12_gfx_sync
- D3D12: Fixed swap interval option
- GFX: Fix uninitialized variables in gfx_display_draw_cursor
- HISTORY: Hide Add to Favorites when viewing an entry of the favorites playlist
- INPUT: Analog to Digital Type usability improvements
- INPUT: Add support for mapping multiple controllers to a single input device
- INPUT/REMAPPING: Add support for mapping multiple controllers to a single input device
- INPUT/LIGHTGUN: Bind lightgun trigger to first mouse button by default
- INPUT/WINDOWS/RAWINPUT: Mouse access violation fix
- INPUT/UDEV: Only add mouse if it has buttons and add vebose device friendly names
- INPUT/UDEV: Skip mouse with no button errors and keep the rest
- INPUT/UDEV: Fix Game Focus mode
- INPUT/UDEV/X11: Change udev driver for dual lightgun support in X11
- LIBNX/SWITCH: Update to libnx 4.0.0
- LOCALIZATION: Fetch translations from Crowdin
- LOCALIZATION: Fix Switchres menu texts
- MENU/OZONE: Ensure sidebar display status is updated correctly when performing rapid menu navigation
- MENU/XMB: Dynamic wallpaper fix
- MENU/XMB: Icon opacity fix
- MENU/QT/WIMP: Fix default core detection when playlist file name does not match db_name
- PLAYLISTS: Optimise scanning of large data sets
- SECURITY: Plug so-called high-risk vulnerability related to Powershell avoid injection dont send speech input as commandline argument
- UWP/XBOX: Add expanded resources Rescap to increase performance of UWP version in app mode on Xbox
- WINDOWS/INSTALLER: Add smarter isEmptyDir reference implementation that looks for subdirectories from NSIS documentation
- WINDOWS/INSTALLER: Register new function DirectorySet that is called when pressing the Next button on the MUI_PAGE_DIRECTORY, aka the install folder selection GUI. DirectorySet contains the criteria for an acceptable folder, which are:
- IfFileExists $INSTDIR\retroarch.exe returns 1
- IfFileExists $INSTDIR\*.* returns 0, there is no existing folder
- IfFileExists $INSTDIR\*.* returns 1, there is a folder, and isEmptyDir returns 1, therefore the folder is empty, including of subdirectories
- X11: Fix threaded video segfault
Hi there community,
last Sunday a tragedy befell the emulation community, when Near tragically took their own life. While we feel Near needs no introduction, we feel it is only right to let people know of the extent to which Nears work laid the foundational framework of Libretro/RetroArch, and what other great projects they worked on, including of course bsnes (which needs no introduction at this point).
Among Nears other great accomplishments: libsnes (which later turned into our fork, libretro), libco (a cooperative multi-threading library), Higan (a multi-system emulator), Ares, and various other auxiliary projects.
Out of respect for Nears untimely passing, we have delayed the release of the next RetroArch by a full week. You wont be seeing us doing any promotional material or coverage for it until then, and who knows, we might even skip going into it at all. We feel this right now is more important and should get front and center coverage.
We asked three people familiar with Near to provide their own eulogy. Recognize that we speak from the heart and that our purpose in doing this is to pay proper respect and tribute to a great programmer in the emulation scene, the likes of whom we might never get again.
Hunter Kaller
About 15 years ago, I was just getting into open-source software and the Super Nintendo was always my favorite console, so I was excited to find a relatively new open-source emulator that ran even the weird, unpopular games. The author of the emu had a forum where they posted their releases and all the cool stuff they were working on, and that forum was home to a tight community of other smart, creative folks. That forum was the old bboard, and that emu author was, of course, Near. As we all know, Near was extremely prolific, driven in their pursuit of perfection, and generous enough to share their many accomplishments with the world at large. In addition to their work on bsnes, Near also documented their relentless reverse engineering escapades on the bboard, along with their efforts to understand the entirety of as many facets of software development as they could, top to bottom. The bboard was home to some pretty epic (in the classical sense) threads in which Near would dive head-first into topicslike the fundamentals of signal resamplingthat most of us outside of graduate-level computer engineering programs consider black magic. It is no exaggeration when I say: without Near and the community they cultivated on the bboard, there would be no libretro and no RetroArch. Libsnes (which would serve as the basis for libretro) was Nears design to decouple their backend code from the endless frustrations of frontend coding. The bboard is where Themaister first developed and released SSNES, which would become RetroArch. They met Twinaphex while attempting to port bsnes to the PS3 via libsnes+SSNES on Nears behalf. To this day, many of our cores depend on Nears libco cooperative threading library. I could go on. With that said, we did not always agree or even get along. Nears perfectionism frequently put them at loggerheads with individuals who felt some thing or other was already good enough (that is basically the tl;dr of how libsnes became libretro), and, on a personal level, I do not presume Near considered me a friend (or even thought of me much at all, for better or for worse). Like most of the people reading this, I suspect Near had a much larger effect on my life than I had on theirs. Nevertheless, I hope Near understood the immense positive effect they had on my life and the lives of countless other individuals, not just through their numerous accomplishments but also as a compassionate and insightful human being. The world is a less-interesting place now, without Near.
Alcaro
We were never the closest friends; I was around for a while, but I was always more interested in bsnes than you, Near. I now realize I was wrong. Too many open source maintainers are valued only for their contributions and otherwise taken for granted, leading to tragedies like this. May you finally have the peace you were denied in life.
Daniel De Matteis
I have been a bsnes fan since the very beginning when it was first announced. I remember running Mega Man X2 on an Pentium 4 PC at the time in 2005 with a premature version of bsnes and feeling that finally there was an emulator that could get the sound exactly right, and it played exactly right. Those are memories and experiences that I will always cherish. I was not even really involved in programming until around half a decade later. I had a chance meeting with Themaister around 2010 when Near was trying to see if bsnes could run acceptably well on a PlayStation3. It didnt, and we pretty much got stuck at the 50fps mark, but what that chance occurrence did show me was the massive potential of libsnes as an emulation abstraction layer and how easily software could be ported across platforms so effortlessly without having to maintain multiple copies of a codebase per platform. I was sold there and then on the entire potential of libsnes and SSNES. And one thing lead to another. Fast-forward to 2021 and its been well over a decade since the project started and Ive been running it now for all this time. You now know of libsnes as libretro and SSNES as RetroArch but the core concept has remained fundamentally the same, right down to the same API. Where there was in 2010 only one emulator implemented as a core (bsnes), now there is nearly 200 implementations, and not all of them even emulators. The only credit I can take in this is that I have put an inhuman amount of time in building the road so that people will come with daily maintenance and coordinating of projects so that everything works well within Libretro/RetroArch as an ecosystem. But Near absolutely deserves the credit for coming up with the foundational pillar on which this all stands. While I wont profess to be a brilliant coder myself, I do recognize brilliance and potential where I see it. And projects like hiro, libco, and libsnes definitely show that raw genius that was in Near. Im afraid it will be highly unlikely we will ever see a programmer as gifted involved in open-source emulation again, certainly not one with as much commitment and passion. Everyone with an appreciation for the Super Nintendo (yes, even Nintendo themselves) owes a huge amount of debt to Near for doing the near impossible in documenting and preserving this system and its back catalogue for all of posterity. It is very rare that you see someone with such selfless commitment dedicating themselves towards fully preserving a system.
Person who wishes to remain anonymous
Near was a very kind and sweet person, who cared for others. They were very talented and was amazing at what they did. I hope that they have found peace.
In light of today's events and out of respect for what has transpired, we've decided to delay the release of RetroArch 1.9.6 that was scheduled today. We thank you for your understanding.
Lakka 3.2 has just been released! To learn more, check out this article here - http://lakka.tv/articles/2021/06/19/lakka-3.2/ This version is based on the latest RetroArch version, 1.9.5. Next version of RetroArch (v1.9.6) scheduled for next Sunday (26/6/2021).
If youd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.5 version) is scheduled to be released a week from today. Remember that this project exists for the benefit of our users, and that we wouldnt 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 youd like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!
Release notes
Be sure to also read our Libretro Cores Progress Report (a link will appear here later). Direct3D 10/11/12 should now allow for fastforwarding while in fullscreen mode. The window title should now fully update periodically as well when using Direct3D 10/11/12 drivers. For instance, frame count and fps was not shown in the window title before. This should now be corrected. CRT SwitchRes support has been completely overhauled. Read below for the details.
Highlights
Enhanced search functionality to the Manage Cores menu
1.9.5 adds enhanced search functionality to the Settings > Cores > Manage Cores menu (with behaviour identical to that of the core downloader 1.9.5 also wires up proper left/right input actions for core manager entries, so the Manage Cores list can be scrolled rapidly by pressing/holding left/right.
API extension for setting need_fullpath based on content file extension and to request persistent frontend content data buffers
Before, the libretro API had two major shortcomings when it comes to handling content: * The need_fullpath parameter, used to define whether content is loaded by the frontend or handled by a core, is set globally at the core level. This means any core that supports both CD-type and normal ROM content has to set need_fullpath = true for all content, since CD-type files are generally too large to fit in memory and in doing this, they are then obliged to load small ROM files internally, disabling any frontend softpatching support, and requiring the frontend to extract compressed content to temporary files on disk. * The content data buffer passed to retro_load_game() is transient a core must assume that it will become invalid once retro_load_game() returns. This means any core that sets need_fullpath = false must duplicate the content data buffer so for example, loading a 32 MB GBA ROM with mGBA requires 64 MB of free RAM. This is a substantial issue on platforms with limited memory, and means that some cores are forced to set need_fullpath = true just to minimise RAM consumption. 1.9.5 seeks to address these problems with the addition of a new RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE environment callback: * This allows need_fullpath to be set based on file extension * It also allows cores to request a persistent content data buffer, which is guaranteed to be valid for the lifetime of the core (such that data duplication is not required) Accompanying this is a new RETRO_ENVIRONMENT_GET_GAME_INFO_EXT callback, which allows extended content information to be retrieved in retro_load_game() (specifically, it provides content file path/metadata information often essential when loading content from compressed archives and buffer persistence status) The manner in which this functionality is implemented has a further side benefit. On all platforms that support runahead, for any core that sets need_fullpath = false another copy of the content data buffer must be created and stored in case the user toggles second instance runahead on while the core is running. Now that we have a mechanism for maintaining persistent content data buffers, we just enforce persistence whenever runahead is supported so the initial frontend-loaded content buffer can be used directly by the second instance core, with no duplication. NOTE: A couple of cores are already implementing this new feature. Unfortunately, not every emulator will be able to directly use the persistent buffer without copying it first into a temporary buffer. Some emulators like writing back to the ROM buffer in-memory (such as adding speedhacks or other alterations). In instances where this happens, we unfortunately cannot just directly set a pointer to the persistent buffer and need to still have a memory buffer copy.
New CRT SwitchRes implementation
[previewyoutube=RaYV-96e1yM;full][/previewyoutube] Check out this article for all the details here.
What is new?
- Better modeline generation.
- Faster and more stable switching.
- Windows dynamic resolutions. No longer limited to locked resolutions/Hz. Timings are modified on-the-fly (ATI only)
- ( Stable resolution restoration. (If RetroArch should crash you will be stuck in the previous resolution that RetroArch was in)
- Improved super resolutions with Integer scaling.
- Fixed primary monitor issue. You no longer have you use your primary monitor only.
- Improved monitor indexing. Allowing for multi-monitor support.
- Low and High resolution options for the RetroArch menu.
- (RawInput support for absolute mice devices (Lightguns, to name a few) had issues with resolution changes, this has been fixed co-ordinates are reassigned after a resolution change.
- New CRT SwitchRes Menu options to remove the need to edit the switchres.ini.
- Switchres.ini can be used to set some advanced options.
- Monitor profiles these allow you to change the modeline generation profile to fit many TV/monitors. (Some available from the CRT SwitchRes menu)
- Custom CRT ranges this allows you to set custom monitor profiles. This can help with uncommon TV/Monitors and geometry issues.
Changelog
1.9.5
- ALSATHREAD: Make alsathread default for all ALSA devices with threads
- ARCHIVE: Fix loading of archived content with file names containing # characters
- CHEEVOS: Upgrade to rcheevos 10.1
- CHEEVOS: Challenge indicators
- CHEEVOS: Group achievements by category in quick menu
- CHEEVOS: Relabel Start Active with Encore Mode
- D3D10: Window title should now update
- D3D11: Window title should now update
- D3D11: Allow fastforward in fullscreen
- D3D12: Window title should now update
- D3D12: Allow fastforward in fullscreen
- CRT/SWITCHRES: New implementation
- FONTS: Improve message wrapping with CJK languages
- FONTS: Fix garbled characters when converting encodings
- INPUT: Allow the 8 analog stick directions to be used as keys for core keyboard mappings
- LIBRETRO: Add API extension for setting need_fullpath based on content file extension and to request persistent frontend content data buffers
- MENU/SEARCH: Add enhanced search functionality to the Manage Cores menu
- OPENDINGUX: Fix black screens when triggering gfx driver initialisation via menu actions
- UNIX: Get better battery stats on sysfs nodes
- VIDEO: Extend Frame Delay range to 19 to accommodate PAL land too
- WIFI/LAKKA: Add nmcli to wifi drivers
- WIFI/LAKKA: Add wifi configuration menu
- X11: fix fullscreen when swapping monitors/resolution
Lakka 3.1 has just been released! To learn more, check out this article on our sister site Lakka.tv here. This version is based on the latest RetroArch version, 1.9.4. We have the next version of RetroArch (v1.9.5) scheduled for next Saturday (12/6/2021). You can always view our roadmap for Lakka and RetroArch here.
If youd like to learn more about upcoming releases, please consult our roadmap here. The next version of Lakka (with an updated RetroArch 1.9.4 version) is scheduled to be released a week from today.
Remember that this project exists for the benefit of our users, and that we wouldnt 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 youd like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!
Release notes
Be sure to also read our Libretro Cores Progress Report lots of work has gone into all of the various cores that are maintained (either by us or elsewhere), and itd be a shame if the work goes unnoticed. Read it here. There were some issues with RetroArch on PlayStation TV devices which should now be resolved. Additionally, its possible to run RetroArch at 720p now on a PSTV if you use the Sharpscale plugin. Just like in version 1.9.3, we have been going back and improving code in RetroArch to improve file I/O performance, something that is very important for systems suffering from slow disk storage. Most game consoles would fall in this boat because all file I/O tends to be typically unbuffered on homebrew SDKs. In the process, we have discovered some parts where RetroArch was being inefficient when loading files from compressed files (such as .zip or .7z files). In the past, it would extract this file first to a temporary directory on the disk, and then it would read from this file and load it into the RAM buffer. Now we load it into the RAM buffer directly from the compressed file without first extracting it to disk. As if that wasnt bad enough, on any platform that supports runahead, we would have to create another copy even when runahead is disabled. And if cheevos are enabled, thats another copy. All things combined, it would take 128MB of RAM to load one 32MB GBA ROM. As of 1.9.4, this RAM usage is severely cut down for cores that set need_fullpath to false. PlayStation2 users get a new core, prboom (a Doom 1/2 game engine). Thanks to a new and improved toolchain for PS2, this runs at a very impressive framerate, targeting 60 frames per second with stock settings. There might be some minor dips to the 50s in the busier scenes but nothing too serious, and disabling settings like Wiggle Geometry Fix might help alleviate that.
Highlights
Prevent unnecessary extraction (to disk) of compressed content files
In previous versions, when loading content from compressed files, RetroArch always extracts the archive to a temporary file even when cores specify need_fullpath = false. This is incorrect behaviour. If a core does not explicitly need to load a file from disk via some internal mechanism, the frontend should merely provide it with a data buffer. RetroArch was doing this, but in absurd fashion, i.e.:
- Content is extracted to a temporary file on disk
- Temporary file is loaded into a memory buffer and passed to the core
- Temporary file is deleted when core is unloaded
- This is a huge unnecessary performance overhead, and it causes significant unnecessary wear and tear on flash storage devices
Option to select between touched elements and physical controller inputs when showing inputs on overlays
The Show Inputs on Overlay option was previously broken when using remaps: the mapped button is highlighted rather than the pressed button, which is confusing for users and at odds with every other application (in existence) that has on-screen touch controls. 1.9.4 remedies the situation by changing the Show Inputs on Overlay option from a bool to an enum, with the following settings:
- OFF: No inputs will be highlighted
- Touched: The overlay element that is touched/clicked will be highlighted, regardless of which RetroPad button it corresponds to (default setting on mobile platforms)
- Physical (Controller): Actual inputs passed through to the core will be highlighted (including remaps). This is the default setting on non-mobile platforms, and can be used by streamers, speedrunners and suchlike to show the actual controls they are using
Changelog
1.9.4
- CHEEVOS: update rcheevos to v10.0.0
- CONTENT LOADING/FILE IO: Prevent unnecessary extraction (to disk) of compressed content files when need_fullpath is false
- CORE INFO/FILE IO: Enable core info cache by default now for all platforms
- CORE INFO/REGRESSION FIX: Fix regression caused by core info file caching Downloads was no longer showing up in Load Content
- FILE IO/COMPRESSED: Ability to load content inside ZIP files directly into RAM
- INPUT/OVERLAYS: Add option to select between touched elements and physical controller inputs when showing inputs on overlays
- INPUT REMAPPING/OVERLAYS: Prevent duplicate inputs when using remaps with input overlays
- LAKKA: Add brightness restore hook
- LOCALIZATION: Fetch translations from Crowdin
- MENU/OZONE: Added simple playlist entry enumeration
- MENU/XMB: Fix display of Maximum Users menu entry dropdown list
- PS3/PSL1GHT: Joypad driver works again
- PSTV: Fix Vita input driver for PSTV
- PSTV: Support for 720p on PSTV when using Unlock framebuffer in Sharpscale plugin
- RPNG: Fix some memory corruption if processing broken input PNG file
- SECURITY: Fix CVE-2021-28927
The Steam version may differ from the Normal version. The following changes are written for general use. The RetroArch Playtest version will be updated at a later time today. RetroArch 1.9.3 has just been released. Grab it here: http://retroarch.com/?page=platforms Remember that this project exists for the benefit of our users, and that we wouldnt 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 youd like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!
Release notes
We have a roadmap now (see here), and you can expect more frequent releases from this point on. We are aiming for a new version every two weeks. We were initially aiming to have the Lakka version ready to be released concurrently with this version, but had to postpone it. We are definitely aiming to have a new Lakka version ready with future releases of RetroArch though. We have implemented core info file caching and enabled this by default for the console platforms. This should lead to significantly reduced startup times and content loading after the first initial startup. The first time RetroArch starts up (and/or new core info files are added), it will need to build/rebuild the cache. After that though, it only has one cached file it has to load at startup instead of having to sequentially read every single core info file. This used to take a very long time on platforms with slow disk I/O (such as game consoles). PSP/Vita and 3DS users in particular will definitely notice these improvements. WiiU users get a couple of new cores, such as bk (the Oberon RISC emu), xRick (the Rick Dangerous game engine reimplementation), and REminiscence (the Flashback game engine reimplementation).
Highlights
Core info file caching
It seems that on platforms with slow disk I/O (mostly all game consoles), it takes the same amount of time to load a file no matter how large it is (within reason) so ~300 ms to load one info file, and the same ~300 ms to load everything stored in one cache file. Loading ~80 info files takes forever and basically constitutes almost all the startup time on these systems. This reality is what has led to a new feature called core info file cache. An anecdotal report from the person who implemented this previously without core info file caching t took 29 seconds just to boot XMB. With the core info file cache, it only takes 12 seconds. On RGUI, it boots in 3 seconds or less. Significant reductions to be sure. Things you should know about the core info file caching
- Core info cache can now be enabled/disabled on all platforms via a new Settings > Core > Cache Core Info Files option
- Core info cache file are stored as core_info.cache
- The core info cache file is compressed (rzip) to further reduce disk I/O
- The presence of a core_info.refresh file in the core info directory will force a one-time refresh of the info cache. This file is generated automatically when toggling on the Cache Core Info Files option, and we will also add it to core info file packaging such that updating info files (either manually or via the online updater) will force a refresh
- The core info cache no longer contains core is locked and firmware missing data fields; these are dynamic properties that must be determined at runtime
- The core is locked status is now determined on core info initialisation by parsing the core directory listing, rather than by performing individual lock file exists checks. This minimises file I/O, and greatly improves performance on devices with slow storage
- While parsing the core info cache file, we now avoid unnecessary strdup()s when adding entries to the resultant cache list
(Static Platforms) Add option to not restart RetroArch when launching content with the currently loaded core
Before, whenever content was loaded using a static build of RetroArch (i.e. most of the console ports), a new process is forked. This basically means that RetroArch in its entirety is reloaded, which can be quite slow. This kind of reload is required when changing cores (since each is a stand-alone application) but if the core we want to launch is already loaded, then its wasted effort. 1.9.3 adds a new Always Reload Core on Run Content option under Settings > Cores on statically built platforms. When enabled (by default on consoles), the current existing behaviour is maintained. When disabled, launching content with a core that is already loaded will skip the process fork/reinitialisation and just load the content directly. On an o3DS testing setup, this reduces content load times by 60%-70%, depending upon the core. Important caveats:
- There is a significant annoyance in the way that static builds work. If you run the top level RetroArch app, then everything works as you would expect but if you run a core directly (e.g. a specific core cia on 3DS), RetroArch doesnt actually have any way of knowing which core is currently loaded. It assumes you are running the last loaded core which may not be the case. If it isnt, the first run content operation with Always Reload Core on Run Content disabled will cause an unnecessary fork (but the next run content will behave correctly). Unfortunately there is nothing we can do about this
Changelog
1.9.3
- 3DS: Disable menu screensaver animations in XMB/GLUI
- COMMAND: Initialize netcmd->cmd_source_len before recvfrom()
- CONTENT LOADING/STATICALLY LINKED: Ensure Always Reload Core on Run Content setting is applied when loading content via the file browser
- CONTENT LOADING/EMSCRIPTEN: Fix content loading via file browser on platforms with broken core handling (i.e. emscripten)
- CORE INFO: Skip whitespace when writing compressed core info cache files
- CORE INFO/FILE IO: Core Info cache; significant file I/O performance improvements on systems with slow disk file I/O
- CORE INFO/FILE IO: Enable core info cache by default on all console platforms
- FREEBSD: FreeBSD build fix
- LAKKA: Support for tweaking CPU governors/scaling policies
- LAKKA: This adds managed policies and settings to store them and reload them at startup
- LIBRETRO API: Add API extension for cores to override frontend fast-forward state
- MENU/RGUI: Fix saving of config files/overrides when Lock Menu Aspect Ratio is enabled
- SHADERS: Fix Auto-Shader Delay functionality
- UWP/D3D11: Disable mipmap generation
- UWP/XBOX: Add Force 4K resolution option (Force the resolution to the fullscreen size on Xbox, if set to 0, a fixed value of 3840 x 2160 will be used)
Watch this great presentation by Microsoft Azure covering (among other things) RetroArch's AI Translation capabilities [previewyoutube=atga5uMsrYY;full][/previewyoutube]
AI Service
Welcome to the future! Sometime ago, a #RetroArch bounty got posted proposing OCR (Optical Character Recognition) and Text To Speech services being added to RetroArch. Some months later, and here we are a bounty hunter valiantly took on the challenge and there is now a fully fledged AI Service up and running that works seamlessly with #RetroArch! You use the AI Service like this you enable the AI Service (should be enabled by default), you then setup the server URL (could be a local network address if you have the server up and running in your own network, or a public IP/URL in case youre going through a service). After that, you only need to bind a button or key to the so-called AI Service action. You can bind this key by going to Settings Input Hotkeys. In this video, you can see each of the two modes that the AI Service currently is capable of doing Speech Mode Upon pressing the AI Service button, a quick scan is done of the text, and the recognized text is then translated to speech. You can press the AI Service button at any time and it will try to process the current snapshot of the screen it made. This mode is non-interruptable, meaning the game will continue running when you hit this button, and the output speech will take as long as it takes for the server to respond to your query and pipe the sound to RetroArch. Image Mode In image mode, it tries to replace the text onscreen with the output text. For instance, in the video you see above, the game is played in Japanese, so when we hit the AI Service button, it tries to replace the Japanese text with English translated text. This mode is interruptable this means that when you hit the AI Service button, it pauses the game and shows you an image with the replacement text UNTIL you hit either the AI Service hotkey or the Pause hotkey again, then it will continue playing. We encourage everybody that wants to submit feedback to us on this amazing revolutionary feature to go to our Discord channel and in specific the #retroarch-ai channel. Wed love to hear your feedback and wed like to develop this feature further, so your input and feedback is not only appreciated but necessary! [previewyoutube=wJvbxurnzPg;full][/previewyoutube]
Improvements to the Libretro port
Some features that were left over from standalone until now got implemented in the Libretro port:
- LowPass Filter : Its available from the core options, I know something similar is available from RetroArchs DSP plugins but you might want to check out this one too. Technically its a 2x resonant lowpass filter which is set-up to mimic the amp section found on most PCBs. For a good 95% of games, it makes the sound a bit more rich/bassy, and for the remaining 5% let us know so that we can fix them. Youll probably never want to turn this option off after getting used to how nice it sounds.
- Cheats : They have been supported through the Libretro API for some time, but now you can also directly use a cheat.dat from MAME, more information about this here.
- Macros : First, some words about macros, the reason macros from standalone arent supported is because there can be dozens of them for a single player on a single game, however you currently cant map that many actions with the Libretro API (and this is not only a problem for macros, handling service menu when it involves several buttons can be tricky too) because all inputs need to be assigned to a button from the get go. In the past, there was some workaround for this through core options, but it had its own share of issues so it was removed later. I recently decided to re-implement support for a select few macros, for now it only includes 3xPunchs and 3xKicks on SF-like games but implementing a few more could be done if I can get some help sorting out the ones thatll be the most useful so that theyll fit within the RetroPad model.
Available cores updated to latest version
- PCSX ReArmed
- Genesis Plus GX
- Genesis Plus GX Wide
- mGBA Stealla
- Kronos
- Mupen64Plus Next
- Mesen
- Mesen S
- Sameboy
The Steam version may differ from the Normal version. The following changes are written for general use. [strike]The RetroArch Playtest version will be updated at a later time today.[/strike]
Remember that this project exists for the benefit of our users, and that we wouldnt 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 youd 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!
http://retroarch.com/index.php?page=donate
https://www.patreon.com/libretro
https://github.com/sponsors/libretro
https://retroarch.creator-spring.com/
https://www.youtube.com/channel/UCjAimkVp-G_o6HK5MXujk9A/join
Release notes
PlayStation Vita users will be happy to learn that the issues with gpSP (Game Boy Advance emulator) are now resolved, and it should work as reliably as it did before 1.9.1 (and perhaps even better now thanks to increased performance). We hope you get a lot of mileage out of this core as a lot of work and effort went into it to really optimize the performance of this core over the past few months! Text To Speech support is now enabled for the macOS Universal build. You can access this by going to Settings -> Accessibility and enabling Accessibility Enable. Some nice changes under the hood that are more technical in nature: config file loading performance has been improved immeasurably which should help out with initial startup times of RetroArch, loading config files as well as loading shader presets. Core info file loading itself has also seen many performance improvements. We are aware that despite all this, loading all the assets in the more feature-rich menus like MaterialUI/XMB/Ozone can still take a long time on systems encumbered by slow disk I/O, but we have some special things in store for future versions that should increase asset loading performance significantly. There is now multi soft-patching file support. We will explain this in more detail below.
Highlights
Multi soft-patching support
If an IPS/BPS/UPS patch is found, will replace the last character in the filename with a counter and loop until another patch is found (in any format). Example matching filenames:
Contra (Japan).nes
Contra (Japan).ips # Applied first
Contra (Japan).ips1 # Applied second
Contra (Japan).ups2 # Applied third
Notice that if one filename breaks the loop, the following patches wont be applied too. e.g.:
Contra (Japan).nes
Contra (Japan).ips # applied
Contra (Japan) (Translation).ips1 # Partial name match, not applied
Contra (Japan).ups3 # Not applied either
Enhanced Load Content file browser search functionality
1.9.2 adds the same search filter functionality that currently exists for playlists to the file browser when selecting Load Content. This means:
- When navigating the filesystem via the file browser, the user can press RetroPad X (or /, etc.), and enter a search term
- This becomes a filter all matching entries will be displayed
- The user can then perform another search to further refine the results. Up to 8 filters may be stacked in this fashion
- Pressing cancel clears the last entered filter
- Entering a search term consisting of a single Latin alphabet character will now always jump to the first entry whose first character matches i.e. we no longer apply search filters in this case, since a single alphabet character filter is not useful. This means single character searches can be used for fast alphabet navigation
- When searching file browser lists, the utility entries (e.g. Parent Directory) are ignored, since they have no bearing on the actual list content (i.e. searching for p will now jump to the first p file previously, it would always jump to Parent Directory)
- When performing non-filter searches, the entry labels used in each comparison now exactly match what is printed on screen by the menu driver. Previously, raw file_list values were used, which are often the same, but not always (e.g. in a number of cases, this is the difference between searching against full file paths vs. path basenames, which can produce erroneous results)
Optional menu screensaver animations
[previewyoutube=uua1M0d2b18;full][/previewyoutube] At present, when using XMB/GLUI/Ozone, enabling the menu screensaver will cause the screen to be blanked when the screensaver timeout has elapsed. 1.9.2 adds three optional animations that may be displayed instead these can be selected via the new Settings > User Interface > Menu Screensaver Animation entry; animation speed may be adjusted via Settings > User Interface > Menu Screensaver Animation Speed. The options are as follows: OFF: Screen will be blanked Snow: [previewyoutube=stqh6Cqp5gc;full][/previewyoutube] Starfield: [previewyoutube=g695Tgxvr3g;full][/previewyoutube] Vortex: [previewyoutube=upd3I8uzGfU;full][/previewyoutube] These effects are rendered using font glyphs; the performance overheads of all the animations are therefore low. This should also give you some indication as to how we are planning to reduce file I/O overhead across the board when it comes to asset loading, but that is something that we will be unveiling for a future release! When using GLUI/Ozone, the screensaver will be tinted (somewhat) according to the current menu colour theme (XMB uses a fixed screensaver colour, since it does not have a proper colour theme implementation).
OpenDingux beta: Add 50Hz support
All devices running OpenDingux Beta have native support for both 60 Hz and 50 Hz display modes. 1.9.2 enables 50 Hz functionality in RetroArch. The refresh rate can be toggled between 60 Hz and 50 Hz via the Settings > Video > Output > Vertical Refresh Rate menu entry; the value can be saved on a per-core/content directory/game basis via regular config overrides. This makes OpenDingux devices (running the Beta OS) pretty much the only affordable/easily available handhelds that can run both NTSC and PAL content smoothly. The VICE core in particular benefits enormously from this addition.
OpenDingux beta: Fix IPU scaling when running GB/GBC/GG/NGP-resolution content
Further testing of the OpenDingux Beta port has revealed several more resolutions which are mishandled by the IPU hardware scaler. 1.9.2 updates the resolution blacklists accordingly, fixing scaling for the following content:
- Gameboy (+ Color)/Game Gear at native, x2 and x3 resolutions
- Neo Geo Pocket (+ Color) at x2 resolution
Changelog
1.9.2
- 3DS: Enable graphics widgets / overlays
- 3DS: Load texture images as BGR colors
- 3DS: Change default asset directory
- CHEEVOS: Allow rcheevos_patch_address to be called on game without achievements
- CHEEVOS: Update achievement memory maps (add Supervision)
- CONFIG/FILE: Use hash map to optimise key/value lookups
- CORE INFO: Performance optimisations + code clean-ups/refactors
- CRT/SWITCHRES: Fixed CRTSwitchRes framebuffer bug
- DISCORD/RPC: Fix regression
- DRM: set the correct video mode
- FASTFORWARD: Enforce minimum fastforward_ratio of 1.0
- FONTS/FREETYPE/STB_UNICODE/BITMAPFONT: Prevent texture bleed when rendering text at non-integer scales
- INPUT: Ensure that retro_set_controller_port_device is called when updating Max Users
- INPUT/XEGL/MOUSE: Fix xegl_ctx.c mouse activation
- INPUT/SDL: Fix crash in SDL input driver when analogs are bound
- INPUT/POINTER: Add scaling to pointer input
- INPUT REMAPPING: Fix regression on loading file
- INPUT REMAPPING: Fix regression where disabling input remapping would disable input
- IOS: Disable system button gestures on iOS 14
- IOS: Prevent potential crash on controller connect randomly would get a crash when connecting a game controller while RA was running
- LAKKA: Add menu for time zone setting
- LOGGING: RARCH_LOG_V checking for verbosity level is not necessary and can cause issues; removed said check.
- LOGGING: Silence inappropriate cheatfile logging
- IOS/MAC: Add CPU VFP unit detection for Darwin
- MAC: Swallow escape key being pressed would previously make the game toggle between fullscreen and windowed
- MAC: Intel and ARM64 timer change proposal.
- MAC/ARM64: run_fast_mode disabled for 64 bits invalid instructions.
- MAC/OPENGL: Fix codesigning issue
- MAC/UNIVERSAL: Add TTS translation service support.
- MENU: Add optional menu screensaver
- MENU: Add search filter support to cheats and overlays file browser menus
- MENU/FILEBROWSER: Enhanced Load Content file browser search functionality
- MENU/INPUT: Block accidental diagonals in menu navigation
- MENU/RGUI: Add option to disable menu transparency
- MENU/RGUI: Fix display of Video > Scaling menu when Lock Menu Aspect Ratio is enabled
- MENU/MATERIALUI: Add icon to Turbo Fire menu entry
- MENU/OZONE: Ozone Dracula theme
- OPENDINGUX/BETA: Fix IPU scaling when running GBA-resolution content
- OPENDINGUX/BETA: Add 50Hz support
- OPENDINGUX: Enable SaveRAM Autosave Interval by default
- PATCHES: Added multi-softpatching support + OSD messages for patches
- RHMAP: Track the complete string in rhmap
- VITA: Align VM block size to 1MB should fix one of the issues with gpSP
- WINDOWS/GDI: Fix non-ASCII text rendering
- XEGL: Fix mouse not working when using OpenGLES with X11
Reah here as well: https://www.libretro.com/index.php/libretro-cores-updates-pcsx2-alpha-release-for-windows-and-more/
Following updates may not cover Steam version. You can still use standalone version over Steam.
PCSX2 DLC not planned at this moment.
PCSX2 Alpha core available for Windows now!
https://www.youtube.com/watch?v=-EnWeztB8wI Today were releasing an alpha version of the PCSX2 libretro core on the buildbot. Its available for Windows only right now, but the same core has been tested to work on Xbox One/Series systems as well. Important things to know
- Create the following directory in your system directory pcsx2. You can put all the asset files there from your regular PCSX2 install. See pic below for an example.
You need a working BIOS inside /pcsx2/bios. PCSX2, unlike Play!, will not work without a real BIOS.
- Its still an alpha version. Things are rough around the edges. Expect bugs and things to be incomplete.
- Theres a working OpenGL renderer and a Direct3D11 renderer option. Direct3D 11 renderer can be faster than OpenGL but also has less features. Pick whichever works best for you. On Xbox you will only be able to use Direct3D11 anyways.
- This core uses the x86_64 dynarec which was added to PCSX2 a year ago. It is still less compatible than the 32bit x86 dynarec in PCSX2, so keep that in mind. Its for similar reasons that the software renderer right now wont work (its not compatible yet with x86_64, not in upstream either).
- Theres a bug that can happen right now upon closing content or exiting RetroArch with the PCSX2 core on Windows the RetroArch process might not completely cleanly shut itself off and you might still be able to see a 0% CPU process remaining in the Task Manager. We have not been able to figure out how to fix that yet as the PCSX2 codebase is a definite case of here be dragons, but for now when this happens, you can just bring up the Task Manager and close it manually. It shouldnt have a real detriment on performance but it is of course far from ideal and hopefully something we can fix soon with the help of some contributors. We have found this happens the most with the Direct3D 11 renderers.
- Switching resolution at runtime right now can be a bit unstable, so does switching fullscreen resolution. We might just make resolution switching require a restart since this tends to be too unstable for now.
Play! (experimental PlayStation2 emulator) is back on the buildbot!
The Play! libretro core is back on our buildbot! It took some time for this to be readded to our modern new buildbot but here it is! Available right now for: Android (AArch64/ARMv7/x86), macOS (Intel), Linux (32bit/64bit), and Windows (32bit/64bit). Update policy for this core Upstream. Updates are pulled straight from the upstream repository.
DuckStation/SwanStation core updated
The DuckStation/SwanStation core has been updated to a build from a week ago. Update policy for this core This will remain a shallow fork and attempts are being made to make the surface area for patches small so that we can easily pull in updates. Some new contributors have jumped onboard and they want to ensure this core remains updated.
Mainline MAME available for iOS11 and up/tvOS !
The mainline MAME core is now available for iOS and tvOS users! It is also available for Mac Intel x64 users, and we hope that we can make it available for ARM Mac users soon as well. Also important to note we will be updating to version 0.330 soon. Update policy for this core This is pretty much a shallow fork. It just attempts to pull in the latest changes from upstream without making many changes.
gpSP (Game Boy Advance emulator)
Many changes have been made under the hood to significantly increase performance of gpSP. One of the big changes that led to at least a 5-6% performance improvement was the removal of libco (a library used for cooperative threading). 3DS users especially should be in for a treat with gpSP, but realistically everyone benefits across the board, whether youre on an ARM or x86 system. We can quite comfortably state you will be hard pressed to find a better and more well performing version of this emulator anywhere else right now.
- Support for generic MIPS (including Dingux)
- Built-in BIOS that ships internally and requires no external files/dependencies
- Removal of libco (5-6% perf or so) and some performance fixes for x86/arm/mips (for perf)
- Fixed the x86 dynarec and the ARM dynarec, that were pretty much broken. Good speedups (or power savings on portable devices)
Picodrive (Sega Mega Drive/Master System/Sega CD/32X emulator)
This has received many speed improvements and enhancements courtesy of irixx, 32X support has seen plenty of improvements, and the results speak for themselves. Works wonderfully on OpenDingux-based devices and PS Vita, some of the lower end systems out there. A separate blog article might be written about all the changes soon. Update policy for this core Hard fork, self-maintained
FCEUmm (Nintendo Entertainment System emulator)
Some important new updates from New Rising Sun that adds more mapper support (PR notes are his): Add features to mapper 332/BMC-WS:
- implement additional outer bank bit to support multicarts twice as large as WS-1001 (Super 40-in-1)
- implement CNROM-128/-256 mode using two or four inner banks switched via CNROM-like latch at CPU $8000-$FFFF
- implement solder pad/DIP switch change via soft-reset, resulting in different multicart menus
- soft-resetting resets to menu as on real hardware, not just the currently-selected game.
- Tested with the HH-xxx series of multicarts, some of which available on LIBG, as well as the previously-supported WS-1001.
bSNES HD Beta/bsnes mainline available for iOS/tvOS/ARM64 Mac
Widescreen SNES emulation on your iDevice and ARM Mac is now available! Update policy for this core Upstream, gets built straight from DerKouns upstream repository.
Genesis Plus GX Wide available for iOS/tvoS/ARM64 Mac
Another welcome addition to the Apple fold the widescreen-enhanced version of Genesis Plus GX! For more on that, read this article here. Update policy for this core Hard fork, as it makes many sweeping changes to Genesis Plus GX to achieve widescreen support, which would make resyncing with upstream very hard to do.
Other cores which have received updates
Here is a list of other cores that have received updates, but for which we cannot post any changelogs due to lack of time. We might go into some more of the changes here later on. Beetle PSX FB Neo MAME 2003 Plus VICE P-UAE (Amiga emulator
Written by jdgleaver This is a followup article to our main release blog post, which can be read here. Official support for OpenDingux devices such as the RG350M, RG280V and GCW-Zero was added last December; a full round-up of features and highlights can be found in the original announcement here. Version 1.9.1 represents the first stable release for this platform. As an integrated member of the RetroArch family, the OpenDingux port benefits from all frontend development work but a major addition for this release is a separate, optimised build for OpenDingux Beta (link here). This is an updated, modern firmware (compatible with many devices) which offers significantly improved performance. RetroArch is one of the first applications on OpenDingux Beta to enable configuration of the hardware IPU (Image Processing Unit), with menu-based control of aspect ratio/integer scaling and image filtering method (available on Beta releases after 16/03/2021). Users who prefer to remain on stable operating systems need not fear, however: RetroArch will always be optimised for both beta and stock firmwares. Aside from RetroArch itself, expanding the library of available cores has been a major focus of this release. Launching initially with 20 hand-picked cores, a further seven have been added to the list:
- Mr.Boom
- O2EM (Magnavox Odyssey2 / Phillips Videopac+)
- Potator (Watara Supervision)
- ProSystem (Atari 7800)
- ScummVM (Note: High resolution games unsupported)
- Stella 2014 (Atari 2600)
- TIC-80
All of these cores have excellent performance on OpenDingux devices (with the mild exception of TIC-80, which can be a demanding system on many platforms yet a number of popular carts run full speed). It should also be noted that when building cores for OpenDingux, we dont just hit compile and call it a day. This is a curated port, and care is taken to clean up code and add features wherever possible and these additions improve the user experience on *all* platforms. For example:
O2EM
- The model and region of the emulated console (Odyssey 2, Videopac+ G7400) can now be specified via core options
- A volume control and optional low pass audio filter have been added, along with audio fixes/performance improvements
- An Interframe Blending option has been added, used to simulate CRT ghosting effects
- A Crop Overscan option has been added
- Gamepad inputs can now be swapped (required for a number of games), and numeric keys have been mapped to gamepad buttons
- The rendering of the virtual keyboard has been optimised, reducing performance overheads by 44%-63%
- Save states have been fixed
Potator
- This newly-added core was ported specifically for use on OpenDingux devices!
ProSystem
- 16 bit colour depth support has been added for improved rendering performance
- An optional low pass audio filter has been added, along with general audio quality improvements
- A dual stick controller mode has been added for games such as Robotron: 2084
Stella 2014
- 16 bit colour depth support has been added for improved rendering performance
- An Interframe Blending option has been added, used to simulate CRT ghosting effects and remove screen flicker
- An optional low pass audio filter has been added
- Full analog paddle support is now available
TIC-80
- Comprehensive support for mouse input via gamepad has been added
The Steam version may differ from the Normal version. The following changes are written for general use. Since PCSX2 Core is WIP, it does not exist in Buildbot for now. The Steam DLC version is not on the agenda now. You can use Play! Core from Buildbot or build and use PCSX2 from source code. Those who have problems build from the source can write to me from Steam(id/Gadsby_/) or Discord(gadsby#6752), I can only share the x64 version. Because its core is WIP, it may not be ready for end user use. [strike]The RetroArch Playtest version will be updated at a later time today.[/strike]
Remember that this project exists for the benefit of our users, and that we wouldnt 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 youd 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!
http://retroarch.com/index.php?page=donate
https://www.patreon.com/libretro
https://github.com/sponsors/libretro
https://retroarch.creator-spring.com/
https://www.youtube.com/channel/UCjAimkVp-G_o6HK5MXujk9A/join
RetroArch back in action!
Today marks an important day for our project. We consider the migration to the new infrastructure to be almost 95% done. We have left the old infrastructure behind, it is done and dusted and a thing of the past.
From now on, you can expect periodic stable releases again for all platforms. Expect our project to be hitting on all cylinders from this point on!
One blog post is not enough to go through all the milestones that have been reached, so expect many followup blog posts in addition to this. In this blog post instead we will try our best to summarize most of the highlights.
What remains to be done:
- Some cores will still need to be added (mainly cores that require compilation with CMake for iOS)
- Windows binaries right now are still unsigned and not codesigned. We have ordered an Extended Validation code signing certificate which will allow our Windows binaries in the future to pass through SmartScreen with no issue. This will cost us a pretty penny each year but we consider the additional cost worth it for our users. We hope that by the time the next stable rolls out of the door, these binaries will all be signed, as will the nightlies.
- Because of this, be aware that while installing RetroArch on Windows with the Installer, you might be greeted by a SmartScreen filter that the application is unsafe. You can safely ignore this.
Release notes
There is no PCSX ReARMed core available for the Switch port as of yet. This will be added later. The Direct3D 11 video driver now defaults to the flip model. There will be a setting added later that will make it possible to switch between flip model and blit model. Flip model is supposed to be more performant and allow for better performance in windowed/borderless fullscreen modes. As mentioned earlier, Windows installers/executablers are currently not codesigned, so expect SmartScreen to warn you about them. We hope to be able to fix this as soon as our Extended Validation codesigning certificate is fully operational. There is currently no Windows 95/98 version of RetroArch available, or any of the MSVC2003 cores in fact. Expect these to be added back later.
Some highlights
Overlay improvements: Full position/scaling configuration, automatic scaling, automatic hiding when a controller is connected A new high quality default gamepad overlay: neo-retropad(-clear) File browser improvements: most menu entries now (optionally) remember last selected directory/file (load content, shaders, etc.) Support for saving per-directory core options and deleting core option overrides Improvements to input configuration: new drop-down lists, proper menu ordering of input binds, cosmetic clean-ups (basically all of sonninnoss stuff) Option to automatically enable game focus mode when running/resuming content Many new video filters for platforms without shader support RGUI: CJK and Russian language support
Changelog
We cant possibly list everything since it has been such a long time since the last stable. Nevertheless, here is the changelog broken down as best as we could. 1.9.1 3DS: Graphics widgets support 3DS: On error, only init gfx on salamander build. This prevents graphical issues if the gfx is already initialized. Which should always be the case if called from a running core 3DS: Update error applet 3DS: Enable online Core Updater 3DS: Guard threading 3DS: Allow sideways screen rotation 3DS: Enable threading and add a threaded audio driver ANDROID: Implementation of fullscreen over notch function (for Android 9.0 and up) ANDROID: Add Play Store module support. ANDROID: Add option to switch all installed cores to Play Store versions AUDIO: Memalign audio buffers to 64 bytes. This is the most common cache line size, helps with performance. Also fixes issues with platforms like PSP that wrongly assume that malloc returns aligned buffers (to 16bytes). This recently broke the PSP builds AUDIO/ALSA: Fix float format detection AUDIO/JACK: Deinterleave in the process callback. This allows us to avoid the extra copy to the deinterleave buffer and lets us use only a single jack ringbuffer AUDIO/JACK: (Audio/JACK) Fix non-blocking write. Previously we would wait on the condition variable even in the non-blocking case. This improves fast-forward performance massively and brings JACK in line with other backends in that regard AUDIO/XAUDIO2: Fix threaded audio bugs with cores like Dinothawr CONFIG: Add support for saving per-directory core options and deleting core option overrides CONFIG: Enable saving of changed parameters when #include directives are used CONFIG/DIRS: Enable configuration of the directories used for Favorites, History, Images, Music and Video playlists CONFIG/REMAPS: Allow loading core remaps without content CONFIG/OVERRIDES: Fix empty override paths when launching without content CHEATS: Maximum search value corrections CHEEVOS: Generic memory mapping using rcheevos CHEEVOS: Ensure badge textures are released before video driver is deinitialized. Should fix crashes with slang shaders. CHEEVOS: Include achievement runtime state in save states CHEEVOS: Prevent hardcore toggle when emu-handled cheats are active CHEEVOS: Add confirmation submenu to achievements hardcore toggle CHEEVOS: Calculate leaderboard widget spacing based on video resolution CHEEVOS: Show unsupported core message when viewing achievement list for unsupported core CHEEVOS: Allow disabling leaderboard notifications and trackers separately CHEEVOS: Add display widget for active leaderboards CHEEVOS/CORE OPTIONS: Core options blacklist. Disables hardcore mode when certain core options are set CLI: Add option for quitting on close content CONTEXT/DRIVER SWITCHING: Allow context switching from gl to glcore CORE OPTIONS: Add option to reset all core options for current core/content CORE OPTIONS: Add per-folder core options CRT/SWITCHRES: Improvements CRT/SWITCHRES: Low resolution switch bug fix This allows resolutions lower that 32224 like 256224 to work CORE DOWNLOADER: Enhanced core downloader search functionality D3D10: Should now be able to use shaders with hardware-accelerated libretro cores D3D11: Should now be able to use shaders with hardware-accelerated libretro cores D3D11: Skip shader/stock blend when we dont have a texture. This happens if the core calls video_cb with the frame set to null on the first frame, and was causing black screens/driver resets. The ffmpeg core seems to do this. D3D11: Fix shaders with scaled framebuffers D3D11: Add flip model support fallback to blit model for OSes where flip model is not supported (windows 7 and earlier). Will add a menu option later allowing the user to switch inbetween the two D3D12: Should now be able to use shaders with hardware-accelerated libretro cores D3D10/11/12: Increase sprite capacity, we need this so that the hardware rendered menu drivers doesnt glitch out DRM: Fix race condition in drm_surface_set_aspect DRM/KMS: add support for custom HDMI timings / modes DATABASE: Fix crash that could happen when selecting cursor DATABASE/EXPLORE: Fix Prevent segfault when accessing Explore menu EMSCRIPTEN: Only report back one screen pointer for rwebinput, fixes lockup when clicking on an overlay FILEIO/PERFORMANCE: Only attempt to call dir_check_defaults once per runtime session FILEIO/PERFORMANCE/3DS: Increase file buffer size and savestate chunk size. This seems to help with saving large savestates FONTS: Improve handling of Arabic and Persian text FONTS/FREETYPE: Use fontconfig to select fonts if available INPUT: Add hold mode for turbo fire Single Button INPUT MAPPING: Refresh bind list on device type change INPUT MAPPING/REMAPPING: Minor bugfix Remap file browsing starts navigation at input_remapping_directory even if the core-subdir (where saved files go) exists Having remaps for many different cores makes finding the active core files cumbersome, especially because remaps are not compatible between different cores (but maybe for cores emulating the same hardware) IOS: Take out Core Downloader from iOS 9/iOS 11 builds IOS: IOSApp doesnt crash anymore when a file is shared to it INPUT: Keyboard device mapper rework INPUT: New input bind order scan/clear fix INPUT: Duplicate key event blocking additions INPUT: Prevent duplicate key events with hotkeys + keyboard device type INPUT: Keyboard LED driver INPUT/AUTOCONFIG: Allow controllers with no/empty names to work. INPUT/GAME FOCUS: Add option to automatically enable game focus mode when running/resuming content INPUT/HOTKEYS: Hotkey for Close Content / Unload Core INPUT/LIBCEC: Map libcec-daemon keys to RETROK INPUT/X11: Enable keyboard input when mouse cursor is not inside the RetroArch window but window still has focus INPUT/X11: Fix mouse input when mouse is grabbed INPUT/UDEV/RUMBLE: Fix rumble. INPUT/WINDOWS/DINPUT: Simultaneous shift sticky fix INPUT/WINDOWS/DINPUT: Prevent Win-key from opening Start Menu INPUT/WINDOWS/DINPUT: Option for disabling Windows hotkeys INPUT/WINDOWS/DINPUT: Mouse grabbing/clipping with Alt-Tab INPUT/WINDOWS/DINPUT: Mouse grab fixes INPUT/WINDOWS/RAWINPUT: Key position fixes INPUT/WINDOWS/RAWINPUT: Mouse grab fixes INPUT/WINDOWS/RAWINPUT: Prevent outside window mouse clicks when grabbed INPUT/WINDOWS/RAWINPUT: Option for disabling Windows hotkeys INPUT MAPPING/REMAPPING: Major bugfix Remap file having a different device type requires manual intervention after loading for the core to register the type properly JSON: New faster json parser/writer library rjson JSON/RJSON: Replace rapidjson parser/writer in discord-rpc with rjson LIBRETRO: Add API extension for cores to query the number of active inputs provided by the frontend LIBRETRO: Ensure RARCH_CTL_CORE_OPTIONS_LIST_GET returns false if no core options are available LIBRETRO: Add API extension for overriding frontend audio latency LIBRETRO: Add API extension for cores to monitor frontend audio buffer occupancy LINUX: Also show /run/media or /run/media/$USER in drives list LINUX: Adjust brightness according to the limit. Seems like some platforms feature non-standard maximums, but the variable is correclty exported for us to use LOCALIZATION: Add Finnish language LOGS/SHADER: Shader log spam reduction LOGS/CONFIG: Config logging cleanup LOGS/SAVESTATE: Config logging cleanup MAC: Apple Silicon/Mac M1 support MAC: Code signing/notarization MAC: Fix a leak with NSTemporaryDirectory() on ARC (Automatic Reference Counting) code MAC: Support bundle assets extraction on macOS MAC: Universal Metal build for both ARM and Intel Macs MAC/UNIVERSAL: Add CoreAudio3 audio driver for Metal Universal build MAC/IOS: Only extract assets once on first install MENU: Add L2 + R2 menu toggle gamepad combo MENU: Menu text improvements; clarifications, consistency, text mistakes, MENU: Tweak menu scroll initial hold delays MENU: Restrict menu acceleration to navigation buttons MENU: Add Menu Driver setting to User Interface MENU: Relocate Menu Scroll settings. MENU: Separate Turbo Fire menu. MENU: Dropdown menu for Custom Aspect Ratio setting. MENU: Reorder Mouse Index next to Device Index MENU: Submenu for Device Index/Mouse Index MENU: Reorganize User Interface menu MENU: Add Remove DSP Plugin menu entry MENU: Hide Auto-Shader Delay menu setting when shaders are unavailable MENU/ANIMATIONS: Fix non-smooth text ticker + reduce line ticker code duplication MENU/ANIMATIONS/OZONE: Add cursor wiggle animation MENU/ANIMATIONS/OZONE: Implement wiggling for main menu when wrap-around is disabled MENU/NOTIFICATIONS: On-Screen Notifications menu clean-ups MENU/NOTIFICATIONS: Add option to show/hide Refresh Rate notification MENU/FILEBROWSER: Start auto-selecting last used path for more file browser menu entries MENU/INPUT: Input port label adjustments MENU/INPUT/XMB: Proper control port icons MENU/INPUT/OZONE: Proper control port icons MENU/QUICK MENU: Add remap clearing ability under Quick Menu controls MENU/QUICK MENU: Cap State Slot drop-down list to a maximum of 1000 (+Auto) entries MENU: Customizable menu scroll hold delay. MENU/DESKTOP: Fix mouse cursor limited by window range on F5 press MENU/DESKTOP: Add simple shader option MENU/DESKTOP/WINDOWS: Remove broken Update RetroArch functionality for Windows. We want this to not only be system agnostic if we bring it back, but also work outside of the Qt desktop interface MENU/OZONE: New Theme Twilight Zone MENU/RGUI: Add 3:2, 5:3 and 3:2/5:3 (centered) aspects MENU/RGUI/TEXT RENDERING: Add Russian language text support MENU/RGUI/TEXT RENDERING: Add support for CJK punctuation glyphs MIDI/WINMM: Recover from MIDI messages not handled by the device MIDI/WINMM: Fix winmm midi driver hanging on content closing NETWORK: Add READ/WRITE_CORE_MEMORY network commands NETWORK: Fix backwards condition in socket blocking behavior NETWORK/NETPLAY: Attempt IPv4 when IPv6 fails OGA/VIDEO: support for OGS OGA: This keeps the tradition DRM driver along with the OGA one. The probe function skips the driver if the screen is non rotated to fall back to the regular DRM driver. OGA: Fix messages from not disappearing OGA: Implement RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER. This is a faster rendering codepath for software rendered libretro cores that some libretro cores use right now. Video drivers in RetroArch have to explicitly implement this for this codepath to work at runtime. OPENDINGUX: Add/Optimise rumble interface OPENDINGUX: Fix frozen video when enabling fast forward OPENDINGUX/SDL: OSD font clean-up OPENDINGUX/SDL: Enable selection of image interpolation method when using sdl_dingux gfx driver OPENDINGUX/SDL: Enable integer scaling when using the sdl_dingux gfx driver OVERLAYS: Add option to scale overlays automatically (with aspect ratio correction) OVERLAYS: Hide Overlay When Gamepad is Connected. Overlays will be hidden automatically when a gamepad is connected in port 1, and shown again when the gamepad is disconnected. OVERLAYS: New default overlays for mobile (neo-retropad) OVERLAYS: In addition to overlay scale, the user can now set an Overlay Aspect Adjustment factor. Most overlays are designed for 16:9 displays, which means they become stretched/ugly on modern wide aspect phones and suchlike. By changing the Overlay Aspect Adjustment factor, a user can scale the overlay width/height to achieve a uniform appearance regardless of display resolution. OVERLAYS: Since scaling a gamepad overlay can result in buttons being squished too close together (or being pulled too far apart), the user can now adjust the effective spacing of the different halves of an overlay via Overlay Horizontal Separation and Overlay Vertical Separation factors. Overlay Horizontal Separation divides the overlay in two vertically (left/right, at the centre point), and applies a spacing offset (positive or negative) between the UI elements on each side; Overlay Vertical Separation does the same, but the split is horizontal (top/bottom) OVERLAYS/FIX: The Overlay X Offset and Overlay Y Offset options have been fixed, and now work correctly OVERLAYS/FIX: All of the above options (and Overlay Scale) are configured and saved independently for landscape and portrait display orientations so adjusting everything for a nice landscape layout wont break the portrait display OVERLAYS/FIX: When using the Vulkan gfx driver, memory is leaked every time an overlay is freed OVERLAYS/FIX: When threaded video is enabled, loading overlays with no images (i.e. utility-type overlays, where everything is hidden until the screen is touched) can generate segfaults due to improper usage of realloc() OVERLAYS/FIX: When Show Inputs on Overlay is enabled, ASAN reports bit shift errors due to an incorrect range check when handling turbo inputs essentially, there is no upper limit to the considered input id range, which means overlay hotkeys (menu toggle, etc.) are incorrectly treated as having turbo support, causing bit shifts using wildly inappropriate id indices PLAYLISTS/PORTABLE: Fixed first load initialization PS2: Added Multitap support (up to 8 players) PS2: Fix for not recognized digital and other non-standard controllers PS2: Fix Quitting from RA PS2: Add Audio mixer REWIND: Prevent Rewind Frames from being set to 1 incorrectly on load content RUNAHEAD: Add Run-Ahead Toggle hotkey with notifications RBUF/ANIMATIONS: Simplify gfx_animation by switching from dynarray to rbuf RBUF/CORE UPDATER: Replace static entries array with dynamic array via RBUF library RBUF/M3U: Replace static entries array with dynamic array via RBUF library SENSORS: Android (crash-)fixes/improvements + add option to disable sensor input SDL2/VIDEO: Get the SDL2 video driver to work in Wayland/KMS SAVESTATES: Adding savestate garbage collector for autoincrement stavestates. As some issues indicate, theres an issue with the autoincrement save slot feature: slot index will increase and very old saves wont be deleted. This adds support to delete old save states with a user defined save state limit (global). Instead of wrapping around the slot counter it will simply delete the oldest save, since it is simpler. For now theres a limit of one deletion per save, which ensures a user cannot delete many saves by accident if they set the limit too low. SAVESTATES/SAVEFILES: Ensure save file and playlist compression is disabled by default SHADERS: Add option to remember last selected shader preset/shader pass directories SHADERS: Use last selected shader preset directory when changing shaders via previous/next hotkeys SHADERS: Remove Parameters line SHADERS: Shaders fix for duplicate parameters loading bug SHADERS: Fix Crash change num shader passes in UI SHADERS/SLANG: Fix slang shaders with rotation STREAMING/FFMPEG: Add Facebook Game Stream option (for embedded ffmpeg core-enabled RetroArch builds) SWITCH: Fix input bind icons being off by one line SWITCH: Fix audio issues TLS/SSL: Add BearSSL support, as alternative to mbedTLS VIDEO: AddVariable BFI (Black Frame Insertion) VIDEO/DRM GO2: Dynamic resolution support VIDEO FILTERS: Video filter optimisations VIDEO FILTERS: Add several LCD-effect video filters VIDEO FILTERS: Gameboy/Dot_Matrix video filters: Add XRGB8888 support VIDEO FILTERS: Add Normal4x video filter VIDEO FILTERS: Add Upscale_256x-320240 video filter VIDEO FILTERS: Add Upscale1.5x video filter VITA: Disable temporarily VitaGL VITA: Fix bubble name VITA: proper handling of boot params VITA: Default menu scale 1.5x to improve readability WIFI/LAKKA: Add a proper WiFi menu, with Enable/Disable & Disconnect options. This also allows WiFi passwords to be remembered. The underlying tool (connman) allows to store passswords (thats why it auto connects whenever you boot a Lakka device), so we expose this so that the user does not have to re-input the pass when connecting to a saved wifi. WII/HID: Added HID support for HORI mini wired ps4 gamepad WINDOWS: Add support for accelerators to main win32 message loop WINDOWS: Add accelerators for Open (Ctrl+O) and Fullscreen (Alt+Enter) WINDOWS: Fixes some file I/O failures on Windows when paths are longer than 260 characters. WINDOWS: Fix crashing on startup on Windows when using Chinese Simplified language. WINDOWS/XP: The OpenGL 1 video driver is now the default for maximum backwards compatibility upon first startup. Its of course always possible for the user to change this. WINDOWS/MENUBAR: Load accelerators, Localize Win32 menu items to current language, and display shortcut keys WINDOWS/MENUBAR: Add Reinit to Menubar WINDOWS/MSVC: Fix rewind crash on MSVC build when using SSE2 UWP: Dont default to XMB menu by default, default to Ozone instead UWP/VFS: Use Win32 file APIs when possible better file I/O performance WIIU/FILEIO/PERFORMANCE: Faster startup times remove the path_is_valid() call when loading textures WIIU: Fix touchscreen mouse emulation
[olist]
RetroArch
Libretro
Libretro
TBD
Singleplayer Multiplayer Coop
Game News Posts 84
🎹🖱️Keyboard + Mouse
🎮 Full Controller Support
Very Positive
(6993 reviews)
https://www.retroarch.com
https://store.steampowered.com/app/1118310 
RetroArch Linux [466.28 M]Mesen (1205330) Depot [4.85 M]Mesen S (1222634) Depot [3.98 M]mGBA (1227448) Depot [1.09 M]PCSX ReArmed Linux [1.29 M]Mesen Linux Depot [4.4 M]Sameboy Linux [264.61 K]FinalBurn Neo Linux [55.73 M]Mesen S Linux [2.98 M]Mupen64Plus Next Linux Depot [6.93 M]Kronos Linux Depot [9.48 M]Stella Linux Depot [5.79 M]mGBA Linux 1656170 [1.31 M]Genesis Plus GX Linux [12.06 M]
RetroArch is an open source and cross platform frontend/framework for emulators, game engines, video games, media players and other applications.
While it can do many things besides this, it is most widely known for enabling you to run classic games on a wide range of computers and consoles through a slick graphical interface. Settings are also unified so configuration is done once and for all.
In addition to this, you will soon be able to run original game discs (CDs) from RetroArch. We take videogame preservation seriously and want to ensure you can run your originally bought content on modern day PCs.
RetroArch has advanced features like shaders, netplay, rewinding, next-frame response times, runahead, and more!
Maybe there is no rewind in real life, but there is a rewind in RetroArch! You can go back in time and correct your mistakes!
Seeing things as we remembered was our first priority, so with our Shading feature, you can change colors, smooth pixels or recreate your bedroom TV from 1995!
You think the excitement of playing elbow-to-elbow with friends is a bygone memory? No! With our rollback-based, latency-hiding Netplay, your Player 2 is beside you again! Fight the competition not the lag!
- OS: Linux Ubuntu 12.04
- Processor: Intel Pentium 4 and up (CPU with SSE2 instructions required)Memory: 32 MB RAM
- Memory: 32 MB RAM
- Graphics: Any compliant OpenGL 2.x or Direct3D11 GPU. For shaders to work properly. should support at least Shader Model 2.0.
- Storage: 500 MB available space
- OS: Linux Ubuntu 12.04
- Processor: Intel Core series or AMD equivalentMemory: 512 MB RAM
- Memory: 512 MB RAM
- Graphics: Intel: At least Intel HD 4K required for OpenGL. any compliant D3D11 GPU for Direct3D 11. Should support at least Shader Model 3.0 and/or 4.0.
- Storage: 500 MB available space
[ 5901 ]
[ 1903 ]