Melee, Natively.
No emulator required.
OpenMelee builds the doldecomp/melee decompilation against a from-scratch Dolphin SDK compatibility layer and the Aurora backend, producing a real native PC binary. No emulator, no recompilation at runtime — just the game's own C code, compiled for your machine.
Requires your own dump of a retail disc (NTSC-U 1.02). Expect crashes and rough edges — see the issue tracker.
How it works
Dolphin interprets or JIT-compiles PowerPC machine code and emulates GameCube hardware. OpenMelee does neither: the decompiled source is compiled for your CPU, and every SDK call it makes is answered by native code.
Decomp source
doldecomp/melee — the game's original C, matched function by function.
Dolphin SDK, reimplemented
Plus retail-data layout translation, so files read off your own disc land where the game expects them.
Aurora
Windowing, GX graphics translation, audio, pad input, DVD and memory-card emulation.
Native binary
One executable, your CPU's instruction set, your GPU's driver.
OpenMelee vs. Dolphin
The honest comparison: Dolphin is a mature, complete emulator and today it is the better way to actually play. OpenMelee is a different kind of artifact — and that difference is the point.
Want to play a tournament set tonight? Use Dolphin. Want to read, change, and rebuild the game as source code on a machine that runs it directly? That's this project.
Status
An honest snapshot, current as of . All three ported platforms now reach real gameplay. Linux is the primary target and the reference platform; Windows and Android play too, but are far less tested.
Platforms
Linux
x86-64 playablePrimary target and reference platform. Classic and Adventure complete end to end; VS, Event Match, Multi-Man, Home-Run Contest, Target Test, Tournament and the trophy modes all reach gameplay.
Windows
x86-64 playableCross-compiled from Linux (clang targeting the MSVC ABI). Boots, menus and fights at 60 fps on Windows 11; a 215-run automated sweep reaches gameplay in every mode, fighter, stage, item and Pokémon. Far less hand-tested than Linux.
Android
arm64 playableBoots, creates and loads save data, and plays VS and 1P matches with KOs — plus Event Match and the trophy modes — with on-screen touch controls. One afternoon of hand testing only.
macOS
not attemptedNo port work yet; findings from the Android bring-up are parked in-repo for whoever starts it.
Playable, with three known crashes/gaps still open: the save isn't written back to disk after play, unpausing a match can crash the camera, and the results screen can crash on a bad callback pointer.
The recurring bug class behind the non-Linux ports: the decomp stores host pointers in 32-bit fields, which is lossless on desktop (non-PIE, low load address) and false under Android's mandatory PIE. It's latent on every platform — not Android-specific code being wrong — and is worked through subsystem by subsystem.
Where the game stands
What works today
- VS, Training, Event Match, Multi-Man, Home-Run Contest, Target Test and Tournament — all reach gameplay.
- Trophy Gallery, Collection and Lottery — working after a long run of trophy-system fixes.
- Classic mode — completes end to end.
- Adventure mode — completes end to end, Giga Bowser included.
- Most stages playable; the stage matrix is tracked in-repo.
- Audio — native SFX and music path, with a long list of retail-accuracy fixes landed.
- Memory card save and load, on desktop.
Still rough
- Crashes remain in long soak runs and a few specific paths — e.g. a barrel can spawn a Goomba and crash the game.
- Assorted per-character and per-effect bugs; some VFX missing or wrong.
- Two Windows-only gameplay bugs open.
- Android: the save isn't written back after play, unpausing can crash, and the results screen can crash (see above).
- The live list is the issue tracker — the site does not try to mirror it.
Under the hood
Build & run
The easy way: download the launcher. It handles the build automatically and lets you pick a release, nightly or dev channel. To make a developer build yourself instead, clone the repository and run three commands in order.
-
Step 1 — pull submodules
git submodule update --init --recursive -
Step 2 — configure
tools/configure.sh -
Step 3 — build
tools/build.sh
Builds are serialized on purpose. Compiling the decomp in parallel can exhaust memory on modest hosts, so build.sh runs one translation unit at a time. It's slower; it finishes.
Bring your own disc. On first launch, OpenMelee opens a native file picker for your own dump of a supported copy (currently NTSC-U 1.02, uncompressed .iso/.gcm), verifies it against known-good hashes, and launches. Everything happens locally; unsupported or modified images are rejected.
FAQ
Straight from the source
This project stands on other people's reverse-engineering work. Go read it.
Legal & game assets
No copyrighted game data is distributed by this project. The repository contains source code only — no ROMs, no disc images, no textures, models, audio, or other assets from the retail game.
To run OpenMelee you must supply files dumped from a retail copy of the game that you own. Obtaining them is your responsibility, and local law on personal backups varies.
OpenMelee is an independent, unofficial reverse-engineering effort. It is not affiliated with, authorized by, endorsed by, or sponsored by Nintendo or any of its subsidiaries. All trademarks are the property of their respective owners.