ssbu-recomp Architecture & Ecosystem
Inside Denkishi’s static recompiler (609 stars, 61 releases): how AArch64 lifting, NVN-to-Vulkan translation, and readable C++ fighter scripts power OpenSmash-Ultimate.
- 609 GitHub stars
- 32,043 Unicorn tests
- 95% ACMD -> C++
- Latest runtime: runtime-6de107d

What is ssbu-recomp?
ssbu-recomp (OpenSmash-Ultimate/ssbu-recomp, originally published under Denkishi/ssbu-recomp on October 12, 2026) is the static recompilation engine and NVN-to-Vulkan runtime that introduced the name OpenSmash-Ultimate. Before merging with WindowSmash on October 21, 2026, OpenSmash-Ultimate/ssbu-recomp accumulated 609 GitHub stars, 72 forks, 61 automated releases, and 50,019 asset downloads.
Today, the entire ssbu-recomp codebase and clean commit history live inside the ssbu-recomp/ directory of OpenSmash-Ultimate/OpenSmash-Ultimate so git log and git blame remain intact while its subsystems (rollback state rings, NVN/Vulkan techniques, function hook tables, and readable C++ fighter scripts) merge into the unified root runtime.
Inside the ssbu-recomp pipeline
Unlike traditional Switch emulators that run a dynamic ARM64 JIT and low-level Maxwell GPU emulation during gameplay, ssbu-recomp splits translation into an ahead-of-time compiler and an API-level Windows/Linux runtime (similar to how Wine implements Win32 calls):
| Subsystem | Technical Function & Measured Scope |
|---|---|
tools/extract | Extracts the main executable, SDK, 96–98 fighter NRO script modules, and RomFS assets locally on your PC from your 13.0.4 or 13.0.5 dump. |
tools/lifter (recomp.py) | Translates AArch64 machine instructions one-to-one into C functions, validated offline against Unicorn across 32,043 differential instruction test cases. |
fighter_sdk/tools | Decompiles fighter animation-command (ACMD) and status scripts into human-readable C++ source so movesets rebuild in ~1 second. |
runtime/hostrt & os_threads | Implements module loading, guest memory layout, synchronization primitives, and C++ exception unwinding across lifted frames. |
runtime/nn*.c | Re-implements ~1,100 Nintendo Switch SDK entry points covering filesystem, threads, Opus audio, VP9 video, open-source fonts, accounts, and applets. |
runtime/nvn_vk*.c & mx_translate.c | API-level NVN-to-Vulkan renderer (with nvn_gl.c OpenGL fallback) that translates Maxwell GPU shader machine code to GLSL and SPIR-V on background threads. |
runtime/nnpad_sdl.c & nnpad_gca.c | 8-player hot-plug gamepad host via SDL3 plus direct WinUSB GameCube controller adapter polling exposed as virtual gamepads. |
Readable C++ fighter decompilation & sbergeron42/ssbu-decomp
Mechanical AArch64-to-C output runs at native x64 speed, but generated C register math is not pleasant to edit by hand. For modding and deterministic rollback verification, ssbu-recomp includes fighter_sdk/tools, which lifts fighter move scripts into clean, editable C++ on the user’s own PC:
| Milestone | Measured Coverage | Verification Method |
|---|---|---|
| Fighter ACMD scripts | 80,880 / 84,886 (95.0%) | Decompiled to readable C++ (ACMD(mario, game_attack11)) matching original behavior in differential tests; single fighter rebuilds in ~1 s. |
| Per-fighter status scripts | 20,256 / 23,834 (85.0%) | Verified offline across all 96 base + DLC fighter modules; 489 shared state-machine functions proven on live calls. |
| Deterministic 2,010-frame matches | 8 / 8 original fighters (100%) | Mario, Luigi, Link, Samus, Fox, Captain Falcon, Donkey Kong, and Ness produce identical per-frame state hashes against lifted code. |
| Matching full-binary decomp | sbergeron42/ssbu-decomp (20 stars) | Separate community matching-decompilation repository (created March 30, 2026, 4 forks) credited by ssbu-recomp; paused while static recompilation advances. |
Because every generated C and C++ file is produced locally from the player’s own 13.0.4 or 13.0.5 dump, zero Nintendo code or fighter scripts are stored in OpenSmash-Ultimate/ssbu-recomp or OpenSmash-Ultimate/OpenSmash-Ultimate.
Measured NVN-to-Vulkan performance
In ssbu-recomp’s published first-run benchmarks, background threads compile Vulkan pipelines from the game’s shader containers behind a loading barrier:
- 0 pipeline holds during fight frames across scripted fights on both discrete NVIDIA graphics and integrated Intel graphics.
- 59–60 FPS across an entire match measured on an integrated Intel Raptor Lake iGPU on Windows 10/11 x64.
- First-run background shader preparation uses ~2.5 GB of translated shader files and up to 0.9 GB of Vulkan pipeline cache over roughly 15 minutes of initial play.
Standalone Install SSBU.bat vs unified OpenSmash-Setup.exe
If you are setting up the game for the first time today, maintainers recommend the unified OpenSmash-Setup.exe (v0.3.0-alpha.3) from OpenSmash-Ultimate/OpenSmash-Ultimate, which already includes active online Quickplay, Battle Arenas, GameBanana mod management, and default online rollback. The standalone Install SSBU.bat inside OpenSmash-Ultimate/ssbu-recomp (latest prebuilt runtime runtime-6de107d, ssbu-runtime-6de107db53.zip, 4.9 MB) remains available for historical testing, 13.0.4 dump research, and C++ fighter_sdk experimentation.
Smash PC controllers & adapters
OpenSmash-Ultimate and WindowSmash support up to 8 concurrent players via SDL3, XInput, and native Wii U / Switch GameCube USB adapter polling (both Windows HID and Zadig WinUSB drivers, with analog L/R triggers and rumble):
| Hardware | Best For in OpenSmash-Ultimate | Input Path & Latency Notes | Link |
|---|---|---|---|
| Mayflash 4-Port GameCube Controller USB Adapter | 4-port GameCube controller play | Switch to Wii U mode for native 4-port GameCube input + rumble (second grey USB plug) | View on Amazon |
| Nintendo Switch Pro Controller | Native positional ABXY layout | Matches Switch button positions out of the box via SDL3 (`[device switchpro]`) | View on Amazon |
| GameSir Cyclone 2 | Low-latency 1000 Hz wireless Smash | Zero-drift TMR sticks, microswitch face buttons, XInput & Switch SDL3 modes | View on Amazon |
| 8BitDo Ultimate 2 Wireless | Desktop & SteamOS handheld dock | TMR sticks, charging dock, 2.4 GHz dongle + Switch / XInput mode switch | View on Amazon |
| Sony DualSense | PlayStation pad (`[device ps5]`) | Full SDL3 support with configurable per-device rumble and deadzone in `controllers.ini` | View on Amazon |
| Xbox Wireless Controller | Zero-setup Windows 10/11 XInput | Works natively for players 1–4; set `layout = labels` or `style = gamecube` if desired | View on Amazon |
As an Amazon Associate, this site earns from qualifying purchases.



Common questions
Has ssbu-recomp been discontinued?
No. OpenSmash-Ultimate/ssbu-recomp merged with OpenSmash-Ultimate/WindowSmash into OpenSmash-Ultimate/OpenSmash-Ultimate on October 21, 2026. Its full source lives in the ssbu-recomp/ subfolder of the unified repository while features are integrated into the shared runtime.
What is the difference between ssbu-recomp and sbergeron42/ssbu-decomp?
sbergeron42/ssbu-decomp (20 stars) aims for byte-matching human C++ decompilation of the original ARM64 binary for research. ssbu-recomp uses automated static recompilation to build a playable native PC port in minutes on user hardware, plus targeted C++ script decompilation for fighter movesets.
Why did antivirus software sometimes delete ssbu_game_eh_o1.dll in ssbu-recomp?
ssbu_game_eh_o1.dll (~500 MB) is compiled locally on your PC by Clang and has no commercial Authenticode signature. If Windows Defender quarantines it, restore the file in Windows Security Protection History, exclude your install folder, and click Resume in Install SSBU.bat to relink in minutes.