We originally intended to release this together with the new RetroArch version right before the end of this month. However, we want to take a few more days to ensure that the release of RetroArch 1.6.8 is solid and that we don’t rush it out of the gates in a premature state. We ask for your patience, it won’t take too long, a couple of days at most. In the meantime, we have the Parallel N64 core with multithreaded Angrylion ready to go!
This is a heavily modified version of ata4‘s Angrylion RDP Plus plugin. It has the following distinctive characteristics so far:
1 – Made a bunch of changes so that performance in Linux/Mingw is not as bad as it was previously (still worse than Windows though).
2 – Does not require OpenGL context 3.2, or OpenGL at all. It is purely a software renderer that can use any output video driver you want in your libretro frontend. So you can use this in conjunction with OpenGL, Direct3D, Vulkan, etc.
Credit goes to mudlord, Brad Parker and AIO for being able to get this done in such short notice. I helped out along the way too.
Available for
Linux
Windows
Android
Where to get it
1. Start RetroArch.
2. Go to Online Updater -> Update Cores.
3. Download ‘Nintendo 64 (Parallel N64)’ from the list.
How to use it
1. Start up the Parallel N64 core with any game.
2. Go to Quick Menu -> Options. Make sure that you set ‘GFX Plugin’ to ‘angrylion’ and ‘RSP Plugin’ to çxd4′. Restart RetroArch.
3. It should now use multithreaded Angrylion as the graphics plugin.
Performance
For the purpose of this performance test, I am running the game Super Mario 64.
The system on which the tests are being performed is a Core i7 7700k processor with 16GB of RAM running Windows 10 and Linux respectively.
Windows
CPU Core
Angrylion version
OS
Performance (with VI Overlay on)
Performance (with VI Overlay off)
Cached interpreter
Windows 10
Old Angrylion
52fps
63fps
Dynarec
Windows 10
Old Angrylion
52fps
64fps
Dynarec
Windows 10
New Angrylion Multithreaded
114fps
123fps
Cached interpreter
Windows 10
New Angrylion Multithreaded
106fps
118fps
Linux
CPU Core
Angrylion version
OS
Performance (with VI Overlay on)
Performance (with VI Overlay off)
Cached interpreter
Linux
Old Angrylion
53fps
63fps
Dynarec
Linux
Old Angrylion
55fps
65fps
Dynarec
Linux
New Angrylion Multithreaded
72fps
84fps
Cached interpreter
Linux
New Angrylion Multithreaded
69fps
82fps
macOS
Too slow to be worth bothering with, singlethreaded Angrylion actually turned out faster here. That is why the Mac version will still be using the old Angrylion version.
Some core options have the potential to dramatically improve performance.
Quick Menu -> Options -> Framerate – You can set this to either ‘Original’ or ‘Fullspeed’. Original will attempt to run the game at its original framerate, while Fullspeed bumps it up to 60 V/Is. Note – if you find a game is running below fullspeed on your system, consider setting this to ‘Original’. I know that in Conker’s Bad Fur Day and Pilotwings 64, there is a big performance impact if you set it to ‘Fullspeed’.
Quick Menu -> Options -> VI Overlay – Disabling this can give you a 10 to 20fps speedup at the expense of the VI overlay’s filtering being lost, leading to a more pixelated but less blurry image. Also note that some games may not work properly with VI Overlay off right now, such as Resident Evil 2.
How to improve the graphics
In case you find the N64’s native resolution and blurry VI filter to be unpalatable, we want to bring your attention to various things you can do to improve your graphics.
In this video we will be showing you how to apply a so-called ‘Super VI Mode’ filter in order to improve the N64’s graphics.
Note – how these shaders will perform depends entirely on the power of your GPU. The configuration you see later in the video (nnedi-4x) requires a lot more GPU power than the former one (2x). Be mindful of this.
This video will teach you:
* How to load shader presets
* How to stack additional shader chains on top of existing shader presets
* How to configure shader parameters to adjust the screen.
We hope this video will tickle your curiosity so that you will try to hit upon even more fancy shader configurations! The sky is the limit with RetroArch and our common shaders library.
Here at RetroArch/libretro, we have always insisted on catering to both the low-end as well as the high end. To further this purpose, we always make design considerations from this perspective, that whatever we do shouldn’t be at the cost of worse performance on lower specced hardware that we still support.
Newer generation emulators are increasingly catering to the high end and almost demand it by virtue of them being based on much more recent videogame systems. While testing RetroArch and various libretro cores on our new high-end Windows desktop PC, we noticed that we could really take things up a few notches to see what we could get out of the hardware.
Dolphin
While working on the Dolphin libretro core some more, we stumbled upon the issue that internal resolution increases were still not working properly. So while fixing that in the latest core, we felt that the default scaled resolution choices that Dolphin provides (up to 8x native resolution) weren’t really putting any stress on our Windows development box (a Core i7 7700K equipped with a Titan XP).
So, in the process we added some additional resolution options so you can get up to 12K. The highest possible resolution right now is 19x (12160×10032).
As for performance results, even at the highest 19x resolution, the average framerate was still around 81fps, although there were some frame drops here and there and I found it to be generally more safe to dial the internal resolution down to a more conservative 12x or 15x instead). 12x resolution would be 8680×6336, which is still well over 8K resolution.
Note that the screenshots here are compressed and they are downscaled to 4K resolution, which is my desktop resolution. This desktop resolution in turn is an Nvidia DSR custom resolution, so it effectively is a 4K resolution downsampled to my 1080p monitor. From that, I am running RetroArch with the Dolphin core. With RetroArch, downscaling is pretty much implicit and works on the fly, so through setting the internal resolution of the EFB framebuffer, I can go beyond 4K (unlike most games which just query the available desktop resolutions).
We ran some performance tests on Soul Calibur 2 with an uncapped framerate. Test box is a Core i7 7700k with 16GB of DDR4 3000MHz RAM, and an Nvidia Titan XP video card. We start out with the base 8x (slightly above 4K Ultra HD) resolution which is the highest integer scaled resolution that Dolphin usually supports. If you want to go beyond that on regular Dolphin, you have to input a custom resolution. Instead, we made the native resolution scales go all the way up to 19x.
On the Nvidia Control panel, nearly everything is maxed out – 8x anti-aliasing, MFAA, 16x Anisotropic filtering, FXAA, etc.
Resolution
Performance (with OpenGL)
Performance (with Vulkan)
8x (5120×4224) [for 5K]
166fps
192fps
9x (5760×4752)
165fps
192fps
10x (6400×5280)
164fps
196fps
11x (7040×5808)
163fps
197fps
12x (7680×6336) [for 8K]
161fps
193fps
13x (8320×6864)
155fps
193fps
14x (8960×7392)
152fps
193fps
15x (9600×7920) [for 9K]
139fps
193fps
16x (10240×8448) [for 10K]
126fps
172fps
17x (10880×8976)
115fps
152fps
18x (11520×9504) [for 12K]
102fps
137fps
19x (12160×10032)
93.4fps
123fps
OpenLara
The OpenLara core was previously capped at 1440p (2560×1440). We have added available resolutions now of up to 16K.
Resolution
Performance
2560×1440 [for 1440p/2K]
642fps
3840×2160 [for 4K]
551fps
7680×4320 [for 8K]
407fps
15360×8640 [for 16K]
191fps
16000×9000
176fps
Craft
Previously, the Craft core supported only up to 1440p. Now it supports up to 16K and slightly higher.
For the Craft core, we are setting the ‘draw distance’ to 32, which is the highest available draw distance available to this core. With the draw distance set this far back, you can even see some pop-in right now (terrain that is not yet rendered and will only be rendered/shown when the viewer is closer in proximity to it).
Resolution
Performance
2560×1600 [for 1440p/2K]
720fps
3840×2160 [for 4K]
646fps
7680×4320 [for 8K]
441fps
15360×8640 [for 16K]
190fps
16000×9000
168fps
Parallel N64 – Angrylion software renderer
So accurate software-based emulation of the N64 has remained an elusive pipe dream for decades. However, it seems things are finally changing now on high-end hardware.
This test was conducted on an Intel i7 7700K running at Boost Mode (4.80GHz). We are using both the OpenGL video driver and the Vulkan video driver for this test, and we are running the game Super Mario 64. The exact spot we are testing at it is at the Princess Peach castle courtyard.
Super Mario 64
Description
Performance (with OpenGL)
Performance (with Vulkan)
Angrylion [no VI filter]
73fps
75fps
Angrylion [with VI filter]
61fps
63fps
Quake 64
Description
Performance (with OpenGL)
Performance (with Vulkan)
Angrylion [no VI filter]
81fps
82.5fps
Angrylion [with VI filter]
68fps
72fps
Killer Instinct Gold
Description
Performance (with OpenGL)
Performance (with Vulkan)
Angrylion [no VI filter]
57.9fps
58.7fps
Angrylion [with VI filter]
54.6fps
55fps
GoldenEye 007
Tested at the Dam level – beginning
Description
Performance (with OpenGL)
Performance (with Vulkan)
Angrylion [no VI filter]
54.9fps
43.8fps
Angrylion [with VI filter]
45.6fps
40.9fps
Note that we are using the cxd4 RSP interpreter which, despite the SSE optimizations, would still be pretty slow compared to any RSP dynarec, so these results are impressive to say the least. There are games which dip more than this – for instance, Killer Instinct Gold can run at 48fps on the logo title screen, but on average, if you turn off VI filtering, most games should run at fullspeed with this configuration.
In case you didn’t notice already, Vulkan doesn’t really benefit us much when we do plain software rendering. We are talking maybe a conservative 3fps increase with VI filtering, and about 2fps or maybe even a bit less with VI turned off. Not much to brag about but it could help in case you barely get 60fps and you need a 2+ fps dip to avoid v-sync stutters.
Oddly enough, the sole exception to this is GoldenEye 007, where the tables are actually turned, and OpenGL actually leaps ahead of Vulkan quite significantly, conservatively by about 5fps with VI filter applied, and even higher with no VI filter. I tested this many times over to see if there was maybe a slight discrepancy going on, but I got the exact same results each and every time.
Parallel N64 – Parallel Vulkan renderer
So we have seen how software-based LLE RDP rendering runs. This puts all the workload on the CPU. So what if we reverse the situation and put it all on the GPU instead? That is essentially the promise of the Parallel Vulkan renderer. So let’s run the same tests on it.
This test was conducted on an Intel i7 7700K running at Boost Mode (4.80GHz). We are using the Vulkan video driver for this test, and we are running the game Super Mario 64. The exact spot we are testing at it is at the Princess Peach castle courtyard.
Super Mario 64
Description
Performance
With synchronous RDP
192fps
Without synchronous RDP
222fps
Quake 64
Description
Performance
With synchronous RDP
180fps
Without synchronous RDP
220fps
Killer Instinct Gold
Description
Performance
With synchronous RDP
174fps
Without synchronous RDP
214fps
GoldenEye 007
Tested at the Dam level – beginning
Description
Performance
With synchronous RDP
88fps
Without synchronous RDP
118fps
As you can see, performance nearly doubles when going from Angrylion to Parallel renderer with synchronous RDP enabled, and beyond with it disabled. Do note that asynchronous RDP is regarded as a hack and it can result in many framebuffer oriented glitches among other things, so it’s best to run with synchronous RDP for best results.
We are certain that by using the LLVM RSP dynarec, the performance difference between Angrylion and Parallel would widen even further. Even though there are still a few glitches and omissions in the Parallel renderer compared to Angrylion, it’s clear that there is a lot of promise to this approach of putting the RDP on the GPU.
Conclusion: It’s quite clear that even on a quad-core 4.8GHz i7 CPU, the CPU ‘nearly’ manages to run most games with Angrylion [software] at fullspeed but it doesn’t leave you with a lot of headroom really. Moving it to the GPU [through Parallel RDP] results in a doubling of performance with the conservative synchronous option enabled and even more if you decide to go with asynchronous mode (buggier but faster).
Beetle PSX
Previously, Beetle PSX would only provide internal resolution increases up to 8 times the original resolution. We have now extended this to 32 x for software and Vulkan, and 16x for OpenGL.
The results are surprising – while the Vulkan renderer is far more mature than the OpenGL renderer and implements the mask bit unlike the GL renderer (along with some other missing bits in the current GL renderer), the GL renderer leaps ahead in terms of performance at nearly every resolution.
Crash Bandicoot
Crash Bandicoot is a game that ran at a resolution of 512×240.
Resolution
Performance (with OpenGL) [with PGXP]
Performance (with OpenGL) [w/o PGXP]
Performance (with Vulkan) [with PGXP]
Performance (with Vulkan) [w/o PGXP]
Performance (software OpenGL)
Performance (software Vulkan)
8192×3840 [16x] [for 5K]
188.8fps
266fps
217fps
239fps
4.4fps
5.3fps
4096×1920 [8x] [for 2K]
216fps
296fps
218fps
240fps
16fps
17.5fps
2048×960 [4x]
215fps
296fps
216fps
239fps
52fps
57.9fps
1024×480 [2x]
216fps
296fps
216fps
239fps
138fps
145fps
Tekken 3
Tekken 3 is a game that ran at a resolution of 368×480.
Resolution
Performance (with OpenGL) [with PGXP]
Performance (with OpenGL) [w/o PGXP]
Performance (with Vulkan) [with PGXP]
Performance (with Vulkan) [w/o PGXP]
Performance (software OpenGL)
Performance (software Vulkan)
11776×15360 [32x] [for 12K]
N/A
N/A
127fps
127.4fps
N/A
N/A
5888×7680 [16x] [for 4K]
188.5fps
266fps
184.4fps
211fps
4.4fps
6.6fps
2944×3840 [8x] [for 2K]
186.5fps
208fps
183.5fps
269fps
22fps
25.2fps
1472×1920 [4x]
184.5fps
270fps
230.5fps
210fps
52fps
59.4fps
1024×480 [2x]
232fps
271fps
185.5fps
210fps
129fps
137fps
Reicast
Dead or Alive 2
Description
Performance
4480×3360
206fps
5120×3840
206fps
5760×4320
206fps
6400×4800
204fps
7040×5280
206fps
7680×5760
206fps
8320×6240
204fps
8960×6720
204fps
9600×7200
207fps
10240×7680
206fps
10880×8160
207fps
11520×8640
207fps
12160×9120
194fps
12800×9600
193fps
As you can see, it isn’t until we reach 12160×9120 that Reicast’s performance finally lets up from an almost consistent 206/207fps to a somewhat lower value. Do note that this was testing the same environment. When alpha effects and RTT (Render to Texture) effects are being applied onscreen, there may well be dips on the higher than 8K resolutions whereas 8K and below would be able to handle it with relative ease.
Mupen64plus – GlideN64 OpenGL renderer
This core uses Mupen64plus as the core emulator plus the GlideN64 OpenGL renderer.
Super Mario 64
Description
Performance
3840×2880 – no MSAA
617fps
3840×2880 – 2x/4x MSAA
181fps
4160×3120 – no MSAA
568fps
4160×3120 – 2x/4x MSAA
112fps
4480×3360 – no MSAA
538fps
4480×3360 – 2x/4x MSAA
103fps
4800×3600 – no MSAA
524fps
4800×3600 – 2x/4x MSAA
94fps
5120×3840 – no MSAA
486fps
5120×3840 – 2x/4x MSAA
82fps
5440×4080 – no MSAA
199fps
5440×4080 – 2x/4x MSAA
80fps
5760×4320 – no MSAA
194fs
5760×4320 – 2x/4x MSAA
74fps
6080×4560 – no MSAA
190fps
6080×4560 – 2x/4x MSAA
68fps
6400×4800 – no MSAA
186fps
6400×4800 – 2x/4x MSAA
61.3fps
7680×4320 – no MSAA
183fps
7680×4320 – 2x/4x MSAA
39.4fps
GoldenEye 007
Tested at the Dam level – beginning
Description
Performance
3840×2880 – no MSAA
406fps
3840×2880 – 2x/4x MSAA
100fps
4160×3120 – no MSAA
397fps
4160×3120 – 2x/4x MSAA
65fps
4480×3360 – no MSAA
375fps
4480×3360 – 2x/4x MSAA
60fps
4800×3600 – no MSAA
342fps
4800×3600 – 2x/4x MSAA
54fps
5120×3840 – no MSAA
310fps
5120×3840 – 2x/4x MSAA
51fps
5440×4080 – no MSAA
70fps
5440×4080 – 2x/4x MSAA
46fps
5760×4320 – no MSAA
78.9fs
5760×4320 – 2x/4x MSAA
42fps
6080×4560 – no MSAA
86fps
6080×4560 – 2x/4x MSAA
37fps
6400×4800 – no MSAA
79fps
6400×4800 – 2x/4x MSAA
27fps
7680×4320 – no MSAA
79fps
7680×4320 – 2x/4x MSAA
33.2fps
Preface: Immediately after going beyond 3840×2880 (the slightly-higher than 4K resolution), we notice that turning on MSAA results in several black solid colored strips being rendered where there should be textures and geometry. Again, we notice that enabling MSAA takes a huge performance hit. It doesn’t matter either if you apply 2 or 4 samples, it is uniformly slow. We also notice several rendering bottlenecks in throughput – as soon as we move from 5120×3840 to 5440×4080 (a relatively minor bump), we go from 310fps to suddenly 70fps – a huge dropoff point. Suffice to say, while you can play with Reicast (Dreamcast emulator) and Dolphin (Gamecube/Wii) at 8K without effort and even have enough headroom to go all the way to 12K, don’t try this anytime soon with Gliden64.
We suspect there are several huge bottlenecks in this renderer that prevent it from reaching higher performance, especially since people on 1060s have also complained about less than stellar performance. That being said, there are certain advantages to Gliden64 vs. Glide64, it emulates certain FBO effects which GLide64 doesn’t. It also is less accurate than Glide64 in other areas, so you have to pick your poison on a per-game basis.
We still believe that the future of N64 emulation relies more on accurate renderers like Parallel RDP which are not riddled with per-game hacks vs. the traditional HLE RDP approach as seen in Gliden64 and Glide64. Nevertheless, people love their internal resolution upscaling, so there will always exist a builtin audience for these renderers, and it’s always nice to be able to have choices.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful. We are using cookies to give you the best experience on our website. We collect users data for personalisation of ads, and also Google will use your personal data when you give consent on our site. Check this link to Google’s Privacy & Terms site.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.
3rd Party Cookies
This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.
Keeping this cookie enabled helps us to improve our website.
Please enable Strictly Necessary Cookies first so that we can save your preferences!