Build guide · Windows releases · How it works · Netplay · DLC & unlocks
The project
WindowSmash translates the game's AArch64 CPU code into C ahead of time, compiles it for Windows x64, and links it with a purpose-built runtime. That runtime supplies the operating-system services, controller input, file access, audio interfaces, graphics translation, and networking the game expects.
The result is a locally built Windows executable backed by your own extracted game data. The original game logic still comes from your game files; this repository provides the recompiler and runtime source.
Source tree and runtime releases are separate. The Git source tree contains no game executable, recompiled game functions, assets, firmware fonts, keys, or saves. A prebuilt Windows runtime is available under Releases; supply your own matching game data and fonts using the runtime setup guide.
What is inside
| Component | What it does |
|---|---|
| Ahead-of-time recompiler | Discovers guest functions, lifts AArch64 and NEON instructions to C, and incrementally compiles module code with Clang. |
| Native Windows runtime | Maps module images, resolves symbols, dispatches guest calls, and implements selected console services with Windows APIs. |
| Direct3D 11 renderer | Processes guest GPU commands, translates Maxwell shaders to HLSL, and manages textures, render targets, and compute work. |
| Asynchronous shader compilation | Uses dedicated compiler threads, a persistent DXBC cache, and a separate D3D device to warm driver compilation. |
| Local Wireless relay | Carries the game's existing Local Wireless traffic over a UDP relay, with host/join launchers and a standalone relay option. |
| Developer tools | Includes instruction and function differential tests, disassembly helpers, symbol lookup, archive readers, captures, and profiling tools. |
Status
The current implementation targets game version 11.0.0 and Windows x64. The local development build has reached menus, rendered gameplay, loaded fighter modules natively, and exercised the Local Wireless connection path. It is an experimental port, not a broadly validated release.
| Area | Current position |
|---|---|
| CPU and loading | AArch64-to-C translation, native symbol replacements, and deferred loading of compiled fighter modules are implemented. |
| Graphics | D3D11 rendering and shader caching are implemented. Shader translation, driver behavior, and first-use compilation remain compatibility risks. |
| Controllers | One local player per instance, using the first XInput controller or the keyboard. |
| Audio and movies | Optional static libopus and libvpx integration; functionality depends on the build configuration. |
| DLC | Installed-content reporting and module extraction support the content present in the supplied game version. The 11.0.0 target contains fighters through Pyra/Mythra. |
| Multiplayer | Relay-backed Local Wireless is implemented. Complete two-PC matches and the full DLC/stage roster have not been comprehensively verified. |
There is no Nintendo online-service integration, general Switch compatibility claim, verified performance target, or bundled game-data download.
Download and run
Get the Windows x64 runtime →
Extract the runtime ZIP, run Configure Game Data.bat to select your own compatible RomFS and firmware fonts, then use Play SSBU.bat. The runtime ZIP has the compiled files needed to execute the game; it excludes source, debug maps, object files, caches, saves, keys, and game-data archives. A compiler and Python are not required to play.
See runtime setup for fresh installs and updates. Developers can build the runtime themselves using the next section.
Build your copy
You will need Windows 10/11 x64, an AVX2/FMA/F16C-capable CPU, a D3D11-capable GPU, Python 3.14, and a Visual Studio C++/Clang toolchain. Keep generous free disk space: game data, generated C, object files, and linker maps are separate allocations.
git clone https://github.com/SNO2207/WindowSmash.git cd WindowSmash py -3.14 -m pip install -r requirements.txt
Prepare your ExeFS, patched RomFS, and firmware fonts as described in the complete build guide. Then extract the embedded fighter modules and build:
python tools/arc.py nro python tools/recomp.py all dump/exefs --out build --jobs 16
Choose a job count appropriate to your CPU and available memory. The output is build/ssbu.exe; generated files and game inputs remain ignored by Git.
Play and connect
Multiplayer setup
- Put the same WindowSmash release/build and game version on both PCs. Configure each PC's own data and keep separate player IDs.
- The host runs Host SSBU Netplay.bat, chooses a room name, permits incoming UDP, and shares the displayed address.
- The friend runs Join SSBU Netplay.bat, enters that address and the same room name.
- Both open Local Wireless in-game. The host creates a room; the friend selects it and the host accepts.
Complete multiplayer setup, VPN/port-forwarding options, and troubleshooting →
| Launcher | Use |
|---|---|
Play SSBU.bat |
Start an offline session. |
Host SSBU Netplay.bat |
Run the relay and host a Local Wireless room. |
Join SSBU Netplay.bat |
Connect to a host or a standalone relay. |
Unlock All Fighters.bat |
Back up and edit your own compatible save while the game is closed. |
For multiplayer, use matching game versions and build revisions, enter the same relay room name, and open Local Wireless in the game. See the networking guide for firewall, UPnP, VPN, and standalone-relay details.
Keyboard and controller controls
The first XInput controller maps face buttons by physical position. On an Xbox controller, B corresponds to Nintendo A.
| Input | Mapping |
|---|---|
| Left stick | Arrow keys |
| A / B / X / Y | Z / X / C / V |
| L / R | A / S |
| ZL / ZR | Q / W |
| Plus / Minus | Enter / Backspace |
| Right stick | I / J / K / L |
| Overlay / details / screenshot | F1 / F2 / F3 |
Under the hood
flowchart LR
A[Your extracted game modules] --> B[AArch64 / NEON to C]
B --> C[Clang: Windows x64]
C --> D[Local executable]
E[WindowSmash runtime] --> D
F[Your RomFS and fonts] --> D
D --> G[Direct3D 11 / XInput / Windows services]
The technical guide explains the CPU state model, function discovery, relocation and symbol binding, service shims, GPU command path, shader compilation fix, relay protocol, save handling, and the role of every tool in tools/.
Working on WindowSmash
python -m pip install -r requirements-dev.txt python -m unittest discover -s tests -v
The source-only tests exercise packaging and save-editing behavior with synthetic fixtures. They require no game data and do not launch the game. Windows PowerShell is used for the unlock-tool tests. Game-backed instruction and function differential tests are documented separately in the technical guide.
When reporting a problem, include the game version, GPU/driver, build revision, reproduction steps, and a short relevant log excerpt. Review logs for local paths, player names, and network addresses before posting. Keep extracted content, generated game code, keys, and saves out of issues and pull requests.
Repository boundaries
runtime/ and tools/ are source. build/, dump/, data/, save/, caches, captures, and local bundles are generated or private inputs and are ignored. The local full-install bundler is for managing your own build; public runtime releases use the smaller file set described in runtime setup.
See third-party notices for attribution and licensing information. No project-wide license has been specified for the remaining source. Super Smash Bros. Ultimate and related names belong to their respective owners. WindowSmash is an independent project and is not affiliated with Nintendo.