Beetle PSX Dynarec – Public Beta Out Now! Fast and accurate wins the race!

We are delighted to announce that the Beetle PSX dynarec bounty is finally entering its public beta stage and is available to the public right now!

The dynarec project for Beetle PSX would not be where it is today without the combined efforts of simias, pcercuei and Zach Cook!

If you are on Android, Windows, Linux and/or macOS, all you have to do to get the latest core is to open RetroArch, go to Online Updater, and either select ‘Update Installed Cores’ (if you already installed the Beetle PSX core before), or install the Beetle PSX and/or Beetle PSX HW cores separately.

What’s this all about?

In 2017, we started a bounty for Beetle PSX, our own heavily modified fork of Mednafen PSX that has pretty much become its own thing at this point. Mednafen PSX is a highly accurate PlayStation1 emulator. However, unlike emulators like ePSXe, it only has a CPU interpreter, which means that the emulator is fairly slow and is therefore not really usable on anything but desktop PCs and high end mobile phones. The bounty was created on BountySource in hopes of attracting someone who could add a dynamic recompiler to Beetle PSX so that it could run much faster and therefore be a viable emulator on lower end hardware, such as mid range mobile phones, game consoles, older PCs, etc.

What pcercuei and Zach Cook have come up with is a Lightrec-based dynamic recompiler implementation. Zach Cook has done most of the integration of Lightrec in Beetle PSX, while pcercuei did Lightrec itself. Lightrec is pcercuei’s dynamic recompiler for MIPS that uses GNU Lightning as the backend. There should be working implementations for nearly all system architectures, from x86 (64bit/32bit) to MIPS and ARM (64bit/32bit). It bears mentioning that pcercuei also already has Lightrec hooked up to PCSX Reloaded, and used this as a testbed.

Platforms

The dynarec is available for the following platforms:

  • Linux
  • Windows
  • Android *
  • MacOS *

We are able to confirm that the performance gains for x86 and x86_64 are significant, as you can see down below (see Performance tests). We don’t know what the results are for ARM Linux, let us know how it performs!

* Performance right now is pretty bad for the Android and macOS platforms. We hope that after the public beta test, performance will improve a lot for these platforms. So while there is a framerate gain, it isn’t anywhere near what it should be.

How to use it – what the options do

First, update your Beetle PSX cores. We already explained before but we’ll repeat it here for the sake of it –

If you are on Android, Windows, Linux and/or macOS, all you have to do to get the latest core is to open RetroArch, go to Online Updater, and either select ‘Update Installed Cores’ (if you already installed the Beetle PSX core before), or install the Beetle PSX and/or Beetle PSX HW cores separately.

Once you’re on the latest core, you’ll notice that a lot more options show up now when you go to Quick Menu -> Options. We’ll go over these options and we’ll explain what they do.

NOTE: The dynarec is disabled by default – the default setting is still ‘Beetle Interpreter’. So if you’re wondering why things aren’t automatically faster, set it from Disabled to ‘Max Performance’ in Quick Menu -> Options.

CPU Dynarec – [Max Performance|Cycle Timing Check|Lightrec Interpreter|Disabled (Beetle Interpreter)]

Dynamically recompile CPU instructions to native instructions. Much faster than interpreter, but CPU timing is less accurate, and may have bugs.

Disabled (Beetle Interpreter) – This is the default setting, dynarec is disabled. This uses the default Beetle interpreter that has been used in Beetle PSX all up to this point. It’s faster than Lightrec Interpreter (for now) but much slower than any of the dynarec modes. We don’t recommend you use this unless ‘Max Performance’ or ‘Cycle Timing Check’ won’t work well for you on the game you’re trying to play.

Max Performance – Dynarec enabled with all features enabled. Should be the fastest option, but some games might require the ‘Cycle Timing Check’ mode instead.

Cycle Timing Check – Dynarec enabled, but with cycle timing check which makes it a fair bit slower. Some games might need this setting in order to work properly, so if you find that Max Performance has bugs with a game, try this mode instead.

Lightrec Interpreter – This is the slowest mode right now. It’s basically in the same ballpark as Beetle Interpreter but the Beetle one is actually faster. It’s basically Lightrec running in CPU interpreter mode instead of dynarec mode. We don’t recommend you use this.

Dynarec Code Invalidation – [Full/DMA Only [Slightly faster]]

Some games require a Full invalidation, some require DMA Only.

Dynarec DMA/GPU Event Cycles – 128 (Default) – can go up to 512

How many cycles can pass in the CPU before a GPU or DMA update is checked. A higher number will be faster, but also more likely to cause bugs or crashes. This option has much less impact on performance with Beetle Interpreter than any of the dynarec modes.

Performance tests

Test hardware: Desktop PC – Core i7 7700k, Windows 10

Game Beetle Interpreter Dynarec – Max Performance Dynarec – Max Performance (w/ DMA/GPU Event Cycles High) Dynarec – Cycle Timing Check Dynarec – Lightrec Interpreter
Tekken 3 151fps 223fps 252fps 209fps 117fps
Ridge Racer Type 4 132fps 323fps 325fps 289fps 132fps
Final Doom 216fps 401fps 456fps 359fps 142fps
Final Fantasy VIII 185fps 384fps 426fps 269fps 149fps
Rockman X3 211fps 414fps 450fps 319fps 152fps

Test hardware: Laptop PC – Core i5 3210M, Ubuntu Linux 19.04

Game Beetle Interpreter Dynarec – Max Performance Dynarec – Max Performance (w/ DMA/GPU Event Cycles High) Dynarec – Cycle Timing Check Dynarec – Lightrec Interpreter
Tekken 3 83fps 117fps 126fps 110fps 78fps
Ridge Racer Type 4 105fps 159fps 173fps 143fps 87fps
Final Doom 128fps 204fps 235fps 181fps 99fps
Final Fantasy VIII 128fps 232fps 277fps 152fps 97fps
Rockman X3 141fps 235fps 266fps 182fps 107fps

Currently known issues

* PGXP right now is disabled if you use any of the Dynarec modes. So don’t bother enabling PGXP modes for now when you use the Dynarec modes, you’ll just lose performance while gaining absolutely nothing. We hope that we are able to come up with a solution for this later.

* Make sure ‘Renderer’ is set to ‘Software’ if you want to use runahead. We recommend for runahead purposes you stick to 1x Internal GPU Resolution as even with the dynarec enabled, it can still be stressful on the CPU to go any higher than 1x with software rendering.

* If you are using the Android version and want to report bugs right now, please DO NOT use the Vulkan renderer right now. It currently has a couple of bugs on Android that the software renderer doesn’t have. So we advice you to use the software renderer for now on Android. On top of that, the software renderer right now is faster than Vulkan on Android, so you’re advised for now to use this during the public beta period.

Currently known compatibility issues

These are the current compatibility issues I have been able to notice on Windows.

Parasite Eve 2 (USA) (Disc 1)
Won’t continue from start with dynarec. It will freeze at the ‘Published by Square Electronic Arts’ screen.

There is a workaround for this – set CPU Overclock to 300%. The game will run too fast but it will at least be playable.

Brave Fencer Musashi (USA)
Hangs at ‘New Game’ – first world screen

There is a workaround for this – set CPU Overclock to 300%. The game will run too fast but it will at least be playable.

Gex – Enter The Gecko (USA)
Crashes after PSX copyright screen

Time Commando (USA)
Corrupted background graphics. Background graphics in this game are streaming FMV with polygon models on top.

Street Fighter Ex Plus Alpha (USA)
If you lose a fight and then select Continue, it will hang

Vanishing Point (USA)
It crashes once inside a race – with both full max or dma only

Battle Arena Toshinden 1 (USA)
It runs too fast.

WORKAROUND: By setting CPU to 90%, you can workaround this issue.

Alone In The Dark – One Eyed Jack’s Revenge (USA)
Crashes after the PSX copyright screen

Viewpoint (USA)
Crashes after the PSX copyright screen

Another big announcement at the end of the weekend

We have even bigger things for you in store by the end of this week. So stay tuned, because we have lots more to talk about very soon! It’s time to get the 5th gen out of the way and have it preserved for posterity!

Libretro Cores progress Report – Beetle PSX HW Dynarec news, New Neo Geo Pocket emulator core, and more!

RACE – new Neo Geo Pocket Color emulator core

Description: SNK Neo Geo Pocket Color emulator

We have released the new SNK Neo Geo Pocket Color emulator core for the following platforms –

  • Android
  • iOS
  • macOS
  • PSP
  • PS Vita
  • Linux
  • Switch
  • Windows

This is an existing old Neo Geo Pocket emulator that unlike NeoPop and its derivatives (Mednafen/Beetle NGP) focuses on performance.

You can get it right now on the Core Updater.

There might still be some savestate and netplay issues with this core. However, the main attraction of this core and by far its ultimate selling point is the performance. It is orders of magnitude faster than Beetle NGP. Watch the video to see exactly how substantial the performance improvement is. For lower-spec systems like PSP, PS2 and 3DS, Beetle NGP (being based on NeoPop) is not able to run at fullspeed, whereas RACE runs at fullspeed on PSP and PS Vita right now.

Beetle PSX HW

Description: PlayStation 1 emulator

* (Vulkan) When rendering games above their native resolution, textures would often become corrupted. Turns out this was a rounding issue. This has been fixed.

* (Dynarec) The Linux/Android portion of the project is getting close to completion, while the Windows part has kinda languished. Therefore, we have made the decision with the current dynarec bounty coders that we focus right now primarily on Linux/Android for an initial release, which hopefully can happen around the end of January. We think that once it’s in people’s hands and results are satisfactory on Android/Linux that the Windows issues can be sorted out from there on out. With CPU-bound games, performance should be roughly 2 times faster.

We are currently assembling testers on our Discord to put the dynarec on Linux to the test.

Beetle PCE Fast

Description: NEC PC Engine emulator

* Added mouse support
* Fix turbo button core option

Kronos

Description: Sega Saturn emulator

* Update to version 2.0

BlueMSX

Description: MSX home computer emulator

The MSX emulator core finally works for the first time on PSP and PS Vita.

Game & Watch – GW

Description: Game & Watch emulator
A regression was fixed in this core, it should finally work on Android again.

Atari 800

Description: Atari 800 home computer emulator
Fix for non-working virtual keyboard.

Virtual Keyboard didn’t work at all.
Right now not all keys are mapped, but at least most important are working now.

FB Neo

Description: Multiple arcade machine emulator
FB Neo has been updated to the latest version.

MAME 2000 – Faster Z80/68K CPU cores for ARM – Big performance boost on Vita

Description: Multiple arcade machine emulator

The MAME 2000 libretro core is now using the ARM-optimized Cyclone and DrZ80 CPU cores on PS Vita. We’re going to be testing this out on various other 32bit ARM devices as well and rolling it out there as well. This should give a significant boost in performance and bring it in-line with MAME4All for 32bit ARM devices.

NOTE: Only the games that make heavy use of Z80 and 68K CPU cores will see significant performance gains from this.

MAME 2003 Plus

Description: Multiple arcade machine emulator

* Fix for Eagle Shot Golf on ARM hardware

Flycast

Description: Sega Dreamcast/NAOMI emulator

* Avoid TA data buffer overflow. Fixes Ooga Booga crashes on multiplayer (offline and online)
* Vulkan: Workaround for Intel driver bug when depth write is disabled
* Vulkan: Add anisotropic filtering core option.

VICE

Description: Commodore 64 emulator

* 1 Frame of input lag removal

P-UAE

Description: Commodore Amiga emulator

* 1 Frame of input lag removal
* Amiga CD32 support

bsnes

Description: Super Nintendo emulator

* New core option – enable this for runahead support. This is likely temporary until a better solution can be found.

In Development – RetroArch ANGLE support – OpenGL support for UWP and more

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

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

Will this be ready for the next version?

We don’t know yet if this will make it for version 1.8.2.

Let us tell you though what this will entail in the future –

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

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

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

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

We will fill you in as things develop how ANGLE will fit into RetroArch’s future releases. For now, the path seems clear – separate core versions for the emulators that have viable OpenGL ES 2/3 codepaths, and separate binaries at least on Windows desktop for an ANGLE-enabled and non-ANGLE enabled version. The redist (redistributable) will also need to be updated to include the extra dynamic library dependencies.

RetroArch 1.8.1 released!


RetroArch 1.8.1 has just been released. This version sees the coming of age of the mobile UI, which now has support for thumbnails. This will bring a transformative change to the way people get to interact with the UI on Android/iOS. And the best part is that this is only the beginning, even more drastic UX enhancements are planned!

Grab it here.

If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

On-demand thumbnail downloading now enabled by default on Android/iOS

We’ve made the decision to enable the auto thumbnail scraping feature by default on Android/iOS since both devices are likely to be connected to the Internet. This is inline with what the majority of people on these platforms would want the default behavior to be. All other platforms remain unaffected – for systems other than Android/iOS therefore, it has to be enabled manually for it to work.

In case you are using your device offline and/or you don’t want a HTTP request to be performed every time you browse a new entry in a playlist, you can turn this setting off by going to ‘Main Menu -> Online Updater’ and turning off ‘On-Demand Thumbnail Downloads’.

MaterialUI – Thumbnail support plus more themes! The mobile UI finally grows up!

We are beyond excited to present to you even more UX enhancements for MaterialUI, the default UI for mobile devices like Android and iOS.

There is now initial thumbnail support for playlists in MaterialUI!

RetroArch 1.8.1 adds the Thumbnails and Thumbnail Upscaling Threshold options under User Interface > Appearance, and adds two new options: Portrait Thumbnail View and Landscape Thumbnail View. There are currently only list view implementations, which look something like this:

Portrait Thumbnail View

Off

List (Small)

List (Medium)

Landscape Thumbnail View

OFF

List (Small)

List (Medium)

List (Large)

Note the new ‘switch thumbnail view’ icon on the title bar (next to the search icon). This shows up when viewing any playlist provided that User Interface > Appearance > Thumbnails is set to anything other than OFF. Touching this icon switches to the next view mode (this is done independently for each screen orientation). Pressing the ‘scan’ button on a gamepad (RetroPad X) has the same effect.

On-demand thumbnail downloads are fully supported.

All loaded thumbnails have a nice ‘fade in’ animation.

A couple more screenshots –

We implore everybody that might have bounced off earlier versions of RetroArch for Android/iOS to please give this new version a chance. We are trying our best to be receptive to user feedback and whip the UX into shape so that it becomes a user interface that you will come to love instead of tolerate (at best). Thumbnail support has been missing for a long time so this is bound to be a big deal along with the other UX enhancements that version 1.8.0 already brought with it

Changes

1.8.1

  • BUGFIX/MENU: Fix menu rendering with Mali GPUs after changing video dimensions
  • CDROM: Adds pregap support to cdfs helper methods
  • CHEEVOS: Provides the new PCEngine hashing algorithm for RetroAchievements
  • LOCALIZATION: Update French translation
  • LOCALIZATION: Update Polish translation
  • LOCALIZATION: Update Spanish translation
  • MENU/MATERIALUI: Initial thumbnail support
  • MENU/MATERIALUI: Cutie / Virtual Boy theme added
  • MENU/MATERIALUI: Bugfix – Under certain extreme circumstances, entries with very long sublabel strings could have their text prematurely ‘clipped’ as the entry is scrolled beyond the top of the screen
  • MENU/MATERIALUI: Bugfix – Certain setting value strings were unnecessarily truncated (with a …) when using smooth ticker text
  • MENU/XMB: Sunbeam theme added
  • SWITCH: Accelerometer, gyroscope and illuminance sensor support
  • VITA: Accelerometer and gyroscope sensor support

What’s next?

We will be following this blog post up in the upcoming days with more about the Doom 3 core that libretro devs have been working on. Stay tuned – this core represents a big milestone for us since it is a semi-modern game running as a libretro core inside RetroArch, and our aim has always been to appeal beyond the emulation scene. We are fully supportive of even more non-emulator cores in the future, but we won’t forget about the emulation scene either, and we have some BIG announcements coming up that still remain a secret. So stay tuned and wait for further information to arrive when the time is right!

RetroArch 1.8.0 released!


RetroArch 1.8.0 has just been released. The default mobile UI has seen a complete overhaul and we hope this will address many of the usability issues people had with RetroArch’s menu on Android/iOS. Note that we are far from done and that the next versions will have even more enhancements coming up!

In addition to the MaterialUI menu improvements, we now have MAME overlay compatibility for the OpenGL driver, seamless driver switching, and more!

Grab it here.

If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

Big features

Complete overhaul of MaterialUI – UX for Android/iOS massively improved!

With version 1.7.9, we already improved the mobile UX significantly by adding touchscreen gestures and better touch responsiveness.

This however pales in comparison to what has been done for version 1.8.0 in this department. We will quickly go over the major highlights, most of the text here has been written by jdgleaver (the author of these changes) with only minimal edits by myself –

New menu scaling

At present, Material UI is scaled according to screen resolution and hard-coded magic numbers. This ‘kinda-sorta’ works on some mobile devices, but in general (and specifically on desktop computers and tablets) the interface is too large, and scaling is highly inconsistent when resizing windows. To combat these inadequacies, there existed a ‘DPI override’ feature which allowed the user to set a specific scale – but this didn’t work in real-time (so adjustments were blind), and it’s not user friendly (since the average user can’t be expected to know the correct DPI setting for their screen).

This new version modifies the scaling of Material UI such that it uses the hardware-reported DPI value of the display, with empirical adjustments to accommodate very large and very small screen sizes (where normal DPI scaling fails). This should ensure an appropriate default interface size regardless of hardware. Moreover, it removes the ‘DPI override’ and replaces it with a generic Menu Scale Factor under User Interface > Appearance, which is a simple fractional multiplier (much easier for the user to understand!). This Menu Scale Factor is now also used by XMB (instead of the previous XMB-specific scale factor) – it is intended that Ozone and menu widgets will obey this setting in the future.

  • DPI Override Removed – Menu Scale Factor comes in its place – starts out at 1.00x and can be made smaller or higher than the default value
  • Material UI now correctly readjusts its layout when screen orientation changes on mobile devices
  • Material UI now resizes in real-time when the user manually sets the Menu Scale Factor (this never worked properly with the old DPI override)
  • Material UI no longer leaks memory on ‘context reset’

Menu animations

A new ‘Menu Transition Animation’ option has been added under User Interface > Appearance. When this is enabled, menu transition events are animated.

All sorts of animations have been added – fade-in effects, slide effects, etc. If you dislike any of these, you can always turn the setting off completely to go back to the previous behavior.

System bar

A new Android-style ‘system bar’ has been added. This shows current core name, clock and battery level.

Navigation bar


The navigation bar is now shown at all times – i.e. it is an actual navigation tool, rather than a ‘top-level-menu’ curiosity.

Two new context-sensitive buttons have been added:

On the bottom left we have a ‘back’ button. This performs the same function as tapping the menu bar, but the button is in a more ergonomic/standard position. This should address most of the complaints Android users have about RetroArch ignoring the hardware back button.

On the bottom right we have a ‘resume content’ button. This means we can easily change/test runtime settings without performing finger gymnastics. e.g. we can change a core option or apply a shader and immediately toggle the menu off without having to hit back to get to the quick menu, and scroll up to the resume content entry.

Auto-Rotation

A new ‘Auto-Rotate Navigation Bar’ option has been added under User Interface > Appearance. When enabled (this is the default setting), the navigation bar is moved to the right hand side of the screen when using landscape screen orientations. It looks something like this:

If you don’t like this and you want it to always appear at the bottom of the screen, turn this option off.

Title bar

The title bar now uses a larger font, and the sublabel font has also been enlarged a little, to more closely align with Material Design standards.

Optimize Landscape Layout

A new Optimize Landscape Layout option has been added under User Interface > Appearance. This is intended to address the rather uncomfortable appearance of Materail UI in landscape orientation on wide displays (particularly on the desktop). The option is disabled by default on mobile platforms (like iOS/Android), and enabled by default everywhere else. When enabled, it looks something like this:


Graceful switching between video drivers

Graceful switching between video drivers has been added for Linux and Windows PCs thanks to Rinnegatamante (Patreon here). This feature originated as a bounty request, and it’s on the verge of being completed.

RetroArch in the past behaved unpredictably and unstably when switching to cores that wanted a context other than what was currently active. This could happen because of video_driver settings being different in a core config override or because a core’s core options were telling it to use a different renderer than what was active (e.g., GL vs Vulkan)

What happens now, is that RetroArch can seamlessly switch video drivers if a core requires it.

Example –

one of the new cores we have added over the past few weeks, VitaQuake 2, is a core that has two renderers. It has a software renderer and an OpenGL 1.x renderer. Say that RetroArch is running with the ‘vulkan’ video driver. We want to load VitaQuake 2.

What would happen with RetroArch 1.7.9

  • The renderer of VitaQuake 2 has two options – Software and OpenGL. Because there is no hardware context in the core for Vulkan, it would switch to Software.

What happens now with RetroArch 1.8.0 (with driver switching enabled)

  • The renderer of VitaQuake 2 has two options – Software and OpenGL. We make the assumption that you wouldn’t want to use the software renderer if OpenGL is available, so instead, RetroArch will seamlessly switch to OpenGL. When you unload the core/game, it will switch back to ‘vulkan’, so the driver switch will not be written to the config file.

What if you still want to use the Software renderer with a core like this with Vulkan?
That is certainly possible. To do this, we need to turn off the ‘driver switching’ feature. First, you need to make sure that ‘Show Advanced Settings’ is enabled under ‘User Interface’ settings. Once you have made sure of that, go to ‘Settings -> Core’. Then turn off ‘Allow cores to switch the video driver’. It should now behave like before again.

What if a core has several hardware context renderers? (like Dolphin/PPSSPP)
Cores like Dolphin and PPSSPP have several renderers available, such as OpenGL, Direct3D11 and Vulkan. Say you have RetroArch running with the vulkan driver. It would then naturally pick the ‘Vulkan’ renderer. Ditto for OpenGL and Direct3D11. So nothing changed there in that regard.

What is this particularly useful for?
The big issue with using the Vulkan video driver in RetroArch in the past (or Direct3D 11) is that while some software rendered cores might run faster with these drivers vs. OpenGL, there are plenty of Libretro cores that require the use of OpenGL. With this new feature, it will properly fallback to OpenGL for these exclusive cores but still use Direct3D 11 or Vulkan for all other cores. You can get the best of both worlds this way.

MAME layout compatibility with OpenGL driver


This started as a bounty request, and it has now been implemented at least for the regular OpenGL driver.

If you don’t know what MAME layout files are, you can read this here.

How to get this working?

First, ensure that you are using the OpenGL driver. NOTE: Make sure this is ‘gl’ driver, ‘glcore’ will not work right now but might work in a future version. Only the regular ‘gl’ driver right now will work with MAME layouts.

  • Find a layout bundle, like these: https://mrdo.mameworld.info/mame_artwork_ingame.php
  • Go to Settings > Onscreen Display > Video Layout and set ‘Enable Video Layout’ to ON, then use the ‘Video Layout Path’ option to navigate to your layout bundle.

NOTE: It’s only available for the GL driver right now, but we would like to extend it to other drivers in the future. Automatic loading of layouts based on content filename would also be a good improvement.

Changes

1.8.0

  • AI SERVICE: Added in fix for BMP returns to AI service. Added in label passing to AI service call
  • BSV: Fix BSV recording/playback
  • BUGFIX: Fix crash when setting Thumbnail Directory
  • BUGFIX/STABILITY: Set “Automatically Add Content to Playlist” to false by default, this was unstable on PS3 and Mac and other platforms potentially as well.
  • COMMON: Graceful driver switching for Windows and Linux
  • COMMON: Cache frame before converting 0RGB1555
  • LAKKA: Wi-Fi Access Point settings
  • MENU: Menu scaling improvements
  • MENU/MATERIALUI: There are no longer any animation glitches when ‘wraparound’ scrolling from the last entry in a list to the first, or when performing horizontal swipe navigation gestures on certain settings-type entries
  • MENU/MATERIALUI: List entries underneath the title and navigation bars are no longer highlighted when touching the title/navigation bars (this was only a cosmetic issue, but it was annoying…)
  • MENU/MATERIALUI: The current menu list is no longer reloaded when pressing the currently active tab on the navigation bar
  • MENU/MATERIALUI: The ticker text spacer has been set to a ‘bullet’ character (same as Ozone)
  • MENU/MATERIALUI: The default colour theme has been set to ‘Ozone Dark’
  • MENU/MATERIALUI: Three new colour themes have been added.
  • MENU/MATERIALUI: A new Menu Transition Animation option has been added under User Interface > Appearance. When this is enabled, menu transition events are animated
  • MENU/MATERIALUI: The navigation bar is now shown at all times – i.e. it is an actual navigation tool, rather than a ‘top-level-menu’ curiosity
  • MENU/MATERIALUI: Two new context-sensitive buttons have been added to the navigation bar – back button and resume button
  • MENU/MATERIALUI: A new Auto-Rotate Navigation Bar option has been added under User Interface > Appearance. When enabled (this is the default setting), the navigation bar is moved to the right hand side of the screen when using landscape screen orientations
  • MENU/MATERIALUI: The playlists tab is now correctly hidden when User Interface > Views > Show Playlist Tabs is disabled
  • MENU/MATERIALUI: Material UI now correctly readjusts its layout when screen orientation changes on mobile devices
  • MENU/MATERIALUI: Material UI now resizes in real-time when the user manually sets the Menu Scale Factor (this never worked properly with the old DPI override)
  • MENU/MATERIALUI: Material UI no longer leaks memory on ‘context reset’ (fonts were previously never free()’d)
  • MENU/MATERIALUI: A new Android-style ‘system bar’ has been added. This shows current core name, clock and battery level
  • MENU/MATERIALUI: A new search icon is shown on the title bar when viewing playlists and file browser lists. Pressing this launches the search interface
  • MENU/MATERIALUI: The title bar now uses a larger font, and the sublabel font has also been enlarged a little, to more closely align with Material UI standards
  • MENU/MATERIALUI: A number (quite a large number) of layout/spacing issues have been fixed
  • MENU/MATERIALUI: The existing colour theme handling code is not fit for purpose, so the whole lot got ripped out and reimplemented. In doing so, also adjusted all the theme colours to better match Material UI standards – with a few liberties taken for aesthetic purposes.
  • OSD: Fix fast forward indicator when not using menu widgets
  • PSP1: Remove duplicated FPS indicator on the screen
  • LIBNX/SWITCH: Make audren threaded audio driver the new default
  • VIDEO LAYOUT: Add video layout MAME overlay compatibility. Enabled for Windows/Linux/OSX/iOS/Android/libnx. Only works with GL driver for now, no glcore yet