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

Prboom – Working rewind and WIP Runahead support!

Prboom, the Doom 1/2 game engine core, has finally gained serialization support. In this video, you can see rewind being used, as well as experimental runahead support!

Runahead support is currently incomplete and you can see some of the status bar elements flashing, some of the screen updates also are improperly rendered right now. The promise with runahead though is that we can start shaving off large amounts of built-in game latency once it’s working perfectly! For the best results right now with runahead, we currently recommend that you enable ‘Use second instance’ and set ‘Runahead Frames’ to 1.

Start up your copy of #RetroArch and upgrade your core to the latest version of Prboom to enjoy these latest new features!

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.

PCSX ReARMed now has dynarec support across multiple platforms!


If you can recall, a few days ago, Beetle PSX gained a dynamic recompiler based on Lightrec/GNU Lightning. We are happy to inform you that the latest version of PCSX ReARMed now available on the buildbot also has Lightrec support enabled for x86 (32bit and 64bit) and Aarch64 (64bit ARM).

How to get it

There are two ways to update your PCSX ReARMed core:

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 ‘PCSX ReARMed’ from the list. It will then download and install this core.

So what has changed?

Before, PCSX ReARMed only had a dynamic recompiler for 32bit ARM-based systems. Every other CPU architecture would instead have to revert to a CPU interpreter core. This mean that for every other achitecture, it would be far slower than the optimized 32bit ARM versions.

What has changed now is that x86 (32bit and 64bit) and Aarch64 (64bit ARM) now use the Lightrec dynamic recompiler. ARM 32bit will still use the Ari64 dynamic recompiler because it just happens to be much faster than Lightrec.

Other things important of note – the 32bit ARM version uses a different renderer, NEON GPU renderer. All the other versions use P.E.Op.S. Soft GPU. NEON GPU Plugin has an enhanced resolution which gives you a 4x upscaling, while P.E.Op.S. Soft GPU doesn’t have any such feature. We’d like to bring the NEON GPU Renderer over to the other platforms but right now, the C codepaths are pretty bad compared to the optimized 32bit ARM NEON codepaths. It would require a lot of work to bring it up to par and get rid of the graphics glitches, so Pete’s Soft it is for now.

Current limitations

  • Right now it won’t work with the HLE BIOS feature. The dynamic recompiler only works right now with a real BIOS.
  • Runahead won’t work reliably right now.
  • Right now, Lightrec in PCSX ReARMed uses the Cycle Timing Check mode. If you can recall from our earlier article on Beetle PSX, this is a dynarec mode with additional cycle timing checks, which makes it significantly slower than the ‘Max performance’ mode. Hopefully PCSX ReARMed can eventually use the ‘Max Performance’ mode soon, giving us an additional speed boost.

We hope these issues can be resolved soon.

Performance tests

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

Game Interpreter (No Dithering) Interpreter (With Dithering) Dynarec (No Dithering) Dynarec (With Dithering)
Final Doom 246fps 245fps 621fps 616fps
Resident Evil 250fps 248fps 642fps 639fps
Tekken 3 190fps 175fps 279fps 250fps

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

4DO: Recent Changes and Future Plans

About two years ago I more or less adopted the libretro 4DO core. After fixing a VSYNC issue that many had complained about I ended up almost completely refactoring the code and adding a number of features. After a year’ish break I’m back and have been focusing on accuracy and some experimentation in HLE (high level emulation). Here’s an overview of some of that work and plans for the future.

Adding HLE

The 3DO was ahead of its time in a number of ways. One was that it had an operating system. It has preemptive multitasking, threading, high level memory management, dynamic loading of “folios” (libraries), IPC, IO APIs, and general abstractions to much of the hardware. The OS and most/all software for the platform is written in C and compiled using the Norcroft ARM toolchain from that era. The OS is present in the system’s ROM but also included on each CDROM. The ROM OS is pretty thorough but ultimately a bootloader and bootstraps the environment before handing control off to the software on the CDROM. Many of the core OS functions are called via the ARM SWI (software interrupt) instruction. This makes catching and overriding these calls very easy when combined with knowledge of the ARM procedure call standard.

Catching and overriding some or all of the OS functions would theoretically improve performance and/or enable advanced features. Some of these functions are somewhat complicated but one set of SWI calls were a perfect candidate for HLE: the matrix arithmetic functions. The MADAM graphics co-processor has a set of hardware accelerated 16.16 fixed point matrix arithmetic functions. This is used in a number of 3D games and called regularly. While reworking MADAM emulation in the past it was recognized that the OS could and would check the revision of the MADAM chip and had a fallback to software based matrix functions if it recognized it was running on a prototype system without the matrix hardware and that for some games there was a slight speed increase when switching between the hardware emulation and the software routines. So we know that improving the matrix arithmetic situation could help lower end systems struggling with the LLE and it should also be simple to ensure accuracy.

So we’ve added a new, optional, HLE mode that replaces the emulated hardware or software matrix functions with native fixed point calculations performed in straight C. Games that make heavy use of the matrix hardware run a few FPS faster on lower end systems such as the XU4. The option can be toggled in real time making comparison easy. You can see what games use these functions on the 3DO Development Repo site.

In the future a number of other functions would be interesting to replace such as the DSP and filesystem APIs. The DSP never got a development kit so most (all?) games use standard programs provided by The 3DO Company. Meaning that each of these programs could be statically re-implemented in C instead of using the current interpreter. The DSP is probably 1/3 of the CPU cost to emulation so HLE could make a big impact there. With the filesystem API the host storage device could be used directly allowing easier sharing and backup of save games and offering more space than a real system could have.

VDLP Rewrite

The 3DO has a fairly advanced video display line processor. It has programmable functions which provide a number of features including: managing CLUTs (color lookup tables), performing optional horizontal and vertical interpolation (upscaling from the internal 320×240 framebuffer to 640×480), managing background color, integrating secondary video data streams, etc.

The FreeDO/4DO VDLP emulation was not the best. If you read the patents the system seemed reasonably straightforward but the code not so much.

  • Has a lot of literal values for masks and shifts making it unclear what is being processed.
  • Variable names did not always match the docs.
  • Inadvertently reversed logic that rendered the wrong lines.
  • A constant bodge value used to offset the rendering line. Didn’t have a functional impact but was confusing and ugly.
  • It fails to properly manage the disabling render of a line. This can result in garbage being rendered.
  • Lacks the interpolation to full NTSC or PAL frames.
  • A general lack of PAL support.
  • It failed to properly sync line rendering with libretro’s main callback leading to additional rendering latency.
  • Has an unnecessary step in the rendering pipeline. Rather than taking the internal VRAM framebuffer and directly generating the buffer for the host to display it was copying the data into an intermediate structure which later was converted into a host compatible format. This copying offered no additional functionality and could be removed entirely.
  • Alternative color formats were ignored completely. Only P555 was supported. Though it is unclear if any software use the other formats.

A new VDLP core has been written from scratch to fix some of the above and enable future enhancements. New features include:

  • Lower frame rendering latency
  • Properly synced frame generation with libretro run loop
  • Improved performance due to removal of extra rendering stage
  • Ability to choose any of the libretro pixel formats (XRGB8888, 0RGB1555, or RGB565). Formerly only supported XRGB8888. May improve performance on 16bpp platforms.
  • Forced CLUT bypass mode. The VDLP has a special, per line and per pixel ability to disable color lookups and convert the P555 RGB to 888 RGB by a logical shift left of 3. Many games technically use a CLUT but in fact use a default palette that matches the left shift values. While this may cause color distortions on some games it also should improve performance due to a simpler pixel conversion function.

Interpolation is still on the TODO list. It will add non-insignificant cost to the rendering pipeline but was a significant feature of the platform and would be nice to have for the authenticity.

PAL ANVIL Support

Later revisions of the 3DO had a chip called ANVIL which was the combination of the co-processors MADAM and CLIO. The ROM for those systems are very similar to the previous model’s ROMs except that it appeared to be mirrored to a different memory location. It put a single unconditional jump at bootup into that mirrored location but all other references were to the original memory range. This  memory range was not properly supported nor was the VDLP and general rendering pipeline designed to work with PAL. All of that has been fixed. You can use EU ROMs which will cause EU games to run in one of two PAL resolutions. For the time being the ROM and resolution/field rate need to be selected manually.

A list of games and their supported region modes can be found here. Few games actually render at full PAL resolutions (PAL2). Most are letterboxed NTSC (PAL1).

Future Work

  • New HLE functions as described above
  • VDLP interpolation (dev docs, patent)
  • Increased emulated system DRAM and VRAM. The OS can support up to 14MB of DRAM & 2MB of VRAM or 15MB DRAM & 1MB VRAM. The emulator needs to be rewritten to enable it. This could help with homebrew.
  • Rewrite of the ARM and DSP cores
  • Rewrite of the CEL renderer
  • Removal of the “hacks” / improve accuracy
  • Improve accuracy by adding MADAM memory fence support and proper CPU exceptions such as those related to data alignment
  • Automatic detection of NTSC/PAL modes
  • Configurable hardware revisions of MADAM and CLIO chips
  • Add features to help with homebrew development and debugging
  • Other misc things

Renaming of the Project

Development on the original 4DO projected stopped a number of years ago and while the website is still up the project is effectively dead. It’s been noticed that people regularly believe that the old 4DO project and the libretro core are largely identical however the libretro core has gone under significant restructuring, rewrites, and offers new features. To limit confusion we are planning on renaming the project to Opera in the not too distant future. Opera was the code name for the 3DO project.

Related Work

Optimus (author of OptiDoom, the reworked 3DO Doom port) and I have created a new website dedicated to all things 3DO development. We’re writing homebrew tutorials, documenting the hardware, posting development toolkits and homebrew tools, etc. The hope is to spur interest in the platform and lower the barrier to entry.

Right now there is a very small group of individuals working in the 3DO and M2 space. Whether that be documentation, emulation, or homebrew. We’d like to extend an invitation to any and all interested in the 3DO or M2 to help in any capacity or consider the platforms for their current or future homebrew projects. We’ve got a big TODO list that we would love help in tackling. If you’re just interested in following our progress you can create an account on the wiki and subscribe to updates and/or “Watch” the libretro project.

Beetle PSX Dynarec Update – Switch alpha port plus runahead support – lower latency than original hardware!


As an addendum to our earlier Beetle PSX dynarec post, a lot has changed in a couple of days:

  • Several important bugfixes have been pushed for ARM v7/AArch64. This should benefit Android users and ARM Linux SBC users.
  • Runahead support is finally working
  • Alpha release Switch version now available

Runahead support – lower latency than original hardware

Runahead is one of RetroArch’s crowning features as a frontend ever since we debuted this revolutionary feature in 2018.

Most systems more complex than the Atari 2600 will display a reaction to input after one or two frames have already been shown. For example, Super Mario Bros on the NES always has one frame of input latency on real hardware. Super Mario World on SNES has two frames of latency.

Runahead allows RetroArch to “remove” this baked-in latency by running multiple instances of a core simultaneously, and quickly emulating multiple frames at a time if input changes. This strategy has some analogs to frame rollback, similar to how GGPO handles high-lag connections. For it to work reliably, you need to figure out the amount of lag frames a game has, and then set Runahead frame count to that value. When done correctly, not only can you eliminate any perceptible lag, you can actually achieve latency that is quantifiably lower than when played on the original hardware [yes, with a CRT]. Surely that is the stuff of miracles on display technologies that have inherent far higher latency than any CRT screen, plus all the added additional latency of modern day PC OSes on top of the typical overhead brought about by emulators.

So up until now, runahead was not possible on Beetle PSX. Why not? For one, runahead relies on savestates. If serialization and savestates are well implemented, runahead can be used on a libretro core. Second, for runahead to run at fullspeed at any amount of frames, your hardware has to meet the demands of running a game at well above fullspeed. So the lower the FPS, the less conducive that core will be for runahead purposes even IF savestates are well implemented.

A couple of days ago, runahead would not work with the dynarec. This required some modifications. Zach Cook has since managed to fix these issues, and now we can use runahead just fine.

How to use it

First, make sure that you set Hardware Renderer to ‘Software’. Unless you are using a very high end CPU from the last two years, we recommend you leave Internal GPU Resolution at 1x. Combining the dynarec with runahead is a very CPU intensive task. You need all the headroom you can get.

To tinker with runahead settings, go to Quick Menu -> Latency.

Enable ‘Run-Ahead To Reduce Latency’, and set ‘Number of Frames To Run Ahead’ to a value of your choosing. For runahead to run as intended, this value shold match the amount of lag frames of the game.

NOTE: ‘Runahead Use Second Instance’ can give a big performance improvement. Consider always enabling it unless you have reason not to (for instance, some game related issue requires you disable it for whatever reason)

Alpha Switch version available

m4xw has done a quick port of Beetle PSX with the dynarec to the Switch port. He has already uploaded a build that you can try – you’ll have to pass the time with this core until we start deploying this on the buildbot properly.

To use this, extract the contents of this archive into /retroarch/cores/ (assuming RetroArch is already installed).

Performance has dramatically improved over interpreter before – just as an indication, Pepsi Man reportedly runs at fullspeed at 2x software rendering. But be sure to put this build through its paces yourself!

Parallel N64 with Parallel RSP dynarec release – fast and accurate N64 emulation is now here!

Hot on the heels of our Beetle PSX dynarec public beta release, here comes another bombshell, this time targeting that other big 5th generation console, the Nintendo 64.

ParaLLel N64 is back with a vengeance, and this time Parallel RSP coupled with Angrylion Plus RDP is the enabling technology for a big performance jump in low-level accurate N64 emulation.

Parallel RSP

We have released today a new version of Parallel N64 for Windows and Linux that adds back the Parallel RSP dynarec. This together with multithreaded Angrylion makes Parallel N64 the fastest LLE N64 emulator by far.

We have also added missing bits and pieces to Parallel RSP that allows for several games to work, such as World Driver Championship, Stunt Racer 64, and Gauntlet Legends. On top of that, we also optimized some parts in Angrylion RDP Plus which resulted in greatly enhanced core/thread utilization on a 16-core Ryzen CPU. It should also similarly scale well downwards.

Just to illustrate how dramatic of a difference all these performance-focused enhancements make: on an underpowered 2012 Core i5 laptop, the following games are capable of being played at fullspeed: Resident Evil 2, Mario Kart 64, 1080 Snowboarding, Doom 64, Quake 64, Mischief Makers, Bakuretsu Muteki Bangaioh, Bust-A Move 2 Arcade Edition, Kirby 64 – The Crystal Shards, Mortal Kombat Trilogy, Forsaken 64, Harvest Moon 64.

A 2012 Core i5 desktop CPU like the Core i5 3570k should be more than capable enough of playing the vast majority of N64 games at fullspeed with Angrylion+Parallel RSP, with only rare exceptions like Star Wars Episode 1 Racer being too much for it.

Dramatically lowering the performance ceiling like this has vast implications for the viability of low-level accurate N64 emulation, and opens the door for more people to enjoy bug-free N64 emulation, previously the preserve of only the most overpowered PCs.

Right now, only Linux and Windows are able to enjoy the benefits of Parallel RSP due to the LLVM dependency. This might solve itself later on, though.

How to get it

On Windows: Just downloaded the latest Parallel N64 core from RetroArch’s Online Updater menu. You can either download it from Core Updater, or you can select ‘Update Installed Cores’ if you already had a prior version of Parallel N64 installed.

On Linux: Download the latest Parallel N64 core from RetroArch’s Online Updater menu. You can either download it from Core Updater, or you can select ‘Update Installed Cores’ if you already had a prior version of Parallel N64 installed.

IMPORTANT: On Linux, the situation is a bit more complicated. If you find that the core won’t load on your Linux distribution, it is because LLVM on Linux normally links against libtinfo. For the version of Parallel N64, you will need to make sure you have libtinfo5 installed.

On Ubuntu Linux, you can do this by going into the terminal and typing in the following:

sudo apt-get install libtinfo5

Consult the documentation of your Linux distribution’s package manager for more details on how you can download this package. Once installed, the core should work. If you have a more recent version of libtinfo already installed, creating a symlink for libinfo5.so might be enough.

How to use it

Go into Quick Menu -> Options.

Make sure that ‘GFX Plugin’ is set to ‘angrylion’, and ‘RSP Plugin’ is set to ‘parallel’.

Restart the core.

Explanation of the options

Angrylion (VI Mode) – The N64’s video output interface ‘VI’ would postprocess the image in a very elaborate way. We will explain all of the modes down below:

VI Filter: – All VI filtering is being applied with no omissions.

VI Filter – AA+Blur – Only anti-aliasing + blur filtering by the VI is being applied.

VI Filter – AA+DeDither – Only anti-aliasing + dedithering filtering by the VI is being applied.

VI Filter – AA Only – Only anti-aliasing by the VI is being applied.

Unfiltered: – This is the fastest mode. There is no VI filtering being applied of any sort, the color buffer is being directly output.

Depth: – The VI’s depth buffer as a grayscale image

Coverage: – Coverage as a grayscale image

Angrylion (Thread sync level) – With most games it is fine to leave this at ‘Low’. Low will be the fastest, with High being significantly slower. Games which need Thread sync level set to High to prevent rendering glitches include but are not limited to Starcraft 64, Conker’s Bad Fur Day and Paper Mario.

Angrylion (Multi-threading) – You will want to always enable this. When it is disabled, Angrylion will be entirely single-threaded. It will be much slower in single-threaded mode.

Increased compatibility for Parallel RSP

The following games will now work with Parallel RSP:

* World Driver Championship
* Gauntlet Legends
* Stunt Racer 64
* Mario no Photopie (graphics fixed)

Performance tests

NOTE: All these tests were performed with the game Super Mario 64 (USA). Exact scene being tested can be seen in the screenshot down below.


* Cxd4 means the Interpreter RSP core. This was previously the only option you could use in combination with Angrylion – it needs an LLE RSP core, it cannot work with a HLE RSP core.
* All the VI Filter tests are done with Thread Sync Low.

Test hardware: Desktop PC – AMD Ryzen 9 3950x, Windows 10 (16 cores, 32 HW threads)

RSP Mode VI Filter VI Filter – AA+Blur VI Filter – AA+DeDither VI Filter – AA Only Unfiltered – Thread Sync Low Unfiltered – Thread Sync Mid Unfiltered – Thread Sync High
Cxd4 174 VI/s 176 VI/s 175 VI/s 178 VI/s 180 VI/s 175 VI/s 92 VI/s
Parallel RSP 235 VI/s 238 VI/s 238 VI/s 240 VI/s 245 VI/s 235 VI/s 106 VI/s

Test hardware: Desktop PC – Intel Core i7 7700k @ 4.2GHz, Windows 10 (4 cores, 8 HW threads)

RSP Mode VI Filter VI Filter – AA+Blur VI Filter – AA+DeDither VI Filter – AA Only Unfiltered – Thread Sync Low Unfiltered – Thread Sync Mid Unfiltered – Thread Sync High
Cxd4 95 VI/s 96 VI/s 96 VI/s 99 VI/s 104 VI/s 96 VI/s 86 VI/s
Parallel RSP 139 VI/s 145 VI/s 144 VI/s 151 VI/s 170 VI/s 146 VI/s 121 VI/s

Test hardware: Desktop PC – Intel Core i5 3570k @ 4GHz, Windows 7 x64 (4 cores, 4 HW threads)

RSP Mode VI Filter VI Filter – AA+Blur VI Filter – AA+DeDither VI Filter – AA Only Unfiltered – Thread Sync Low Unfiltered – Thread Sync Mid Unfiltered – Thread Sync High
Cxd4 89 VI/s 92 VI/s 91 VI/s 95 VI/s 103 VI/s 103 VI/s 97 VI/s
Parallel RSP 118 VI/s 124 VI/s 121 VI/s 128 VI/s 145 VI/s 145 VI/s 133 VI/s

Test hardware: Laptop PC – Intel Core i5 3210M @ 2.50GHz, Ubuntu Linux 19.04 (2 cores, 4 HW threads)

This is a 2012 Lenovo G580 laptop.

RSP Mode VI Filter VI Filter – AA+Blur VI Filter – AA+DeDither VI Filter – AA Only Unfiltered – Thread Sync Low Unfiltered – Thread Sync Mid Unfiltered – Thread Sync High
Cxd4 39 VI/s 39 VI/s 42 VI/s 41 VI/s 43 VI/s 39 VI/s 39 VI/s
Parallel RSP 52 VI/s 55 VI/s 54 VI/s 58 VI/s 67 VI/s 66 VI/s 61 VI/s

We recommend for a configuration as low-end as this that you just keep VI Overlay to ‘Unfiltered’.

The majority of games on a configuration this low-end experience dips below full-speed, however, there are a fair few games right now which already run at fullspeed. This is by no means a definitive or exhaustive list but here’s the ones for which I can confirm run at fullspeed with very rare dips if at all:

Resident Evil 2, Mario Kart 64, 1080 Snowboarding, Doom 64, Quake 64, Mischief Makers, Bakuretsu Muteki Bangaioh, Bust-A Move 2 Arcade Edition, Kirby 64 – The Crystal Shards, Mortal Kombat Trilogy, Forsaken 64, Harvest Moon 64

Currently known issues

* Do not use ‘Sync to Exact Content Framerate’ for Angrylion + Parallel RSP. You won’t get good results.
* Recompiling blocks the first time can lead to a very slight stutter. Thankfully this only happens the first time, and never happens afterwards for the runtime duration.
* On Linux there might be dependency issues related to libtinfo5. Read the section ‘How to Get It’ where we try to explain how to solve this problem at least for Ubuntu Linux. NOTE: This situation might resolve itself in the future in case we move away from LLVM for the RSP part.

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!

RetroArch 1.8.4 released! (Plus – new Lakka updated to 1.8.4 imminent!)


RetroArch 1.8.4 has just been released.

Grab it here.

Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

New Lakka release soon with version 1.8.4


Shortly following the release of RetroArch 1.8.4, you should expect a new version of Lakka for Tier 1 systems with this brand new version of RetroArch! We will update this post when the release happens.

Important bugfixes/crashes

Several important bugfixes/crashes have been fixed. See the Changelog below for more details.

Disk Control Improvements

Written by jdgleaver
While the current disk control interface is somewhat adequate for changing PlayStation1 CDs halfway through a 60 hour RPG, it provides a very miserable experience when running content with high numbers of disks that require frequent swapping (e.g. Amiga floppy games). This version addresses the issue with the following QoL (Quality of Life) improvements:

  • The Disk Control menu is now context aware, and only shows appropriate entries. i.e.
    • Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state
    • Current Disk Index is only shown when the current disk has been ejected
    • The old Insert Disk entry has been changed to Load New Disk, and is only shown when a disk is currently inserted (this is because loading a new disk from the filesystem – i.e. bypassing the m3u playlist disk index interface – automatically ejects and inserts disks, and so cannot be done while the virtual drive is empty)
  • The Current Disk Index may now be set more easily via a drop-down list.
  • Selecting Eject Disk automatically moves the menu selection to the Current Disk Index entry
  • Selecting an index via the Current Disk Index drop-down list automatically moves the menu selection back to Insert Disk
  • The Disk Control entry sublabels have been changed for greater clarity
  • All of the horrendous notification spam has been removed. Notifications are now only shown in the event of an error, or when the menu itself does not provide sufficient visual feedback (note that using hotkeys to swap disks still produces the old style notifications, since this is typically only done while content is running – i.e. no menu). The duration of disk-related info notifications has also been reduced to a more sane level.
  • A new Resume content after changing disks option has been added under Settings > User Interface. When enabled (default setting), content is resumed automatically after selecting either Insert Disk or Load New Disk (when disabled, the menu remains open, obviously…)
  • Bug fix: The Disk Control menu now has the correct title (!)
  • Bug fix: Selecting a disk via the Load New Disk file browser no longer flushes the user back to the top level menu (it now correctly returns to the Disk Control menu)

The Disk Control menu now looks something like this:

‘Clean Playlist’ option

Written by jdgleaver
Problem: If you add a bunch of games to your playlists, and then remove some individual games from the file system, you’ll end up with outdated playlists. There will be games that are listed in the playlist, but the file is no longer there.

Solution: We have added new Clean Playlist option to the Playlist Management menu. When selected, this does the following:

  • Removes any entries corresponding to content that no longer exists on the filesystem
  • Validates core associations:
    • If a core is no longer installed, the core association is reset
    • If the core_name/core_path are incomplete or incorrectly formatted, the core association is reset
    • If the core association is valid, the core_name is updated to the latest core info file display name, if required
  • Removes any duplicate entries

Note that this process can be slow for very large playlists (the duplicate checking is quite intensive…)

Changelog

1.8.4

  • ANDROID/BUGFIX: Prevent crash when Android device is minimized and you go back to the app
  • CAMERA/BUGFIX: Fix crash when a core requires the camera driver and the platform only has a null driver. This would crash mgba on Wii for example
  • DISK CONTROL: Cycle Disk Tray now becomes Eject Disk or Insert Disk depending upon current drive state
  • DISK CONTROL: Current Disk Index is only shown when the current disk has been ejected
  • DISK CONTROL: The old Insert Disk entry has been changed to Load New Disk, and is only shown when a disk is currently inserted (this is because loading a new disk from the filesystem – i.e. bypassing the m3u playlist disk index interface – automatically ejects and inserts disks, and so cannot be done while the virtual drive is empty)
  • DISK CONTROL: The Current Disk Index may now be set more easily via a drop-down list
  • DISK CONTROL: Selecting Eject Disk automatically moves the menu selection to the Current Disk Index entry
  • DISK CONTROL: Selecting an index via the Current Disk Index drop-down list automatically moves the menu selection back to Insert Disk
  • DISK CONTROL: The Disk Control entry sublabels have been changed for greater clarity
  • DISK CONTROL: All of the horrendous notification spam has been removed. Notifications are now only shown in the event of an error, or when the menu itself does not provide sufficient visual feedback (note that using hotkeys to swap disks still produces the old style notifications, since this is typically only done while content is running – i.e. no menu). The duration of disk-related info notifications has also been reduced to a more sane level
  • DISK CONTROL: A new Resume content after changing disks option has been added under Settings > User Interface. When enabled (default setting), content is resumed automatically after selecting either Insert Disk or Load New Disk (when disabled, the menu remains open, obviously…)
  • DISK CONTROL/BUGFIX: The Disk Control menu now has the correct title
  • DISK CONTROL/BUGFIX: Selecting a disk via the Load New Disk file browser no longer flushes the user back to the top level menu (it now correctly returns to the Disk Control menu)
  • LIBNX/SWITCH: Updated libnx integration to v3.0.0. This also cherry-picks libnx commit 583d6bb92dcbb33b6bb4a0fa1a9df6e3725d6ef6, which should fix the requirement having to turn rumble off and on in the system settings once per reboot
  • PLAYLISTS: Add ‘Clean Playlist’ option

bsnes HD beta core – Pushing the limits of the SNES! Widescreen and Ultrawide support!

DerKoun shares with us a special new core called bsnes HD beta. This is a cutting edge version of bsnes that is jam packed with enhancement features! Note that many of these enhancement features, such as the widescreen features, might require specific tweaking and finetuning in order for specific games to display right, and some games might just not display right at all with these enabled, so experiment at your own risk.

With this emulator core, emulator developers are moving far beyond the limitations of original hardware and FPGA clones, putting the extra horsepower of modern PCs and cellphones to judicious use.

This core is already available on our buildbot for Windows, Linux and Android, and should be coming to Switch (libnx) soon as well! Note that all these enhancement features operate on the CPU, so the faster your CPU is, the better the results will be.

Changelog (beta 10)

  • Based on latest bsnes (114, 2020-01-09)
  • Experimental libretro core
  • Changed Show Overscan setting, replacing Soft Crop. Changed widescreen values accordingly
  • Corrected widescreen object wrap-around point to 352
  • Changed storage paths from “bsnes” to “bsnes-hd beta”
  • Automated Linux build is now CPU neutral
  • Various minor bsnes-hd specific modifications to GUI
  • Fixed setting Ignore Window Fallback X-Coordinate via settings dialog

Core Options

Let’s explain some of the core options this core provides:

HD Mode 7 Scale

Perform Mode 7 transformations (incl. HDMA) at up to x times the horizontal and vertical resolution.

TIP: HD Mode 7 can be set to 1x scaling aka original resolution, with any combination of perspective correction, widescreen and supersampling.

HD Mode 7 Perspective Correction

Optionally, for games with pseudo 3D perspectives, some limitations of the integer math used by the SNES can be avoided by more aggressive averaging.

This setting also allows you to set the width for the perspective correction.

Auto – Auto detection for perspective correction. Quite primitive implementation, but worked out surprisingly well. Covers “Super Castlevania IV” (tube), “Terranigma” (underworld) and “Final Fantasy III” (credits), but not the “Mohawk & Headphone Jack” title screen (levels are fine).

[On / Auto] Narrow – Fixes black flicker in “Tales of Phantasia” Mode 7

[On / Auto] Wide – Use “wide” when there is no issue.

HD Mode 7 Supersampling

Super sampling can be combined with higher scale factors as a sort of anti-aliasing. Please remember that the CPU load is the product of the two factors.

HD Widescreen

Mode 7 – Disables widescreen for non-Mode 7 scenes (default now), fixing menus and widescreen-incompatible 2D levels with no setting switching during gameplay. The widescreen areas in that case can either be black or adopt the background color.
All – Enables widescreen for both Mode 7 and non-Mode 7 scenes.
None – Disables widescreen for all modes.

HD Mode 7 HD -> SD Mosaic

1x scale : Mosaic mode for HD Mode 7, using 1x scale, providing a good compromise between SD Mode 7 and no Mosaic at all, and also allowing widescreen, e.g. for the “Terranigma” underworld.

Ignore: – This setting disables mosaic effects for mode 7 scan lines. See top part of screen in the Terranigma safe state. When not checked (i.e. mosaic enabled) lines that have mosaic enabled do not use the HD mode (as the intentional pixelation that is mosaic would negate it anyway), but others still do.

WideScreen Background 1 to 4

To avoid HUDs repeating and other unwanted effects, this setting allows you to disable widescreen for the separate background layers and even just the top or bottom of a layer.

The default for all 4 is “auto horz and vert”, which is a simple auto detection based on the sizes and positions of the backgrounds. This works e.g. for the HUD in “F-Zero” or “Super Mario Kart”. You can also force each one “on” or “off”.

Some games require more complex settings, e.g. “HyperZone”: BG2: “>80”
You can also “disable” any of the 4 background layers entirely.

WideScreen Sprites

Unsafe – This allow sprites to enter widescreen areas further if the game keeps updating them. This will however cause significant artifacts in many games. If ROM-hackers want to discuss optimizing games for this, feel free to contact DerKoun.

Disable entirely – option to sprites, e.g. for screenshots for wallpapers (also see “Ignore Window”)

WideScreen Aspect Ratio

Ability to set the widescreen aspect ratio to a variety of different ratios (16:10, 2:1, 21:9, 16:9, 4:3)

WideScreen Ignore Window

Setting to ignore outside window, allowing for widescreen in Terranigma and Final Fantasy III/VI. Please test any other games that had no widescreen for no obvious reason in the previous beta. This fixes Mode 7 widescreen specifically in the mentioned games and results may vary in other ones for Mode 7, other backgrounds and objects.

Some settings allow for more widescreen e.g. in “Final Fantasy III” (no good results) and ability to disable some shadows or similar effects (for use with layer disable feature below, e.g. for “F-Zero”).

WideScreen Marker

Line – optional markers for the widescreen areas, in the form of lines at configurable translucency. Also sprites can now be clipped at the edges of the widescreen areas.
Darkening – optional markers for the widescreen areas, in the form of darkening at configurable translucency. Also sprites can now be clipped at the edges of the widescreen areas.

HD Background Color Radius

Smooth (true color, high resolution) gradients for color math from fixed color, e.g. for pseudo perspectives. This combines the new true color support and high resolution smoothing of HDMA effects to turn approximations of gradients into real ones. This is noticeable in many games with Mode 7 perspectives, often in the top/distant part, which often fades to black or another color. Enabled by default, on medium setting “4”. (see image: left side before vs. right one with this improvement)

HD Windowing (Experimental)

Smooth (high resolution) Window effects, like shadows or spells. This is considered a preview, as the top and bottom edges of such effects still look SD and therefore stand out. It is disabled (“0”) by default. You can set “1” or higher values to give it a try.

Widescreen patches

No matter the amount of options available, some games will likely require manual patches for the best possible widescreen experience. Fortunately, already talented modders are hard at work at tackling some of the games out there that could really benefit from widescreen resolutions.

If you want to discuss widescreen ROM-hacking please join #widescreen-hacks at the bsnes-hd Discord.

What’s Next

DerKoun says:

Primarily I’m looking into optimizations.

There also some fixes and improvements I want to include, like better HD Window effects.

I’ll also work with the libretro team to improve the libretro core.

SIDENOTE: RetroArch 1.8.4 will be coming out soon. Unlike 1.8.3, it will resemble somewhat more of a maintenance release.

RetroArch 1.8.3 released!


RetroArch 1.8.3 has just been released.

Grab it here.

Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

Big features

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Flycast (GLES2)
  • Mupen64Plus Next (GLES3)

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

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

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

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

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

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

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

Performance recommendations for Xbox One

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

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

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

Netplay enhancements

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

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

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

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

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

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

RetroArch PSP and Vita – Massively increased core collection

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

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

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

RetroArch 3DS – RACE added

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

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

OpenDingux now a supported platform in the future

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

Bugfixes

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

Changes

1.8.3

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

Libretro Cores Progress Report

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

Libretro Cores Progress Report – January 9, 2020

Our last core progress report was on December 31, 2019. Below we detail the most significant changes to all the Libretro cores we and/or upstream partners maintain.

In addition to all the changes listed below, there are also various cores that have been updated in order to fix MSVC compilation errors. This would be too exhaustive to list, so we have left that out of the progress report.

Also important to mention – pretty soon DerKoun, the author of all the HD enhancements in bsnes, will grace us with an extra bsnes core with experimental HD features, called bsnes HD! More on that later as this new core surfaces.

bsnes

Description: Super Nintendo emulator core

Disclaimer: Comments below are from byuu’s commits. All changes courtesy of byuu

  • Updated to version 114
    • Added fast PPU override for Marvelous (fixes text rendering)
    • Fixed disassembly of SNES CPU opcodes 0x74-0x76 [invertego]
  • The input workaround for Taikyoku Igo benefits: Williams Arcade’s Greatest Hits and World Masters Golf, in very subtle ways, so enable it for those two titles as well.
  • Updated to version v113.5 – It seems auto-joypad poll timing is needed for most games. So that’s back in as before. Instead, I added an override for Taikyoku Igo – Goliath specifically, until auto-joypad emulation can be improved further.

Dhewm3

Description: Doom 3 game engine core

  • Add 300fps/360fps modes

FB Neo

Description: Successor project to Final Burn Alpha, multiple arcade emulator

  • CPS3: Set refresh rate to exact 59.59949 Hz [barbudreadmon]
  • add GunNail location-test to nmk16 [Bill D – The Dumping Union, dink]
  • aud_dsound3.cpp, hacky work-around for crashy midway (mk2, etc) via kaillera. todo: figure out real cause of the problem, think it has something to do with refresh rate as force60hz solves the problem
  • d_flstory.cpp: added MCU location (nw)
  • d_flstory.cpp: added dip-switch locations [Guru]
  • d_slapshot.cpp: added Operation Wolf 3 (Japan) [ShouTime, The Dumping Union]
  • d_flstory.cpp: updated dips for victnine, taken from manual [Guru]
  • d_kaneko16.cpp: Make it explicit that gtmr parent is a Taiwanese set (nw)
  • d_mcr.cpp: added Tron (5/12) [cdjump @ klov]
  • d_metro.cpp: added Poitto! (revision C) [hammy, The Dumping Union]
  • d_dec8.cpp: added Gondomania (World) [Corrado Tomaselli, The Dumping Union]
  • (nw) d_karnov.cpp: Verified label for karnov (US) i8751
  • d_yunsun16.cpp: added Magic Bubble (Adult version, YS1302 PCB, set 2)[Hammy, The Dumping Union]
  • d_dkong: Remove diag.bin, it did not ship with the boards (nw)
  • d_tumbleb.cpp: decapped chokchock MCU [Team Caps0ff, Guru]
  • d_dreamwld.cpp: decapped dreamwld MCU [Team Caps0ff, Guru]
  • b_time.cpp: added Minky Monkey (Japan) [ShouTime]
  • d_hangon.cpp: added Enduro Racer (YM2151, FD1089B 317-0013A) [Brian Troha, Philip Bennett, The Dumping Union]
  • (nw) minor cosmetic changes
  • add nes_apu wip [dinkc64]

FreeIntv

Description: Intellivision emulator

  • Ported to PSP, running at fullspeed! [fjtrujy]

Flycast

Description: Dreamcast/NAOMI/Atomiswave emulator

Disclaimer: All changes below unless expressly stated otherwise were done by flyinghead

  • Reduce savestates size by 20MB
  • (ARM64) Fix xtrct dynarec implementation – fixes Speed Devils issues
  • (CUE) Set proper CTRL value – fixes Windows CE games hanging at startup
  • (NAOMI) EEPROM for Spawn [barbudreadmon]
  • (AICA) Generate samples when ARM is disabled (dynarec) – fixes Twinkle Star Sprites sound
  • (GL/GL4) Recreate VMU and crosshair textures at context reset – Fix all lightguns using player #1 texture – Fix broken alpha blending
  • (GL4) OIT/Per-pixel alpha sort:  only use OIT pass in autosort mode
  • Use regular color pass in manual sort mode. Fixes issues with Psyvariar 2 and HeadHunter radar/map.
  • (Fix) Crash on successive load content – VMEM – unmap all reserved vmem space on unload
  • (Vulkan) VMU screens and lightgun crosshairs support
  • (Vulkan)  Only use OIT pass in autosort mode – fix glitches when switching per-triangle to/from per-strip
  • (Arcade/Atomiswave) Use light guns for Ranger Mission

Genesis Plus GX

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

  • Allow full access to Sega CD’s PRG RAM using retro_memory_map [negativeExponent]
  • Add 68000 RAM to memory maps [negativeExponent]
  • (MSVC 2017) Build fix

Kronos

Description: Sega Saturn/Arcade Sega S-TV emulator

  • (S-TV) Added S-TV game – Fantasy Zone (J 990202 V1.000)
  • (S-TV) Fix controls for most ST-V games
  • (SCSP) SoundRam is 4MB max – Fixing Memory access [FCare]
  • (SCSP) Do not sync when the access does not come for xSH2 [FCare]
  • (SCSP) Do not divide the panning value [FCare]

LRMAME

Description: MAME mainline emulator core

  • Updated to version 0.217 [tcamargo]

LRMAME 2000

Description: MAME 0.37b5 emulator core, aims to be mostly adherent to mainline 0.37b5 with selective backports 

  • (MSVC 2017) Buildfix
  • Ported to PSP, running at fullspeed! Using Cyclone/DrZ80 [fjtrujy]
  • Cyclone and DrZ80 support – Enabled for Vita – major performance improvements for 68K/Z80 based games [Frangarcj]
  • (Cyclone) Fix for speedups on Altered Beast [Frangarcj]
  • (Emscripten) Buildfix [ToadKing]

LRMAME 2003

Description: MAME 0.78 emulator core, aims to be mostly adherent to mainline 0.78 with selective backports

  • (MSVC) Buildfix
  • Cyclone and DrZ80 support – Enabled for Vita – major performance improvements for 68K/Z80 based games [Frangarcj]
  • (Cyclone) Fix for speedups on Altered Beast [Frangarcj]
  • (Emscripten) Buildfix [ToadKing]

LRMAME 2003 Plus

Description: MAME 0.78 emulator core with significant additions

  • Operation Wolf C-Chip Simulation [Arcadez]
  • GunNail graphics improvements [Arcadez]
  • U.N. Defense Force – Earth Joker fix rowscroll on final level [Arcadez]
  • Cyclone and DrZ80 support – Enabled for Vita – major performance improvements for 68K/Z80 based games [Frangarcj]
  • (Cyclone) Fix for speedups on Altered Beast [Frangarcj]
  • (Emscripten) Buildfix [ToadKing]
  • (MSVC 2017) Buildfix

Mr.Boom

Description: Bomberman-like game engine clone core

  • Updated to version 4.9 – performance improvements (standalone can now run on an Atari Falcon as a result) [franck]

NX Engine

Description: Cave Story game engine core

  • Adding diacritics support – support non-English translations with the bitmap font [leomontenegro6 ]

OpenLara

Description: Tomb Raider 1/2/3/4/5 game engine core

  • Add 300fps/360fps modes

Picodrive

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

  • (MSVC) Buildfix

Play!

Description: PlayStation2 emulator core

  • Latest updates from Github upstream repository [Zer0xFF]

P-UAE

Description: Commodore Amiga emulator

  • Add support for auto-generated save disks in M3U playlists [jdgleaver]
  • LHA + MDS support [sonninnos ]
  • FastRAM option for CD32 [sonninnos ]
  • WHDLoad.hdf compatibility updates [sonninnos ]
    • Hold down fire button at boot for .info selector
    • Hold down spacebar at boot for Readme and MkCustom
  • Added long press sticky keys for VKBD + renovations [sonninnos ]
  • Fixed a human rounding error in analog stick mouse [sonninnos ]
  • Statusbar automatic recoloring [sonninnos ]
  • Add compression for savestates [sonninnos ]
  • Analog stick mouse fix [sonninnos ]
  • Default blitter wait changed back to automatic + savestate cleanups [sonninnos ]
  • Horizontal centering fix for hires-singleline [sonninnos ]

PX68K Libretro

Description: NEC X68000 home computer emulator

  • Add input bitmask support [negativeExponent]
  • Add core option to enable or disable saving disk path [negativeExponent]
  • Move menu items to core options [negativeExponent]
    • move Frame Skip to core options [negativeExponent]
    • remove Sound Rate – fixed to 44100 [negativeExponent]
    • removeVKey Size – we dont use virtual keys [negativeExponent]
    • remove HwJoy Setting [negativeExponent]
    • move Joy/Mouse to core options [negativeExponent]
    • move Vbtn Swap to core options [negativeExponent]
    • move No Wait Mode to core options [negativeExponent]
    • remove JoyKey, which is suppose to allow controlling gamepad buttons using a keyboard. Its not necessary in a libretro port due to how keyboard and joypad inputs already works [negativeExponent]

Prboom

Description: Doom 1/2 game engine core

  • Add 300fps/360fps modes
  • (MSVC) Buildfix
  • (Emscripten) Buildfix [ToadKing]

RACE

Description: Neo Geo Pocket / Neo Geo Pocket Color emulator core

  • Add optional dark filter [jdgleaver]
  • Add input bitmask support [negativeExponent]
  • Fix incorrect palette [negativeExponent]
  • Remove serialization quirks [negativeExponent]
  • Fix runtime error: misaligned reads [negativeExponent]

Snes9x 2002

Description: Super Nintendo emulator core

  • Added frameskip for GCW Zero/Dingux
  • (MSVC 2017) Buildfix
  • (Emscripten) Buildfix [ToadKing]

Snes9x 2005

Description: Super Nintendo emulator core

  • (Emscripten) Buildfix [ToadKing]

Stella

Description: Atari 2600 emulator core

  • Latest updates from Github upstream repository

Theodore

Description: Thomson MO/TO emulation emulator core

  • Latest updates from Github upstream repository

Tyrquake

Description: Quake 1 game engine core

  • Add 300fps/360fps modes

VitaQuake 2

Description: Quake 2 game engine core

  • Add 300fps/360fps modes
  • Prevent reduction in texture quality [leilei-]

VitaQuake 3

Description: Quake 3 game engine core

  • Add 300fps/360fps modes
  • Prevent reduction in texture quality [leilei-]
  • Hor+ Widescreen option [leilei-]
  • Overbrights option [leilei-]
  • A bunch more video resolutions including 4:3 resolutions; 640×480 new default (native UI res) [leilei-]

VitaVoyager

Description: Star Trek: Elite Voyager game engine core

  • Add 300fps/360fps modes
  • Prevent reduction in texture quality [leilei-]
  • Hor+ Widescreen option [leilei-]
  • Overbrights option [leilei-]
  • A bunch more video resolutions including 4:3 resolutions; 640×480 new default (native UI res) [leilei-]
  • Flares implemented by traces (not accurate, but works) [leilei-]
  • Environment maps on view weapons now reflect from the light [leilei-]
  • Specular on view weapons (not perfected yet) [leilei-]

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.

RetroArch – Netplay Relay server updates

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

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

Netplay Relay server updates

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

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

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

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

Roadmap

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

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

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

RetroArch 1.8.2 released!

Merry Christmas, everyone!
RetroArch 1.8.2 has just been released.

Grab it here.

Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

Big features

Accessibility for blind people

With RetroArch 1.7.8, we introduced the AI Service. This exciting feature makes it possible to do on-the-fly machine translation of foreign languages to any language of choice. Especially handy for all those dozens of old Japanese video games that never saw a translation either due to lack of financial interests/feasibility or obscurity. Now, with version 1.8.2, we are once again heading into uncharted waters where fear will dare, and introducing fullblown accessibility features for blind people.

This feature can be found under Settings -> Accessibility. Right now, it is only implemented on Windows, macOS and Linux.

There’s an entire article dedicated to this feature alone – read our blog post here to learn more.

To learn more about how to use it, read our dedicated wiki page on it.

Update all your installed cores with one simple press!

One of the most requested features since the beginning!

You can now update all the cores you have installed by going to Online Updater and selecting ‘Update Installed Cores’. It will check every single installed core, verify if there is an updated core on our buildbot, and upon detecting that the version on the buildbot is newer, it will download the new core automagically for you.

This fixes a number of serious issues that people had with the update process before. One, the tedium of having to update your cores one by one. Two, the uncertainty of whether or not an updated core is even available. When you were updating a core before, you had no idea whether you are downloading the same versioned core, or whether it was a newer version.

This brings us to the second biggest improvement. Before downloading a core, RetroArch will check if the core available on the buildbot is newer. If so, it will download the core and rewrite the existing core. If not, it will inform you that this core is already updated to the latest version, and therefore RetroArch won’t bother downloading the core again. This saves us bandwidth and you bandwidth and time. A win-win I’m sure you’d agree.

Manual content scanner (w/o checking the database)

Talk about another long-requested feature, here it is finally!

From this version on, there is a new simple manual content scanner – i.e. a ‘dumb’ scanner that matches all files (based on user configuration) without checking the databases. The interface looks like this:

The scan options are as follows:

Content Directory: Select directory to scan. The starting path for this is configured via the normal File Browser path in Settings > Directory, so it is highly recommended to set this first before beginning a scanning session.

System Name: This corresponds to the conventional ‘database’ setting, used to name the resultant playlist and to identify thumbnails. This has the following options:

Content Directory: The name of the content directory is used

Custom: Allows entry of a custom name

The user can also select the name of any installed database

Custom System Name: This is the name used when System Name is set to (it is otherwise ignored)

Core: Allows a default core to be specified

File Extensions: Allows user to filter scanned files by specifying a space-delimited list of allowed file extensions. Some further notes are required here:

If File Extensions is left blank and no Core is specified, all files are scanned

If File Extensions is left blank and a Core is specified, all files supported by the core (+ all archive files) are scanned

If File Extensions is specified, only files with matching extensions are matched. An example use case: The PCSX ReARMed core supports both bin and cue files, which means you end up with a mess of duplicates in the playlist by default. Setting File Extensions to cue excludes the bins and keeps everything clean.

Overwrite Existing Playlist: When enabled, any existing playlist content will be erased (useful if the user previously made a mistake, and wants to start over). When disabled, only content not already present in the playlist will be added (useful as a second pass to a conventional database scan, to pick up any files that were missed)

Scan inside archives

In addition to this, the manual scanner also has an option called ‘Scan Inside Archives’. Here’s how it works:

Scan Inside Archives DISABLED:

If no Core and no File Extensions are specified, all archives will be treated as valid content, and will be added (as the archive itself) to playlists

If a Core or File Extensions are specified, archive files will be ignored unless they have a file extension included in the Core or File Extensions list of supported file types (and again, in this case the archive itself will be added to playlists)

Scan Inside Archives ENABLED:

If no Core and no File Extensions are specified, all archives will be scanned: if they contain a single file, the internal path to that file will be added to playlists; if they contain multiple files, the archive itself will be added to playlists (i.e. we assume MAME-style content if archives contain multiple files)

If a Core or File Extensions are specified, archives in the supported file types list will be added to playlists directly. Other archives will be scanned, and the first internal file on the supported file types list will be added instead

This makes scanning quite a bit cleaner and more rigorous. Users who don’t archive their ROMs can leave Scan Inside Archives disabled and not think about it. Users who do archive their ROMs can enable Scan Inside Archives and be assured that only compatible content will be added to playlists, using the same ‘internal referencing’ that is currently used by the old database-based scanners.

Enable automatic naming of arcade content via DAT files

The manual content scanner also has a new Arcade DAT File option.

This is compatible with DAT files in either Logiqx XML or MAME List XML format. When a DAT file is selected, a lookup is performed for each item of scanned ‘archive-type’ content. This allows automatic conversion of ‘meaningless’ arcade file names (e.g. garou.zip) into proper description labels in playlists.

These DAT files are readily available online – e.g.:

https://github.com/libretro/FBNeo/tree/master/dats
http://www.progettosnaps.net/dats/MAME/
https://github.com/libretro/mame2003-plus-libretro/blob/master/metadata/mame2003-plus.xml

Less RAM-intensive

We recommend that systems that are RAM-starved, such as game consoles, make use of this feature if they experience problems with the database-based scanner system that has been the only option up until now.

Much faster video playback with improved ffmpeg core

An entire article was dedicated to this. Read more about it here.

RetroArch 1.8.2 now has much faster video decoding. You can select between hardware video decoding or threaded software decoding.

When using the video playback core (ffmpeg), go to Quick Menu -> Options in order to fiddle with the options. To set it to hardware video decoding, set ‘Use hardware decoder (Restart)’ to ‘auto’. If your GPU driver supports any of the accelerated video backends that ffmpeg supports, it should use this under the hood. If it fails to find either a suitable backend or if the video codec is not hardware accelerated, it will fall back to software video decoding (the previous default in past RetroArch versions).

NOTE: If you know what you’re doing, instead of setting ‘Hardware decoder’ to ‘Auto’, you can set it to any of the specific APIs – DXVA2, D3D11VA, VDPAU, VAAPI, QSV, CUDA, Videotoolbox, DRM, OpenCL, and/or MediaCodec.

If your system for whatever reason does not have hardware accelerated video decoding capabilities available but it does have a multi-core CPU, you can alternatively take advantage of threaded software decoding. To use this, go to Quick Menu -> options, and set ‘(Use hardware decoder (Restart)’ to ‘off’. The next setting to configure is crucial – ‘Software decoder Thread count (Restart)’. You can either leave this at ‘auto’ if you trust in the program to intelligently pick the right amount of cores for decoding based on your CPU’s capabilities, or set it to a specific number.

Make sure to restart the video player if you make any of these changes, the changes won’t take effect on the fly.

Multi-threaded video decoding and color conversion

Not only can the video decoding itself be multi-threaded, but so can colorspace conversion. This was previously a single threaded operation. This also obviously results in a big performance boost.

To play it safe, the default encoder being used is the software decoder for now, since it’s the most robust decoder and should produce the best results for most users right now (Embedded systems aren’t particularly well supported yet by the ffmpeg hw decoding backend). Both the threaded video decoding and hardware video decoding are orders of magnitude faster than video playback in previous RetroArch versions.

Vulkan Android fixes

Themaister spent some time fixing some longstanding issues with the Vulkan driver on RetroArch Android.

You can now finally change from landscape to portrait orientation and vice-versa. The framebuffer is now properly rebuilt on the fly. Seems like a minor thing, but it was very inconvenient to have to start something from landscape mode and then be forced to stay in landscape mode (or vice versa) if you didn’t want the screen output to be messed up as a result.

An even more important bug got fixed related to glslang – this should improve overall system stability for every video driver that implements glslang for shader support (Direct3D 10/11/12, Vulkan, OpenGL Core, WiiU GX2 Video driver, Metal).

Usability improvements

We have dedicated an entire separate article to it since the list of improvements is so exhaustive. Check it out here.

Vita improvements

The Vita platform port has seen some significant improvements too.

We have a bounty now where we stress the importance of bringing over OpenGL 1 hardware context support to libretro. Many old game platforms have fixed function GPUs with a featureset roughly comparable to OpenGL 1.4, so it makes sense to have a hardware context for GL 1.x. Right now, Libretro offers a couple of options for people wanting to make cores implementing OpenGL – you can either target desktop OpenGL (of any particular version), or you can target OpenGL ES 2/3. The key requirement for both though is that it requires the use of FBO (Frame Buffer Object) – if your GPU and/or API has no support for that, it’s over and out as far as GL core support is concerned.

OpenGL 1.x had no notion yet of FBOs, so obviously this hardware context will not have any such requirements. We encourage you to contribute to this bounty if you are excited about the potential this can bring to older game console platforms and other older hardware. You can find the link here.

Vita now has an OpenGL 1 driver implemented. As soon as the Libretro GL 1.x support is done, Vita users can stand to benefit from the GL-centric cores that can be brought over to Vita as a result.

However, for now, we heavily recommend you use the Vita2D driver as your primary video driver. Speaking of which, several improvements have been made to it as well – menu widgets have been implemented, and it should be more optimal now due to a reduction of draw calls.

Changes

We could write an entire book about all the changes, improvements and features that made this release what it is thanks to our dedicated inhouse team and all the generous contributors that continue to contribute to the project. So without further ado, view our changelist below – and realize that there are many things we might not have even covered in this release –

1.8.2

  • BUG/CRASH/GLSLANG: Fix glslang crashing error – managed to reproduce an issue which has been plaguing users for a while, where glslang throws an assert after closing a game (and starting a new one). This would affect all video drivers that use Slang for shaders, such as D3D10/11/12/Vulkan/Metal
  • CHEEVOS: Display Unofficial and Unsupported achievement states
  • CHEEVOS: Pass RetroArch and core versions through User-Agent HTTP header
  • CHEEVOS: Use PSX.EXE if SYSTEM.CNF cannot be found
  • CHEEVOS: Prevent loading state while achievements are still being fetched from server
  • CHEEVOS: Pause hardcore if core doesn’t support achievements
  • CHEEVOS/CRASH: Fix AddressSanitizer + CHD cause hard crash when Cheevos are enabled
  • CORE UPDATER: Only download when new core is available
  • CORE UPDATER: Add option to update all installed cores
  • DRM/KMS: Better detection for the current video mode
  • DYNAMIC RATE CONTROL: Support DRC even when using a vsync swap interval higher than 1
  • EMSCRIPTEN: Fix bug in Emscripten input code
  • EMSCRIPTEN: Changes to support upgraded emscripten SDK
  • FFMPEG CORE: Hardware accelerated video decoding
  • FFMPEG CORE: Implement send/receive encoding API, will allow for hardware accelerated AMD video encoding
  • FFMPEG CORE: The video FIFO can be removed, since we have a ring buffer in its place. This removes unneeded copy operations and as a positive side improves overall decoding speed. Makes 8k60p SW and 4k60p HW decoding feasible on many systems. For now the ring buffer is 32 images deep. This limitation will be removed, once audio and video decoder have their own packet handling.
  • INPUT: Fix ‘Analog stick controls menu even if autoconfig disabled’
  • INPUT/TURBO: Added alternate Turbo-Mode ‘Single Button’ – For systems supporting only a single button, the turbo-button will toggle firing that button without the need to hold it. When holding the button turbo will be suspended and resumed when the button is released. Holding the button may have a different function to just tapping it.
  • IOS: Forcibly disable Threaded Video until UIWindow concurrency issues are fixed
  • INPUT/ANALOG: Fix radial analog deadzone scaling
  • INPUT/ANALOG: Implement proper analog button deadzone
  • INPUT/MENU: Analog stick controls menu even if autoconfig disabled
  • LOCALIZATION: Update Italian translation
  • LOCALIZATION: Update French translation
  • LOCALIZATION: Update Polish translation
  • LOCALIZATION: Update Portuguese Brazilian Translation
  • LOCALIZATION: Update Turkish translation
  • LINUX/LOCALIZATION: Correct Droid Sans Fallback font path in Linux. This should fix Chinese/Korean font display issues on Fedora/RHEL/CentOS/openSUSE/SLE
  • MENU/BUGFIX: When using a keyboard/gamepad/mouse wheel to navigate, the menu scroll position is always maintained and updated in a consistent (and expected) fashion
  • MENU/BUGFIX: When resizing the window, or changing the orientation of a mobile device, the current scroll position is correctly preserved
  • MENU/BUGFIX: All ‘normal’ pointer input is now inhibited when showing message boxes
  • MENU/BUGFIX: The pointer actions ‘select’ and ‘cancel’ both now properly close a message box if it is currently being shown
  • MENU/BUGFIX: Pointer ‘select’ and ‘cancel’ actions are now inhibited when an input bind dialog is active
  • MENU/INPUT: Change ‘User’ terminology to ‘Port’ for input binding
  • MENU/LINUX: Add proper drives to Load Content
  • MENU/MATERIALUI: Halt scrolling when pointer is pressed/stationary
  • MENU/MATERIALUI: Dual thumbnail view
  • MENU/MATERIALUI: Fullscreen thumbnail viewer for boxart
  • MENU/MATERIALUI: Scroll rapidly by press and holding the scrollbar
  • MENU/RGUI: New theme ‘Flux’
  • MENU/OZONE: Thumbnails now have a fade-in animation
  • MENU/OZONE: Fullscreen thumbnail viewer for boxart and pictures
  • MENU/QT/WIMP: Fix dock titles getting cut off
  • MENU/XMB: Fullscreen thumbnail viewer for boxart and pictures
  • MENU/USABILITY: Selectively hide ‘Disallow Non-Slave Mode Clients’ if ‘Allow Slave-Mode Clients’ is disabled
  • MENU/USABILITY: Hide ‘Show desktop menu on startup’ if ‘Desktop menu’ setting itself is disabled
  • MENU/USABILITY: Reimplement Quick Menu – > Shaders -> Watch shader files for changes – can now be turned on/off through touch

  • MENU/USABILITY: Refactor Quick Menu – Controls – each port now has its own submenu
  • MENU/USABILITY: Quick Menu – Cheats – Delete All no longer requires five right button presses – this should fix this functionality for mobile touch users too
  • MENU/USABILITY: Hide Refresh Rate options when Threaded Video is enabled – these settings do nothing with Threaded Video
  • MENU/USABILITY: Hide Logging Verbosity levels behind Logging Verbosity
  • MENU/USABILITY: Get rid of ‘Port Number’ label for Port Binds screen
  • MENU/USABILITY/MOBILE: Should no longer crash when clicking on a cheat entry
  • MENU/USABILITY: Shader parameters now have a dropdown list
  • MENU/USABILITY: Shader passes now has a dropdown list
  • MENU/USABILITY: Video – Hide Windowed Mode settings selectively
  • MENU/USABILITY: Video – Hide Fullscreen Mode settings if windowed mode is not supported by context driver
  • MENU/USABILITY: Selectively hide Network Command Port
  • MENU/USABILITY: Selectively hide Relay Server Location
  • MENU/USABILITY: User Interface -> Appearance – Selectively hide XMB Horizontal Animation setting
  • MENU/USABILITY: Playlists – more selective hiding
  • MENU/USABILITY: Selectively hide Rewind Settings
  • MENU/USABILITY: Selectively hide Overlay Settings
  • MENU/USABILITY: Selectively hide FPS Update Interval based on Display Framerate being enabled
  • MENU/USABILITY: Selectively hide Onscreen Notifications BG Color Settings
  • MENU/USABILITY: Settings -> Logging – Hide ‘Log To File Timestamp’ if ‘Log To File’ is disabled
  • MENU/USABILITY: Video -> Scaling – Hide Custom Viewport X/Y when Integer Scale is enabled as description indicates
  • MENU/USABILITY: Achievement submenu – selectively hide
  • MENU/USABILITY: Settings -> Video -> Aspect ratio – selectively hide/show values based on whether you have Custom or Config selected
  • MENU/USABILITY: Settings -> Video -> Selectively hide Hard Sync
  • MENU/USABILITY: Settings -> Video -> Implement selective hiding for VSync and Hard Sync
  • MENU/USABILITY: Selective hiding of Runahead settings based on global setting
  • MENU/USABILITY: Add Input -> Haptic Feedback submenu
  • MENU/USABILITY: Add Input -> Menu Controls submenu
  • MENU/USABILITY: Settings -> Video -> Max Swapchain Images – Add OK action
  • MENU/USABILITY: Input – Implement OK action for Bind Hold, Turbo Period and Duty Cycle
  • MENU/USABILITY: Input – Hotkey Binds refactor
  • MENU/USABILITY: Move ‘Press Quit Twice’ and ‘Menu Toggle Gamepad Combo’ to Input -> Hotkey Binds
  • MENU/USABILITY: Video – Add sublabel for Video Output submenu
  • MENU/USABILITY: If ‘Favorites Tab’ is disabled, don’t show ‘Add To Favorites’ option in Quick Menu/Playlist menu
  • MENU/USABILITY: If On-Demand Thumbnail Downloader is enabled, hide ‘Download Thumbnails’ from playlist menu screen
  • MENU/USABILITY: Add Audio Driver setting to Audio -> Output
  • MENU/USABILITY: Add Audio -> Resampler settings
  • MENU/USABILITY: Add Audio -> Output and Audio -> Synchronization
  • OPENGL: Shaders are now working properly (only in OpenGL) when rotating both from Core API rotation and from menu video rotation. The fix is clearly visible with crt-royale for example
  • OPENGL: 1:1 PAR is now correct when rotating (both from Core API rotation and from menu video rotation, as you said, in the latter case you currently have to change Aspect Ratio after menu video rotation for it to work)
  • OPENGL: When using Custom Aspect Ratio and rotation (both from Core API rotation and from menu video rotation), Integer Scaling is now working properly (correct multiples of internal resolution). Even when Integer Scaling is not activated, the Custom AR width / height are now correctly labeled using (1x), (2x), … suffixes. You also have to activate Integer Scaling after menu video rotation for it to work
  • OPENGL: For all other Aspect Ratio options, Integer Scaling and rotation (both from Core API rotation and from menu video rotation) are now working properly together (correct multiples of internal resolution). You also have to activate Integer Scaling after menu video rotation for it to work
  • OPENBSD/POWERPC: Should build now on OpenBSD PowerPC
  • PLAYLISTS: Pressing ‘Start’ or long touching a playlist will bring you to a Playlist submenu where you can set a default core, setup thumbnail view, delete the playlist, etc
  • OSX: Forcibly disable Threaded Video until NSWindow concurrency issues are fixed
  • PSP: Solving issue exiting RetroArch by HOME button
  • SCANNER: Manual scanner, not dependent on database files
  • SCANNER/MANUAL: Add option to scan inside archives
  • SCANNER/MANUAL: Enable automatic naming of arcade content via DAT files. This is compatible with DAT files in either Logiqx XML or MAME List XML format.
  • VIDEO: Do not reinit video driver on SET_SYSTEM_AV_INFO unless needed
  • VIDEO: Support DRC even when using a vsync swap interval higher than 1
  • VIDEO LAYOUT: Fixed XML parsing of attributes with spaces, should fix issues with several video layouts
  • VITA: GL1 driver support
  • VITA/VITA2D: Several improvements to Vita 2D driver – menu widgets implemented
  • VITA/VITA2D: Fix clipping and reduce number of calls
  • VULKAN/ANDROID: Workaround weird WSI return codes in landscape mode – Android WSI wants you to use preTransform, and if it is not used correctly, Android 10 will return VK_SUBOPTIMAL_KHR, and we would create a new swapchain every frame. This workaround just ignores this error, since it’s not really an error. A more “proper” fix is to use prerotate and modify the MVP matrices, which might help certain devices with crummy display processors
  • VULKAN/ANDROID: Recreate swapchain on orientation change. ANativeWindow getWidth/Height does not detect any changes when using Vulkan, so use the old onContentRectChanged callback to get notified when size changed. Use those values instead when figuring out how large swapchain to create
  • WINDOWS/XINPUT: Get rid of 128 byte device name limit for XInput device discover – when device name was too long, it would not be picked up by the XInput driver and would instead fallback to DirectInput
  • WINDOWS: ANGLE OpenGL ES 2 support
  • UWP: Fix crashes on startup / prompt for folder permissions when trying to load custom.ini
  • UWP: Fix – Mouse input is offset on high DPI monitors
  • UWP: Fix – Keyboard input hangs sometimes
  • UWP: Fix – Multi-touch support
  • UWP: Fix – Enable menu touch input by default
  • UWP: Fix – Get user language
  • UWP: Fix – Get CPU model name
  • UWP: Fix – Use GLUI instead of XMB on Windows Mobile 10
  • UWP: ANGLE OpenGL ES 2 support

What’s next?

We’re going to be figuring out a solution soon so we can add ANGLE support for both the regular Windows desktop versions as well as the UWP version (the version used on platforms like Xbox One for instance). If you don’t know what all this is about, check our article here.

For people annoyed about the lack of communication regarding the Steam version, we get you, but if you take even a cursory glance at steamdb, you can see that we are hard at work on that front as well. We will update you later on this front as we have been told it’s best to only make further statements on this when things have become more concrete in terms of release. We learned our lesson with the initial announcement. We apologize for the radio silence, we are just cautious about how we present this to the outside world. We hope we have some positive news for you there soon. In the meantime, please appreciate all the effort and hard work that went into this current version as a consolation. After nearly a decade in development, we feel as strongly as ever to have RetroArch be all it can be. We hope you will join us in that endeavor in the upcoming decade to come.

RetroArch 1.8.2 – Usability Improvements

This is an addendum article to our main RetroArch 1.8.2 release post. To read the main article, read this here.

Fullscreen thumbnail viewer

We have added a fullscreen thumbnail viewer to Material UI, Ozone, and XMB. It’s analogous to RGUI’s fullscreen thumbnail view mode.

When viewing any playlist thumbnail view, fullscreen thumbnails may be shown for the selected entry by:

Long pressing the entry (mouse or touchscreen)

Pressing start on a gamepad

Pressing space on a keyboard

When fullscreen thumbnails are shown, any menu action will disable them again.

Here are some random example screenshots of fullscreen thumbnails in action:

MaterialUI – Dual thumbnail support

RetroArch has added dual thumbnail support to the Material UI menu driver.

A new Show Secondary Thumbnail In List Views option has been added under User Interface > Appearance. When enabled, two thumbnails are shown in all List views (Small, Medium, Large) – but only if the display is actually wide enough to show two thumbnails. It looks something like this:

If the Secondary Thumbnail option is set to OFF and the user explicitly requests a thumbnail view with secondary thumbnails enabled, the global Secondary Thumbnail option will automatically be set to an appropriate value. This prevents users with fresh installs (default options) from getting a list of ‘missing thumbnail’ images when selecting a view with mandatory secondary thumbnails. NOTE: This does not affect per-playlist thumbnail overrides – if the user wishes to force disable secondary thumbnails with such an override, they are still free to do so.

A new Draw Thumbnail Backgrounds option has been added under User Interface > Appearance. This is enabled by default (which matches the existing behaviour), and when disabled allows thumbnails to be drawn without a solid colour background.

Selective hiding for settings

Several important improvements have been made when it comes to the settings and the overall presentation of them.

Let’s go over some of the most important changes:

  • We have subdivided many cluttered entries into submenus. Examples: Video -> Scaling, Output, CRT Switch Res.
  • We have included dropdown lists now for several important actions, such as ‘shader parameters’.
  • We now selectively hide options based on context. For instance, if you have Vsync disabled, it makes no sense to show you ‘Vsync Swap Interval’ as well. So when Vsync is disabled, the screen gets refreshed and the Swap interval setting is not shown until you turn Vsync on again. We have made sure to implement this in as many settings categories as possible, see our exhaustive changelog for the nitty gritty.
  • There were many settings which were not clickable before with touch-based devices such as mobile phones.

Let’s now go into some specific examples of what we consider by increased usability – let’s take Video -> Scaling –

Aspect Ratio is currently set to ‘Core Provided’. We now bring up the dropdown box, and we select ‘Custom’ from the list.

Upon selecting ‘Custom’, we can now see several entries have appeared – ‘Custom Aspect Ratio X Position’, ‘Custom Aspect Ratio Y Position’, ‘Custom Aspect Ratio Width’, and ‘Custom Aspect Ratio Height’. If you read the description for X and Y position, you’ll notice that the sublabel states that if ‘Integer scale’ is enabled, these settings will be ignored and the X/Y position will be done automagically. In the past, we’d just have listed all these settings regardless of what aspect ratio is selected. Now watch what happens when we set Integer Scale to enabled –

As you can see, X and Y Position are now hidden from view. They won’t be shown again until you turn Integer Scaling off, at which point they’ll actually serve a purpose again.

Now let’s try another aspect ratio. This time we’ll select ‘Config’.

We notice that the Custom Aspect Ratio settings are now gone, since they no longer serve a purpose for the currently selected aspect ratio. Instead, another setting is shown, Config Aspect Ratio.

Now, to contrast that with how things were previously –

in the past, not only would all the Custom Aspect Ratio settings be shown regardless of whether the aspect ratio was actually set to ‘Custom’, but also ‘Config Aspect Ratio’ would be shown even though the user might not have set Aspect Ratio to ‘Config’. This of course caused lots of unnecessary clutter which leads to confused users who can’t find the needle in a haystack anymore.

We have implemented tons of these usability flourishes everywhere and we hope this leads to an increased positive user experience.

MaterialUI Playlist management

It’s now possible to long press a playlist inside the Playlist tab and go to a Playlist submenu. From here, you can do various actions to the playlist, including deleting the playlist and setting a default core association to every entry in the playlist that has not yet been configured to start with a specific core.

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.2 – Accessibility features for blind people

RetroArch singlehandedly takes big strides to cater to an underrepresented group of people, opening up a whole new world of entertainment.

See here the perspective of a blind person talking about the new accessibility features available in the latest nightly versions of RetroArch. This and more will be available out of the box starting as of version 1.8.2.

Also read our version 1.8.2 release announcement post here.

Written by Devin Prater, Certified Assistive technology instructor
Edits by Barry Rowe, AI Service and Accessibility contributor

Background

For decades, video games have offered entertainment for many people. Childhoods were changed by iconic franchises like Super Mario, Zelda, Final Fantasy, and Castlevania. People can reasonably count on others to understand the meaning behind video game references.

For people who are blind, however, these games could only be enjoyed through their great music, or by reading novelizations or fanfiction. Audio games have been created, to fill the void of video games which could not be played, an some blind people braved fighting games by memorizing menus and special attacks, but audio games were few in number, and didn’t usually have much content.

Emulation

Emulation has helped many people who are blind relive their childhood playing fighting games. With the rise of machine learning, however, blind gamers now have another tool in their arsenal: optical character recognition, the extracting of text from images. With this being a part of many screen readers, blind people could use that to read menus, character select screens, and unspoken dialog.

RetroArch

RetroArch is the first “emulator” to now offer Accessibility to blind people by speaking the interface. Along with the text-to-speech AI service, RetroArch has not only become the first emulator to implement accessibility for blind people in menus, but also in reading game text as well.

This doesn’t, however, mean that all games are accessible. A blind person still cannot get Super mario into the castle in Super Mario 64, nor defeat Lavos in Chrono Trigger, although perhaps one could probably play Radical Dreamers now. Much more work will be needed to make video games completely accessible to blind people, even portraying health bars in fighting games through sound cues. Even so, the accessibility of RetroArch means that blind users of Windows, MacOS, and Linux can enjoy the state of the art in video game accessibility through emulation.

How to enable accessibility

Once you’ve downloaded and installed RetroArch, there are two ways to enabled accessibility. The first way is by turning it on via the menu. Once RetroArch is started press: right, then up seven times, then enter (on some systems this could be the x key), and then right. You should hear “Accessibility Accessibility Enable ON” at this point. If this doesn’t, restart RetroArch and try again. This method navigates the menu, which may change in later versions, so you should read the RetroArch Accessibility Docs for any updated key presses.

The second method is to enable it via the command line. This is done by running the RetroArch executable (for example: retroarch.exe) in the command line or terminal. On windows for instance, once you’ve opened the command line, navigate to the RetroArch folder, and run “retroarch.exe –accessibility” and you should hear “RetroArch Accessibility On. Main Menu Load Core.” From there you can navigate right to the settings submenu, and then down to the Accessibility option, and then turn set Accessibility Enable on. Now you’ll be able to start RetroArch with accessibility from outside the command line as usual.

If these options don’t work for you, it could be that your OS does not have the required speech libraries or voices that RetroArch needs. For windows, RetroArch uses the Windows Narrator, which you can read how to download additional voices for here. On MacOS, it uses the “say” command, which you can read how to download voices for here. And on Linux it uses Espeak. For Ubuntu, you can install espeak by running “sudo apt-get install espeak” and then “sudo apt-get install espeak-data” for the additional voices.

Using the AI Service with Accessibility

The AI Service can also use the Accessibility narrator for Text-to-Speech. This can be done by going to the AI Service settings section, and changing the AI Service Output to “Narrator Mode.” This handles the Text-To-Speech, but the AI Service still needs to process the game screen to get that text. You can follow the setup instructions for the AI Service here.

Conclusion

While people without disabilities have been able to play thousands of video games, both current and past, blind people have not had the ability to enjoy more than a handful of video games. Through
emulation, this is beginning to change. Games which were once only playable if one could memorize menus and selection screens are becoming accessible using OCR, and more will be possible through the hard work of developers who may build upon this foundation for accessible video game emulation.

RetroArch is the first emulation center to provide accessibility for the user interface, and an AI service to perform OCR on video games, allowing blind users of all three major desktop operating systems to enjoy playing fighting games now with knowledge of any text that appears onscreen. It is hoped that this is only the beginning of a great advancement in accessibility, with RetroArch paving the way to even greater video game accessibility for people who are blind.

Flycast world’s first Dreamcast emulator to receive Vulkan renderer – available later today on RetroArch with nightly core!

The first Dreamcast emulator ever to get a Vulkan renderer. Completely open-source, written from scratch, and available later today on RetroArch. Update your core later today to get the latest version with the Vulkan renderer! Available for Android, Windows, and Linux.

For more information, read down below…

Wait … a new what?

The renderer is the emulator component that emulates the Dreamcast/Naomi GPU chip, namely the PowerVR Series2. It was one of the first generations of 3D chips, with only a fixed pipeline. The PowerVR2 supported DirectX 6.0, which was the graphics API used by Windows CE games on the Dreamcast. Successors of the PowerVR2 would later be found in the original iPhone and iPod Touch (PowerVR4), iPhone 4 and iPad (PowerVR5) and many many other mobile devices. Now the Dreamcast GPU is more than 20 years old. You might think it should be easy to emulate such an ancient chip on modern hardware, right? Well … yes for the most part. But there’s one thing that the PVR2 does really well, and it’s order-independent transparency. And even today this is still not trivial to implement even on modern hardware. You won’t find this feature in Open GL or DirectX, and you need a pretty recent version of these APIs to be able to emulate it, which means manually sorting individual pixels from back to front and blending them together, and doing this for each visible pixel on the screen!

OK, but what about Vulkan?

For those of you who are not familiar with Vulkan, it is a relatively new 3D graphics API, basically a follow-on to Open GL. Open GL is quite permissive and has little declarative constraints. You just throw stuff at the driver when you need to and the driver’s job is to figure it out. The downside of this is that the Open GL driver often needs to guess what you’ll do next and he might not guess right. And when it doesn’t, performance suffers. Vulkan is radically different in that everything must be declared in advance, in great details, and there’s very little room for improvisation on the part of the driver. Vulkan works much closer to the hardware than Open GL does. So you can expect less overhead, more reliability and better performance in many cases.

The downside of Vulkan is the sheer amount of code you have to write to display just a single triangle on the screen, let alone a full-featured Dreamcast renderer. Last time I checked, the Vulkan renderer had 47 source files and around 7800 lines of code. (The Open GL renderer only has around 6000 lines of code.)

So what do we get?

As with Open GL, there are actually two Vulkan renderers: The first one uses a traditional single render pass with per-triangle or per-mesh sorting done by the CPU. The second one is capable of order-independent transparency with per-pixel sorting performed by the GPU. It uses multiple subpasses to compose the final image: the first subpass draws the opaque geometry depth map and the shadows casted on them. The second subpass renders all opaque geometry to a temporary color framebuffer, and transparent geometry into a huge pixel linked list. The last subpass then renders shadow volumes for translucent geometry. And finally all pixels are sorted and blended together using the opaque framebuffer of the previous subpass as background.

The next Flycast nightly build will have support for Vulkan on all major platforms: Windows, Linux and Android. In terms of features, the new renderer should be on par with the Open GL renderer, with the notable exception of lightgun crosshair and VMU screens display, which will be added soon. However, expect to find bugs and crashes here and there as is expected with any new piece of software. Also it may be slower than Open GL depending on many factors such as GPU, driver version, game being played, etc. We’ll do our best to fix any issue encountered and overcome performance issues. When reporting problems, make sure to indicate what GPU you’re using and the Vulkan driver version. It is highly recommended to upgrade your drivers to the latest version available, especially on mobile.

Here is a showcase of the differences between the basic and OIT renderers. By the way, this also applies to Open GL.

Here the hair of these ladies show glitching triangles in basic mode.

In Speed Devils 2, the shadow volumes (called “Modifier Volumes” in Dreamcast literature) are used in a special way to project headlights. This is only possible by using deferred rendering.

In this example, look at Ryo’s cast shadow on his left. There is a fog effect applied to this scene, but the basic single pass renderer cannot apply a fog effect to the cast shadow. In the OIT renderer, the shadow is perfectly fogged.

In Jet Set Radio, the character is composed of translucent polygons, and these polygons can be shadowed as well. Only the OIT renderer can properly render shadows cast on translucent polygons.

To finish, here is another seldom used GPU features: secondary accumulation buffer. It can be used to do tri-linear filtering and other effects. This is Evil Dead – Hail to the King and it is clear that the basic renderer is having a hard time here.

Final thoughts

Yes, the per-pixel alpha transparency option which to this date was only available on Windows and Linux now also works on Android with the Vulkan renderer. However, keep in mind that per-pixel alpha sorting is heavily memory bandwidth-limited. It has been tested on a Mali G76 (Samsung Galaxy S10+) – and it runs acceptably at 640×480 or 800×600 resolution. Your mileage may vary depending on the GPU power inside your Android phone. We recommend you to find that sweet spot which works best for you, and if results are too bad with per-pixel alpha enabled, turn back to per-triangle.

Some clear advantages of the Vulkan renderer is that frame pacing is much better than the OpenGL renderer, and performance is far higher when it comes to texture uploads and/or framebuffer manipulation. For example – when you KO an opponent in Dead Or Alive 2 against an explosive wall – the framerate would often tumble a bit on GL, but no such issues with Vulkan. Similar improvements can be noticed in Virtua Tennis 2 – when certain framebuffer effects happen after a replay, performance is much more steady with Vulkan thanks to the high degree of parallelism.

With Vulkan, we have heard reports that virtually all sound crackles and stutters are gone. That’s because with vulkan you choose the sync points where you wait. In GL the driver has to guess and sometimes it fails. These effects are using render to texture, and with OpenGL this creates sync issues.

RetroArch – Hardware video decoding – coming soon!

As you may well know, RetroArch has embedded video player support on platforms such as Windows, and Linux. Just like VLC, Kodi, mpv and other video players out there, it accomplishes this by leveraging the ffmpeg project.

Up until now, all video decoding was performed entirely in software. This means that the CPU has to do all the decoding instead of being able to delegate it to the GPU. This meant that on some systems, video playback could be too slow if the CPU was too underpowered. This so happens to be the case on many ARM SoC devices out there, such as the Raspberry Pi and Odroids.

Now, we finally support hardware video decoding through ffmpeg’s own APIs! This should really help on systems where there is a CPU bottleneck and the GPU happens to support hardware decoding. Whether or not you are able to decode 1080p, 1440p or 4K on hardware depends entirely on your GPU’s capabilities however.

In addition to hardware decoding, frame based multithreading is now enabled for SW based video decoders, but actual effectiveness hasn’t been proven yet.

The core switches back to SW based decoding if the HW based decoding couldn’t be initialized.

The following backends have been tested:

  • DXVA2 [Windows]
  • D3D11VA [Windows] (it will use this when using the D3D11 driver
  • VDPAU [Linux] (Tested on an AMD System with VDPAU to VAAPI layer)
  • VAAPI

We have performed the following tests so far:

  • Nvidia Titan XP/RTX 2080 Ti
  • – Can hardware decode 1080p/1440p/4K content.

  • Intel UHD 630
  • – Can hardware decode 1080p/1440p/4K content.

  • AMD Radeon R9 290x
  • – This is a slightly older card from 2014. It only supports 1080p hardware video decoding at best. 1440p and 4K content therefore falls back to software video decoding. This means that if your CPU is not up to the task, you won’t be able to run this content at fullspeed.

As a stress test video, we picked a 4K video (3840×2160) with a total bitrate of 29561 kb/s (h264/AVC1, YUV420P), running at 30 frames per second. The CPU we’re using for this test is an Intel Core i7 7700k. With such a CPU, we don’t really have a CPU bottleneck and we are merely GPU bound when it comes to rendering the content.

With software decoding (the current default in RetroArch) – we averaged around 55fps with the 2080 Ti. Our CPU load averages around 15% with GPU load averaging around 11%.

With hardware decoding (the 2080 Ti defaults to DXVA2 for this test) – we averaged 77fps with the 2080 Ti. Our CPU load averages around 11% with GPU load averaging around 20%.

NOTE: The above is long since out of date – the same video is now 256fps with hardware decoding and 224fps with threaded video decoding at an automatically defined amount of threads. Quite the improvement from 55fps I’m sure you’ll agree.

What remains to be done

We will still need to gather tests for the following backends:

  • Cuda
  • Videotoolbox
  • DRM
  • OpenCL
  • Mediacodec

Future plans

In short, we hope this will really help out RetroArch’s video playback capabilities not only on desktops such as Windows and Linux, but also on the ARM SoCs, and in specific our own Linux distribution, Lakka.

But hardware video decoding is not the end-all-be all. There is certainly a lot of room for improvement for future speedups, and these are being investigated. But that’s the subject of another blog post somewhere down the line.

For now, rest assured that big things are coming up for the next version of RetroArch!

RetroArch – Manual content scanning coming very soon!

One of the most requested features for RetroArch, manual content scanning, will finally be added!
How it will work compared to the current database-based scanning:

  • You select a content directory
  • You specify a ‘system name’ to be used as the playlist & database names, with the option of automatically using the content directory name, or a custom string (or any standard database name)
  • You optionally specify a default core for the resultant playlist (if selected, content will be filtered by supported extensions)
  • You can optionally specify a manual list of file extensions to include (so if you have a folder with bin/cue files, you can just enter ‘cue’, and skip the bins)
  • You can either scan content to a new playlist, or just add missing content to an existing playlist (i.e. so you can use it to pick up ‘leftovers’ if you did a normal scan and have items that didn’t match the database)

In essence, this is kinda like the Qt playlist builder thing, but it works everywhere, and all platforms

It’s purely file based – doesn’t scan the databases – so users will get playlists containing all their ROMs. This has always been the biggest complaint about RetroArch – i.e. “I scanned my games and stuff is missing – what can I do?”

This and more coming up in RetroArch 1.8.2!

Doom 3 Libretro core dhewm3 coming soon to Core Updater!

The #Doom 3 source port dhewm3 finally hits #Libretro/#RetroArch, allowing you to play Doom 3 natively on #RetroArch! This is all thanks to the efforts of Rinnegatamante, who previously did the Quake 2 and 3 source ports to libretro/RetroArch.

In the video above you will see us running through the beginning sections. This video was recorded at a resolution of 1440p (256×1440) running at 120 frames per second. To top all this off, internally the game is rendering at a 4K resolution (3840×2160), yet it still outputs to 1440p ultimately.

This will hit the buildbot Core Downloader soon, targeting at first Linux and Windows. We will see which other platforms it can be ported to later on. It’s a far more demanding games than previous id Tech games at least.

Design decisions

Some decisions were made during the porting of this:

  • Right now it’s using the gamepad only as a control scheme, and requires pretty much the use of two analog sticks. There might be more controller configurations in the future, including full-fledged keyboard and mouse support. For now, as stated before, it’s only the gamepad.
  • Internal resolution can be increased up to 4K (3840×2160). It will make sense to increase this later on.
  • Just like the Quake 2/3 cores before it, with minimal tweaking Doom 3 runs generally great on higher refresh rates.
  • For Doom 3 we are targeting fixed framerates (you can set the target framerate as a core option). We are well aware that while the game was made for Geforce 3, a lot of this hardware and even more recent ones struggled to reach a solid 30fps framerate, never mind a stable 60fps.

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!

Quake 3 core ported to Libretro/RetroArch – with working online multiplayer + more!

Hot on the heels of vitaQuake 2 being ported to Libretro/RetroArch, now’s the time for a full-fledged Quake 3 core to make its way to RetroArch!

Rinnegatamante used his vitaQuake 3 source port as the basis for this core. Unlike the vitaQuake 2 core, there is no fallback software renderer. Unlike Quake 1/2, Quake III: Arena was the first game by id Software to require the use of a 3D videocard. For now, this core will require the OpenGL API.

So what exactly is vitaQuake 3? It’s an ioquake3 port by Rinnegatamante that was originally made for the PS Vita as a standalone release, and has now since been ported to the libretro API itself.

It currently supports the following games/mods:

  • Quake III: Arena
  • Quake III: Team Arena
  • OpenArena
  • Urban Terror
  • Q3Rally

The core is currently available on both Windows and Linux on the Libretro buildbot.

Features

  • Fixed frame steps just like the Quake 2 core. You can set the target framerate beyond 60fps in case you have a high refresh rate TV/monitor
  • Resolution can be increased up to 4K (3840×2160). We will probably increase this limit later on
  • Fully working online multiplayer support
  • Full mod support. Should work with Urban Terror, Open Arena, etc

What is not done

  • Needs keyboard/mouse control options. Right now only the gamepad is fully mapped
  • (For mobile) If we want to bring it to mobile, the GL renderer has to compile as GLES 2.0-compatible. Alternatively we could make a separate renderer specfically for this purpose.

How to get it

The core is available right now on our buildbot. It will be only available for Windows PCs, Mac and Linux for now given the OpenGL fixed function requirements right now. We will see where we can go from here.

To install this core, in RetroArch’s Main Menu, go to Online Updater. First make sure your core info files are updated. Select ‘Update Core Info Files’.

After this is done, select ‘Core Updater’. From here, you can select ‘Quake III: Arena (vitaQuake 3)’ from the list and download it.

Requirements/How to use it

You need one of the following:

  • A working version of Quake 3 Arena’s datafiles (buy it on GOG, Steam, etc)
  • A demo version of Quake 3 Arena with the datafiles extracted

We might put up the demo version of Quake 3 Arena on our Content Downloader later to simplify the process for people who just want to test this core out.

Anyway, once you have the data files unpacked somewhere on your storage device, go to RetroArch, go to ‘Load Content’, go to the directory that has the data files, go to the baseq3 folder, and open pak0.pk3.

It should start the core now.

vitaVoyager – Star Trek Voyager: Elite Force Holomatch


vitaVoyager is a port of lilium-voyager, an ioquake3 fork made to be compatible with the multiplayer mode of Star Trek Voyager: Elite Force.

Star Trek Voyager: Elite Force was a game made by Raven Software in the early ’00s. It uses the id Tech 3 engine, the same engine powering Quake III: Arena.

Both local and online multiplayer are fully implemented as well as game against bots.

How to get it

The core is available right now on our buildbot. It will be only available for Windows PCs, Mac and Linux for now given the OpenGL fixed function requirements right now. We will see where we can go from here.

To install this core, in RetroArch’s Main Menu, go to Online Updater. First make sure your core info files are updated. Select ‘Update Core Info Files’.

After this is done, select ‘Core Updater’. From here, you can select ‘Star Trek Voyager: Elite Force (vitaVoyager)’ from the list and download it.

Requirements/How to use it

You need one of the following:

  • A working version of Star Trek Voyager: Elite Force’s multiplayer data files

Holomatch, with permission from Raven and other parties, is now fully free to download and distribute.

See this page here

Other relevant info can be found here

“Fortunately you can play the multiplayer for free. Either you get it from the UFP, a multigaming clan or The Last Outpost, one of the last Elite Force RPG communities left.”

https://ufplanets.com/cms.php?27-Star-Trek-Voyager-Elite-Force

“UFPlanets.com LTD. has received written permission from CBS Broadcasting Inc., the current license holder of the Star Trek franchise and associated material, including the licensed material contained in these installers, to redistribute Star Trek Voyager® Elite Force™ for free via a digital download installer. “

We will have to research if it’s feasible or permissible for us to include these files on our Content Downloader. Until we have made that final determination, you can get them through one of the links above instead.

Anyway, once you have the data files unpacked somewhere on your storage device, go to RetroArch, go to ‘Load Content’, go to the directory that has the data files, go to the baseEF folder, and open pak0.pk3.

It should start the core now.

Coming tomorrow – lifting the curtains on id Tech 4

Tomorrow we’ll have a new blog post dedicated to our in-development Doom 3 libretro core. Stay tuned!

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

RetroArch Overlay Editor – Create and edit your own overlays easily – now available for free!

Article written by meepingsnesroms

Download here – http://buildbot.libretro.com/assets/cores/Utilities/OverlayEditor.zip

Since RetroArch was first running on touchscreen devices, it has been dependent on overlays for onscreen controls. But there has been no good way of editing them, for the last 6 years the only way to make overlays was to edit numbers in a text file, see if they looked good and if they didn’t edit them again until they did, I found this to be quite bizarre and when I made the Palm device overlay for Mu and I made a small buggy overlay editor with an incomprehesible fixed function GUI, it was a project I tried to make in a week as a challenge to myself and as a tool to make the Palm overlay because there was no way I would have the patience to edit the text file that many times.

At first I though no one really cared about it because whenever anyone talked about overlays it was just a border around the game screen and RetroArch wanted an excessive amount of work converting all the GUI files into text by hand, although recently I have gotten slightly bored with Palm stuff and someone was making an overlay and my editor was mentioned, since someone actually wanted an overlay editor I decided that it was worth it to finish it and make it user friendly so anyone can make a good RetroArch overlay.

There is no current plan to integrate the code with RetroArch itself but the source code will run on Windows, Mac and Linux and I will maintain a Win32 binary that can be run on all Windows versions and emulated elsewhere.

Here is a video of its current functionality, more will be added to allow easily making animated overlays from pictures and allowing advanced users to edit the text file directly for things that don’t have a GUI option.

It is in beta right now. If you choose to use it, submit all issues to https://github.com/meepingsnesroms/RetroArchOverlayEditor not the RetroArch repo.

vitaQuake II Libretro core WIP available right now on Windows/Mac/Linux! Plus high refresh rate support in libretro core games



We’ve always felt at libretro that RetroArch is a platform that is agnostic to emulators. That is, the libretro API is not in any way tied to emulators and allows for far more applications to be ported beyond just emulators. So it’s always a delight to us when game engines get ported as libretro cores to add to the growing pool of non-emulator libretro cores. So it was music to our ears when the talented PS Vita homebrew coder Rinnegatamante graced us with a new libretro core – vitaQuake II! This is a port of a Quake II engine source port that he made originally for the PS Vita.

With this core, you will be able to play Quake II on RetroArch (or any libretro-compatible program for that matter).

YouTube videos coming later today showcasing the game running at both 60Hz and 120Hz!

Where to get it and for what platforms

The core is available right now on our buildbot. It will be only available for Windows PCs, Mac and Linux for now given the OpenGL fixed function requirements right now. We will see where we can go from here.

To install this core, in RetroArch’s Main Menu, go to Online Updater. First make sure your core info files are updated. Select ‘Update Core Info Files’.

After this is done, select ‘Core Updater’. From here, you can select ‘Quake 2 (vitaQuake 2)’ from the list and download it.

How to start Quake 2

You need to load Quake 2’s PAK0.PAK. This is usually found inside the Quake 2 directory’s ‘baseq2’ directory. Both the shareware version and the full version should work fine.

Information

It’s a very early version, and some bugs will still exist. Some examples:

  • If you want this to run with the regular gl driver, “Shared Hardware Context” needs to be enabled in Settings -> Core (you might need to enable Show Advanced Settings first in Settings -> User Appearance). The glcore driver on the other hand does not require you to enable this in order for the game to work as normal.
  • A savefile bug where after having selected New Game for the first time, starting it again after closing vitaQuake 2 for the first time will start you off at the beginning with all enemies already killed and the elevator button missing. In case this happens, you then need to go to the directory where your Quake 2 datafiles are, and manually delete the baseq2/save directory contents. Obviously this is very inconvenient and not at all intentional, so hopefully we can fix this soon.
  • After about 5/7 minutes, there might be a big freeze that can last for 5 seconds, after which the game will resume again. Obviously very nonideal and something we want to fix ASAP.

Technical details

Let us discuss some of the intricacies of this port:

  • Quake II dates back to an era where 3D graphics APIs and 3D video cards in general were truly in their infancy. Quake II makes use of a very limited subset of OpenGL 1.x. To complicate matters, right now the renderer is using some OpenGL 2.x functions as well such as glGetTexImage. We’ll have to see where we go from here – mobile would need a renderer that is at least compatible with GLES2, which means making use of non-fixed function vertex and pixel shaders, while on the other hand we can see an exclusively OpenGL 1.x renderer being very useful for low end hardware such as the 3DS, PS Vita and PSP – all these platforms have an OpenGL 1.x wrapper to some degree that translates back to their native graphics APIs. Frangarcj and Rinnegatamante are discussing possibly adding an OpenGL 1.x hardware context to the libretro API that would make it possible to target these platforms. So perhaps the future of this port is multiple renderers so that we can cast a wide net in terms of compatibility.

    Long story short – for now, this renderer is making use of fixed function GL, so you’ll need to be on a desktop computer to run this for now.

  • The glcore video driver will run this core right now without having to enable ‘Shared Hardware Context’. To get it to run with the regular gl driver, you will need to enable ‘Shared Hardware Context’ inside Settings -> Core. You might need to enable ‘Advanced Settings’ first in Settings -> User Interface before this shows up.
  • The libretro core has been changed slightly from the original so that the Quake II frame logic operates in fixed timesteps. In normal Quake 2 ports, this is usually done with a timer which acts as the framerate limiter. In libretro instead, we can guarantee that each retro_run iteration is exactly one frame, so all we have to do is pass the exact timestep delta for the framerate we are to target to Qcommon_frame. This gives us a silky smooth framerate with minimal frametime deviations. This might complicate matters in terms of existing Quake 2 server compatibility, but we kinda figure that it’s not worth it having suboptimal performance and that the existing Quake 2 server pool is very limited anyway and that it has its own drawbacks in terms of performance as it stands (with hard caps on framerate – most servers cap at 60-70 fps).
  • Quake II in general seems to have a default framerate cap of 90fps. We want to make as many libretro game engine cores suitable for high refresh rate gaming as possible, so we’ve gotten rid of this cap. We’ve tested the game to be running flawlessly at 100Hz and 120Hz.
  • The UI in Quake II normally doesn’t scale, so at higher resolutions it would appear very small. Because it’s 2019 and not a lot of people play their games at 640×480 anymore, there is now UI scaling implemented so that the UI text popups will be readable at 1080p and beyond.
  • Rumble has been implemented and is available as a core option, just like it was in the PS Vita standalone version.

High refresh rate gaming with libretro/RetroArch


There has been an increased focus on making sure libretro game cores are all they can be when it comes to supporting higher refresh rates. So far we have already had the following libretro game cores that can run at higher framerates (>60fps):

  • Prboom (Doom 1/2 game engine core)
  • Cannonball (Outrun game engine core)
  • OpenLara (Tomb Raider game engine core)
  • Tyrquake (Quake 1 game engine core) (NEW)
  • vitaQuake2 (Quake 2 game engine core) (NEW)

Tyrquake and vita Quake2 are two recent additions to this list. In order to get them to run without audio crackling at higher refresh rates, we had to change the audio samplerate from 44Khz to 48Khz, which seemed to do the trick.

To further increase the convenience factor, we’ve also implemented a nifty feature in these libretro cores: support for libretro’s ‘preferred refresh rate’ option. Basically, if you leave the ‘Framerate’ option at ‘Auto’, the libretro core will look at RetroArch’s configured ‘refresh rate’, and it will use this for the framerate. This means that inside RetroArch, you can switch to a 1440p 120Hz mode with the Resolution setting, then start the core, and without having to configure the framerate, it will then run the game at 120fps. Likewise, if you then switch to a 4K resolution at 60Hz, and close and reload the Quake core, the game will automatically run at 60fps instead. So, with cores that support the ‘RETRO_ENVIRONMENT_GET_TARGET_REFRESH_RATE’ environment callback, you don’t have to keep switching back and forth between separate framerates inside the core – you can simply leave it at ‘Auto’ and RetroArch will do the rest.

This feature has not been added yet for OpenLara and Prboom, but we’ll do so soon.

RetroArch 1.7.9 (v2) released!


RetroArch 1.7.9 (v2) has just been released. Among many other things, it includes big QoL (Quality of Life) improvements for mobile users.

The menu system should now support touchscreen gestures and controls in general should be much improved inside the menu. But that’s far from all!

Grab it here.

If you’d like to show your support, consider donating to us. Check here in order to learn more. You can also help us out by buying some of our merch on our Teespring store!

More frequent stable releases

We will be doing stable releases more frequently from now on instead of them happening only once every 3 months. This way, we can gather live feedback from users based on things we change and it’s easier for us to adapt to user feedback.

Big features

Much-improved menu navigation and touch gestures

Version 1.7.9 will debut touchscreen gestures for the menu for the first time! You will now be able to operate the XMB and MaterialUI menu without needing a gamepad or overlay!

XMB gestures

The following gesture functionality is available with XMB:

  • Swipe up/down in the left margin: scroll through current menu list by ascending/descending the alphabet
    Swipe up/down in the middle region of the screen: scroll up/down through current menu list by one ‘page’ (i.e. one screen’s worth of entries)
  • Swipe left/right: navigate left right, or change the setting value of the currently active item
  • Tap left margin below top margin: Back/cancel action
  • Tap left margin above top margin (top left corner): Open search interface
  • Tap right margin: select currently active item
  • Tap menu list in middle region of screen: activate item, or select it if already active
  • Long press active menu item in middle region of screen: reset item to default setting value
  • Press and drag up/down in the right margin: scroll up/down through menu list (the further you drag, the faster it goes – up to a limit corresponding to keeping a cursor key held down)
  • Press and drag left/right in the top margin: navigate left/right, or change the setting value of the currently active item (again – the further you drag, the faster it goes)

MaterialUI gestures

The following gesture functionality is available with MaterialUI:

On the ‘home’ screen(s):

  • Swipe left/right to switch between the three top-level menus (i.e. has same effect as tapping the icons on the tab bar)

On playlists, file lists and drop down lists:

  • Swipe left/right on the top half of the screen to ascend/descend the alphabet.
  • Swipe left/right on the bottom half of the screen to scroll up/down by 10% of the list size (or one screen height, if this is larger)

On other types of menu:

  • Swipe left/right on a highlighted item to simulate normal cursor key left/right input (i.e. can be used to change settings)

On all menus:

  • A quick tap highlights and selects an item
  • A ‘short press’ (held for > 200 ms) just highlights the item. This is useful for highlighting a settings item prior to swiping left/right to change the value

Auto rotation of overlay when orientation changes (from landscape to portrait and vice versa)

This must have been bugging Android and iOS users for a long time, and finally it is fixed!

We added a new Auto-Rotate Overlay option under Settings > Onscreen Display > Onscreen Overlay (enabled by defaultt on mobile). When enabled, any overlay with both landscape and portrait support will automatically be rotated according to the current display aspect ratio (which corresponds to device orientation for mobile platforms).

Note: Since the overlay specification has no concept of orientation, this auto-rotate feature depends upon proper naming conventions in overlay config files:

  • The active overlay name should contain a fixed string corresponding to it’s layout (i.e. landscape or portrait). Prefixes/suffixes are fine.
  • The overlay rotate button should be wired up, with a target overlay whose name contains a fixed string corresponding to the opposite layout. (Again, prefixes/suffixes are fine)

AI Service – Faster image mode

The image mode should now be substantially faster. It now saves the image in-memory in PNG format then passes it along to the translation service.

To learn more about our AI Service, check out our Youtube guide above.

Changes

v2

  • 3DS: Fix 3DS screen flickering when OSD is enabled
  • IOS: Fix crash that could happen at startup
  • MENU/MATERIALUI: Change DPI scaling back to original – too many issues with current implementation, requires a redesign
  • AI SERVICE: Image mode is now much faster, it now saves the image in-memory in PNG format then passes it along to the translation service
  • BUGFIX: Touch input – When using an overlay to toggle the quick menu on touchscreen devices, we no longer get ‘phantom’ menu input – i.e. the old bug of hitting the toggle and instantly resuming content (or performing a save state) is fixed
  • BUGFIX: Networking – RetroArch crashed when pressing left while Relay Server Location entry was selected
  • BUGFIX: Networking – fix memory leak that could happen at exit after a network operation had run
  • CHEEVOS: Improve handling of line endings when calculating CD hashes for retroachievements
  • CHEEVOS: Add support for Sega CD/Saturn; reduce hash calls to server
  • FPGA: Add initial FPGA port for Z-Turn boards – not really release-ready yet, will need community support to continue. Currently employs naive framebuffer approach, not fullspeed
  • GL1: GLDirect (D3D9 to OGL1.1 wrapper) support
  • GONG: Stability fixes
  • LINUX/UDEV: Fix touchscreen/lightgun issues
  • MENU/MATERIALUI: MaterialUI no longer ‘forgets’ its place when navigating backwards in menus, and navigation in general is ‘cleaner’
  • MENU/MATERIALUI: Add initial gesture support
  • MENU/MATERIALUI: Improved touch support
  • MENU/MATERIALUI: Bugfix – Random’ items are no longer automatically highlighted when performing standard up/down ‘flick’ scrolling through lists (items are only highlighted when you keep the pointer still for > 200 ms)
  • MENU/MATERIALUI: Bugfix – The display no longer ‘jerks’ for one frame when navigating backwards through lists
  • MENU/MATERIALUI: Bugfix – The Material UI scaling factor is now based upon the device-reported screen DPI value (previously it relied upon a hard-coded magic number, which was never correct)
  • MENU/RGUI: Functional mouse/touchscreen support
  • MENU/ONSCREEN KEYBOARD: On-screen keyboard entry via mouse/touchscreen has been tidied up – no more double inputs (or unwanted menu interaction in the background)
  • MENU/MOUSE: Mouse wheel up/down is now a proper ‘up/down’, same as using cursor keys or a dpad
  • MENU/MOUSE: Mouse wheel tilt left/right has been wired up to normal ‘left/right’ commands. Also further improved mouse wheel tilt
  • MENU/OZONE: Add option to toggle between static and scrolling content metadata
  • MENU/XMB: Add full gesture support
  • MENU/OSX: Fixed mouse buttons – mouse down events were not hooked up
  • MENU: When navigating backwards from a core options drop-down list (i.e. pressing select or cancel), the last menu position is remembered (instead of resetting back to the first core option item each time)
  • MENU: Add mouse/touchscreen gesture support
  • MENU: Add option to delete playlists (Settings > Playlists > Playlist Management)
  • MOBILE (ANDROID/IOS): Add option to automatically rotate overlays when changing orientation
  • OSD: Memory details should now be available on every platform (get_mem_total and get_mem_free need to be implemented in the frontend driver for it to work)
  • OSD: Memory details can now be shown individually without FPS and frame count
  • PS2: Fix memory leaks in font/video driver
  • SWITCH: Set default aspect ratio to core provided instead of 4:3
  • THREADED VIDEO: Fix FPS text in threaded video mode
  • VITA: Set default aspect ratio to core provided instead of 4:3
  • VITA: Add system language detection
  • VITA: More memory support
  • WIN32: Log window now has title ‘Logging Console’
  • WII: Add Wiimote lightgun support

Upcoming – RetroArch 1.7.9 – Menu Touchscreen Gestures!


RetroArch 1.7.9 (scheduled for release soon) will debut touchscreen gestures for the menu for the first time! You will now be able to operate the XMB menu without needing a gamepad or overlay!

The following gesture-like functionality is available:

  • Swipe up/down in the left margin: scroll through current menu list by ascending/descending the alphabet
  • Swipe up/down in the middle region of the screen: scroll up/down through current menu list by one ‘page’ (i.e. one screen’s worth of entries)
  • Swipe left/right: navigate left right, or change the setting value of the currently active item
  • Tap left margin below top margin: Back/cancel action
  • Tap left margin above top margin (top left corner): Open search interface
  • Tap right margin: select currently active item
  • Tap menu list in middle region of screen: activate item, or select it if already active
  • Long press active menu item in middle region of screen: reset item to default setting value
  • Press and drag up/down in the right margin: scroll up/down through menu list (the further you drag, the faster it goes – up to a limit corresponding to keeping a cursor key held down)
  • Press and drag left/right in the top margin: navigate left/right, or change the setting value of the currently active item (again – the further you drag, the faster it goes)

RetroArch 3DS: Full speed PS1 now possible with PCSX ReARMed w/ Unai renderer!


Written by Justin Weiss

NOTE: When talking about 3DS in this article, we actually mean the New 3DS. Don’t expect old 3DS to be able to emulate many games at fullspeed.

The Nintendo 3DS is a great little portable RetroArch machine. Especially for classic systems: it has all the buttons you need, and the screen is sharp and pixel-perfect. We’re happy to share a few improvements to RetroArch 3DS that make it even better.

Full-speed cores from the homebrew menu

There are a few different ways to run homebrew apps on the 3DS. Until recently, you could only run cores with a dynarec turned on, such as gpSP and PCSX ReARMed, if you installed the .cia version of RetroArch to the home menu.

On setups using Luma3DS 8.0 or higher, these dynarecs now run when launched as .3dsx files from the homebrew menu, for those who prefer to keep their home menu clean — there is no difference in speed between .cia and .3dsx.

Faster renderer for PCSX ReARMed

PCSX ReARMed has graphics and sound plugins, and some plugins are better suited for certain systems than others. Until now, the 3DS has used the P.E.Op.S. graphics plugin, which is reasonably accurate, but slow. We have just changed the 3DS builds to use PCSX4ALL’s Unai renderer, which is less accurate, but much faster. In many games, 10-20fps faster!

This means that on the New Nintendo 3DS, many PSX games will run at a full 60fps — outside of FMVs, loading, and special effects. But this next feature improves even those:

CHD support in PCSX ReARMed

CHD is a compression format that works great for disc images, losslessly shrinking CD-sized games into something more manageable. Support for CHDs was added to PCSX ReARMed by [fulfilling a bounty] earlier this year, but that support didn’t carry over into the 3DS version.

Now, CHD support has been enabled on PCSX ReARMed on 3DS. This means you can share the same images between RetroArch versions, the images will take up less speed on your SD card, and they will load (and run!) significantly faster than .bin/.cue files. This greatly reduces framerate dips, especially during FMVs and loading zones.

Full-speed PlayStation

When you combine the faster renderer with CHD support, a lot of great PlayStation games run at full-speed on the New Nintendo 3DS! Try it out today: the updated core is currently available in the latest nightly versions, and will ship with the next RetroArch release.

Beetle PSX Dynarec – Accurate PlayStation1 emulation is about to become a lot faster!


Two years ago, we started a bounty for Beetle PSX, our own heavily modified fork of Mednafen PSX. 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.

We can happily report that heavy progress is being made on this bounty right now courtesy of two bounty hunters, and we have been able to test builds which confirm that it is in fact already working for some games. Right now, the dynarec is still in a fairly WIP (Work In Progress) state, many of the more popular games will crash or hang, but the ones that do work so far show a substantial increase in maximum framerate even on a Core i7 7700k CPU.

Game Without dynarec With dynarec
Alien Trilogy 227fps 415fps
Castlevania: Symphony of the Night 190fps 380fps
Crash Bandicoot 170fps 315fps
Doom 210fps 386fps
Mortal Kombat Trilogy 212fps ~500fps
Tekken 3 178fps 224fps
Tomb Raider 218fps ~450fps

NOTE: These tests were conducted on a Windows PC with a Core i7 7700k CPU. It should be noted that this is a highly experimental build and that the performance we measured here should be considered a snapshot performance overview. Most likely when the dynarec is merged into master, we should be looking at much higher framerates still.

1x software rendering mode was used during testing.

What does all this mean?

Higher performance means the core becomes far more viable to be used on other platforms. Up until now, ARM platforms have had to resort to PCSX ReARMed for their PlayStation1 emulation needs because Beetle PSX is simply too slow to run on these systems (unless you’re using a cutting edge iPhone/Android phone of course, and even then, on a Galaxy S10+, I’ve only been able to reliably run most games at fullspeed at 1x resolution with the software renderer). This means that when the Aarch64/ARMv7 backends start working, Beetle PSX could become another possibility for people wanting to use a PlayStation emulator. There’s always room for two emulators and it never hurts to give the user several options for a certain system, especially for a system as popular and with as many games as the PlayStation1.

Higher performance also means more potential for CPU overclocking and runahead latency reduction. Both require a lot of CPU resources, so the higher the performance, the more wiggle room we have to push both.

Implementation

pcercuei made a dynamic recompiler for MIPS powered by GNU Lightning. ZachCook then backported this system to work with Beetle PSX. Previous working implementations were PCSX ReARMed and PCSX 4 All.

When will this release?

We don’t do ETAs for this, and please don’t bug the developers about this. Let them work in peace, that results in better code too. We just wanted you to know about this exciting development that has been going on since it has been at least two years since the bounty started and finally we are starting to see the dream become a reality. We for one can’t be more excited!

Beyond that, we are even more convinced than ever that bounties have been an accelerator for innovation and growth for the project all-around. Our last major smash hit feature, the AI Service, was all courtesy of a bounty funded by both libretro creators and the community alike. Together we make amazing stuff happen, and we truly have our users to thank for all the amazing support they have given this project over the years.

RetroArch v1.7.8 (v4) released

RetroArch 1.7.8 v4 has just been released. Another point fix release, but it has some important changes especially for iOS and Retro Achievements users.

Grab it here.

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

For all other details surrounding version 1.7.8, we refer you to our original article here.

Changes

  • COMMON: Enable customisation of runtime ‘last played’ display format
  • CHEEVOS: Add hashing support for PSX (bin/cue, chd, or real CD) (for real this time, got added in the CHANGELOG for v2 then reverted before it hit release)
  • IOS: Update for iOS 13, fix the asset packaging issues
  • LOCALIZATION: Update Portuguese Brazilian Translation
  • MENU: Add 12-hour time/date versions of all formats
  • SWITCH: Add ‘AI Service’ option to Switch (untested)
  • SWITCH: Update to newest libnx toolchain

Flycast WinCE has merged into regular Flycast – only one core now! Plus – Switch port teaser!

So, flyinghead finally feels confident enough that we are at a stage where the WinCE branch can be merged into master.

This is a pretty big deal. This marks the first time that an open source Dreamcast emulator has Windows CE support in a mainline release, along with arcade Naomi support. Right now, the only other emulator that manages to emulate both these is a closed source emulator called demul. So this is a pretty big milestone for us.

So, what do you have to do from this point on?

– Go to the Online Updater, select ‘Update Cores’, and download ‘Flycast’.
– Remove the old Flycast WinCE core. It no longer serves any purpose, you can just download the Flycast core instead which was Windows CE support now built-in. If you have any games in your old playlists that still use the Flycast WinCE core, reset the core association and make it use the main Flycast core now.

This has been a tremendous undertaking and in the process, so many improvements have been made as a result:

* (Windows CE) The reason why the Windows CE build was separate before was that the addition of the MMU codepath would greatly hurt the performance of every non-Windows CE-based game. This is no longer the case thankfully. Instead, performance has actually improved over the non-Windows CE build from before (see the next point).
* (Optimizations / Performance) Thanks to SSA optimizations, performance is better across the board now for every game, whether it is a Windows CE-based game or not. We figure it’s about 30% faster on average give or take.
* (Libretro core-specific) Certain core options now get hidden depending on other settings that are turned on/off which they are dependent on. For instance – ‘Show VMU Display Settings’ – if you enable this and then leave the Quick Menu options screen and re-enter it again, it will show all the VMU display options. Turn this off and repeat the same process in order to hide all the VMU display-related options again. This will greatly unclutter the options list.
* (Libretro core-specific) A new setting that appears when Threaded Rendering is enabled – ‘Delay Frame Swapping’. This waits until the frame is rendered by the digital video encoder which means it’s being displayed on the screen. This helps avoid displaying bogus/empty frames that would not be shown on a real console. Without this option enabled, you can get heavy screen flickering with some games (such as South Park Chef’s Luv Shack and NFL Quarterback Club 2000).
* (Libretro core-specific) Auto-configuration of early input polling when threaded rendering is enabled. Threaded rendering needs early input polling configured or else input will be buggy. In the past, the user needed to do this manually on RetroArch, which greatly complicated things. Now instead, we do this behind the scenes through a private libretro API extension, so you no longer have to tediously configure this yourself. It was annoying and could mess with your configuration since for other cores you would really want to set it to late input polling for the best input latency.
* AICA sound emulation has greatly improved and can now be considered mostly feature complete. We have included a before and after comparison of Skies of Arcadia so you can get an idea of how much of an improvement it is – this is Skies of Arcadia before and after implementing the LPF (Low-Pass Filter) –

Before –

After –

So, in short, the low-pass filter has been implemented. This filter has an envelope, similar to the already implemented one for amplitude. It varies the cut-off frequency for attack/decay/sustain/release. The other thing added is the pitch LFO, which is used to create a vibrato effect. So far, the only sound inaccuracy I have noticed in a game is that certain music that is triggered upon events (such as in Resident Evil Code: Veronica) does not get properly faded out. Apart from that, sound accuracy has seen a tremendous improvement, really night and day in a lot of respects in games like Resident Evil 2 and Skies of Arcadia.

* (AMD) Per-pixel alpha sorting has been fixed on AMD GPUs. Previously ,it would look like this on Windows (at the main BIOS menu) –

Switch port teaser

Flycast Libretro is coming to RetroArch Switch courtesy of Datamats! For now it uses the interpreter core only, but m4xw is going to work on getting the dynarec working. No ETA and don’t bug the devs about it until it’s done!

RetroArch 1.7.8 – AI Service – How To Set It Up

Welcome to the future! Sometime ago, a #RetroArch bounty got posted proposing OCR (Optical Character Recognition) and Text To Speech services being added to RetroArch.

Some months later, and here we are – a bounty hunter valiantly took on the challenge and there is now a fully fledged AI Service up and running that works seamlessly with #RetroArch!

You use the AI Service like this – you enable the AI Service (should be enabled by default), you then setup the server URL (could be a local network address if you have the server up and running in your own network, or a public IP/URL in case you’re going through a service). After that, you only need to bind a button or key to the so-called “AI Service” action. You can bind this key by going to Settings – Input – Hotkeys.

In this video, you can see each of the two modes that the AI Service currently is capable of doing –

Speech Mode – Upon pressing the AI Service button, a quick scan is done of the text, and the recognized text is then translated to speech. You can press the AI Service button at any time and it will try to process the current snapshot of the screen it made. This mode is non-interruptable, meaning the game will continue running when you hit this button, and the output speech will take as long as it takes for the server to respond to your query and pipe the sound to RetroArch.

Image Mode – In image mode, it tries to replace the text onscreen with the output text. For instance, in the video you see above, the game is played in Japanese, so when we hit the AI Service button, it tries to replace the Japanese text with English translated text. This mode is interruptable – this means that when you hit the AI Service button, it pauses the game and shows you an image with the replacement text UNTIL you hit either the AI Service hotkey or the Pause hotkey again, then it will continue playing.

We encourage everybody that wants to submit feedback to us on this amazing revolutionary feature to go to our Discord channel and in specific the #retroarch-ai channel. We’d love to hear your feedback and we’d like to develop this feature further, so your input and feedback is not only appreciated but necessary!

VGTranslate using Google API keys

1.0 Get a Google API key

  • Create a billing account (taken from https://cloud.google.com/billing/docs/how-to/manage-billing-account )
    • Go to the Google Cloud Platform Console Manage billing accounts page and sign in or, if you don’t already have an account, sign up.
    • Click the Create account button.
    • Enter the name of the billing account, then click Continue. Note that if you see an Organization  drop-down, then you must also select an Organization before you can continue.
    • You might be prompted to select your country. The choice will affect the payment options you have in  the next step. The currency for your billing account is based on the country you select.
    • Choose the payments profile that will be associated with this billing account. You can choose an  existing payments profile, or create a new payments profile. If you choose to create, follow the  instructions on the screen to set up your payments profile.
    • Set your Account type as individual
  • Create an API Key: (taken from https://cloud.google.com/docs/authentication/api-keys )
    1. Navigate to the APIs & Services Credentials panel in GCP Console.
    2. Select Create credentials, then select API key from the dropdown menu.
    3. Click the Create button. The API key created dialog box displays your newly created key.
    4. This is your GOOGLE_API_KEY that we will use later.

2.0 Setup VGTranslate

  • Windows:
  • Linux:
    • Download the vgtranslate project from https://gitlab.com/spherebeaker/vgtranslate.git or use git clone.
    • Go to the extracted vgtranslate directory where setup.py is located.
    • Using python2.7, run: python setup.py install -If this step fails, you can try removing the problematic dependency.  Dependencies like gender-guess and kivy are not needed for most functionality. -Change the default_config.json file as in the windows case.
    • Go into the vgtranslate subdirectory and run: python serve.py

3.0 Setup RetroArch

AI Service Settings
  • Start RetroArch -Settings->Input->HotKey Binds->AI Service
  • Change to key/button of your choice
  • Settings->AI Service -Set AI Service Output to “Image Mode” (text translation) –
    OR set AI Service Output to “Speech mode” (text-to-speech)
  • Set AI Service URL to “http://localhost:4404”
  • Set AI Service Enabled to on.
  • Set Target Language to your language of choice
  • Source language will be used as a hint for the OCR, but can be left to “Don’t Care”
  • Run a game of your choice
    1. Image Mode (Text translation)
      1. Press your hotkey to pause the game, and wait for a translation to come back.
      2. Press your hotkey again to unpause and continue
    2. Speech Mode (Text To Speech)
      1. Press your hotkey to read out the text currently on the screen.
Bind the AI Service hotkey to a key or button
Bind the AI Service hotkey to a key or button

4.0 ZTranslate Service API Option

ZTranslate API Key method

  • Go to https://ztranslate.net/signup
  • Enter a display name, email, and password, and click register
  • Check your email for the verification link and click on it.  If you don’t see it, check your junk/spam folder.
  • In the top menu, click on “Settings”
  • Copy the API KEY near the bottom of the page.  This is your ZTRANSLATE_API_KEY.
  • Follow instructions in 3.0, but
    • For AI Service URL, put in: “http://ztranslate.net/service?api_key=<ZTRANSLATE_API_KEY HERE>”

5.0 – ZTranslate API via VGTranslate

Follow instructions 2.0, 3.0, and 4.0, except:

  • when modifying default_config.json, use the following: (link here)
  • Change AI Service URL to “http://localhost:4404”.
  • This will use the ztranslate API method, but will reduce latency compared to hitting the service API directly.

RetroArch 1.7.8 (v3) released + big core updates! (bsnes HD, Flycast, Android, etc)

RetroArch 1.7.8 was a very ambitious release, and as a result, it is taking some time to iron out some of the kinks. Instaed of leaving you waiting for a month again to fix some crucial bugs, we’d rather release these point fix releases first instead so that we leave you with a rock-solid 1.7.8 in the end while we then shift our focus and attention to 1.7.9.

In light of that, we are releasing version 3 right now, which will be especially beneficial for Mac users. The future-proof Metal Mac version should now work flawlessly on Macs with an AMD graphics card (they previously produced heavy graphics glitches inside the menu). It 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.

For all other details surrounding version 1.7.8, we refer you to our original article here.

Changes

  • GLCORE: Ensure correct scaling of menu texture (with RGUI)
  • IPS: Soft-Patch any IPS size
  • METAL: Fix overlay issue – setup correct viewport before rendering overlay
  • METAL/STB: Fix font driver issue with AMD GPUs on MacOS.
  • MENU/RGUI: Correctly rescale menu when resizing window if aspect ratio lock is enabled.
  • OSX: Remove OSX suffix in window title
  • PSP: Fix audio conversion code
  • REMAPS: Fix analog remapping regression -analog remapping would break controls

bsnes HD – Released for Windows/Linux/Android, and soon iOS and Mac!

bsnes HD should now be available on Linux, Windows and Android for RetroArch users! It’s based on the latest version of bsnes, and it should be significantly faster than previous bsnes versions.

In this video, we show you some of the HD Mode 7 features that are unique to this version. They make for a fairly significant difference overall as we’re sure you’ll agree!

This core is not fully complete yet and might still have some omissions. Also, the ‘bsnes HD’ name is temporary, and we will be doing some house cleaning of the various bsnes cores we are maintaining soon. The plan is to have an improved Core Updater in later RetroArch versions that allows for better categorization and filtering in the future so that users can more easily manage their cores.

On Android for the first time!

This is the first time the latest version of bsnes will appear on Android, courtesy of Libretro/RetroArch! Our core version of this is called bsnes HD, and you can grab it from the Core Updater right now! Just make sure to update the core info files first (by going to Online Updater, then selecting ‘Update Core Info Files’). bsnes HD should be a fair bit faster than the other bsnes cores already available, plus it has enhanced overclocking features and the acclaimed HD Mode 7 features.

In this video you see it running on a Samsung Galaxy S10+ (Exynos model) with 3x HD Mode 7 scaling applied, and it runs at fullspeed all the way.

User and contributor harakari has reported that he can run HD Mode 7 at 4x scaling and still have games run at fullspeed on his iPhone XS Max, so if anything, expect even better performance on high-end iDevices!

Flycast – WinCE core now 30% faster on average and sound improvements!

The FlycastWinCE version should now be 30% faster on average for non-Windows CE games! We have figured out a way to have the Windows CE code additions no longer affect the main performance of the emulator. For that reason, after we have ironed out some of the final kinks, you can expect there to be only one Flycast core moving forward. On top of that, flyinghead has really gone to town with some much needed audio improvements on the AICA and DSP side. Witness this long standing audio sample bug that is now finally fixed with the game Resident Evil: Code Veronica. This and many other sound bugs (such as the audio samples continuing to be repeated during the battle loading scenes in Soul Calibur) have been fixed now.

World-first – Windows CE Dreamcast games running on Android!

The Flycast WinCE core is now available for Android users!

  • 30% speedup in non-Windows CE games thanks to extensive optimizations made to the dynarec by flyinghead. No more performance reduction of non-Windows CE games.
  • Windows CE support further improved.

It is now possible to play Dreamcast Windows CE games on Android! Please be aware that this is very CPU intensive and that you should probably expect 15 to 25fps on high-end Android phones right now.

Note that Windows CE games could still be unstable on Android, and that you need a real BIOS for Windows CE to work. It won’t work with the HLE BIOS.

NOTE: We anticipate that after the final kinks has been ironed out, that we will merge the Windows CE parts of this core back into Flycast, and that the separate Flycast WinCE core will disappear from there on. So this separate core is only a temporary thing for now. We will let you know when this will happen. Video was recorded on a Galaxy S10+.

Mupen64 Plus Next – No more 10 second startup times on Windows!

Thanks to an important bug fixed by mudlord, Mupen64 Plus Next should no longer take up to 10 seconds to start up any game on Windows.

Mupen64 Plus Next is an up to date version of Mupen 64 Plus with the latest GlideN64 renderer.

More progress reports on other cores soon

Cores are often updated on a daily basis, and a lot of the times, all the amazing enhancements and improvements they receive go underreported because we’re so busy with development. We feel it is time to shine more of a light on these changes, so we will be doing more periodic updates on core updates as they come along.

RetroArch 1.7.8 (v2) – Released!

This is an important bugfix release of RetroArch 1.7.8. It 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.

For all other details surrounding version 1.7.8, we refer you to our original article here.

Changes

  • 3DS: Fix 3DS startup crash
  • AI SERVICE: Fix ‘Japanese’ setting
  • D3D12: Fix runtime error at startup
  • CHEEVOS: Fix Achievements badges
  • CHEEVOS: Add hashing support for PSX (bin/cue, chd, or real CD)
  • GLCORE: Fix regression – shaders don’t work
  • IOS: Use launch storyboard to properly support all screen sizes
  • LOCALIZATION: Update Japanese translation
  • LOCALIZATION: Update Korean translation
  • LOCALIZATION: Update Polish translation
  • MENU/XMB: Smooth vertical ticker scrolling
  • OSX: Fix potential OSX startup crash
  • PATCH: Fix IPS patches
  • PLAYLISTS: Fix playlist heap corruption bug. Would also cause potential crashes on OSX and 3DS at startup
  • SHADERS: Fix shader loading and saving in content-less cores
  • SHADERS: Implement video_shader_delay setting. Screen grabbing software like streaming software can interfere with the loading of shaders, resulting in graphical glitches or freezes. This PR adds a video_shader_delay setting (in ms) and (advanced) menu entries Video -> Auto-Shader Delay, allowing to work around the issue

 

RetroArch 1.7.8 – Released!

RetroArch 1.7.8 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.

It would be an understatement to say that version 1.7.8 is a pretty big deal. Two major landmark features are added for this version on top of numerous enhancements. In fact, there is so much to talk about again, we have been forced to split this release post up into several separate blog articles.

RetroArch AI Project

Welcome to the future! Sometime ago, a RetroArch bounty got posted proposing OCR (Optical Character Recognition) and Text To Speech services being added to RetroArch.

Some months later, and here we are – a bounty hunter valiantly took on the challenge and there is now a fully fledged AI Service up and running that works seamlessly with RetroArch!

You use the AI Service like this – you enable the AI Service (should be enabled by default), you then setup the server URL (could be a local network address if you have the server up and running in your own network, or a public IP/URL in case you’re going through a service). After that, you only need to bind a button or key to the so-called “AI Service” action. You can bind this key by going to Settings – Input – Hotkeys.

In this video, you can see each of the two modes that the AI Service currently is capable of doing –

Speech Mode – Upon pressing the AI Service button, a quick scan is done of the text, and the recognized text is then translated to speech. You can press the AI Service button at any time and it will try to process the current snapshot of the screen it made. This mode is non-interruptable, meaning the game will continue running when you hit this button, and the output speech will take as long as it takes for the server to respond to your query and pipe the sound to RetroArch.

Image Mode – In image mode, it tries to replace the text onscreen with the output text. For instance, in the video you see above, the game is played in Japanese, so when we hit the AI Service button, it tries to replace the Japanese text with English translated text. This mode is interruptable – this means that when you hit the AI Service button, it pauses the game and shows you an image with the replacement text UNTIL you hit either the AI Service hotkey or the Pause hotkey again, then it will continue playing.

We encourage everybody that wants to submit feedback to us on this amazing revolutionary feature to go to our Discord channel and in specific the retroarch-ai channel. We’d love to hear your feedback and we’d like to develop this feature further, so your input and feedback is not only appreciated but necessary!

Read the instructions on how to set this up here.

Also make sure to read our previous blog articles on this subject, available here.

RetroArch Disc Project

Real CD-ROM functionality is now included in RetroArch 1.7.8 for both Linux and Windows PCs. Please note that this functionality is far from finished and the performance you will be able to get out of this right now is very drive and OS-dependent. Generally it’s fair to say that Linux is the more fleshed out of the two platforms so far, and performance and reliability is best there for the moment.

The following cores have been updated with physical CD-ROM support:

  • Genesis Plus GX
  • Mednafen/Beetle PSX
  • Mednafen/Beetle Saturn
  • Mednafen/Beetle PCE/Fast
  • 4DO

We want to encourage people to test as many drives as possible that they have at their disposal, then report back to us on Discord (channel #discproject).

Also make sure to read our previous blog articles on this subject, available here.

RetroArch Android – now a hybrid 64bit/32bit build

Read this blog article here for more information on this important change. We apologize for the inconvenience but Google’s new store rules force our hand and it was necessary to add the 64bit version to the main release.

To be clear, the only place on which we can provide a 32bit-only version from now on will be our own site. Google’s rules on the Google Play Store requires each app to have both a 64bit and/or 32bit codepath, and on 64bit devices, it would auto default to the 64bit code, with no ability to switch to the 32bit version.

Enhanced core options

New core options: sublabels, localization support, selective hiding, etc.
New core options: sublabels, localization support, selective hiding, etc.

A big flaw of the libretro API was the lack of any internationalization support, or even just a sane way to add a default value without needing it to be the first in a sequential list.

Libretro and RetroArch now bode support for enhanced core options. Core options can now have sublabels, and they can be translated to every single language theoretically.

Core options can also be shown and/or hidden now.

Several cores have already received a Turkish translation of their options.

Audio device selection (Windows)

It is now possible to choose between available audio devices with the XAudio2/DirectSound/WASAPI drivers. You do this by going to Settings -> Audio and pressing left and/or right. You can also set audio_device inside your config file to either the index of the device or its actual name.

Multi-touch lightgun controls (Android/iOS)

With RetroArch 1.7.8, it is be possible to use your fingers as a lightgun on iOS and Android. Not only that, but it supports multi-touch too! (iPhone XS Max shown in this video) What you see here in this video is a demonstration of all the cores that include support for this new feature. The device being used here is an iPhone XS Max, and it’s plenty powerful enough to even run the likes of Mednafen/Beetle Saturn! Here is a list of the cores so far that support this (along with the systems they support):

  1. NES/Famicom (FCEUmm)
  2. Super Nintendo/Super Famicom (Snes9x)
  3. Sega Master System (Genesis Plus GX)
  4. Sega Megadrive/Genesis (Genesis Plus GX)
  5. Sony Playstation (Mednafen/Beetle PSX)
  6. Sega Saturn (Mednafen/Beetle Saturn) 7. Arcade (MAME)

Playlist Thumbnails Updater

This PR adds a new entry to the online updater: Playlist Thumbnails Updater

This opens a menu that displays all existing playlists. When one is selected, each entry of the playlist is scanned, and any missing thumbnails are downloaded.

This is a lighter alternative to using the huge thumbnail zip archives, and it should work on consoles etc. that have limited RAM. (It also saves disk space, since we only download what we’re going to use).

On-demand thumbnail downloading

This will auto-scrape thumbnails for a game when the user hovers over it inside a playlist. You can enable this option inside Online Updater and/or Settings – Network. NOTE: We have disabled this by default since this does do a HTTP request for every playlist entry that does not have thumbnails installed already.

Shader Usability Changes

Some bigger and some smaller changes have been made to shaders and the shader menu

You’ll notice the shader menu was tidied up a bit, all the save options are now in one “Save” submenu and new “Remove” options for auto-loading presets were added.

There’s a new option for a “global” auto-loading preset which, like you can imagine, applies to all content you load.

If you remember, shaders were actually saved automatically once they were loaded in the shader menu.

This had a lot of drawbacks, for example, it wasn’t really possible to have content which doesn’t use any shaders at all without having to turn shaders off completely.

It also meant that any content without any auto-loading preset would use the last menu-loaded shader, which was very unintuitive.

This is why shaders are now only saved manually, giving more control over what content uses which shader.

Under the hood, auto-loading presets have a new trick up their sleeves: the `#reference` directive

In practical terms, auto-loading presets can point to other presets, so if you load any shader preset or save it via ‘Save As’ and then immediately save it as an auto-loading preset, it will point to the original preset.

This is especially useful for presets you built yourself and are still tweaking, because you don’t have to resave them as auto-loading presets every time.

Saved shader presets now use relative paths, which make them portable across systems, allowing for easy sharing of your custom presets. Beware though: If you want to move presets into subfolders, the relative paths need to be readjusted as well.

If that was not enough, there is a also new `–set-shader` command line option, which works like an override for auto-loading presets.

With all these additions came one removal, which is the `video_shader` setting, because it didn’t really fit in into how auto-loading presets worked.

This is the basic gist of all the shader changes.

  1. The online documentation has been updated accordingly, you can find the new shader user guide here: https://docs.libretro.com/guides/shaders/

Miscellaneous

Read our CHANGELOG here.

  • New behavior for Escape key on keyboards – previously, pressing the Escape key would default to immediately exiting the program. Now, you need to press Escape (or any other key bound to “Quit RetroArch”) twice in order to quit. If you dislike this new behavior, go to Settings – Input and turn off ‘Press quit twice’.
  • If the user selects a core that requires a different video driver than the one he is currently using (for instance, the user is using the Direct3D 11 driver while trying to start a core that requires OpenGL), it will now warn the user about this after failing to load the core.
  • The following features have been enabled by default:
    • Per-content playtime logging – Last Played, How many hours/minutes played, etc.
    • Playlist sublabels, showing more information about each playlist entry.
  • Some refinements to the core loading system – after a core is loaded, it won’t show ‘Quick Menu’ until the core is actually running.
    • More refinements – when a core is running, the ‘Load Core’ option is hidden. The user needs to first select ‘Close Content’ before he has the ability to select another core from ‘Load Core’ again. This should lead to an overall stability increase in the program.
  • Ability to hand pick which settings categories get shown (Settings -> User Interface -> Views).
  • Windows/Linux/Mac: Better resizing of the menu graphics when resizing the window in windowed mode.
  • XMB: New settings that allow you to choose between a variety of fancy menu animation effects! Animation Horizontal Highlight, Animation Move Up/Down, Animation Main Menu Opens/Closes.

Core News – PUAE (Amiga emulator) and VICE (Commodore 64)

sonninnos and rsn8887 made a lot of improvements recently to two home computer Libretro cores.

PUAE Amiga core improvements

PUAE Amiga Core IK+
PUAE Amiga Core IK+
  • fix two player controls (sonninnos)
  • Implement new core options with some small print explanations (sonninnos)
  • Implement hotkeys for status bar and virtual keyboard that can be remapped instead of using hardcoded buttons (sonninnos)
  • Combining mouse speed indicator and other status bar indicators (sonninnos)
  • Allow starting the emulated Amiga without content (sonninnos)
  • Add many core options, such as a cycle exact option (sonninnos and rsn8887)
  • Allow to load any single, bootable .hdf hard drive file directly via load content (rsn8887)
  • Allow disabling the use of system/WHDLoad.hdf via a new core option (rsn8887)
  • Fix quickmenu->disk control options for swapping disks on the fly (rsn8887)
  • Change defaults to more sensible values (sonninnos)
  • Add Switch version of the core (rsn8887)
PUAE Amiga Core on Switch
PUAE Amiga Core on Switch

PUAE can play IK+ with sound FX on Nintendo Switch. Prince of Persia plays well too. These games don’t work on standalone UAE4all2. To enable sound fx in IK+, use model type A500 and turn off compatible mode in Quick Menu-> Options.

To swap disks, select Quick Menu -> Disk Control -> Append to insert a new disk in drive df0. When this option is selected, the virtual tray is opened, the disk is inserted, and the virtual tray is closed again. This all happens automatically. A new index number is also created. The disk becomes associated with that number. The cycle tray option ejects the current disk. When the virtual tray is open, one can change the index number in Quick Menu -> Disk controls to choose a different disk index. The menu remembers a history of all appended disks within one session, and assigns index numbers to each disk as you append them one by one. This is useful for games that keep asking for disk swaps back and forth. After manually opening the tray and selecting the next index to insert, choose cycle tray again to close the tray. M3u files loaded as content also populate the index values in disk control options.

New PUAE Options
New PUAE Options

The core automatically switches between Amiga 500 and Amiga 1200 hardware configurations in case the content filename includes (Amiga 500) or (Amiga 1200).

The touch mouse with single-finger tap-to-click and two-finger tap-to-right-click also works on Switch with this core.

Vice C64/C128/C16/Plus4 core improvements

Vice C64 Core on Switch
Vice C64 Core on Switch
  • update to latest Vice version 3.3 (Sonninos)
  • savestates (rsn8887 & sonninnos)
  • fixed Autosave states, it now works as long as some content is loaded (rsn8887)
  • allow holding directions to move more quickly across the virtual keyboard (rsn8887)
  • switched to new core options API, now there are small print descriptions below the core options (rsn8887)
  • more virtual keyboard themes, including some with more transparency (sonninnos)
  • reSID resampling setting, can be set to fast for extra performance, useful on Vita (sonninnos)
  • turbo fire with adjustable speed (sonninnos)
  • datasette control hotkeys (sonninnos)
  • allow using physical cursor keys even when cursor keys act as joy input (sonninnos)
  • allow physical return key to push a button on virtual keyboard (sonninnos)
  • virtual keyboard is much more responsive now, keys can be held down (rsn8887)
  • x64sc core (more accurate) on all platforms (sonninnos and rsn8887)
  • xpet core on all platforms (sonninnos and rsn8887)
  • xplus4 core on all platforms (sonninnos and rsn8887)
  • xvic core on all platforms (sonninnos and rsn8887)
  • x128 core on all platforms (sonninnos and rsn8887)
  • Automatic joyport switching when rom filename ends in _j1 or _j2 like on C64 mini. Only works with extracted roms (sonninnos)
  • Virtual keyboard themes (in tomorrow’s nightly)(sonninnos)
  • Add Display Borders option for larger game screens (rsn8887)
  • Add Autostart Warp option for warping between load command and run command (rsn8887)
  • Fix colodore palette, it didn’t work at all before (rsn8887)
  • Fix issues with on-screen keyboard keys sometimes not working or producing wrong input (sonninnos)
  • Properly implement Quick Menu-> Controls, now users can enable/disable joysticks there (rsn8887)
  • Remove confusing Retrojoy option, use quickmenu->controls to set input to joystick/keyboard/disabled now (sonninnos and rsn8887)
  • Properly use RetroArch system directory, instead of home dir or root folder (rsn8887)
  • Display four joystick inputs instead of two in statusbar (sonninnos)
  • Implement holding down Warp Mode hotkey, however it maxes out at screen refresh rate unless Vsync is turned off in Retroarch->Settings->Video (sonninnos & rsn8887)
  • Allow mapping buttons to blank (unmapped) in quickmenu->options (rsn8887)
  • Implement more logical hotkey mapping in quickmenu->options (sonninnos)
  • Fix problem with up arrow key producing Run/Stop input (sonninnos)
  • Revamp on-screen keyboard layout to fit on one page (sonninnos)
  • Make on-screen keyboard much easier to use: no need to press select anymore to enable dpad control, no need to move a mouse pointer (sonninnos)
  • Add Drive Sound Emulation and Drive Sound Volume options (sonninnos)
  • Aadd Reset option (sonninnos)
  • Remove obsolete Vice Menu GUI, because that can all be configured using core options now (sonninnos)
  • Automatically force drivetype on loading d71 or d81 content (sonninnos)
Vice Core Switch, Bruce Lee
Vice Core Switch, Bruce Lee
Vice C64 Save New York on Switch
Vice C64 Save New York on Switch

PSA: RetroArch 1.7.8 – Important changes for people using the Google Play build

Starting as of September, Google has started requiring app developers to update their apps with 64bit AArch64 support. Any app that fails to comply with this will no longer be able to upload any new APK to the Google Play Store.

Until now, the main RetroArch build has been built for 32bit ARM processors. This means that even on a 64bit device, if you were using this 32bit build, you would still have access to all the 32bit compiled cores.

This all changes now as a result. Under the new model, we are forced to build in both 32bit and 64bit support for the main RetroArch app. What this means is that 64bit devices will default now to the 64bit version, whereas 32bit devices will default to the 32bit version. It’s not possible to boot into 32bit mode for the Google Play Store version.

We unfortunately cannot do anything about this. What this means is the following:

  • Some of the cores available for 64bit ARM might lack a dynamic recompiler. As a result, cores like PCSX ReARMed and Picodrive might be significantly slower now as a result on a 64bit device. Fortunately, work is underway to backport a 64bit dynarec to PCSX ReARMed, and similar for Picodrive.

On the plus side, Aarch64 tends to have about a 10% performance boost in general for RetroArch vs. regular 32bit builds. So it’s not all bad news.

If you’d still like to use a 32bit only build, you can go to our buildbot and download the 32bit only version there. We just are not allowed to upload this version to the Play Store, since every app uploaded from now on has to work for 64bit as well.

Important news for people upgrading

If you are upgrading the app from 1.7.7 to 1.7.8, you might find that the core updater URL is still pointing to the 32bit cores, and you might find that a lot of the cores you downloaded will no longer work (because it boots you into 64bit mode now). 32bit cores cannot be ran on 64bit apps and vice versa. So, what you have to do is

  • First, make sure that you reset the Core Updater URL properly. Go to Settings -> Network, and scroll all the way down to ‘Updater’. Go to the entry ‘Buildbot Cores URL’, and long press. If done correctly ,it should reset the URL. Now exit the program and restart again.
  • From there, you will have to redownload the cores from the Online Updater.

Alternatively, if you don’t want to bother with all this, just reinstall the entire program from scratch, that way it will start out with sane defaults.

Other considerations

What this also means is:

  • The 64bit specific version on the Play Store is pretty much redundant now, and you might as well use the main Play Store version. We are unsure yet if we are going to delist the 64bit only version or have it remain up. Just know that it no longer serves a purpose.
  • RetroArch can now be built using Gradle/Android Studio. This should significantly reduce the barrier to entry for developers wanting to get to grips with RetroArch, but were unable to do so in the past as it required an old Android toolchain as well as tools like ant.
  • It might appear on Android TV soon for 64bit apps.

Hopefully this upgrade process will have as little bumps in the road as possible. We’re sorry for this inconvenience but this is really not our fault, and our hands are tied. As ever, if you want a 32bit version on your 64bit device, go to our buildbot, and download the latest dated version ending with ‘RetroArch_ra32.apk’.

Flycast – Progress Report -HLE BIOS – no longer requires external BIOS!

New version will be available later today on the Buildbot!

Flyinghead has significantly improved HLE BIOS support to the point where 90% of Dreamcast games (both regualr and Windows CE-based games) should now be supported! Previously, compatibility with the HLE BIOS was quite abysmal, to the point where we couldn’t justify enabling it by default. So this marks an important point where users are no longer required to go seek out an external Dreamcast BIOS and can just run a Dreamcast game out of the box without needing to setup a specific BIOS!

A couple of notes:

  • ‘HLE BIOS’ is now enabled by default. If you wish to disable it and rely on a real external BIOS, you go to Quick Menu -> Options, and disable ‘HLE BIOS’ there.
  • The ‘Fast GD-ROM Loading’ option right now doesn’t work with the HLE BIOS. Disable ‘HLE BIOS’ if you want to make use of this feature.
  • Previous savestates are no longer compatible with this current version. Later on, compatibility with these older savestates will be restored. We will let you know when that happens. Until then, we recommend making new savestates.

When do I get to use this?

Today! Updated versions of both Flycast cores (regular and Windows CE versions) are being uploaded to the buildbot as we speak, so you’ll be able to play with this later today if all goes well.

More progress

  • Flyinghead intends to merge the regular and Windows CE versions into one version come September. The inclusion of Windows CE/MMU codepaths should no longer slow down regular non-Windows CE games. On the contrary, SSA and lots of optimizations done for Windows CE will benefit the non-Windows CE games as well, so you can expect this universal version later on to be a bit faster.
  • This closed source emulator recently added support for this – flyinghead has already been able to match this in his branch. Like the other emulator, it should result in Street Fighter III 3rd Strike being rendered correctly, along with in-game screen adjustment being possible. It should be noted though that more regression testing is needed first because changes like these can have an adverse effect on other games that are currently being rendered fine, like Metropolis Street Racer. We rather suspect not enough testing was done to check for regressions in this other emulator since flyinghead was able to see a bunch of regressions as part of this feature being added, so we’d rather not jump the gun.

Open source Dreamcast emulation has seen a tremendous boost ever since flyinghead appeared on the scene. Whereas open source Dreamcast emulators seemed previously hopelessly behind something like Demul from a compatibility and accuracy perspective, right now it seems we are well on track to matching it save for Flycast not being able to emulate certain specialized arcade systems like Naomi 2, which are technically not really Dreamcast/Naomi 1 anyway but its successor.

So, right now, Flycast is in a very good spot:

  • It allows you to run Sega Naomi games. Only other emulators that support this are DEmul and Makaron (both closed-source).
  • It allows you to run Windows CE games. Only other emulator that supports this is DEmul (closed-source).
  • There are no limitations on savestates and internal resolutions, there is no paywall to speak of. Savestate support was added years ago.
  • Modem support. DEmul only supports Broadband Adapter support, but Flycast supports actual modem support (32K/64K models).
  • There is built-in zero configuration online multiplayer support, that works cross-platform with real Dreamcasts as well. Flycast is currently the only Dreamcast emulator available so far that supports this.
  • You can enable VMU support and configure where the VMU screen gets displayed onscreen. Up to 4 VMUs at a time can be displayed onscreen.
  • It has a work-in-progress HLE BIOS implementation that has about a 90% compatibility rate. It even works with Windows CE games.
  • It runs on 32bit systems as well as 64bit systems, and is available for x86 and ARM.
  • It has been available on Android and iOS for years now.

We might even add real CD-ROM support soon to it, so that it can run CD-R based backup discs!

 

 

Upcoming – RetroArch 1.7.8 – AI Service (Machine Translation / OCR / Text-To-Speech)

Written by Barry Rowe

What is the AI Service?

The AI Service lets you translate games, or add automated voice-overs capability in real time.  Instead of using a ROM patch, this is done by RetroArch taking a screenshot and then sending it to the AI Service listed in your config, which will do OCR (optical character recognition), machine translation, and/or text-to-speech.  The service will then return the result and will either be displayed on the screen, or played through the audio output of RetroArch.  As is the nature with AI though, accuracy can be an issue.  However, machine translation can give a good gist of what’s being said, especially for some language pairs, and text-to-speech can be of great benefit for accessibility.

How to set it up

See https://docs.libretro.com/guides/ai-service/ for a more detailed guide about how to setup the AI Service for your use case (translation or voice-over).  Any core using the RGB565 or RGB8888 pixel formats should work.  Cores using a hardware buffer however are not yet supported.  If you’re unsure if your core is supported, see the above documentation on how to check.  The main supported service is the vgtranslate project

Supported Services: VGTranslate, ZTranslate Service

VGTranslate ( https://gitlab.com/spherebeaker/vgtranslate ) is a lightweight server that you can run on windows or linux.  With it running, your RetroArch device can send its screen captures over your home network and the service will translate it and send it back to RetroArch.  This makes it possible to run the computationally expensive AI code off-device, so you can run translation on a Raspberry Pi or other device.  Local only translation is still in an experimental state, so using a Google Cloud key with VGTranslate is currently suggested.
It’s also possible to use an external service instead of running VGTranslate yourself.  ZTranslate.net has such a service listed in its documentation.

Caveats

Certain text will be easier to OCR than others.  Logos/title screens or very stylized text can be difficult for OCR engines to deal with, and some language pairs are easier to translate between than others.  Japanese-to-English in particular seems to be the most difficult use case, since OCR engines can have difficulty with Japanese pixel fonts on textboxes with transparent backgrounds.  Many games will work fine, but some may not work that well, depending on how the game draws the text.  Future developments will help improve this and expand the number of playable games with this feature.

RetroArch on Steam now coming sometime soon Q3 2019!

In order to do the Steam release justice, we have some infrastructure work remaining to do that will take more time. Our new release estimate therefore is sometime later this quarter. We will keep you updated on our progress.

The net positive of this is that we can ensure the release is more polished and that it will meet the user expectations of your average Steam user.

RetroArch 1.7.8 however is going to be imminent within the next two weeks.

RetroArch Disc Project – Alpha testing has begun! Details inside

Ever since the announcement earlier on June 30th, we have been working hard on the RetroArch Disc Project, and we are now getting to the stage where we want users to start alpha testing the latest code.

We invite you to come over to our Discord channel (also linked to on the RetroArch website – click on the tab ‘Discord’)- and join the channel #discordproject.

How to apply for alpha testing

For the purpose of this alpha test, we need you to meet the following requirements:

  • You are using the latest nightly versions of RetroArch (available here).
  • You are using RetroArch on PC, and are running either Linux or Windows with the CDROM support included.
  • Make sure the cores you are going to be testing are the latest up-to-date versions. Update them daily from the Core Updater if unsure – the cores should have physical CDROM support, otherwise the testing won’t work.
  • You have an optical disc drive (either USB or internal, any CD-ROM/DVD-ROM/BD-ROM drive should do).

Report issues you’re having with physical CDROM playback. Be as detailed as possible in your feedback – we are especially interested in which optical disc drive you’re using.

Be prepared that you might be asked by a moderator to run ‘retroarch_debug.exe’ and return a log message back to us in order to learn more about the issues you’re having. ‘retroarch_debug.exe’ is a debug executable that should be shipped with every RetroArch nightly version for Windows. For Linux users, we assume that they can build from source and compile with CDROM_DEBUG=1 manually in order to run these more detailed debug tests.

Compatible cores

Listed below are some of the cores that we added physical CD-ROM support to, and the ones that we would like you to test –

  • Beetle PSX (HW and non-HW)
  • Beetle Saturn
  • Genesis Plus GX
  • 4DO
  • Redbook Audio Player (Audio CD core)

We have also added support to more cores, but for now we want to go with these cores as they have been most extensively tested.

A couple of known edge cases:

  • Beetle PSX HW: The ‘vulkan’ renderer can exhibit issues where either the CD will not work, or some other corruption issue will manifest itself. We recommend you use ‘opengl’ or ‘software’ for now while you test CDROM.
  • Beetle PSX HW: Make sure the core option ‘CD Access Method’ is not set to ‘precache’. If you do, real discs won’t work.

How to load discs

1.You need to first start up the core itself (there is no automatic system detection yet when you insert a disc).
Go to Load Core, and select the core you want to use.

2. Once the core is loaded, select ‘Load Disc’.
3. It will now list all optical drives. Make sure the disc you want to use has been inserted into the optical drive tray and make sure the tray is closed. Then select the drive. The core will now start with your CDROM as input.

How to dump discs

RetroArch can dump discs to internal storage in bin/cue format. The video above will show you how.

  1. Select ‘Dump Disc’.
  2. It will now list all optical drives. Make sure the disc you want to use has been inserted into the optical drive tray and make sure the tray is closed. Then select the drive.

The disc will now be dumped to the ‘Downloads’ directory. It will continue showing the progress bar until the operation has finished. In the meantime, you can play any core/game (as long as it doesn’t involve real CD playback) until the dumping has finished.

Redbook Audio Player – Libretro core for music CD playback!

As a testbed for the Disc Project, we made a redbook audio CD player Libretro core!

You can grab this core for Windows and/or Linux by going to Online Updater, and downloading it from the list (Redbook Audio Player).

Known potential issues

  • Right now, CDROM works better on Linux vs. Windows.
  • FMV playback with Beetle PSX HW has the potential to be slow on some optical disc drives on Windows. Cause yet unconfirmed.
  • There is a known issue with redbook audio – the redbook audio track begins a few seconds later from its starting period.
  • Libcrypt copy-protected PlayStation1 games will not work right now, but any other copy-protected PlayStation1 disc should.
    Here is a listing of some Libcrypt-protected games from Europe: https://hastebin.com/ruyacahuba.http . You can generally assume these won’t work.

RetroArch coming to Steam this month – July 30

RetroArch will be releasing on Steam on July 30, 2019!

https://store.steampowered.com/app/1118310/RetroArch/

Read our release announcement here

So RetroArch is finally coming to Steam two weeks from now!

RetroArch is the official reference frontend of the popular Libretro API. While there is nothing particularly about RetroArch or the Libretro API that has anything to do with emulators, most do it use it for this purpose.

We want to grow our base and as of this month we have been putting a heavy focus into making sure that RetroArch can run originally bought content on game discs. There are further announcements to follow in the coming weeks, and we are open to dialogue with game developers/publishers that have the rights to original IP who want to bring their games over to Steam through the use of RetroArch.

Do note that RetroArch is an agnostic frontend/backend application that can be used to run modular programs. As such, it can run real games, media engines, and emulators, as long as these programs are converted/ported into modular pieces of software known as ‘Libretro cores’.

So, without further ado, here’s the details on our initial release:

  • Free.
  • Windows version first, Linux and macOS versions will release later. We’re a bit wary of the support burden that will come with a much wider audience, so we want to do the Windows version first to make sure we can handle the demand.
  • At the beginning, there will not be any difference between the version you can get on Steam and the one available on our own website. As such, no Steamworks SDK functionality will be present at launch or any additional Steam features. However, after the initial launch, we will begin exploring options on how we can start leveraging Steam’s functionality as a platform.
  • Release date will be approximately 30th of July.

RetroArch as a program serves as the fundamental backbone of many retro gaming machines out there in the wild. Even when it is not deliberately namechecked, chances are it’s running in the backend of said retro program. Same goes for its sister project Libretro. For instance, several programs available on Steam already, such as Grid Cartographer, and New Retro Arcade, integrate Libretro support to allow you to run the software that has been ported to the Libretro API. As for Libretro, this API is being leveraged by several retro gaming companies right now to serve as the backbone of their retro emulation services. Given all this interest and burgeoning activity, we feel now is the time to finally bring the official Libretro frontend to Steam. RetroArch is truly in a class of its own on a technical level when it comes to latency, shader features, and now soon-to-be disc loading and disc dumping. We can’t wait to bring you complete control over your retro gaming library coming this summer on Steam!

RetroArch – In Development – Touchscreen Lightgun for iOS/Android (iPhone XS Max shown)

With the upcoming new RetroArch version, it will be possible to use your fingers as a lightgun on iOS and Android. Not only that, but it supports multi-touch too! (iPhone XS Max shown in this video)

What you see here in this video is a demonstration of all the cores that include support for this new feature. The device being used here is an iPhone XS Max, and it’s plenty powerful enough to even run the likes of Mednafen/Beetle Saturn!

Here is a list of the cores so far that support this (along with the systems they support) –

  • NES/Famicom (FCEUmm)
  • Super Nintendo/Super Famicom (Snes9x)
  • Sega Master System (Genesis Plus GX)
  • Sega Megadrive/Genesis (Genesis Plus GX)
  • Sony Playstation (Mednafen/Beetle PSX)
  • Sega Saturn (Mednafen/Beetle Saturn)
  • Arcade (MAME)

RetroArch Disc Project – Disc dumping to internal storage now possible!

We’ve written about the RetroArch Disc Project some time ago. To refreshen your memory, we want to make it possible to play physical optical discs with RetroArch.

It is our full intent to ship an initial beta version of this in a future version of RetroArch (maybe the next one?).

So far, we have added CDROM support for the following systems:

  • PlayStation1
  • Sega CD
  • Sega Saturn
  • 3DO

Disc dumping

We’ve now added disc dumping as well! Go to the Main Menu, go to ‘Load Disc’. If you have more than one physical drive, you’ll see several disc drives. If no disk drives are detected, it will show nothing here.

Assuming you have a disc already inserted, select the disc drive menu entry and it should now start dumping your inserted media disc to RetroArch’s internal storage. During this time, you can go do something else while you wait for it to load. For instance, you can go load another core/game and just play it while waiting for the menu widget to finish.

By default right now, RetroArch will store all dumped CDROM images to the ‘Downloads’ directory of RetroArch. There might be more options for this coming up soon in the  near future.

Disc images are dumped in bin/cue format. Most of the dumped images work generally very well, but games which rely a lot on redbook audio might still have some random issues

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

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

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

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

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

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

Play! Libretro core (PlayStation2 emulator) ready for download on the Libretro/RetroArch buildbot!

So without further ado, upstream versions of Play!, the PlayStation2 emulator, are finally rolling out on the buildbot today!

Currently, the core is available and has been confirmed to run on:

  • Windows (64bit and 32bit)
  • Linux (64bit and 32bit)
  • Android

How to download it

Inside the main menu, go to ‘Online Updater’.

You might want to make sure first you have the latest info files by selecting ‘Update Core Info Files’ first.

From here, go to Core Updater.

Scroll down until you have found ‘Sony – PlayStation 2 (Play!)’. Download it. Go back to ‘Load Core’, and load it. Now go load a backup image file with it.

NOTE: Play! does not require any BIOS for you to dump, it uses its own HLE (High Level Emulation) BIOS.

What is Play! ?

Play! is a Work In Progress PlayStation2 emulator. Thanks to the great efforts of Zer0xFF, who took three days out of his busy schedule to port the emulator to the libretro API, we can start rolling out this emulator to our buildbot soon!

It must be stressed that Play! is a Work In Progress PS2 emulator, and we mean that literally. Don’t expect every game to run perfectly, far from it. However, it has a solid foundation and already has working dynamic recompilers for all the popular architectures, its value which cannot be understated. The libretro core also already has working savestate support.

System requirements

This core will require OpenGL on the desktop and OpenGL ES3 on mobile devices.

Your system should currently be as powerful as possible in order to get the best possible results. As time improves, system requirements will probably reduce.

Game compatibility is entirely dependent on the state of the upstream #Play! emulator. So as Play! improves, so too will the libretro core!

Help PlayStation2 emulation get better by supporting Play!

#Libretro is currently a Patreon backer of the Play! project, and we are very grateful to Zer0xFF from the Play! project for getting this port up and running in less than 3 days! Good open source PlayStation2 emulation deserves to get more funding, and we are happy to do our part. We hope you will as well!

Example video – running on RetroArch Android on a Samsung Galaxy S10+

Some example videos

Online support for Dreamcast Windows CE games coming soon in Flycast!

Online support for Dreamcast Windows CE games coming soon in Flycast!

Courtesy of flyinghead (the brains behind the last two years of Reicast development) – online support for Windows CE… coming soon in Flycast! Available as standalone and available as a Libretro core for use in RetroArch!

The screenshot you see above comes from 4×4 Evolution, a racing game that uses Windows CE on the Dreamcast.

Opensource Dreamcast emulation keeps going strong!

Also, flyinghead has recently fixed a bug on the Naomi side that prevented Gun Survivor 2 from working properly. Expect to see a video on that soon!

RetroArch Disc Project – Run real games off CD-ROM with RetroArch, starting with Sega CD, Sega Saturn, PlayStation1 and 3DO! Coming VERY soon!

So, we just announced the RetroArch Disc Project yesterday. We believe everybody that uses RetroArch and has a CD drive at their disposal should be able to run their own original discs on RetroArch.

We had initial plans of launching with just Sega CD, but a lot can happen in a day. So, without further ado, we’re going to show you our latest work in progress video of actual PlayStation1 games running off the original CD in RetroArch!

July 2: And then the day after, we added Sega Saturn and 3DO to the mix!

So what can you expect?

  • Expect a release of this VERY soon.
  • It will be Windows/Linux only for now. We have no plans right now for bringing it to other systems/platforms, but I’m sure the list of platforms that will have CDROM support will grow as we go on.
  • Expect this initial release to target PlayStation, Sega CD, Sega Saturn and 3DO games for now. If more systems get added to the mix, we will let you know in advance.
  • We are going to get Lakka involved in this from Day One.
  • Will things be perfect on Day One? No. But it will be pretty good for an initial release, and as ever with all things RetroArch, we move fast, and we will make speedy progress!

PS. In case you were wondering what happened to ProjectFuture, you’re looking at it!

Retrogaming should be affordable to all and available to all instead of locked behind overexpensive wasteful hardware. It is all built off the backs of opensource anyway, why should this be locked down again by any single company? It shouldn’t! Preservation and emulation should go hand in hand, and that means being able to run the original discs on open source emulators, on ANY device!

To the Raspberry Pi community and other SBC communities – go nuts with this when it hits!

RetroArch, runahead and Raspberry Pi 4 – the results are in

Thanks to a tester called Namanix, we can tell you in no uncertain terms that runahead with RetroArch works great on Raspberry Pi 4 for systems up to and including the GBA. With runahead configured right, you can get latency BETTER than the original console (on a CRT)!

I repeat again – with Raspberry Pi 4 and RetroArch, latency is NOT A PROBLEM thanks to runahead. You don’t need magic controllers or any fancy tech – but I’ll let the numbers speak for themselves.

  • Mario Kart Advance – VBA Next – 5 frames ahead – runahead – second instance – 65-75 fps
  • Super Mario Advance – VBA Next – 2 frames ahead – 2 instances – 86fps
  • Mario Kart Advance – VBA Next – 2 frames ahead – 2 instances – between 65 – 75 fps full speed
  • Mario Kart Advance – VBA Next – 2 frames ahead – 1 instance – 50fps
  • Super Castlevania 4 – Snes9x 2010 – 5 frames ahead – 1 instance – 68fps
  • Super Castlevania 4 – Snes9x 2010 – 5 frames ahead – 2 instances – 140fps
  • Sonic – Genesis Plus GX – 5 frames ahead – 2 instances – 125fps
  • Streets of Rage 2 – Genesis Plus GX – 2 frames ahead – 1 instance – 117fps
  • Super Castlevania 4 – Snes9x 2010 – 2 frames ahead – 1 instance – 100fps
  • Super Castlevania 4 – Snes9x 2010 – 2 frames ahead – 2 instances – 135fps

So, in other words, RetroArch and runahead is a done deal for NES, SNES, Genesis, and GBA on a Raspberry Pi 4. Better than console latency, better than on a real CRT. Put a fork in it, it’s done! All this for $50 tech, too. Kinda hard to beat in value.

Introducing the RetroArch Disc Project!

You bought all these old games on physical media decades ago. Why should you have to buy it all over again? Why, by that same token, should you have to buy expensive hardware by up and coming startup companies whose main selling point is just to be able to run your physical CD retro games again, but on expensive proprietary hardware built around open source software? Everybody with a CD-ROM drive and with DIY hardware should be able to do this! It’s the year 2019, this stuff should be commonplace and as accessible as drinking water from the tap!

That was our line of thinking when we set about creating the RetroArch Disc Project. We are adding physical CD-ROM support to RetroArch, and you will get to play around with an initial version of this VERY SOON! It will be a case of trial and error, and throughout this process, we will need your help as a community to tell us which CD-ROM drives work, which ones have trouble reading anything, we will need pull requests and code contributions. But we are convinced that at the end of this road, all of us will be finally liberated from the shackles of artificial restrictions surrounding our own legally bought copies.

So, to give you some brief idea of what to expect:

  • The initial version that we intend to release will be targeting Sega CD games for now. We have tested a few games and they seem to work.
  • Bugs might still happen as previously indicated. – There might still be Redbook audio issues, or they might just run fine.
  • We will be targeting Windows and Linux for now.
  • Based on our initial testing, you will have better luck with internal CD drives for now than USB-based CD drives. But your mileage may vary. That is why we need you involved in this project.
  • Games with copy protections will not run for now. Thankfully, they are in the minority.

What is our scope for the project:

  • Better compatibility
  • More system support. PlayStation1 is very likely next.

We hope this project will be a boon for anybody with an SBC (Raspberry Pi or otherwise) and/or anybody with their own desktop PCs! Let’s make RetroArch a platform where we can take our own physical CDs and run them as effortlessly as on the original real game consoles!

As ever, everything we do will be open source.

More to be unveiled soon! Stay tuned…

Play! libretro core already working! Will be on buildbot soon!

Play! is a Work In Progress PlayStation2 emulator. Thanks to the great efforts of Zer0xFF, who took three days out of his busy schedule to port the emulator to the libretro API, we can start rolling out this emulator to our buildbot soon!

It must be stressed that Play! is a Work In Progress PS2 emulator, and we mean that literally. Don’t expect every game to run perfectly, far from it. However, it has a solid foundation and already has working dynamic recompilers for all the popular architectures, its value which cannot be understated. The libretro core also already has working savestate support.

This core will require OpenGL on the desktop and OpenGL ES3 on mobile devices.

Game compatibility is entirely dependent on the state of the upstream #Play! emulator. So as Play! improves, so too will the libretro core!

#Libretro is currently a Patreon backer of the Play! project, and we are very grateful to Zer0xFF from the Play! project for getting this port up and running in less than 3 days! Good open source PlayStation2 emulation deserves to get more funding, and we are happy to do our part. We hope you will as well!

Note too that the PCSX2 core bounty is still alive and well, and can still be picked up by any developer willing to port it to the libretro API.

RetroArch – In Development – World-first text to speech in emulators – Update!

Earlier this month we showed you RetroArch’s world first text to speech implementation for emulators. You can read that previous article here.

Since then, this feature has been immeasurably improved. Onscreen character recognition and live text to speech translation is now done at the press of a button. You bind the AI Service key to a button or key of your choice, and as soon as you press it, a scan of the image will be taken in real-time. Any characters that were recognized as text will then be translated from text to speech.

In this video, we are running a local instance of vgtranslate on the same computer. This cuts down a lot on the latency you could perceive in the previous video. The other big difference is that the core no longer has to be paused manually and then unpaused to do the OCR scan – you now press a hotkey and the game continues running without any interruption. This provides for a much more smooth and seamless experience.

Shown in this video is a test run of several cores and games: Quake 1 with the Tyrquake core, Mega Man 4 with a NES emulator core, Trials of Mana/Seiken Densetsu 3 with a SNES emulator core, and finally Castlevania 3 with a NES emulator core. The OCR/text to speech system works with ANY libretro core that does not use hardware acceleration right now. So any core that doesn’t rely on OpenGL/Vulkan/Direct3D in order to function should be good to go.

Play! (PlayStation2 emulator) getting a libretro core

The PlayStation2 emulator Play! will be seeing a libretro port in the near future. We’ve reached an amicable agreement with two devs to make this happen. We’ll also be supporting their Patreon monthly from now on, just like we’ve supported other Patreon emulator creators for little over a month now as of this writing.

Note that this is separate from the PCSX2 core bounty, which is still ongoing and is still its own thing. We still need to find a bounty hunter for that one, though.

RetroArch – In Development – Touchscreen Lightgun for mobile devices!

With the upcoming new RetroArch version, it will be possible to use your fingers as a lightgun on mobile devices!

The first core you can see here with working support is Beetle Saturn, running at fullspeed in this video on an iPhone XS Max!

We will let you know which cores will support this feature as we get closer to the release of the next RetroArch version. Stay tuned!

RetroArch – In Development – World-first text to speech in emulators! OCR Bounty Progress!

The OCR bounty’s next milestone has been reached! Previously, it was finally possible to recognize patterns of text by the OCR/translation APIs. Now, text to speech has been achieved!

NOTE: This is a work in progress/development, and is not reflective yet of the actual finished product.

In this video, you see us running RetroArch with an old school SNES RPG, Soul Blazer. Right now, this is a very experimental implementation that is far from finished and not really ready for general gameplay, but this will be further developed from this point on.

Anyway, in this video you see us doing the following:

* Whenever we pause RetroArch, the OCR process starts. It will first attempt to recognize text onscreen.

* Once it has recognized text, you will see outlines onscreen surrounding the recognized text.

* Then it passes this off to the Translate Text To Speech engine. Once done, it generates a log message about it (you can see this in the video).

* From this point on, you can unpause RetroArch and you can actually hear the voice over.

NOTE: Just to emphasize, this is NOT how it will work like in the actual finished product. This is a purely ‘WIP developer’ video we’re showing.

Goodbye FBAlpha, Welcome FBNeo

Due to a “controversy”, all devs bar one from FinalBurn Alpha moved to a new fork called FinalBurn Neo. If you were using the FBAlpha core we recommend you move to the new FBNeo core by updating your core list and info files.

FBAlpha/FBNeo is a very active project with exciting features added regularly so it might be a good opportunity to talk about recent additions !

Support for Midway/Williams/Atari classics

A lot of people have been asking about them over the last few years, a lot of them are now playable !

Support for vector games

Tempest, Black Widow and other classic vector games are now playable too, some of them with resolution upscaling !

 

Support for Neo-Geo CD

Neo-Geo CD is now fully playable as a subsystem, including its exclusive title : Samurai Shodown RPG !

NB : this game was only available in Japan, but fan translations exist.

Other noteworthy improvements

  • Many of you might not know, but this core also supports a few consoles as subsystems, and it does it pretty well, recently we even added “Super Game Module” support for CBS ColecoVision.
  • Many control schemes were added to the core recently, you can now play with mouse, trackball or lightgun, there is also keyboard support for ZX Spectrum.
  • There was a major improvement to QSound emulation a week ago, now CPS1/CPS2 sound is clear as day. Actually there was also sound improvements for a lot of other games, leading to faster emulation and clearer sound.
  • There is now RetroAchievements support for popular arcade games, this implementation even added support for cheats as a side effect.

F.A.Q

Check our F.A.Q if you need help ! If your question isn’t already covered, ask on libretro’s forum.

You want to contribute ?

You are a coder ? You want to help the project ? Join us on our forum ! We are always happy to see new contributors. A few things we might be especially interested in :

  • Adding support for CHD.
  • Porting our MIPS3 dynarec to other archs, it’s only available for x64 at the moment.
  • Improving our TMS34010 CPU core, it’s still WIP and its developer can’t find the time to finish it.
  • Adding a SH3 CPU core, preferably interpreter+dynarec(s), if someone can do that we promise you support for cv1k (Cave 3rd generation board) in the near future.

Kronos 1.7.0 (Sega Saturn) – New renderer

Kronos 1.7.0 is now available on the buildbot ! The major change since 1.6.0 is a complete rewrite of the glcore renderer by its author FCare over the last 6 months, it allowed to fix a ton of graphical issues.

As usual, the emulator is a good alternative to beetle-saturn if your CPU isn’t fast enough, or if you want features like resolution upscaling.

The minimal requirement is still a GPU with OpenGL 3.3 support. On a sidenote, there are probably still issues with some Intel gpus, especially on windows, sadly the issue is clearly on Intel drivers’s side so we have no plans to search for a fix any further. However if there is an Intel gpu guru around, help is welcome !

One last exciting thing, writing a Vulkan renderer has been added to the roadmap, don’t ask for an ETA though.

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.7 – 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.

PLEASE BE AWARE, THIS IS A ROUGH DRAFT OF RETROARCH AS A WINDOWS 10/XBOX APP. THE FINAL PRODUCT WILL BE MUCH BETTER AND IN NO WAY IS THIS REFLECTIVE OF THE QUALITY OF THE FINAL PRODUCT.

We ask for your patience while testing this; you might find file system performance lacking and some manual steps might need to be performed that are obviously not user friendly. Do note that we are very conscious of these current limitations and we hope to have them resolved in future versions.

Where to get it

Go to our RetroArch Downloads page.

For Windows 10 PCs, go to the Windows 10 logo and download both the certificate and the .appx file.

For Xbox One users, just go to the Xbox One logo and download the pre-alpha.

NOTE: This won’t replace the regular Windows version on PC. For regular PC users, the UWP port is nothing but a downgraded/gimped version of our main Windows version. You can use this version for academic purposes, but I would not recommend using it primarily on Windows.

Running this on PC

1. Download and extract this version of RetroArch on your PC.

2. Make sure you download the certificate too, you will need it immediately afterwards –
Download certificate here.

3. First, make sure that you can actually install Windows/UWP apps from outside the Windows Store. Go to Settings -> Applications. At ‘Installing Apps’, select ‘Allow apps from anywhere’. In case you’d prefer it to be limited to Store-only apps, you can change this back later after you have finished these instructions and installed RetroArch already on your PC.

Created with GIMP

4. Now we need to install the certificate that we downloaded in step 2. Double click on it.

5. Click on ‘Install Certificate”.

When you are at this screen and it asks for any dependencies, you might have to add this file :

Microsoft.VCLibs.x64.14.00.appx.

6. A Certificate Wizard will now appear. Of the two questions, select “Local Machine”.

7. Check ‘Place all certificates in the following store’, click on ‘Browse…’, and select ‘Trusted Root Certification Authorities’.

8. After we have verified that the certificate is successfully installed, we start up RetroArch.appx. If an app identical to this was already installed, you would not be able to install this program right now. As it is, click on ‘Install’.

Running this on Xbox One

1. Download and extract this version of RetroArch on your PC.

2. Go to your Xbox. Make sure you have changed your Xbox to ‘Developer Mode’ (see here for more information on how to do that).

3. On the Developer home screen, go to “Remote Access Settings” and enable Xbox Device Portal. You might have to setup a username and password as well. You can do this by selecting Remote Control settings.

When you connect to the IP on PC and you see this page, make sure to click ‘Show Advanced’ and click ‘Proceed’.

4. Go to the Device Portal on your PC. This is the IP of your xbox one (it will show up on the Developer home screen) (if its being picky do this https://ip:port)

5. Goto “Add” on device portal and choose the .appxbundle (see step 1) then hit next

6. Goto “Choose File” if there are any dependency files needed (you will have to install all files one at a time) then hit next.

7. It will install. After this is finished, you can go to the Xbox One and run RetroArch.

8. You should now be able to run RetroArch UWP on Xbox One.

Compatibility list

Dominater01 has made a Google Spreadsheet compatibility list for RetroArch on Xbox One.

First-time setup procedures

As has hopefully been stressed before, this is a very early version of RetroArch for UWP devices. As such, the first time you start it up, you need to do some first-time configuration before everything looks properly and is ready to go.

In this video, you can see the first-time setup procedure – it is the same for both Xbox One and Windows 10 –

Set type of RetroArch App on Xbox One to ‘Game’ in order to get faster USB disk access

By default, any app you install gets assigned with type ‘App’. In order for RetroArch to become much quicker at accessing USB storage, we will need to change it to ‘Game’.

Be aware that after making this change, you will need to reboot your Xbox One for the changes to take effect. Otherwise you might run into issues.

NOTE: You will only be able to use USB 3.0 HDDs/storage on Xbox One.

Gain access to files beyond the sandbox

By default, your level of access to the filesystem with an UWP app is limited to the basic sandbox directory your app lives in. This is of course far too limiting for most RetroArch users, so to enable full filesystem access, go to Load Content, and then select ‘Enable external file access’.

You will be presented with a screen looking like this:

Go to ‘Choose Which Apps Can Access your file system’ and make sure that RetroArch is enabled there. This dialog screen might then close, and you might have to restart the program again.

What works

  1. Fully working Direct3D 11 driver
  2. Menu drivers like XMB/MaterialUI/Ozone/RGUI work as you would expect.

Already known issues

  1. Very slow filesystem performance.
  2. [Core issues] Closing content when running a PSP game with PPSSPP crashes RetroArch.
  3. [Core issues] Loading savestates on the PCSX ReARMed core crashes.
  4. [Core issues] Dolphin Core doesn’t work.
  5. GL Cores aren’t compatible/loadable (this is because only Direct3D 11 is being used right now, and we arent’ using ANGLE right now).
  6. RetroArch on Xbox One won’t highlight the text on the onscreen keyboard unless set to a white background.
  7. Having the rewind feature on slows the PCSX core
  8. Setting directories to USB by default isn’t saving correctly.
  9. Scanning content currently does not work.
  10. Leaving retroarch idle for hours crashes.

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

Brad Parker wrote an OpenGL 1.1 driver for RetroArch 1.7.7.

Who would need this?

The state of OpenGL support on Operating Systems like Windows can be quite abysmal if you happen to have an integrated Intel GPU, especially if you happen to be running Windows 10.

Intel doesn’t supply its own OpenGL driver for a lot of its older integrated graphics cards.

Some examples can be found on this list.

When your graphics vendor does not provide its own driver for the graphics API you’re using, often times it will default to Microsoft’s own driver, “GDI Generic”.

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.

Now, those inconvenienced users can still use the OpenGL 1.1 fallback driver.

What do you lose in the process?

  1. No shader support
  2. No ability to run OpenGL libretro cores (they historically target OpenGL 2.x/OpenGL ES 2)

How to use it

RetroArch 1.7.7 for most traditional platforms will default to the “gl” driver. However, it will detect if your GPU supports OpenGL 2.x or not. If this is not the case, it will write “gl1” to your settings file and then exit the program.

Once inside RetroArch, go to Settings – Drivers. Go to Video Driver. Select ‘gl1’. After this, go back to the main menu inside RetroArch, and select ‘Quit RetroArch’.

What platforms are supported as of v1.7.7?

So far, the Windows and Linux builds come with the GL 1.1 driver.

It’s enabled for:

  1. Windows
  2. macOS (PowerPC/Intel)
  3. Linux

RetroArch 1.7.7 – New OpenGL Core driver supports Slang universal shader spec!


When RetroArch added support for the Vulkan graphics API back in 2016, we made a new shader spec that was intended to replace the older shader specifications like Cg and GLSL moving forward.

The problem at the time was that only the Vulkan video driver could make use of these shaders. Therefore, if you were using the OpenGL video driver, you could not use the slang shaders but had to resort back to GLSL (or even Cg). This made it cumbersome to switch between video drivers, say starting one game/core that uses OpenGL, then switching back to Vulkan to start another core that uses Vulkan. You couldn’t just load a shader preset for one of the two and expect that to work as well for the other core with a new video driver.

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.

List of video drivers supporting slang

Here is a listing of video drivers that support slang in RetroArch:

    1. OpenGL (Core – requires 3.2 or higher)
    2. Vulkan
    3. Metal
    4. Direct3D 10/11/12
    5. WiiU

How to use it

In order to use this video driver, you need to have a GPU with modernday OpenGL drivers. By default, RetroArch starts out on most platforms with the regular GL driver, which requires OpenGL2. We will therefore have to switch over manually to GL Core in order to use it.

Once inside RetroArch, go to Settings – Drivers. Go to Video Driver. Select ‘glcore’. After this, go back to the main menu inside RetroArch, and select ‘Quit RetroArch’.

What platforms are supported as of v1.7.7?

So far, the Windows and Linux builds come with the GL Core driver. macOS might follow later for OSX 10.7 and up.

The GL Core driver is OpenGL ES 3.x compatible, so a port to mobile devices is not inconceivable. We would certainly like to see this driver appearing on Android and iOS.

If for whatever reason your GPU or driver does not supper OpenGL 3.2, RetroArch will quit and set your video driver to “gl”. You will then just have to restart the program in order to boot with the regular OpenGL 2 driver.

Important

Future plans/current limitations

    1. The glcore driver does not support GLSL or Cg shaders, only slang. If you still need to use such shaders, you have to go back to the older OpenGL video driver.
    2. We’d like slang to appear on even more platforms, such as the Microsoft Visual Studio builds below 2012. What prevents this from happening is the usage of C++11. Slang as a shader spec leverages several technologies such as the excellent SPIRV-Cross and glslang, both of which are also C++11 projects. Now, SPIRV-Cross has a C API, so this could be a potential solution towards making a wholly C based solution so that slang could appear in more builds. However, the C API for glslang has been abandoned and deprecated for one or two years. So after 1.7.7, we will have to research alternatives such as Google’s shaderc (which is supposed to still have a C API), and hope they will allow us what we want to do – have wholly C code for the slang shader code for the sake of backwards compatibility and being able to port it to more platforms.

Links

Developing Slang Shaders

BeetleDC WinCE Libretro – Experimental core released!

Courtesy of flyinghead, today we’re releasing a special version of BeetleDC with Windows CE support enabled! Our reason for releasing this is that we want users to report back as many issues as possible so the kinks can be ironed out.

What’s this about?
Windows CE was an option available to Dreamcast developers that made it much easier to port their game from PC to Dreamcast. Windows CE is/was a subset of Win32, stripped down so that it could be used on low-powered embedded devices instead of expensive desktop computers. PC developers that were used to dealing with DirectX on Windows PC could easily convert their game over to Dreamcast using Windows CE. Hence why you saw a lot of ports at the time from PC-centric western developers that would normally not touch game consoles.

Windows CE emulation (or rather, full MMU support) has been one of the biggest things missing from open source Dreamcast emulation up until now. It is often not enabled in main builds because emulating it requires emulating the MMU (Memory Management Unit) of the Dreamcast, which makes emulation much slower. So far, only Demul (a closed-source Dreamcast emulator) has something resembling full MMU support.

Now finally, open source is beginning to catch up. About time. Dreamcast is over 20 years old at this point, the people that grew up with it are all getting older as time goes on, and it shouldn’t taken another 10 years for all of this stuff to be properly preserved and documented. Flyinghead has done an absolutely incredible job over the past year or so in singlehandedly turning BeetleDC from something that was worse than nullDC in compatibility and graphics accuracy into the closest we have to an actual competitor to Demul, and we couldn’t be more happy with that. He spent a lot of time in making sure this release was ready today, and we hope you will put it through its paces.

How to get it

1) First, make sure that you have all core information files installed. Go to RetroArch’s main menu, select ‘Online Updater’, and select ‘Update Core Info Files’.

2) Go to ‘Online Updater’ -> ‘Update Cores’. Scroll down the list until you reach ‘Sega Dreamcast/NAOMI (BeetleDC WinCE)’. Install it.

System requirements

BeetleDC WinCE has higher system requirements than the regular version. The most important things you need to know:

  1. You can only expect borderline acceptable performance right now on PC x64 systems. ARM64 and ARM 32bit will likely be too slow at BeetleDC WinCE to be playable.
  2. The Linux x64 version right now is the fastest of them all. The macOS x64 version should also be comparable in performance.
  3. The Windows x64 version is currently much slower than the Linux/Mac versions.

Consider this core a work-in-progress. Bugs are to be expected, fairly demanding requirementsare likely to be expected for now. Things can only get better from here.

Compatibility

Below is by no means an exhaustive list of all games on Dreamcast that used Windows CE under the hood, along with their current playable status in Beetle WinCE at the time of this writing.

The most complete listing we found so far of Dreamcast WinCE games can be found here.

4×4 EvolutionPlayable
Name Status
Atari Anniversary Edition Playable
Armada Playable
Bang! Gunship Elite Playable
Bust-A-Move 4 Playable
Caesars Palace 2000: Millennium Gold Edition Playable
Championship Surfer Playable
Ducati World Racing Challenge Issues
Half-Life Playable
Happy Lesson Playable
Hidden & Dangerous Playable
KISS: Psycho Circus: The Nightmare Child Playable
Kita e. White Illumination Playable
Maximum Pool Playable
Midway’s Arcade Greatest Hits Volume 1 Playable
Midway’s Arcade Greatest Hits Volume 2 Playable
Nightmare Creatures 2 Playable
Q*bert Issues
Railroad Tycoon II Playable
Railroad Tycoon II (PAL) Playable (set Broadcast to PAL)
Resident Evil 2 Playable
Sega Rally 2 Playable (DIV match must be disabled)
Sno-Cross Championship Racing Playable
South Park: Chef’s Luv Shack Playable
Spirit of Speed 1937 Playable
Starlancer Playable
The Next Tetris Playable
Tomb Raider: The Last Revelation Playable
Tomb Raider Chronicles Playable
Tom Clancy’s Rainbow Six Playable
Virtua Cop 2 Playable
Wild Metal Playable
Who Wants To Beat Up A Millionaire Playable
Worms Armageddon Playable (DIV match must be disabled)
Worms World Party Playable

Notes

  1. Many Windows CE games are region-sensitive. Make sure to set the region and broadcast to the right ones – as most Windows CE games won’t run in a different region (although Default might often times work fine). You can change these settings by going to Quick Menu -> Options.
  2. If performance is lacking, try the Threaded Renderer, this can really help. You can enable or disable this by going to Quick Menu -> Options.
  3. Some Windows CE games will flat out not run if DSP is not enabled. So in case a game doesn’t work, try first turning that on.
  4. Enabling DIV matching can lead to some Windows CE games outright not working. As a general precaution, we advise that you leave DIV matching off. Sega Rally 2, for instance, requires that you leave DIV matching off.
  5. Other enhancement/hackish features, like Fast GD-ROM Loading, are best left off in case you experience compatibility issues.

Screenshot gallery

Videos

Check out these videos by flyinghead –

A website to browse the libretro database – db.libretro.com

A new website is now available at db.libretro.com.

db.libretro.com is an online database of video games. It is generated from the exact same game database that is used in RetroArch for scanning your game collection.

Compiling a database of all the existing games is not an easy task. Thanks to the hard work of no-intro and other preservation teams, libretro-database was started on a very solid basis. However, as we are adding more and more sources of games, maintaining a high level of quality has become a challenge.

We hope that this new tool will have a positive impact on the overhaul quality of libretro-database and libretro-thumbnails which is tightly related. It is primarily intended as a visualization and debug tool for the database maintainers and contributors.

With a little bit of effort, it could become an important pillar of the preservation of the video game history.

RetroArch 1.7.6 – Released!

RetroArch 1.7.6 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.

NOTE: Currently the following versions have not yet been released – Xbox OG and OSX PowerPC. We will keep you up to date on Twitter and update this blog post accordingly.

Highlights

PlayStation2 port – now available!

RetroArch has been ported to the PlayStation2 by fjtrujy, and starting as of version 1.7.6 you can already try it on your own homebrew-enabled PS2!

A couple of cores have been included as part of this initial release:
* 2048
* FCEUmm (NES emulator)
* QuickNES (NES emulator)
* Picodrive (Mega Drive/Genesis/Master System emulator)

NOTE: To run Picodrive and FCEUmm at fullspeed, you need to set Vsync to off. QuickNES will be fullspeed with vsync on.

How to use it on a PS2

You will need a PS2 capable of running homebrew programs. For the purpose of this quick step-by-step tutorial, we are going to assume you are using something like FreeMcBoot.

  • Start up your PS2.
  • Go to a file manager such as LaunchELF.
  • Take a USB stick, and extract the contents of RetroArch_elf.7z for PS2 to your USB stick. Insert the USB stick into your PS2.
  • Inside LaunchELF, navigate to mass:
  • Start up any of the ELF files depending on the core you want to use.

PlayStation4 port (public release TBD)

RetroArch has been ported to PlayStation4 by Frangarcj, Big Boss and others!

A few cores have been ported and have been confirmed running already, such as SameBoy and 2048.

The PlayStation4 port is using a homebrew SDK called liborbis, and thanks to this SDK we are able to use OpenGLES 2 on the PS4. This means that from Day One we have a fully functioning GL driver and working XMB/MaterialUI/RGUI drivers. It also means that OpenGL hardware accelerated cores should be possible.

Frangarcj wants to wait with a public release until OELF format support has been added to the SDK, so until then we will ask for your patience. It might be possible to provide you with a compilation guide in case you want to build it for yourself later on.

NOTE: In order to use this RetroArch port, you will need a PlayStation4 system that has been jailbroken. Right now this means your system should be on either firmware 4.55 or firmware 5.05.

Xbox One port (public release TBD)


RetroArch has been ported to the Xbox One courtesy of krzys_h! While we want to wait a while longer before we do a public release, we do want to let you know that unofficial builds are already available on the Internet, and it’s up to you to try them out to check the current state of development.

To be specific, the Xbox One port has been made possible as part of a larger endeavor to port RetroArch to Microsoft’s UWP platform. This means it can now function as a Windows 10 UWP app as well as a Xbox One app.

The Xbox One port of RetroArch uses a Direct3D 11 driver (Direct3D 12 for whatever reason turned out to have worse performance, so we aren’t using that). It is already running out of the box with full menu support such as XMB/MaterialUI. Full shader support is provided, and most slang shaders work fine out of the box.

So, to keep a long story short, check some of the unofficial builds out there. In order to use RetroArch on your Xbox One, you simply need to buy Developer Activation from Microsoft, which should only cost you about 20 dollars/Euros (it might even be free right now as part of a special discount going on). You do NOT need to jailbreak your console or anything, which makes RetroArch a very feasible option for the layman on Xbone. Do note that if you want to use RetroArch, you will have to restart into Developer Mode. When you want to go back to playing regular games, you will need to restart again into Retail Mode. This is the only inconvenience to the process.

RetroArch in its full-fat form would not be possible to be published on the Microsoft Store given all the console emulators. A neutered version bereft of all its emulators might be possible to be published, but it’s debatable how many people would be truly interested in that right now. So, Developer Mode is the best compromise/alternative for now.

NOTE: In case you try any of the unofficial builds, do note that one of the reasons we are not releasing a public build yet ourselves is that there are currently some slow file loading issues that we’d like to resolve first.

Apple TV/tvOS port

RetroArch has now been ported to Apple TV/tvOS courtesy of yoshisuga!

Right now it is using the OpenGL video driver for rendering and it’s using the Ozone menu driver by default. Support for Metal is planned, and there are some other developers that have an interest in making that happen as Apple has already begun deprecating OpenGL as of the latest Xcode SDKs.

How to use/install

The following is a non-developer guide to install RetroArch on non-jailbroken iOS devices. We’re going to try to improve the process and possibly include the iOS cores in a download, but until then, here is a way to build RetroArch to get it running on your iPhone, iPad, or Apple TV –

https://docs.libretro.com/guides/install-ios/

Ozone – new menu driver

Written by author natinusula

Created by natinusala, ozone is a new menu driver based on the Nintendo Switch’s user interface, look and feel. It has been developed completely clean-room. In the works since last September, it is finally ready to be used as a daily menu driver. Don’t forget to update your assets!

This new menu driver features a sidebar where you will find the tabs you already know from XMB: Main Menu, Settings, Favorites, History, Netplay Rooms, Import content and all your playlists. You can use the left / right keys to navigate between the main entries and the sidebar. The driver also displays the time and battery level in the status bar, if applicable. Finally, the virtual keyboard has been redesigned to look more like the one of the Switch’s operating system.

The driver has two different themes, a light one and a dark one. The configuration will default to the dark theme, but you can select which one to use in Settings > User Interface > Appearance > Menu Color Theme. On the Switch, the system theme will automatically be used, how handy!

ozone is available on all platforms with hardware acceleration (assuming you use the correct video driver), and is even selected by default on the Switch platform. If your device supports XMB and GLUI / MaterialUI, it will support ozone, the only exception being Android (see the missing features below). You can even use it on Lakka if you want!

The driver is ready to be used, but it still lacks some features such as:
– thumbnails display (both playlists and save states)
– DPI scaling (the menu will look super tiny on a 4K monitor, and super big on a 360p screen)
– touch and mouse support
– portrait layout (for mobile phones)

All those features will be added over time. Nice things are planned for the future of ozone!

RGUI improvements

Written by author jdgleaver
RGUI now has a new ‘theme preset’ configuration file format (e.g. my_theme.cfg). This has the following contents:

rgui_entry_normal_color = “0xAARRGGBB”
rgui_entry_hover_color = “0xAARRGGBB”
rgui_title_color = “0xAARRGGBB”
rgui_bg_dark_color = “0xAARRGGBB”
rgui_bg_light_color = “0xAARRGGBB”
rgui_border_dark_color = “0xAARRGGBB”
rgui_border_light_color = “0xAARRGGBB”
rgui_wallpaper = “wallpaper_file.png”

This also adds wallpaper support. rgui_wallpaper is the (relative) path to a suitable wallpaper file. If it is omitted (or left empty), no wallpaper is used. Wallpaper files must have the following properties:

– A resolution of exactly 320×240.
– They must be pre-converted to a reduced colour depth of 4 bits per pixel.

(NB: Normal background/border colours are still used for message boxes and the title background when showing thumbnails – it looks better this way!)

Theme preset files can be loaded via a new ‘Custom Menu Theme Preset’ option under ‘User Interface > Appearance’. They are enabled by setting ‘Menu Color Theme’ to ‘Custom’.

A small collection of themes have been added as assets. Here are some screenshots of what the included .cfg files look like:

Desktop UI improvements

Detailed file browser

Drag and drop for thumbnails

Discord matchmaking

It is now possible to use our Discord server for matchmaking purposes!
We will describe the process from the perspective of using Windows on PC (on Linux/OSX you can ignore step 5, you will need to continue to start RetroArch before launching the Discord application, otherwise it will not work)
NOTE: Discord matchmaking will not work through the webbrowser. You will need to use the Discord desktop app instead.
NOTE2: Port forwarding needs to be enabled on your router for this to work.

1) Make sure first that the game you want to play with a friend has already been scanned and is inside a playlist. Alternatively, you have to make sure the game is in your Recent History list.
2) Start RetroArch first before launching the Discord desktop application.
2) Make sure that you have the core that the person you want to play with is using. You can tell this by going to their Discord user handle and clicking on them. You will see the core’s name and the game that is being played.
3) Click on the button ‘Ask to Join’.
4) A message will pop up now ‘waiting for user’s game’. If all goes well, the game will start up now and you can play a netplay game with your friend.
5) (Windows only) From now on, you no longer need to start up RetroArch before launching the Discord desktop client. You can just select ‘Ask to join’ and RetroArch will automatically start up.
The Discord matchmaking will also automatically use your Discord username for the game session.

And more

There’s lots more to talk about in this release, but that will be it for now. We might release some followup blog posts in the upcoming days that will go into more detail on some of the other features that have not really been covered during this blog post.

You can also expect further blog posts about important new core updates.

General changelog

– ANDROID: Fix Xperia Play input binding.
– CHEEVOS: Reset when hardcore mode is toggled.
– CHEEVOS: Update the hashing methods to identify NES, SNES and Lynx games (more accurate and accepting headerless ROMs).
– COMMON: Add new JSON playlist format.
– COMMON: Fix playlist corruption when deleting items.
– COMMON: Fix archive progress display calculation.
– COMMON: Fix playlist entries appearing with previously used names.
– COMMON: Fix screenshot filename with no core or content.
– COMMON: Allow compiling without menu support.
– CORE UPDATER: Allow sideloading cores from the menu.
– CPU FILTERS: Add Normal2x filter.
– CRT/LINUX: New Linux switching method partially implemented.
– CRT/LINUX: Linux restore desktop resolution fixed.
– CRT/LINUX: Monitor index switching and auto enumerate for output detection in Linux (still working on the windows method).
– CRT/RASPBERRY PI: Initial support.
– DATE: Add Date / Time style options.
– DEBUGGING: Add an integrated crash handler for debug builds (see https://docs.libretro.com/tech/debugging)
– DISCORD: Discord matchmaking.
– DISCORD: Register the application name properly.
– DISK CONTROL: Remember the last used folder / current active folder to make disk-swapping faster.
– INPUT: Add new menu toggle (hold start button for 2 seconds)
– INPUT: Fix arrow keys being incorrectly bound as numpad keys
– INPUT/SDL: Flush the joypad events. Decreases cpu usage over time with the SDL joypad driver.
– LOCALIZATION: Add Greek translation.
– LOCALIZATION: Update German translation.
– LOCALIZATION: Update Italian translation.
– LOCALIZATION: Update Japanese translation.
– LOCALIZATION: Update Simplified Chinese translation.
– LOCALIZATION: Update Spanish translation.
– MENU: New “ozone” menu driver.
– MENU: Only show CRT SwitchRes if video display server is implemented (Windows/Linux for now)
– MENU: User Interface -> Appearance -> ‘Menu Font Green/Blue Color’ settings now work properly.
– MENU: Add option to enable in-menu sound effects.
– MENU/D3D: Scissoring support (will be used for Ozone and menu widgets).
– MENU/QT/WIMP: Allow building with MSVC2017.
– MENU/QT/WIMP: Add detailed file browser table.
– MENU/QT/WIMP: New grid view implementation that is faster and loads thumbnails on-demand.
– MENU/QT/WIMP: Thumbnail drag and drop support.
– MENU/RGUI: Overhaul custom theme interface + add wallpaper support.
– MENU/RGUI: Thumbnail support and thumbnail downscaling.
– MENU: Hide password values.
– MENU/SOUNDS: Implement in-menu sound effects (not enabled by default for now, still experimental).
– MIDI: Add a Linux ALSA driver for MIDI.
– NETPLAY: Force fast-save-states when netplay is enabled.
– NETPLAY: Allow quick joining subsystem lobbies.
– OSX: Initial CoreAudio V3 audio driver (not yet used in release builds).
– OSX: OpenGL 3.2 Core support for cores.
– PS2: Initial PlayStation2 port.
– PS4: Initial PlayStation4 port.
– RECORDING: Implement recording options in the menu complete with quality profiles, streaming, and proper file naming
– SCANNER: Fix GDI disc scanning.
– SHADERS: Fix auto shader preset loading on D3D10, D3D11, D3D12
– SUBSYSTEM: Allow more than 10 subsystems
– SUBSYSTEM: Cores that use subsystem for complex scenarios can now load content without starting a regular content first
– SUBSYSTEM: Remember the last used folder to make loading subsystem type content faster
– SWITCH/LIBNX: Improve touch scaling calculation.
– SWITCH: Proper button labels.
– TVOS: Initial tvOS port.
– VULKAN: Fix RGUI crashing at startup.
– VULKAN/RGUI: Enable ‘Menu Linear Filter’ option.
– VULKAN: Fix secondary screens in overlays not working.
– WAYLAND: Implement idle-inhibit support (needed for screensaver suspend).
– WAYLAND: Fix fullscreen toggle.
– WIIU: Initial netplay peer-to-peer support. Network information working.
– WINDOWS/WSA: Network Information info is blank until first network operation.
– WINDOWS: Fix an ancient bug that caused wrong mappings for keyboard arrows.
– WINDOWS: Remember window size and position if so desired.
– WINDOWS: SSL/TLS connections now work properly.
– WINDOWS: Fall back to GDI driver if no accelerated graphics driver is found.
– UWP: Initial UWP port.
– VFS: Update to version 3.
– XBONE: Initial Xbox One port.
– XMB/OZONE: Add more icons
– XMB: Add Automatic Inverted theme
– ???: Easter Egg