# Themaister

Hans-Kristian Arntzen, better known by the pseudonym Themaister, is a programmer who specializes in graphics programming, particularly the Vulkan API. He helped create the cross-platform frontend RetroArch and its Vulkan support. His work on the paraLLEl-RDP for RetroArch pioneered the use of Vulkan compute shaders in video game console emulation. Themaister used them to render computationally intensive low-level emulation on the GPU. This would emulate the Nintendo 64 with the accuracy of a pre-existing, low-level, CPU-based renderer, Angrylion; but with significantly lower hardware requirements and CPU-usage. This approach has since inspired the use of compute shader rendering in other emulators, such as redream, MelonDS, and PCSX2.

## RetroArch

In 2010, Themaister created the SSNES interface for the bsnes emulator as an alternative to the existing Qt interface. A couple of years later, the project was renamed RetroArch. Themaister's work on Vulkan enabled RetroArch to be one of the first applications to support Vulkan on the first day of Vulkan's release.

## paraLLEl-RDP

Conceived around 2016, paraLLel was a new libretro core for RetroArch. It had a low-level plugin (paraLLEl-RDP) to emulate the Nintendo 64's RDP (Reality Display Processor), and a dynarec (paraLLEl-RSP) to emulate the Nintendo 64's RSP (Reality Signal Processor). paraLLEl-RDP was designed to use the Vulkan API to render the RDP on the GPU rather than CPU (used by the accurate but slow Angrylion renderer), to reduce CPU bottlenecks. paraLLel started off slow with bugs, but paraLLEl-RSP was rewritten in 2019-2020, and Themaister then rewrote paraLLEl-RDP from scratch using new techniques. With the new RDP renderer, modest mainstream hardware could for the first time emulate the N64 at full speed with the accuracy of Angrylion.
Later in 2020, Themaister added upscaling to paraLLEl-RDP, enabling the accurate, bit-exact emulation to be done at higher resolution, with the N64's native VI post-processing pipeline fully emulated. Even with upscaling's additional computational requirements, consumer PCs could still run this at full speed. The public could finally use mainstream hardware to play the N64 with higher resolution graphics and accurate, low-level emulation. The paraLLEl-RDP and paraLLEl-RSP were subsequently incorporated into the Mupen64Plus-Next core (a successor to the libretro port of Mupen64Plus). Further changes and updates were made to Mupen64Plus-Next, and this core has succeeded the initial paraLLEl core.
Following the emulation achievement, paraLLEl-RDP and paraLLEl-RSP were quickly incorporated into other N64 emulators, such as RMG and Simple64 (both Mupen64Plus derivatives) and the multi-system emulator Ares. Even the old emulator Project64 received a port, though with various accuracy problems or even freezes.

## paraLLEl-GS

In 2024, Themaister, with the help of a colleague, turned the Vulkan compute shaders approach towards emulating the PlayStation2's "Graphics Synthesizer" (GS). Their new paraLLEl-GS renderer attempts the accuracy of the existing software renderer GSdx (used in PCSX2), while enabling upscaling and supersampling at sufficient speeds on common hardware. paraLLEl-GS has been implemented in the new libretro core LRPS2, a heavily modified version of PCSX2, and a version has been ported to PCSX2 itself.

## Other consoles

The results achieved by Vulkan compute shaders in the parallel-RDP led other developers to try a similar approach. The Sega Dreamcast emulator, redream, added a low-level emulation video renderer that uses compute shaders to run on the GPU. In 2024, melonDS, an emulator of the Nintendo DS, added an OpenGL version of a compute shader renderer, to try to combine accurate graphics with support for upscaling and other improvements.

## Career

After getting his B.Sc. in Electronics and M.Sc. in Digital Signal Processing, Arntzen worked for Arm Norway for four years. He has done work on SPIR-V for the Khronos Group, and currently runs his own company, Arntzen Software AS.