This project combines the original game logic reconstructed by the BattleShip project with a Nintendo DS backend. The result is a playable Nintendo DS port rather than a new Smash-style game written from scratch.
See PROJECT_GOAL.md for the authoritative product, fidelity, milestone, and definition-of-done contract.
Bring your own legally obtained North American Super Smash Bros. ROM; this repository contains no Nintendo assets or ROM-derived data.
Please support me on Patreon to help me continue this project! (slow progress for now) https://www.patreon.com/cw/Rockenrooster
The port has grown well past its first vertical slice (a one-minute Mario vs. Fox match on Dream Land with items off). Working today:
- Title screen and full menu navigation.
- All twelve fighters and all stages.
- The 1P campaign is playable start to finish.
- Four-fighter matches on one console (1 human + up to 3 CPUs; no actual DS multiplayer yet).
- All items.
Not yet finished:
- Stable 30 FPS everywhere. It is mostly there — matches with one to three fighters hold 30 FPS, but four-fighter matches can dip to around 20 FPS until the final optimization pass lands.
- Training mode (low priority), bonus-stage buttons, the ending scene and credits, the intro cinematic, and proper character unlocks.
- Wireless multiplayer, planned as the next major phase after optimization.
Known bugs and compromises:
- Random freezes still occur in some areas.
- Saffron City's garage door is always open.
- Transition/loading screens are much longer than on N64 — a couple of seconds of black between scenes instead of near-instant loads, because of the DS's limited RAM and storage bandwidth.
- Occasional audio stuttering during heavy matches and loading states.
- The game targets 30 FPS instead of the original's 60. The DS CPU is anemic compared to the N64 and has no coprocessors or FPU to offload work to, so a great deal of optimization was needed to reach 30 FPS at all.
Overall the project is about 75% complete; multiplayer and final optimization are the next big pushes. Gameplay video is captured on melonDS because it is easier to record, but the game works fine on real Nintendo DS hardware too.
git clone https://github.com/rockenrooster/Smash64DS_Port.git Smash64DS_Port
# Install the Windows prerequisites listed below, then open PowerShell 7.
pwsh -NoProfile -File .\Smash64DS_Port\build.ps1 -Rom C:\path\to\baserom.us.z64The script downloads pinned source dependencies, checks the ROM, regenerates the
required assets locally, and builds smash64ds.nds, the current P2 target.
One caveat: building from a completely clean checkout has not been verified end to end yet. If the build fails for you, please open an issue — clean-build support is part of the planned 1.0 release hardening.
The one-command build currently targets Windows. Install devkitPro's nds-dev
group and set DEVKITPRO and DEVKITARM, then install Git, Python 3, CMake,
GNU Make, PowerShell 7, and Visual Studio C++ Build Tools with a Windows SDK.
These are the exact versions used for the reference build. Other versions may work, but they may not reproduce the same ROM byte for byte.
| Component | Reference version |
|---|---|
| PowerShell | 7.6.3 |
| Git | 2.54.0 |
| Python | 3.10.11 |
| CMake | 4.3.3 |
| GNU Make | 4.4.1 |
| Visual Studio | Community 2026 18.7.4 |
| devkitARM | r67.1-1 |
| ARM GCC / binutils / newlib | 15.2.0 / 2.45.1-2 / 4.6.0.20260123-5 |
| devkitARM rules | 1.6.0-4 |
| libnds | 2.0.2-1 |
| calico | 1.2.0-1 |
| ndstool | 2.3.1-1 |
| devkitPro general-tools | 1.4.4-1 |
| Ninja | 1.12.1 |
The required ROM is the big-endian NTSC-U v1.0 release (NALE), exactly
16,777,216 bytes with SHA-1
e2929e10fccc0aa84e5776227e798abc07cedabf. Byte-swapped .v64 and
little-endian .n64 dumps are rejected.
The reference toolchain builds smash64ds.nds, and the script reports the
output's size and SHA-256 when it finishes. A byte-exact reference identity is
not pinned for the P2 ROM yet — the pinned identity in DECOMP_PIN.txt still
describes the frozen P1 artifact smash64ds-battle-playable-hwtri.nds — so
treat small differences as expected until the P2 ROM is formally released.
- BattleShip, the Super Smash Bros. 64 decompilation-based port that supplies the original game-code foundation.
- ssb-decomp-re, the pinned decompilation source used by the build.
- Hydr8gon's sm64 Nintendo DS port, used as an architectural reference for Nintendo DS hosting.
- libultraship and Torch, used by BattleShip's asset extraction tools.
- devkitPro and the libnds/calico contributors for the Nintendo DS toolchain and runtime libraries.
You must supply your own legally obtained Super Smash Bros. cartridge dump. Nintendo game assets, extracted archives, ROMs, and generated ROM-derived files are deliberately excluded from this repository and ignored by Git. The build creates them only on your computer.
Super Smash Bros., Nintendo 64, and Nintendo DS are trademarks of their respective owners. This is an unofficial fan project and is not affiliated with or endorsed by Nintendo or HAL Laboratory.
