Static recompilation · GPL-3.0 · Windows x64

OPENSMASH ULTIMATE

Recompiled, not emulated. The Switch game's code, translated to C and compiled into a real Windows program. Built on your PC, from your own copy.

  • Vulkan renderer
  • Game 13.0.4 / 13.0.5
  • One-click installer
  • No game files included

01 / What it is

NOT AN
EMULATOR.

OpenSmash-Ultimate turns the Nintendo Switch version of Super Smash Bros. Ultimate into a normal Windows program, ahead of time. There is no CPU interpreter and no JIT running while you play: the console's system libraries (files, audio, video, input, threads, graphics) are re-implemented by the project's own runtime.

  1. AYour dumpThe game you own, dumped from your console. Never in this project.
  2. BAArch64 → COne C function per game function, checked against a CPU emulator on 32,043 instruction cases.
  3. CCompiled for Windowsclang builds a game DLL; the runtime brings the console's services and NVN on Vulkan.
  4. DPlayA resizable 16:9 window, your GPU, any controller. Saves stay on your PC.

02 / On screen

RUNNING
NATIVELY.

A match running natively on Windows
A full match, native, 59–60 fps
The one-click installer window during a build
The one-click installer
The in-game settings menu opened with F1
In-game settings menu (F1)
The game's menus running natively
Menus, natively on Windows
Fighter move script as readable C++ source
Fighters as readable C++
32,043instruction tests, 0 differences from the original CPU behaviour
~1,100console system-library entry points re-implemented
95%of fighter move scripts turned into equivalent C++ source
59–60fps in fights, measured on an NVIDIA GPU and an Intel iGPU

03 / Features

WHAT'S
IN THE BOX.

  • Done

    Native, not emulated

    The game's AArch64 machine code is translated to C once and compiled for x64. No interpreter, no JIT at run time.

  • Done

    Vulkan renderer

    The game's graphics API (NVN) translated to Vulkan 1.3, with an OpenGL fallback. Resolution scale, vsync modes, a low profile for integrated GPUs.

  • Done

    Game 13.0.4 and 13.0.5

    Base game with the 13.0.4 or 13.0.5 update. The build tells them apart and refuses anything else.

  • Done

    Shaders loaded at start

    Shaders are prepared from the game's own shader containers by background threads: 0 pipeline holds in fight frames in our first-run tests.

  • Done

    One-click installer

    No Visual Studio needed, a private Python, finds your keys and firmware in emulator folders, applies the update and DLC, every download hash-checked, resumable.

  • Done

    In-game settings menu

    F1 or a controller's Home button: display, graphics, window, volume, full key and button remapping, add-ons, language, log and a stats overlay (F2), over the running game. On by default.

  • Done

    Full remapping

    Every key and button, per controller or per controller kind, with dead zones, trigger threshold and a live input test. F2 shows a stats overlay.

  • Done

    On-screen keyboard

    Type names with a controller on a keyboard drawn over the game; the PC keyboard works too.

  • Experimental

    Online play

    The game's own Local Wireless mode over a network: same LAN, a room code between two PCs, or a lobby server. Off by default.

  • Experimental

    Run-ahead

    Runs one frame ahead to cut a frame of input delay, bit-exact in tests. Off by default; not fast enough on every PC yet.

  • In progress

    Rollback netcode

    Our own network layer with rollback. Input queues: done. Snapshot ring: done. Rollback simulation and protocol: next.

  • In progress

    Fighters as C++ source

    Fighter status scripts decompiled to readable, editable C++ (85% published), each proven equal to the original in differential tests.

Done works and was tested on the development PC   Experimental works, off by default or not widely tested   In progress being built

04 / Install

THREE
STEPS.

  1. 01

    Download

    Get the repository from GitHub (Code, Download ZIP) and unpack it anywhere.

    Open the repository →
  2. 02

    Install

    Double-click Install SSBU.bat (if Windows warns about a downloaded file: More info, Run anyway). In the window pick your game package (.nsp / .xci / .nsz), the 13.0.4 or 13.0.5 update and your prod.keys — or let it find them in your yuzu / Ryujinx folders — and press Install. No firmware needed. Answer Yes once when Windows asks for administrator rights (the LLVM compiler). About 45 minutes on a fast PC; if it stops, run it again and it resumes.

  3. 03

    Play

    Double-click Play SSBU.bat or the desktop shortcut. Your saves go to build\saves.

You need

  • Windows 10 or 11, 64-bit
  • A GPU with a Vulkan 1.3 driver
  • About 25 GB of free disk (8 GB for the build + up to 17 GB for the dump made from your packages)
  • A CPU with AVX2 (most CPUs from 2013 on)
  • Your own copy of the game (13.0.4 or 13.0.5), dumped from a console you own

Try it with a friend Experimental

PLAY WITH
A FRIEND.

  1. 01

    Both install

    Each of you follows the three steps above on your own PC, with your own copy of the game. Use the same game update (both 13.0.4 or both 13.0.5) and download the project on the same day (the same version of it), then start the game once from the desktop shortcut.

  2. 02

    Turn online on

    In the game press F1 (or a controller's Home button) → Experimental → Online play: ON → mode Lobby server (already filled in) → Restart the game now. If Windows asks about the network, allow it.

  3. 03

    Create & join

    One of you: main menu → Local Wireless → Create Room. The other: Local Wireless → Rooms List → pick the room. The host accepts the request, you both pick fighters and stage, the host starts with L + R.

If the room does not show up

  • Check that both of you are on the same game update and project version.
  • Look at the lobby status on this page: it must say Online.
  • Same house? Pick Same network (LAN) on both PCs instead.
  • Still nothing: one of you picks Host a room and sends the ROOM CODE shown there; the other picks Join with a code and types it.
  • Press F1 → Log → Export and send the file on Discord.

05 / Online Experimental

PLAY
ONLINE.

The game's own Local Wireless mode, carried over a network. Create a room, the other player finds it in the Rooms List and joins. No extra program.

  • LANSame network, no server: rooms are found automatically.
  • Room codeHost and join over the internet with a code, no server.
  • LobbyA small open-source lobby server; players need no port forwarding.

Off by default: switch it on in the game with F1 → Experimental → Online play. Our public lobby is in Milan. Tested with two game instances on one PC; your matches between two PCs over the internet are the first real tests. No encryption yet: play with people you know. Delay-based for now; rollback is in development.

How to turn it on →

Lobby status

Checking…
Players online
–
Rooms
–
Lobby
–
Uptime
–
Version – Last update –

06 / Roadmap

WHAT'S
NEXT.

  1. 01

    Rollback online

    Own network layer: fight state as data, logic-only frame stepping. Input queues and snapshot ring are done; rollback simulation and the protocol come next.

    In progress
  2. 02

    Zero input delay

    Run-ahead made to fit the 16.7 ms frame on every PC, so you feel the game as fast as it can be.

    In progress
  3. 03

    Fixed 60 fps

    Fight frames are already hold-free in tests; every mode at a steady 60 is the goal.

    In progress
  4. 04

    Fighters 100% source

    Every fighter's scripts as readable C++, each proven equal to the original. 85% published today.

    In progress
  5. 05

    Items as source

    Items and stages turned into readable source too, after the fighters.

    Planned
  6. 06

    Mods as single files

    Drop one file in the characters folder and the fighter is in the game.

    In progress

07 / Tools

BUILT
TO MOD.

  • Lobby server

    Run your own online lobby: one Python file, standard library only, with a status endpoint.

    Soon
  • Fighter SDK

    Decompile fighter scripts to C++, edit, rebuild a fighter in about a second; hook any game function from a mod DLL.

    Soon
  • Single-file packager

    Pack a fighter mod into one file that you drop into the characters folder.

    Soon
  • Mod manager

    Turn mods on and off and keep them in sync with your build.

    Soon
  • Frame compare

    Compare two builds frame by frame from their per-frame state hash logs.

    Soon

08 / FAQ

STRAIGHT
ANSWERS.

Is this an emulator?

No. There is no CPU interpreter or JIT. The game's code is translated to C ahead of time and compiled for Windows; the console's services are re-implemented by the project's runtime.

Does it include the game?

No. The project contains no game code, no game assets, no keys and no firmware, and does not link to any. Everything derived from the game is generated on your PC from your own dump and never leaves it.

Do I need to own the game?

Yes. You need your own copy of the game (13.0.4 or 13.0.5) and a console you own to dump it, its keys and firmware. That is the one step the project cannot do for you.

Why do I have to build it? Why no download?

The build contains code derived from the game, which cannot be distributed. The installer generates it on your PC from your dump, in one click.

Can I play online?

Experimentally: Local Wireless over a LAN, with a room code or through a lobby server. It is off by default and delay-based; rollback netcode is in development.

Linux or Steam Deck?

Not yet. The runtime is Windows-only today; other platforms are on the roadmap.

How do I use my own save file?

With the game closed. The game keeps its saves in build\saves\save\ (or <your install location>\saves\save\ if you chose one in the installer), as a save_data folder holding system_data.bin, mii, spirits and stage. Get your save as a folder that contains save_data: from your Switch with JKSV or Checkpoint, from yuzu / Eden / suyu (right-click the game, Open Save Data Location) or from Ryujinx (right-click the game, Open User Save Directory). Rename build\saves\save to save_old as a backup, create a new empty build\saves\save and copy your save_data folder into it (you should have build\saves\save\save_data\system_data.bin), then start the game. Folders named save.work.<number> are temporary session files: leave them or delete them while the game is closed.

What is the licence?

GPL-3.0 (version 3 or later), every file. You can read, change and share the code under the same terms.

Was this built with AI?

Yes, openly: almost all code was written by AI coding agents directed by the maintainer. Every claim is backed by a test or a measurement.

Join the community

Testers with other GPUs and controllers, and people who know the game's internals or the modding tools, are very welcome.