RetroArch – Ozone becomes the default menu UI (Plus touchscreen and scaling updates!)

We held a poll earlier this week on Twitter, asking our users whether they would like us to stay with XMB as the default UI, or switch to Ozone. The results were overwhelmingly in Ozone’s favor, so starting from today’s nightlies and the upcoming RetroArch 1.8.5, Ozone will now be the default menu UI on everything but mobile phones.

What does this mean for XMB?

Nothing really, we are not abandoning it, and we will also keep further improving it. The only thing that changes is that Ozone will start now as the default menu UI.

If you want to switch back to XMB, that is possible too. While in RetroArch, simply go to Settings – Drivers, and change Menu Driver to ‘xmb’. Then restart RetroArch.

DPI scaling

As previous users of Ozone will already know, Ozone in the past did not really scale well beyond 1080p. This has now been fixed by jdgleaver. Ozone is now using DPI-based scaling, so it should scale correctly whether you are running at 4K or 1080p or even lower.

If you think the default scale is too big on your device, you can also adjust the scale manually via the Menu Scale Factor setting under User Interface > Appearance. 1.00x is the default auto-scaled value. To make it slower, lower the value, and to make it bigger, increase it.

Touchscreen / Mouse support

Ozone also now has rudimentary mouse and touch support for the first time!

  • Touch can be used to switch between sidebar and entries list
  • Touch can be used to select sidebar and entries list items
  • Both sidebar and entries list can be scrolled by dragging
  • Clicking/pressing the header or footer produces a ‘cancel’ action

Mouse-specific notes:

Cursor focus follows mouse pointer from sidebar to entries list (and vice versa).

In entries list, item under cursor is automatically selected (with some fudging to ensure this doesn’t break mouse wheel scrolling).

In sidebar, item under cursor is not automatically selected (this is too jarring).

Touchscreen-specific notes:

Touch screen input is a little clunky, since we can’t automatically switch from sidebar to entries list (there is no ‘cursor focus’ to follow, and it’s not possible to cross the boundary and action an item in one go – this breaks the menu, so some internal changes would be required to support this…)

So at present: if the cursor is in the entries list, the sidebar must be touched once before a sidebar item can be selected – and likewise, if the cursor is in the sidebar, the entries list must be pressed once before an entry can be selected (in the latter case, the touched entry will only be highlighted on the first press).

If the cursor is in the entries list, short pressing an item will highlight it without actually selecting it; tapping the entry (i.e. instantaneous press) will always select and action it.

When viewing playlists, swiping left/right will descend/ascend the alphabet (same as pressing PgUp/PgDn on a keyboard). Note: We cannot enable this when using a mouse, since it conflicts with the automatic ‘entry under cursor’ selection.

When will this be ready?

You can get all this already right now if you are using a nightly build. For everyone that doesn’t like to live on the edge, wait until we release version 1.8.5!

Mupen64Plus Next 2.0 – 64DD Support, Angrylion and GlideN64 in one build, Parallel RSP support, and Android!



What a massive release we have for you today! M4xw has been really delivering the goods now and we’re pleased to release Mupen64plusNext 2.0 today. This release would not be as significant as it is today without the combined efforts of LuigiBlood, Gillou, Fzurita and Themaister.

The latest version is now available on Android, Linux, Windows, and Libnx (Switch)! Updating to the latest core is as easy as starting RetroArch, going to Online Updater, and selecting ‘Update Installed Cores’. If you have not installed the core yet, instead go to Online Updater and select ‘Mupen64 Plus Next’ or ‘Mupen64 Plus Next GLES3’ from the list.

64DD support


Previously, only Parallel N64 had 64 Disk Drive support, courtesy of LuigiBlood. Work on it was left rather incomplete though.

Mupen64Plus Next now has a new implementation that LuigiBlood feels more comfortable with. Currently the way that you load 64DD content with Mupen64 Plus Next is completely different from how you do it on Parallel N64.

First, you need a BIOS file. Make sure the file ‘IPL.n64’ is located in your /Mupen64plus directory.

You can either use the subsystem for 64DD, or you can name the disk image the same as the ROM including extension.

If you need to load a specific cart with the Disk image, that would be: “homebrew.n64” and “homebrew.n64.ndd” then Load Content “homebrew.n64”.

Zelda 64: Dawn & Dusk - unofficial 64DD expansion game to OOT
Zelda 64: Dawn & Dusk – unofficial 64DD expansion game to OOT
64DD had an exclusive Sim City version, called Sim City 64
64DD had an exclusive Sim City version, called Sim City 64

Angrylion and GlideN64 in same build!

Previously, Mupen64Plus Next only had GLiden64 as an RDP graphics option, and only ParaLLel N64 had Angrylion.

Now, Mupen64Plus Next has both, and allows you to choose between them. To do so, go to Quick Menu -> Options, and change RDP Mode. Angrylion is a low-level software-rendered accurate renderer, while Gliden64 is a high-level emulation OpenGL renderer.

Angrylion is the most accurate the graphics are going to get with an N64 emulator – and it can be made relatively fast now thanks to the multithreading capabilities of Angrylion RDP Plus, as well as the Parallel RSP dynarec. You cannot internally change the resolution with Angrylion beyond what the N64 was capable of.

Gliden64 on the other hand takes a more pragmatic approach and emulates the RDP with a high-level approach. It is an OpenGL renderer. You can upscale the graphics, and there is a wide array of settings to tweak.

Most regular people will probably be satisfied by Gliden64 and HLE RSP, and indeed, for many platforms, that might be the only feasible way of attaining fullspeed. But Angrylion definitely fulfills a niche for those that want a more accurate portrayal of N64 graphics – and combined with an upscaling shader, it can still look remarkably good.

Parallel RSP support

Parallel RSP saw its first debut in ParaLLel N64, and now we have it backported to Mupen64Plus Next as well! Read our articles here and here for more information on Parallel RSP.

Parallel RSP is a Low-Level RSP plugin that serves as a replacement for Cxd4. You can use it in combination with Gliden64 and/or Angrylion. With Angrylion you are pretty much required to use either Parallel RSP or Cxd4 as your RSP plugin, HLE RSP won’t work. Cxd4 is an interpreter RSP plugin while Parallel RSP is a dynarec RSP plugin. Parallel RSP should be noticeably faster across the board than Cxd4.

You might see better performance with Mupen64plus Next and Angrylion/Parallel RSP vs. ParaLLEl N4, because Mupen64Plus Next uses the New_dynarec CPU core. ParaLLEl N64 instead uses the Hacktarux dynarec CPU core, which can be a tad bit slower.

NOTE: You can also use Parallel RSP in combination with Gliden64. While HLE RSP has made significant strides in emulating the vast majority of known RSP microcodes, there might still be some microcodes that have either not been reversed at all or were not accurately reversed. In this case, an LLE RSP plugin is always an option, and Parallel RSP ought to be the faster one of the two options.

Angrylion + Parallel RSP on Android – approaching fullspeed on high end phones?

50fps with Super Mario 64 on a Galaxy S10+ - RetroArch Mupen64Plus - Angrylion - Parallel RSP
50fps with Super Mario 64 on a Galaxy S10+ – RetroArch Mupen64Plus – Angrylion – Parallel RSP

Angrylion is now available as an option for both Parallel N64 and Mupen64plus Next on Android.

Mupen64plus Next definitely has a performance advantage over Parallel N64 when it comes to Angrylion. Tests have shown that the first area in Mario 64 gets about 50-51fps on a Samsung Galaxy S10+ American Snapdragon version and 40/45fps on a Samsung Galaxy S10+ European Exynos version.

Will the next generation of phones be capable of pulling off Angrylion at fullspeed? It’s certainly a tantalizing prospect!

NOTE: There might be several ways you have to ‘nudge’ your Android device to get the best performance out of Angrylion/Parallel RSP. Some things you can try:

– Enable ‘Sustained Performance Mode’. If you find it helps with the framerate, leave it on. If not, disable it.
– Enable ‘Disable Expansion Pak’. It might result in a small performance boost for games that don’t support the Expansion Pak.
– Go to Quick Menu -> Options. VI Overlay can have an additional performance impact on the framerate. ‘Filtered’ is the most demanding option while ‘Unfiltered’ should be fastest.
– Go to Quick Menu -> Options. ‘(AL) Multi threading)’ is set to ‘all threads’ by default, but in case for whatever reason the software does not make the right core determination, you might want to set the amount of cores manually here. Base this number on the amount of CPU cores that your Android device has.

Angrylion + Cxd4
Performance results – LG G8X and Samsung Galaxy S10+ (Snapdragon)

Angrylion + Parallel RSP
Performance results – LG G8X and Samsung Galaxy S10+ (Snapdragon)

HLE RSP improvements – HVQM support

The HVQM RSP microcode has now been implemented for HLE RSP (thanks to the combined efforts of CrashOveride and Gillou). In the past, the FMVs for Pokemon Puzzle League would only show up if you used Angrylion and an LLE RSP plugin. Now the graphics glitches in Pokemon Puzzle League and Yakouchuu II should be gone! This means that you can now use the GlideN64 renderer for these games as well.

Difference between ParaLLel N64 and Mupen64Plus Next

Available plugins Mupen64Plus Next: Gliden64, Angrylion

Available plugins Parallel N64: Glide64, Parallel RDP, Rice, GLN64, Angrylion

In Mupen64Plus Next’s favor – it is based on a much more recent mupen64plus-core version than Parallel N64, and thus has benefited from years of fixes and architectural improvements. It also uses the New_dynarec CPU core on Windows/Linux/Mac. It is a bit faster than the Hacktarux dynarec from Parallel N64.

There are also currently some disadvantages. The sound is currently crackly with some games like Doom 64 and Quake 64. There are currently some experiments being explored to deal with these issues.

64DD support right now is implemented completely differently in both cores.

Changelog

  • 64DD support (works through the subsystem menu)
  • Angrylion and GlideN64 are now inside the same build – you can switch inbetween them
  • HLE and LLE RSP support – with LLE your choices are between cxd4 [Interpreter] and Parallel RSP [Lightning/Lightrec dynarec]
  • Parallel RSP support for the first time in Mupen64 Plus Next
  • Available on Android with all of the above!
  • The latest HLE RSP improvements – HVQM support – Pokemon Puzzle League FMV support works now with HLE RDP renderers like GlideN64
  • Mitigation for SPECIAL_INT on downcounter flip – fixes freezes in Legend of Zelda: Majora’s Mask
  • Killer Instinct Gold now works with Angrylion + LLE RSP

Flycast Progress Report – Mip-mapping properly implemented now on both Vulkan and OpenGL



Some significant improvements have been made to the Dreamcast emulator core Flycast by flyinghead that serve to increase the graphics accuracy.

For one, the OpenGL renderer has mip-mapping support now for the first time. Second, all texture mipmap levels are now uploaded to the GPU. The Vulkan renderer no longer auto-generates mip-maps and instead uses the proper mipmap levels. What happened before is that these auto-generated mipmaps would ‘bleed’, whereas the ones provided by the game do not.

This caused issues with games like Railroad Tycoon 2 where the beach texture was not properly displayed.

Before the fix, you’d have weird magenta colors on the beaches with the Vulkan renderer. This has now been resolved.

To learn more about texture bleeding, you can read this StackExchange article here.

Another example of what texture bleeding looks like can be seen down below (and note that this is now also fixed) – previously texture bleeding would regularly occur at upscaled resolutions –

NFL 2K2 - texture bleeding issue when upscaling - how it looked before
NFL 2K2 – texture bleeding issue when upscaling – how it looked before

Many of these issues have now been fixed. See the picture down below how the title screen above for instance looks like now –

NFL 2K2 - texture bleeding issues fixed
NFL 2K2 – texture bleeding issues fixed

How mip-mapping looks like on Dreamcast

To best illustrate the effect mip-mapping has on the video output quality, let us show some comparison pictures at the Dreamcast’s native 640×480 resolution.

The picture down below shows Soul Calibur running with mip-mapping disabled:

Soul Calibur on Dreamcast with mip-mapping disabled
Soul Calibur on Dreamcast with mip-mapping disabled

The picture down below shows Soul Calibur running with mip-mapping enabled:

Soul Calibur on Dreamcast with mip-mapping enabled
Soul Calibur on Dreamcast with mip-mapping enabled

At higher resolutions you will notice the blurriness starting to gradually disappear.

Combining mip-mapping with anisotropic filtering

The Vulkan renderer allows you to apply Anisotropic filtering (AF) to the textures (to learn more about it, read the Wikipedia page here).

Soul Calibur on Dreamcast with mip-mapping enabled and 16 x AF filtering
Soul Calibur on Dreamcast with mip-mapping enabled and 16 x AF filtering

While you can still make out some of the far textures in the distance being slightly blurry as a result of the mip-mapping, overall the blurriness factor is significantly reduced as a result of the agressive 16x AF filtering being applied here, even at a very low resolution of 640×480.

Even further tweaking possible with PowerVR postprocessing filter

You don’t have to stop at mipmapping and AF filtering of course. You can also take advantage of leilei’s PowerVR post processing filters on top to further enhance the authenticity of the picture.

NOTE: For now, the PowerVR postprocessing filters only work with OpenGL. Vulkan support will arrive later.

Soul Calibur on Dreamcast with mip-mapping enabled and PowerVR postprocessing filter
Soul Calibur on Dreamcast with mip-mapping enabled and PowerVR postprocessing filter

Here we have mip-mapping enabled and PowerVR 2 Postprocessing filter enabled. NOTE: Because this is the OpenGL renderer, anisotropic filtering right now is not available, so we cannot show you a picture of how the PVR2 postprocessing looks like in conjunction with 16x AF. Neither can we show a similar picture on Vulkan right now because the aforementioned PVR2 postprocessing filters are not available there. Hopefully both renderers can be at feature parity soon in these departments.

How to get it

There are two ways to update your Flycast core. Start up RetroArch first –

a – If you have already installed the core before, you can go to Online Updater and select ‘Update Installed Cores’.

b – If you haven’t installed the core yet, go to Online Updater, ‘Core Updater’, and select ‘Flycast’ from the list. It will then download and install this core.

Libretro Cores Progress Report – February 5, 2020 (Big updates for N64, Dreamcast, PlayStation1, Saturn and 3DO emulator cores!)

Our last core progress report was on January 9, 2019. Below we detail the most significant changes to all the Libretro cores we and/or upstream partners maintain. We are listing changes that have happened since then.

How to update your cores in RetroArch

There are two ways to update your cores:

a – If you have already installed the core before, you can go to Online Updater and select ‘Update Installed Cores’.

b – If you haven’t installed the core yet, go to Online Updater, ‘Core Updater’, and select the core from the list that you want to install.

Parallel N64


Description: Nintendo 64 emulator core

Parallel RSP has been completely rewritten to use GNU Lighting instead of LLVM.

Advantages:
* LLVM was a big dependency. When statically linking this in, the core could become as big as 80MB non-stripped and 60MB stripped. Contrast this to GNU Lightning where we are sitting at 3.6MB non-stripped. LLVM also was not trivial to port to other platforms as easily as GNU Lightning. This means that Parallel RSP will make its way to Android and Switch (there is already an Aarch64 backend being written by m4xw)

* There are no more micro stutters and stalls that plagued the LLVM implementation. For instance – bringing up the auto-map in Doom 64, or the first menu screen transitions in F-Zero X, or firing your gun for the first time in Quake 64 – all of these would add temporary 1 second or more stalls the first time a code block was being compiled. With GNU Lightning, there are no such issues.

Disadvantages:
* Code generation is quite naive compared to LLVM’s, so there is somewhat of a performance tradeoff compared to the LLVM implementation. We estimate we lose about 5 to 8fps compared to the LLVM implementation. However, no microstutters/stalls and no more LLVM dependency makes it worth it, and there are ways to win this performance back and go further beyond in departments other than parallel RSP anyway.

  • Remove old parallel RSP implementation based on LLVM, replaced with Lightning-based parallel RSP. Takes care of microstutters/stalls
  • Angrylion: Option to select number of threads
  • Parallel RSP now available on Mac

Flycast


Description: Sega Dreamcast emulator core

Important updates

Flycast – Better saturate colors when converting textures to higher precision

Flycast – fix texture bleeding case when upscaling

Increased NAOMI Arcade game compatibility

Flyinghead has been busy improving arcade emulation support.

Netlink support is being worked on for Gun Survivor 2 Biohazard Code: Veronica. This is an arcade game adaption of Resident Evil Code: Veronica. It was also later released on PlayStation2. It never made the transition to the home on Dreamcast.

Second is Mazan – Flash of The Blade. The controls were not emulated before. This game is actually fairly unique in that not only was it a custom Naomi hardware design by Namco (more capable GPUs that could operate in an array), but it also had an unique input device.


It used motion sensing technology to detect swings you would make with the sword. Yes, that’s right, a motion sensing sword is your primary input device in this game.

(Upcoming) Accurate video output simulation – PowerVR 2 Post-process filtering

Leilei and Flyinghead got together to add something that accuracy purists might love. This is an upcoming feature that will be available soon –

We’ve added a couple of video output postprocessing options. To be exact, it’s an internal 24->16-bit buffer post-dithering pipeline stage. Lei-lei did this reversal of the PowerVR effects with his PowerVR PCX2 card (which has the same exact post-dithering as the newer PVR GPUs) and observing lossless official press release screenshots and xjas’s VGA capture dump.

If you recall, during the PS2’s early launch, people would often remark that the Dreamcast’s video output appeared crisper and had anti-aliasing applied whereas PS2 launch games appeared heavily aliased. In truth, what was going on was not really full-scene anti-aliasing or anything to that effect. Instead, it was a simple vertical blur the PowerVR2 GPU in the Dreamcast did to combat interlace flicker on composite video output.
The GameCube did something similar with the copy filters on a few games. Some of Sonic Team’s games on GameCube for instance did a similar vertical blur for the same deflicker purpose.

There was also noticeable VGA signal loss included in the VGA output when connecting your Dreamcast to a monitor with a VGA cable. It gives the screen a green hue and adds a ton of feedback instead of it being a clean dithered 16bpp image. This is also an option in the frontend shader, and we hope to add this too to Flycast as an optional feature.

You can now enable this with the GL renderer. If you’d like to use this shader in other cores and apply it as a frontend shader, you can do that too – we added the shader to the GLSL and Slang shader packs (see gpu/powervr2).

Frame comparison at native resolution

Frame comparison at 5120×3840

Changelog

  • Init AICA int mask/level at HLE boot – fixes missing audio in KOS homebrews
  • Disable DIV matching for Aqua GT
  • Disable DIV matching for Rayman 2 (NTSC)
  • Disable DIV matching for Rayman 2 (PAL)
  • Disable DIV matching for Elysion
  • Disable DIV matching for Silent Scope (NTSC)
  • Disable DIV matching for Silent Scope (PAL)
  • Disable DIV matching for Power Stone (US)
  • Disable DIV matching for Power Stone (JP)
  • Disable DIV matching for Power Stone (PAL)
  • Disable DIV matching for Metropolis Street Racer (NTSC)
  • Disable DIV matching for Metropolis Street Racer (PAL)
  • Disable RGB Component for Vigilante 8: 2nd Offense, Gauntlet Legends, Street Fighter Alpha 3
  • Stop CDDA when reading sector. Fixes Hydro Thunder – Time records music bug
  • (GL/Vulkan) Ignore trilinear filtering if texture isn’t mipmapped. Fixes Shenmue snowflakes color
  • (GL/GL4) PowerVR2 post-processing filter from leilei
  • (GL4) Fix blending issue when autosort=0. Fixes Sturmwind menu
  • (GL4) Don’t use extra depth scale in fog calculation. Fixes fog density in Sega Rally 2
  • New widescreen cheats: Suzuki Racing, Nightmare Creatures, Rent a Hero
  • (Maple) Safely reconnect VMUs when changing per-game VMUs option, may lead to VMU corruption otherwise. Don’t create VMU files when running Naomi or AtomisWave games
  • (Naomi) Emulate World Kicks and World Kicks PCB inputs
  • (Naomi) Fix reboot (and exiting service menu) by disabling legacy DIMM board emulation
  • (Naomi) Add input config for Mazan, emulate inputs for Mazan
  • (Reios) Support disk eject/change. Tested with Skies of Arcadia and D2
  • (PVR) Better saturate colors when converting tex to higher precision. Fixes transparency Issues in RE: Code Veronica and Dead or Alive 2
  • (PVR) Fix simple texture bleeding case when upscaling
  • Add disk control interface v1 support [jdgleaver]

Beetle PSX


Description: Sony PlayStation1 emulator core

Some important updates for Beetle PSX too – Lightning/Lightrec (the new dynarec technology being used) has seen many updates and improvements. Aarch64 compatibility should be a lot better now. ARMv7 is still a Work-In-Progress and still has many issues.

It’s now possible to set DMA/GPU Event Cycles to values as high as 1024. 1024 can offer a significant speed boost, but some games might not boot with this setting enabled. Test it yourself with a game of your choosing and see if it works reliably before you decide. You can always go for a lower value and see if that works better, while you don’t lose too much performance in the process.

So, to address the previous limitations of the dynarec – the two big ones were that runahead did not work, and that PGXP did not work with the dynarec enabled. Runahead is now working for software rendering mode, so that part is fulfilled (since hardware rendering not working reliably is not a core issue). As for PGXP, it now works with dynarec, but you will see a steep decline in performance, bringing you to performance levels just a little bit better than interpreter mode. However, there are plans to make PGXP part of the dynarec as well, which could take care of this issue.

Some performance tips for people that want to get the most out of their device:
* Set Dynarec Code Invalidation to ‘DMA Only (Slightly Faster)’. If it causes no issues in a game, this should give you a not-insignificant performance boost in some games.
* Set Dynarec DMA/GPU Event Cycles to a higher value than the default 128 if you can get away with it. If a game starts crashing or no longer boots from the BIOS screen, then you know you set it too high. Setting DMA Cycles to 1024 can have a big impact on maximum framerate.
* Software Framebuffer can be disabled for games that don’t make use of framebuffer readback. Try to turn this off if you are using the Vulkan hardware renderer. If you find certain graphics artefacts all of a sudden that were previously not there, you might have to turn this setting back on to get rid of the glitches.
* The Vulkan renderer right now might be a bit slower than the Software renderer. Some things you can try to bring the performance more in line would be to disable things like ‘Adaptive smoothing’, but if there is still a big performance gulf, you should resort to the Software renderer.
* PGXP right now will have a massive impact on performance with the dynarec. Turn it off if you care about getting the best performance possible.

  • Don’t call PGXP functions in gpu when PGXP is disabled
  • Add PGXP support in dynarec. Not much faster than interpreter, due to calling PGXP functions on every load/store opcode. Might become faster later
  • Add more DMA/GPU Event Cycles options. All multiples of 128 (default) should be fine. 1024 should be significantly faster but also the least compatible
  • Increase CPU overclock limit to 750%
  • Fix loading save states from pre-dynarec, need to use SFARRAYN with old name
  • Update Lightning
  • Add disk control interface v1 support [jdgleaver]

4DO


Description: 3DO emulator core

To learn more about some of the recent developments surrounding 4DO, be sure to read our dedicated article on this.

Beetle Saturn

Description: Sega Saturn emulator core

  • Add disk control interface v1 support [jdgleaver]

Beetle Wswan

Description: Bandai WonderSwan/WonderSwan Color emulator core

  • Backport 1.24.0 fixes
  • Backport variable color depth

Beetle Supergrafx

Description: Supergrafx emulator core

  • Move 2/6 button mode toggle to frontend

NeoCD

Description: SNK Neo Geo CD emulator core

  • Initial implementation of memory maps (untested) [fabrice-martinez]

Mupen64plus Next

Description: Nintendo 64 emulator core

  • Hotfix for Legend of Zelda: Majora’s Mask freeze due to special interrupt
  • Hotfix for Legend of Zelda: Ocarina of Time (+randomizer), this also fixes Rat Attack (only for dynarec, not interpreter) due to wrong handling of TLB exceptions for titles that don’t use TLB
  • Both hotfixes don’t fix the root cause and will be revised later on
  • Updated mupen64plus-rsp-hle, thanks to Gillou68310 the HVQM µcode is now implemented for HLE, fixing Pokemon Puzzle League and Yakouchuu II.

Note: Stay tuned for a lot of great updates coming out over the coming months, featuring threaded rendering as well as multi plugin support!

bsnes hd beta

Description: Super Nintendo emulator core

  • Update to latest version [DerKoun]

Boom3

Description: Doom 3 game engine core

  • Changed name from dhewm3 to boom3 at request of author

P-UAE

Description: Commodore Amiga emulator

  • Libco removed. 8-9% performance improvement
  • Enabled SERIAL_PORT, which fixes:
    All versions of Super Skidmarks, except that WHDLoad slave 1.1 with the ludicrous memory requirement
    Grand Prix Circuit
  • Ensure reset_drawing() is called whenever geometry changes (prevents out of bounds video buffer access)
  • D-Pad mouse acceleration + font fix
  • More statusbar options
  • VKBD glyph tuning
  • Add support for disk control interface v1 (disk display labels)
  • Remove savestate_initsave + better VKBD mouse control
  • Fix from WinUAE 4.1.0 for Chaos Engine 2 AGA crash
  • VKBD tuning
  • Audio via retro_audio_batch_cb + MDS fix + pregap fix
  • New default controls
  • Graph font & VKBD tweaks
  • HD LED writing color to red

Final Burn Neo

Description: Multi-system arcade emulator core

  • Latest updates

LRmame

Description: Multi-system arcade emulator core

  • Updated to latest version (0.218) – will be available later today [tcamargo]

NP2kai

Description: PC-9801 series emulator

  • Updated to latest version [AZO234]

Frodo

Description: Commodore 64 emulator

  • Now available on Android

Kronos

Description: Sega Saturn emulator core

  • OpenGLES preparation work
  • Fix window resize for VDP1 layer – Fix Winter Heat in resize
  • When OREG is read while status flag is clear, force command processing – avoid race – fix Rayman controls
  • Be more generic for the SMPC race issue
  • On intback continue write, status flag shall be 1 – Fix batman boot
  • Fix Batman window
  • Set the vdp1On when updating using write – Fix Sega Ages loading screen
  • If the VDP1 is cleared with a non transparent color, assume it shall
  • Introduce the development RAM Card used by Heart of Darkness
  • Display VDP1 layer cleared with non transparent color
  • (libretro) hook the dev cartridge
  • Fix two consecutive end code on core OpenGL – Fix Code R
  • fh is related to kx – shall fix some bad behavior on RBG CS

FCEUmm

Description: NES emulator core

NOTE: All changes courtesy of negativeexponent

  • Update mapper 213
  • Update mapper 319 (BMC-HP898F)
  • Update vrc2and4.c – support for big bank CHR (Contra 3) matched by hash
  • Added iNES 1.0/2.0 mappers
  • 134 – replaced Mapper134_init with Bs5652_Init
  • 391 – NC7000MM
  • 402 – 831019C J-2282
  • Added UNIF boards:
  • AB-G1L
  • BS-110
  • WELL-NO-DG450
  • KG256
  • Fix savestates – prevent possible issue on big-endian by adding mask
  • Fix savestates – specify correct variable size to state struct
  • Backport new FDS [Famicom Disk System] disk handling – fixes saving issue with some games (Bubble Bobble, Super Lode Runner II, …)
  • Add mapper 357
  • Add mapper 372
  • Add mapper 541
  • Add mapper 538
  • Add mapper 381
  • Add mapper 288
  • Update BMC-RESET-TXROM (m313)
  • Add mapper 374
  • Add mapper 390
  • Add mapper 267
  • m313: Fix incorrect bank sizes
  • Add mapper 294 (m134)
  • Add mapper 297

Genesis Plus GX

Description: Sega Genesis/Mega Drive/Master System/Game Gear emulator

  • Updated to latest version
  • Fixed runahead issues

SMS-Plus GX

Description: Sega Master System/Game Gear emulator

  • Add support for 2nd player port

Picodrive

Description: Sega Genesis/Mega Drive/Game Gear/Master System/Sega CD/32X emulator core

  • Allow access to Sega CD’s extra memory using retro_memory_map [negativeExponent]

mgba

Description: Game Boy Advance emulator core

  • Updated to latest version
  • Add Italian core options translation
  • Fixed runahead issues [endrift]
  • Add optional interframe blending

Mesen

Description: NES emulator core

  • Updated to latest version [Sour]
  • Fixed runahead issues [Sour]

PCSX ReARMed

Description: Sony PlayStation1 emulator core

  • Add input analog axis range modifier [stouken]
  • Add disk control interface v1 support [jdgleaver]

Snes9x 2005

Description: Super Nintendo emulator core

  • Should finally compile now for Raspberry Pi 4

TIC-80

Description: TIC-80 emulator core

  • Updated to latest version

PX68K Libretro

Description: NEC X68000 home computer emulator

  • Fix for M3U not registering Eject state
  • Implementation of new Disk Control interface (including custom labels)
  • px68k switch menu now accessable as core options

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!