OpenMelee
Work in progress · not a polished release
OpenMelee logo

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.

Download the launcher → View on GitHub

Requires your own dump of a retail disc (NTSC-U 1.02). Expect crashes and rough edges — see the issue tracker.

01 · the architecture

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.

01 · source

Decomp source

doldecomp/melee — the game's original C, matched function by function.

02 · compat layer

Dolphin SDK, reimplemented

dolphin/os gx ax card

Plus retail-data layout translation, so files read off your own disc land where the game expects them.

03 · backend

Aurora

Windowing, GX graphics translation, audio, pad input, DVD and memory-card emulation.

04 · output

Native binary

One executable, your CPU's instruction set, your GPU's driver.

02 · the difference

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.

 
OpenMelee
Dolphin
Execution
Game code compiled to your CPU's native instructions
PowerPC code interpreted or JIT-recompiled at runtime
Hardware
SDK calls answered by native code (Aurora)
Full GameCube hardware emulated in software
Modding
Edit and recompile the game's own C source
Patches, codes, and injected assembly
Debugging
Ordinary tooling — gdb, sanitizers, profilers
Emulator-side debugger over guest memory
Maturity
Early. Crashes, missing effects, no netplay
Mature, accurate, with netplay and rollback
Game data
Your own disc dump, required
Your own disc dump, required

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.

03 · where it stands

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 playable

Primary 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 playable

Cross-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 playable

Boots, 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 attempted

No port work yet; findings from the Android bring-up are parked in-repo for whoever starts it.

Android · open items

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

3/3
ported platforms reach real gameplay — Linux, Windows, Android
4/4
presets configure and link under ASan/UBSan — used routinely for bug hunting, including on-device on Android
215/215
automated Windows sweep runs reach gameplay — every mode, fighter, stage, item and Pokémon
04 · get it running

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.

  1. Step 1 — pull submodules
    git submodule update --init --recursive
  2. Step 2 — configure
    tools/configure.sh
  3. 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.

05 · common questions

FAQ

Why do this when other ports already exist?

This started about a month before the decompilation hit 100%, back when it was at 85% — and the work wasn't getting thrown away just because someone else beat me to the punch. There's loose planning toward some form of netplay, and maybe mod support with a full set of tooling. But for now it's been as much a research project: testing the viability of AI code models driving a recompilation project end to end, using a mix of Claude Fable 5, Opus 5, GPT-5.3 and GPT-6 Astra.

Is there a download?

Yes — download the launcher. The desktop Launcher (with release, nightly and dev channels) handles getting the game running, and there's a standalone Android Builder. Either way you supply your own disc dump — the first-launch setup flow verifies it locally, so you don't need a compiler.

Is it faster than Dolphin?

In principle native execution costs far less CPU than emulation, but no meaningful performance claims should be made yet — correctness comes first, and the graphics path is still being filled in.

Can I play netplay or use rollback?

Soon™

Can I use mods?

Soon™?

Why is the build so slow?

Compilation is serialized on purpose so low-RAM machines don't get OOM-killed partway through. If you have memory to spare you can parallelize it yourself — see the build script.

How can I help?

Reproduce and file crashes with a backtrace, fill gaps in the compat layer, or work upstream on the decomp itself. Precise bug reports are worth as much as patches.

06 · upstream

Straight from the source

This project stands on other people's reverse-engineering work. Go read it.

OpenMelee repository →
Source, issue tracker, build scripts.
doldecomp/melee →
The decompilation this port compiles. Years of matched-function work.
Aurora →
The native backend: window, GX translation, audio, pad, DVD and card.