Built-In Dynamic FPS, Lower CPU Overhead, and AMD GPU Fixes: How Lichii nx2 (Builds 83 to 93) Accelerates Switch 2 Emulation on PC

Less than forty-eight hours after our initial telemetry breakdown of Zelda: Ocarina of Time hitting 60 FPS on Lichii Build 75 with a GeForce RTX 5080, the experimental open-source C++ Nintendo Switch 2 emulator has achieved a major architectural leap on PC. Between November 6 and November 7, 2026, lead developer zortos293 and several community contributors rolled out three rapid-fire revisions: Build 83 (5a50f50), Build 88 (55532f2), and Build 93 (09b78bd). Together, these updates introduce native built-in Dynamic FPS support, low-level CPU/GPU synchronization ports from the Frizti branch, and targeted Vulkan shader fixes for both NVIDIA and AMD Radeon graphics cards.
Built-In Dynamic FPS and Frizti CPU Optimizations Arrive in Build 88
When the Nintendo Switch 2 remake of The Legend of Zelda: Ocarina of Time first booted on PC, its biggest playability hurdle was rigid frame-pacing logic: whenever CPU bottlenecks dragged outdoor performance down to 20 or 29 frames per second, the entire game ran in slow motion unless users manually injected external mod files. Starting with Build 88 (merged via pull requests #194 and #240), Lichii nx2 natively bundles the Dynamic FPS mod created by developer Dark (from the upstream Eglantine project) and integrated by Frizti.
Enabled out of the box under the game's Add-Ons menu as Dynamic FPS (built-in), the patch decouples internal game speed from fluctuating frame rates while performing automatic checks for original instructions, executable padding, timer storage, and user-mod conflicts. The development team advises keeping the emulator's CPU Clock setting on Normal rather than Boost or Overclock, as altering the guest clock changes the internal timer used by the mod. Alongside Dynamic FPS, Max Resolution (built-in) was added in Build 83 (also enabled by default) to bypass the game's internal dynamic resolution scaling.
To alleviate the two-thread CPU bottleneck that previously throttled open areas like Kokiri Forest, Lichii nx2 also merged key memory and command-submission optimizations from the Frizti performance branch and the perf9 testing profile:
- Cached Storage-Buffer Bindings: Instead of acquiring locks and walking the emulated GPU's page table on every single draw call, Lichii now caches storage-buffer (SSBO) bindings across draws as long as the underlying GPU memory mapping remains unchanged.
- Direct Native Uniform-Bank Uploads: Rather than relying on heavy host page-protection tricks to track writes across 64 KiB constant banks every frame, the emulator copies guest uniform data directly to the host GPU on a background thread.
- Vulkan Cache v53 and Parallel Texture Unswizzling: Native shader emission and Vulkan shader-module creation now run on bounded background workers alongside parallel texture unswizzling, while AMD FSR 3 Frame Generation (off by default) receives fixes for temporal history, motion interpolation, and descriptor retirement.
On a mid-range desktop test bench pairing an AMD Ryzen 7 5800X3D processor, an NVIDIA GeForce RTX 4070 (12 GB) graphics card, and 32 GB of DDR4-3200 CL16 RAM under Windows 11 (NVIDIA driver 621.01), side-by-side gameplay published by Games Hub Benchmarks highlights the smoother pacing achieved by the Frizti and Dynamic FPS integrations, while newer 3D V-Cache processors like the Ryzen 7 9800X3D sustain the 60 FPS target far more consistently.

AMD Ryzen 7 9800X3D (8-Core / 16-Thread Processor)
- Zen 5 architecture with 96 MB of 2nd-Gen 3D V-Cache
- Up to 5.2 GHz Boost Clock on the AM5 (DDR5) platform
- Engineered to handle heavy shader translation and SSBO draw calls in C++ emulation
- Full support for Windows 11 and Linux (Ubuntu 24.04 / Fedora 40 / Arch)

Restored Vegetation, AMD Radeon Vulkan Fixes, and AV1 Decoding in Build 93
Beyond raw frame pacing, Build 83 and Build 93 eliminate several severe rendering bugs that previously forced testers to manually blacklist shader hashes. In Ocarina of Time, expanded read-only pointer-table bindings allow grass and vegetation shaders to properly fetch their instance data. Corrected sky-ambient buffer tracking restores outdoor lighting and color balance, fixed mesh-shader register handling removes the neon glowing doorway artifact, and an occlusion-query reset fix stops single-frame white flashes. Alongside ongoing efforts to build a native PC recompilation of Ocarina of Time without an emulator, other Switch 2 titles also benefit from these commits: invalid depth-stencil copy crashes in Star Fox are resolved, presentation pacing is corrected in Mario Kart World, and Donkey Kong Bananza now waits for its active frame by default to prevent premature buffer reuse.

Released late on November 6, Build 93 (09b78bd) focuses heavily on AMD Radeon shader accuracy and Vulkan synchronization thanks to contributions from mja00 (Matt Artist), jpkto, persluffy-cl, jonmakegames, Selevet, and sharkiix:
- AMD Black-Screen and Shader Stall Fixes (PR
#273and#295): Nested-return shader handling that previously produced a black 3D viewport on AMD GPUs is fixed. On AMD's proprietary Vulkan driver, fragment shuffles now use a broadcast fallback, misaligned 64-bit and 128-bit storage-buffer accesses are split into 32-bit words, and driver optimization is selectively disabled for compute shadersEFF3CCBE1438679DandF9EA14A22394F5B1to prevent multi-minute compilation freezes. - AV1 Video Decoder and Default Performance Profile (PR
#284and#314): The x86-64 AV1 decoder fix (ported by Duck912 from Eglantine #675) is now integrated into the source code for Switch 2 pre-rendered cutscenes, while fresh desktop configurations automatically seed a tuned performance profile (softer FSR 1 sharpening, Fast GPU mode, GPU video decoding, and asynchronous shader compilation). - Opt-In Compatibility Reporting and Known Limits (PR
#303): Users can now right-click any stopped Switch 2 title and select Submit compatibility report to share verified test data on the officiallichii.zortos.meportal. The developers note that outdoor atmospheric haze, isolated AMD black textures, HUD flicker, cutscene audio, and the initial Linux shader-loading stall remain under active investigation.
My Test Bench (With Chaya's Code & AI Review)
Arthur "Heimdall" (Hardware): For full transparency, we have not compiled or run a dumped copy of the game on our internal hardware test bench. From a purely hardware standpoint, what stands out across the jump from Build 75 to Build 93 is how directly these patches target the exact CPU bottleneck we highlighted during the earliest RTX 5080 benchmarks. Until the atmospheric fog shader, AV1 cutscene audio, and Vulkan synchronization on AMD Radeon GPUs are fully sorted out, the physical Nintendo Switch 2 console obviously remains the most seamless way to play. However, since my specialty is hardware testing rather than software engineering, I asked Chaya, our developer and AI specialist, to inspect the actual GitHub commits and pull requests on the nx2 branch.
Chaya's Perspective (Dev & AI): "Going through the C++ diffs across pull requests #194, #240, #273, and #295 from Frizti and zortos293 makes it immediately clear why the frame-time gains are so dramatic. At a time when plenty of open-source projects lean heavily on AI coding assistants to churn out boilerplate, the core optimization in PR #240 is the exact opposite of blind AI-generated code: replacing page-by-page memory protection on 64 KB uniform banks with a cached GPU address table invalidated solely on register writes requires a surgical understanding of low-level systems architecture. The commits are tight, clean, and free of spaghetti workarounds. It is genuinely impressive systems programming."















