RetroArch 1.7.7 – Released!

UPDATE May 11, 2019: RetroArch 1.7.7 has been updated again. This latest hotfix release should fix several crashing issues that could happen at startup on the 3DS and WiiU. It should also be a generally more stable release than the previous version. If you already downloaded RetroArch before May 11, be sure to download it again and upgrade your existing version!

RetroArch 1.7.7 has just been released! Grab it here.

If you’d like to show your support, consider donating to us. Check here in order to learn more.

Buildbot/release woes – and a new Patreon goal

On a special note, this release took several days due to our buildbot no longer being up to the task of being able to process all of these builds within a timely manner. We have set out a new Patreon goal that would allow us to significantly upgrade our rented servers so that release cycles don’t have to take 10+ hours anymore. Please consider pledging to our Patreon.

New tiers and perks

We have created new tiers, there is now a $1 tier that gives you a special Discord badge and access to a Patron-only Discord channel. The $5 tier gives you all the perks of the $1 tier including a special subflair on our RetroArch subreddit page. There is now also a $10+ tier, if you become a member of this, you can choose to have your name/nickname inserted into RetroArch’s Credits screen in future versions of the program.

So, we reiterate, the release could have happened this past weekend, but unfortunately, we were met with the stark reality of a buildbot that has long since outgrown its shoes, and we now need to throw better hardware at it in order to make it perform much faster. So we ask for your help in that endeavor.

Highlights

Experimental alpha version of UWP/Xbox One version!


NOTE: This is a pre-alpha version of RetroArch for UWP/Xbox One! Please be aware that the current product is far from polished, and that whatever you see here might not be reflective of the finished product later on. Our sole purpose for releasing this is that Dominater01 had already made a release and we felt it would be remiss not to share this with our users, regardless of its current level of polish.

To learn more about this, read this article here.

Desktop UI – Settings

Ever since its inception, RetroArch users on the desktop have been clamoring for a Desktop UI that would allow them to manipulate all of the settings available in RetroArch. The most often heard complaint was that it was cumbersome to change these settings with a gamepad. Of course, our intention is to have a unified UI that mostly works the same across desktop, game consoles and mobile phones, but a reasonable argument could be made that it was counterintuitive to force a desktop user to go through a gamepad-centric UI.

So, to address these criticisms, a few versions back we debuted a companion Desktop UI that can be invoked by pressing F5. This was step 1. We have made this process a bit easier now too for Windows users. You can now go to the menubar, go to ‘Window’ and then select ‘Toggle Desktop Menu’ in order to go to the Desktop UI.

Step 2 was adding an actual settings screen. This has now been done as of version 1.7.7. Thanks to the great efforts of CozmoP and also due to some refactoring on our end, starting as of version 1.7.7, RetroArch will finally allow you to change settings inside the nice and easy Desktop UI (that can be triggered at any time by pressing F5 on your keyboard).

NOTE: The Desktop UI is only available for Mac, Windows and Linux. The desktop UI is powered by Qt 5.

Menu widgets

In this video, you will see some of the widgets in action when:
* Taking a screenshot
* Downloading a core

But there are many more widget elements available, such as:
* Fastforwarding
* Rewinding
* Showing the framerate onscreen
* Achievement notifications

Etc.

This is all courtesy of natinusala. More widgets will be added in the future.

Generic message widget, shader previous/next hotkey

Achievement notification widgets

New OpenGL Core driver supports Slang universal shader spec!


A new OpenGL driver has been made that targets OpenGL 3.2 and up. And unlike the older GL driver, this one supports only slang shaders. This means that this OpenGL driver can now finally use the same shaders as Vulkan, Direct3D 10/11/12, and Metal. This marks an important milestone for us since we are well on our way to having a true universal shader spec now that can cross around graphics API barriers.

To learn more about this, read this article here.

Legacy OpenGL 1.1 driver for GPUs with no vendor-supplied drivers!

Up until now, RetroArch required at least OpenGL 2.x support on the desktop. If your GPU did not have a driver supporting at least OpenGL 2.x, RetroArch would simply not run with the OpenGL driver.

There are plenty of integrated Intel video cards that have no real OpenGL support on Windows 10, so they have to rely on a fallback driver provided by Microsoft called ‘GDI Generic’. This limits these cards to OpenGL 1.1.

Now, those inconvenienced users can still use the OpenGL 1.1 fallback driver. Do note that it will be impossible for shaders to ever work with this video driver – OpenGL 1.1 dates back to 1997. It would take until 2003/2004 before pixel and vertex shaders would become a standard feature of any video card worth its salt.

To learn more about this, read this article here.

RGUI – Particle effect animation system and numerous improvements

RGUI is a low-fi CRT-friendly raster-based menu UI that in the past has been kept purposefully minimalist.

jdgleaver has really taken the bull by the horns and significantly improved upon RGUI, to the point where it now has:

  1. Thumbnail support (with scaling support)
  2. Theme support
  3. Fancy particle animation effects
  4. Drop shadow icons for text
  5. Extended ASCII character support (for accented characters)
  6. Much-needed performance improvements

To learn more about this, read these articles here and here.

Menu framerate is now framerate independent

Previously, the menu would be capped at 60fps. Users acclimatized to higher refresh rates would find the 60fps update to be lacking when they are inside one of the fancy raster menus inside RetroArch (XMB/MaterialUI/Ozone).

The menu framerate in RetroArch is now framerate independent. So, for instance, if you’re using a 120Hz resolution, XMB will animate at 120fps, and you will see smooth animation with menu shader effects like the ribbon effect, snow, or bokeh.

When you’re running a game that is capped at 60fps, it will cap the menu along with it. But once the game with the lower refresh rate cap is loaded out of memory again, the menu should return again to that native framerate.

Menu Font text issues fixed on Android and macOS

Severe font text issues have been fixed on both Android and macOS. Languages like Japanese should now display properly on Android without any of the graphical bugs that appeared on earlier versions.

We are also now using STB_font unicode as our font driver for macOS and iOS, so for the first time languages like Japanese and other non-Western languages should finally be rendered properly.

Press Quit Twice To Exit

RetroArch traditionally exits the program immediately when you press the ‘Escape’ key on your keyboard. This has been one of the most commonly heard complaints usability-wise, so while this is an acquired taste, it’s understandable that some wouldn’t want the program to function like this.

So now there is a new option for those who dislike it – ‘Press Quit Twice To Quit’. Go to Settings – Input, and enable it. You will notice that when you hit the Escape key now to exit, it will remind you through a popup message first that you need to hit the key another time for it to truly exit.

Android phones: Vibrate on touch

You can enable this by going to Settings -> Input, and turning on ‘Vibrate on key touch’.

Your Android phone will vibrate every time you touch an UI element inside the menu or overlay. This could be useful in order to get a sense of tactile feedback from your button interactions while playing a game.

Automatically set the user language based on your system language

This is a new feature at first-time startup. Right now, it should work on Android, Linux and Windows.

When starting up RetroArch for the first time, it will check what your system language is set to, and then make RetroArch use that same language. This way, you don’t have to manually change your language after starting up RetroArch for the first time.

If you find that for whatever reason you want to use either another language or revert to English, you can go to Settings -> User and set Language back to English.

Changes for macOS

The macOS version ‘Apple macOS High Sierra (and later) with Metal2’ now requires Metal, the new graphics API. If your system does not have Metal support, it will not run. There is no backwards compatibility support for OpenGL, as Apple is fast-tracking the deprecation of this API and it might not be there for much longer. This version requires macOS High Sierra and/or later (10.13).

Please be aware that cores which rely on Libretro GL will not work with this version of RetroArch.

Conversely, there is also a separate build where OpenGL support is still a thing, but there is no Metal driver. This version requires macOS/OSX Tiger or higher (10.7).

And so much more…

We could write an entire book about all the new features we added to RetroArch 1.7.7. The list is so exhaustive, in fact, that we had to split this release blog post up into several mini articles in order to properly do justice to all of the major features and platform releases that have happened as a result of this release. We might go into some more of the standout features later on in a future blog post, but for now, below is the massive CHANGELOG of this release.

General changelog

– 3DS: Add unique IDs to prevent cores overwriting each other.
– 3DS: Fix screen tearing when running 50Hz content.
– ANDROID: We now target API level 26 (minimum is still API level 9).
– ANDROID: Add option to vibrate on touch (works in menu or overlay).
– ANDROID: Add device vibration option for cores that support rumble.
– ANDROID: Add gamepad vibration support for cores that support rumble.
– ANDROID: Allow stylus/pen to move mouse without pressing down.
– AUDIO: Avoid deadlocks in certain audio drivers when toggling menu sounds on.
– BLISS-BOX: Support PSX Jogcon (requires firmware 3.0).
– CHEEVOS: Fix crash when reading memory that is out of range.
– CHEEVOS: New Cheevos implementation enabled by default.
– CHEEVOS: Pop-up badges when an achievement is triggered.
– CRT: Dynamic super resolution support.
– DISCORD: Fix potential crash when username is empty and discord is disabled.
– DISCORD: Ask to join support for Linux.
– INPUT/ANDROID: Add “Input Block Timeout” option.
– COMMON: For platforms without HAVE_THREADS, don’t automatically resume content when saving/loading states
– COMMON: Make playlist sorting optional and consistent.
– COMMON: Fix sorting of playlists with blank labels.
– COMMON: Fix content scanner creating false positive playlist entries that also have wrong label and crc32.
– COMMON: Add some MMX-optimized pixel conversion routines.
– COMMON: Fix typo preventing some SSE2-optimized pixel conversions from being used.
– COMMON: Add option to track how long content has been running over time.
– COMMON: Fix buffer overflows in system information.
– COMMON: Add option to change screen orientation via the windowing system (Android, Windows, X11).
– COMMON: Show CPU model name in log.
– COMMON: Add “Help -> Send Debug Info” option (and F10 hotkey) to send diagnostic info to the RetroArch team for help with problems.
– COMMON: Show GPU device name/version in log.
– COMMON: Add menu option to write log info to a file.
– COMMON: Add subsystem support for playlists. Subsystem info is automatically saved to the history playlist for easy relaunching.
– GL: Add new “gl1” OpenGL 1.1 compliant video driver for legacy GPUs and software renderers
– GL: Add a new “glcore” driver with slang support (requires GL 3.2+ or GLES3).
– GL: Draw OSD on top of overlay.
– GONG: Add savestate support.
– GONG: Add video refresh rate core options.
– GONG: Two player support via core option.
– GUI: Fix text alignment when using stb_unicode.
– GUI: Fix text display issues when using Japanese (and other unicode-dependent language) text with stb_unicode.
– GUI: Set language on first startup to the user’s preferred OS language (Windows, *nix and Android).
– INPUT: Add (scaled radial) analog deadzone and sensitivity options.
– LIBRETRO: Add Turkish language support.
– LIBRETRO: Allow non-accelerated video to rotate the display.
– LOCALIZATION: Update Chinese (Simplified) translation.
– LOCALIZATION: Update Chinese (Traditional) translation.
– LOCALIZATION: Update Dutch translation.
– LOCALIZATION: Update French translation.
– LOCALIZATION: Update German translation.
– LOCALIZATION: Update Japanese translation.
– LOCALIZATION: Update Polish translation.
– LOCALIZATION: Update Russian translation.
– LOCALIZATION: Update Spanish translation.
– LOCALIZATION: Add new Turkish translation.
– MIDI: Fix startup crash in midi driver.
– MENU: Bugfix – you can no longer get stuck in Online Updater -> Update Core screen when toggling between ingame and menu.
– MENU: Selectively hide ‘Take Screenshot’ for video drivers that don’t support taking screenshots.
– MENU: Framerate independent menu rendering. MaterialUI/Ozone/XMB/RGUI can now run at higher framerates.
– MENU: Thumbnails work in history list.
– MENU: Menu widgets.
– MENU: Add memory statistics support to more context drivers.
– MENU: Enable ozone driver for UWP builds.
– MENU: Add optional “looping” menu text ticker with configurable speed.
– MENU: Fix core video rendering when using ozone with GL cores that implement the scissor test.
– MENU: Add optional playlist sublabels (associated core + play time, where available).
– MENU: Dropdown list settings now apply immediately.
– MENU: Add setting to require pressing the “Exit RetroArch” hotkey twice to confirm.
– MENU: Now able to run at higher refresh rates than 60Hz.
– MENU: Enable “Add to Favorites” without loading a core.
– MENU: Allow core name to be hidden on history/favorites playlists.
– MENU: Populate crc32 and db_name fields when adding history/favourites playlist entries.
– MENU: Fix TTF files not showing in OSD/menu font selection screen.
– MENU: Fix audio/video filters not showing in file browser.
– MENU/MaterialUI: Add subsystem support.
– MENU/MaterialUI: Add currently selected entry in dropdown menus.
– MENU/OZONE: Add mouse support on entries (no sidebar yet).
– MENU/OZONE: Allow collapsing the sidebar.
– MENU/OZONE: Add thumbnail support.
– MENU/OZONE: Battery notifications.
– MENU/OZONE: Add wifi icon for network entries.
– MENU/QT/WIMP: Add git version and build date to Help->About window.
– MENU/QT/WIMP: Fix content loading via the file browser.
– MENU/QT/WIMP: Add new settings window to control all RetroArch settings.
– MENU/RGUI: Improve playlist titles.
– MENU/RGUI: Add option to hide associated cores in playlists.
– MENU/RGUI: Add internal upscaling option.
– MENU/RGUI: Add subsystem support.
– MENU/RGUI: Add menu sublabel support.
– MENU/RGUI: Re-enable “Load Core” option when content is loaded.
– MENU/RGUI: Add optional “Collections” entry to main menu.
– MENU/RGUI: Add “Lock Menu Aspect Ratio” option.
– MENU/RGUI: Add “full width” layout option.
– MENU/RGUI: Ensure menu color theme is applied immediately.
– MENU/RGUI: Fix “Lock Menu Aspect Ratio” option when using custom viewports.
– MENU/RGUI: Add widescreen support.
– MENU/RGUI: Allow text to be centred when selecting widescreen layouts.
– MENU/RGUI: Add inline playlist thumbnail support.
– MENU/RGUI: Add optional shadow effects.
– MENU/RGUI: Performance optimizations.
– MENU/RGUI: Add optional extended ASCII support.
– MENU/RGUI: Add optional delay when loading thumbnails.
– MENU/RGUI: Add on-screen keyboard.
– MENU/RGUI: Battery notifications.
– MENU/XMB: Prevent crashes when resizing to a tiny window.
– MENU/XMB: XMB honors the ‘show menu sublabels’ setting now – was previously RGUI only
– NETPLAY: Fix stall-out causing total disconnection with >2 players.
– NETPLAY: Different (more intuitive?) default netplay share policy.
– NETPLAY: Add hotkey option to toggle hosting on/off.
– NETWORKING: Encode URLs to allow for spaces in directory names.
– OSX: Prevent crash on exit.
– OSX: Metal is now the default video driver for the RetroArch Metal build.
– OSX: Enable CoreAudio v3 driver for Metal.
– OSX/MACOS/IOS: Now uses the STB Unicode font driver.
– PS2: CDFS support.
– PS2: Implemented analog support for ps2 controllers.
– PS2: Fix audio freeze after restarting core.
– PS2: Fix issues with load state and the font driver.
– PS2: File I/O now works for USB and network host.
– PS2: Support cores with extra padding in their frame buffers.
– SCANNER: New option ‘Scan without core match’. When this is enabled,
supported extensions by all installed cores are not checked, and instead
it will add all content it finds to a playlist. This way, you can install the core you need later on after scanning. Not enabled by default.
– SHADERS: Don’t alphabetize shader presets.
– SWITCH: Add rumble support.
– SWITCH: Add USB keyboard support.
– VITA: Add bluetooth mouse and keyboard support.
– VULKAN: Fix color issues with RGBA8888 swapchains in readback (screenshots).
– WII: Don’t init overlay when RAM is beyond 72MB.
– WII: Skip CRC calculation on content load, can improve load times of larger games by several seconds.
– WINDOWS: Fall back to gl1 driver if accelerated GPU driver is unavailable.
– WINDOWS: Allow winraw and xinput to work without dinput (needed for WinRT).
– WINDOWS: Add MSVC2017 ARM desktop support.
– UWP: Fix rewind by opting for slower codepath.
– UWP: Fix relative path name issues when loading shaders.
– UWP: Optimizations for VFS system.

RetroArch 1.7.3 – Released!

RetroArch 1.7.3 has just been released! Grab it here.

This latest version has also been uploaded to the Google Play Store.

If you’d like to show your support, consider donating to us. Check here in order to learn more.

Highlights

New WIMP GUI for PCs!

RetroArch now has a WIMP GUI, powered by the powerful multimedia framework Qt! This feature is available currently for Windows and Linux. macOS users will have to wait a while longer for this feature to arrive to their platform.

The WIMP GUI works as a companion to the main RetroArch window. You bring it into view by pressing the F5 key on your keyboard. From there, you can do many tasks:

– Select a game from any playlist
– Browse the file system or any attached media storage device and load a game.
– Scan directories for content and generate system playlists.
– Associate cores to an entire playlist or associate only one entry of a playlist to a specific core

How to easily scan content

Totally customizable appearance

Switching between color themes

Multiple language support (English/Japanese)

Some things we’d like to note:
* This has been the combined work of bparker and Tatsuya79 that have worked tirelessly on this for a month. We are aware of several features that we’d like to implement, such as playlist editing, grid view layouts, etc.
* We are open to feedback on the GUI.
* You will likely not see this WIMP GUI on Android or iOS (or any game console for that fact) anytime soon. WIMP interfaces don’t lend themselves well to devices that rely on touchscreen or gamepad-based controls.
* (For Linux users) The Qt GUI should definitely work on X11. If you’d like to run it on Wayland, make sure you have the appropriate packages installed for Qt5 in your package manager. Be aware that Qt 5 cannot gracefully fail right now in case a platform module/plugin is missing from your system. This means that if you invoke the companion UI by pressing F5 on Wayland, and for whatever reason the platform module that Qt relies on in order to work on Wayland is not there, there is no way for RetroArch to gracefully fail there and just not show the companion UI. There will be a crash instead. Unfortunately we have talked to some Qt developers and they see no other way around this for now. The same situation applies for DRM/KMS right now. If we can find a better solution to this, we will certainly return to it.
* (For mac Users) You will have to wait a bit longer for this to arrive to the Mac port unfortunately. Hopefully that wait is not too long.
* We would like to still improve initial bootup times for the companion UI. Right now, on first initial startup, it can take anywhere from 5 to 10 seconds (depending on your harddrive and its performance), but on subsequent boots should only take 2 seconds or less for first startup. Hopefully by resorting to Link Time Code Generation and other avenues we can shave off some more seconds off this boot time.

Starting up the UI on startup


If you would like to start up the companion UI at first startup instead of having to manually press F5 first, you can do so. Make sure that Advanced Settings are enabled first (Settings -> User Interface -> Show Advanced Settings). After that, make sure the option ‘Show desktop menu on startup’ is enabled.

Real-time audio mixer controls – menu music, mixing of audio channels, separate volume controls, etc

In RetroArch 1.7.3 we have given RetroArch’s built-in audio mixer a huge overhaul.

Improved file format support – Now supports MP3 and FLAC thanks to mudlord. The audio mixer now supports MP3, FLAC, Ogg Vorbis, and WAV files in total.

Live manipulation/control of the audio mixer in the menu – you can now access the audio mixer inside the menu. You can set audio tracks to each of the 16 available streams, and you can issue commands to them such as Play (normal/Looping/Sequential), Stop or Remove.

Individual volume setting per audio stream – You can now also individually set the volume for each separate audio stream inside the mixer. If you wish to override all audio stream’s volume with one global override, you can go to Audio Settings and set Audio Mixer Volume Level. Reset this back to 0 dB if you want individual volume per stream to work again.

Increased the amount of max streams – Previously, the audio mixer was limited to 8 streams in total. This figure has been doubled to 16.

New album mode-like features – If you have a couple of tracks queued up in the audio mixer and if you’d like to play them back like a regular audio music player (played sequentially, one song after the other) – select ‘Play (Sequential)’. When the song is finished playing, it will look at the other streams directly down below it. If one of these streams is in ‘stopped’ state and if there is audio loaded there, it will start playing it. It will also in turn set this audio stream’s play state to ‘Sequential’ and it will keep going down the list until the end of the audio stream mixer’s ‘list’ has been reached.

Music can play inside the menu now – Previously, you could only listen to audio streams with the audio mixer once you were inside a game and a core had been loaded. Once you went back to the menu, the sound mixing would stop there. You can now set ‘Enable menu audio’ to ON in order to be able to have music inside the menu as well! You can seamlessly jump back and forth between menu and game and have the music continue running.

Other additional niceties –
* The music is mixed in with the rest of the core’s sound data, so the music also is affected by fastforwarding and is thus sped up when you fastforward it, just like regular game audio would.

NOTE: Not all platforms have received MP3 and FLAC support yet. So far, we have enabled it already for Windows, macOS, Linux, Android and iOS. More platforms might follow.

Runahead – improved performance with Genesis Plus GX

Dwedit sent some patches to improve Genesis Plus GX’s performance with runahead. We put this briefly to the test on the Xbox OG. Previously with 1.7.2, Sonic 2 on version 1.7.2 did not reach fullspeed with runahead set to 1 frame. With version 1.7.3, we can finally play at fullspeed with runahead set to 1 frame. Setting it any higher than 1 proves too taxing for the old system.

Game Core Description FPS – 1.7.2 FPS – 1.7.3 Format
Sonic 2 Genesis Plus GX No runahead Fullspeed Fullspeed Xbox OG
Sonic 2 Genesis Plus GX Runahead – 1 frame Not fullspeed Fullspeed Xbox OG

CRT Switch Res on Linux – GroovyMAME-like features for 15KHz capable CRT monitors!

Starting as of version 1.7.2, RetroArch now has the ability to query cores for their exact video timing data, which can be used to switch to native-resolution, 15 kHz modelines for use with standard-definition CRT TVs.

This is a big step for retro purists, as RetroArch can now output “pixel-perfect” video with accurate timing to compatible displays, even quickly switching between interlaced and non-interlaced modes on the fly.

This capability was previously Windows-only and requires modelines to be created in advance by CRT_EmuDriver or Custom Resolution Utility with a compatible GPU.

Starting as of version 1.7.3, Linux support has been implemented too!

In case you’d like to learn more, follow these links:

Input remapping system fixes for overlays

Radius fixed several bugs which would prevent the new input remapping system from working with onscreen overlays.

General changelog

AUDIO: Audio mixer supports FLAC/MP3 file types now!
COMMON: Fixed bug ‘crashing in cores that don’t range check retro_set_controller_type’. Some people were having crashes when device is set to RETRO_DEVICE_NONE and the cores don’t check the number of ports, in VBAM’s case it was overflowing and crashing. QuickNES was crashing too.
COMMON: Fixed buffer overflow in url encoding (affecting MSVC2010/2013).
COMMON: (QuickMenu) Added Configuration Override submenu.
HID: Merge new HID subsystem.
HID: Fix WaveBird support for the Wii U GCA.
HID/OSX: Fix regression with IODHIDManager – gamepads which are connected later would not be autoconfigured.
LOCALIZATION: Update Italian translation.
LOCALIZATION: Update Japanese translation.
LOCALIZATION: Update Portuguese translation.
MENU: New WIMP Qt GUI!
MENU: Audio mixer now works in the menu without any cores loaded. You have to enable the setting ‘Enable menu audio’ for this to work.
REMAPPING/OVERLAYS: Fix regression – overlays could no longer be remapped.
SCANNER: Add Wii Backup File WBFS support.
X11: CRT SwitchRes support for X11/Linux.

What is coming next?

We can already give you a sneak peek of some of the new features the new WIMP GUI will be having in the upcoming version. Right now, playlist entries are only displayed as a list. The new version will also allow you to display playlists in a grid view (both small and big). See the images below for an indication of how that will look like.