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.