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
Macro view of a multi-core x86-64 processor and integrated GPU silicon package
AVX2 / SSE4.2 CPU compiler pipeline and 40,000-shader ahead-of-time cache

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):

SubsystemTechnical Function & Measured Scope
tools/extractExtracts 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/toolsDecompiles fighter animation-command (ACMD) and status scripts into human-readable C++ source so movesets rebuild in ~1 second.
runtime/hostrt & os_threadsImplements module loading, guest memory layout, synchronization primitives, and C++ exception unwinding across lifted frames.
runtime/nn*.cRe-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.cAPI-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.c8-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:

MilestoneMeasured CoverageVerification Method
Fighter ACMD scripts80,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 scripts20,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 matches8 / 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 decompsbergeron42/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.

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):

HardwareBest For in OpenSmash-UltimateInput Path & Latency NotesLink
Mayflash 4-Port GameCube Controller USB Adapter4-port GameCube controller playSwitch to Wii U mode for native 4-port GameCube input + rumble (second grey USB plug)View on Amazon
Nintendo Switch Pro ControllerNative positional ABXY layoutMatches Switch button positions out of the box via SDL3 (`[device switchpro]`)View on Amazon
GameSir Cyclone 2Low-latency 1000 Hz wireless SmashZero-drift TMR sticks, microswitch face buttons, XInput & Switch SDL3 modesView on Amazon
8BitDo Ultimate 2 WirelessDesktop & SteamOS handheld dockTMR sticks, charging dock, 2.4 GHz dongle + Switch / XInput mode switchView on Amazon
Sony DualSensePlayStation pad (`[device ps5]`)Full SDL3 support with configurable per-device rumble and deadzone in `controllers.ini`View on Amazon
Xbox Wireless ControllerZero-setup Windows 10/11 XInputWorks natively for players 1–4; set `layout = labels` or `style = gamecube` if desiredView on Amazon

As an Amazon Associate, this site earns from qualifying purchases.

Platform-fighter esports tournament venue packed with spectators watching a main-stage bracket match
Competitive Smash Ultimate bracket crowd and 60 FPS tournament stage pacing
Nintendo GameCube controller showing octagonal analog gate, C-stick, L/R analog shoulder triggers and A/B/X/Y layout
Native GameCube controller input via 4-port Wii U USB adapters (WinUSB / HID) with analog L/R triggers
Desktop gaming PC workstation with dual monitors and tempered glass chassis
Windows 10/11 x64 desktop build host for AArch64-to-C static recompilation, Direct3D 11 and Vulkan

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.