What it is
melee-pc recompiles the C source recovered by doldecomp/melee for x86-64 and ARM64, on top of aurora (a GameCube GX/OS/PAD/DVD/CARD compatibility layer with a WebGPU renderer) and SDL3. The game logic runs natively at 60 Hz; the graphics go through Vulkan, Direct3D 12/11 or Metal.
Nothing from the game ships here. Textures, models, music, even the two HSD font atlases are read out of the disc image you supply at boot. The repository and the release archives contain only the port code and third-party libraries.
It is a beta, for testing. Expect crashes. Online play with rollback netcode is planned and not implemented yet. Every game mode runs -- VS, 1-P Classic / Adventure / All-Star, Training, Stadium, Trophies, Event Match -- alongside PC extras like internal resolution up to 10x, a 16:9 combat camera, post-processing shaders, gamepad remapping, custom soundtracks and HD texture packs. Feature by feature, including what is only half done, the status table in the README is the authoritative list; this page does not keep its own copy.
Download
Grab the file for your platform from the latest release. Every build is produced by the public CI from the tagged source.
| Platform | File | Notes |
|---|---|---|
| Linux x86-64 | Melee-x86_64.AppImage / melee-linux-x86_64.tar.gz | Needs a Vulkan driver. chmod +x the AppImage, or run run.sh in the tarball. |
| Linux ARM64 | Melee-aarch64.AppImage / melee-linux-aarch64.tar.gz | Raspberry Pi 5, Asahi Linux, RK3588 boards, ARM handhelds. |
| Windows x86-64 | Melee-Windows-x86_64.zip | Extract, run melee.exe. Keep the DLLs and resources/ beside it. |
| Windows ARM64 | Melee-Windows-arm64.zip | Native build for Snapdragon X / Surface Pro. |
| macOS | Melee-macOS-arm64.zip / Melee-macOS-x86_64.zip | Apple Silicon tested; Intel built but untested. Ad-hoc signed: right-click > Open on first launch. |
| Android arm64 | Melee-Android-arm64.apk | Signed release build; allow installs from unknown sources. |
| iOS arm64 | Melee-iOS-arm64.ipa | Sideload with AltStore, Sideloadly or TrollStore. |
Requirements
- A disc image you dumped yourself from your own copy of Super Smash Bros. Melee, USA revision 2
(NTSC-U 1.02, game ID GALE01) as
.iso,.gcm,.cisoor.rvz. A Europe (PAL, GALP01) image boots experimentally. Japanese discs, 1.00/1.01 revisions and modified builds (20XX, UnclePunch, …) do not work. - GPU: Vulkan 1.1 on Linux and Android; Direct3D 12 (feature level 11_0) or Vulkan on Windows; Metal on macOS/iOS. A Direct3D 11 fallback is built for the Intel Haswell iGPUs (HD 4000/4400/4600, 2012–2014 laptops) that Dawn refuses on D3D12, but it has not been verified on real hardware, see the FAQ.
- CPU/RAM: any 64-bit x86 or ARM CPU from the last decade; 2 GB of RAM is enough (the asset cache scales itself down on low-memory devices).
- Android: Android 8.0 (API 26) or newer, 64-bit ARM, Vulkan-capable GPU. Android 9 phones that only expose OpenGL ES are not supported.
- Controllers: any gamepad SDL3 knows (Xbox, PlayStation, Switch Pro, …), or the keyboard. An official Wii U / Switch GameCube adapter is read directly for raw stick and trigger values; in PC mode it is just another gamepad.
Setup in five steps
- Dump your disc. Use a homebrew-enabled Wii or GameCube with CleanRip to read your own Melee disc to an SD card. The result should be about 1.36 GB (1,459,978,240 bytes).
- Download and unpack the build for your platform from the table above. On Windows, extract the whole zip into its own folder; on macOS right-click > Open the first time.
- Start the launcher (double-click
melee.exe/ the AppImage /Melee.app, or open the APK) and choose your image with Select disc. - Verify the disc. Press Verify. The launcher hashes the image with SHA-1 and compares it with the Redump entry
(
d4e70c064cc714ba8400a849cf299dbd1aa326fc). A green check means the exact supported disc. Unverified images still play, but if something breaks, the first question will be "did it verify?". - Play. Press Play Melee. In game, F1 (or Back/Select on a pad) opens the settings overlay for resolution, fullscreen, audio, cheats and controller mapping. The game pauses underneath.
Command line users: ./Melee-x86_64.AppImage /path/to/melee.iso or melee.exe C:\path\to\melee.iso skips the launcher.
Default keyboard layout
| GameCube | Key | GameCube | Key |
|---|---|---|---|
| Control stick | Arrow keys | C-stick | I J K L |
| A / B | X / Z | X / Y | C / V |
| L / R | Q / E | Z | Tab |
| Start | Enter | D-pad | T F G H |
Gamepads are mapped automatically and can be remapped per device in the Controls tab of the launcher or the F1 overlay: pick the port, pick a GameCube button, press the physical one.
Where your settings live
Everything (selected disc, graphics, audio, cheats) is one text file, launcher.cfg. Controller bindings sit beside it in per-device .controller files; memory cards, music/ and textures/ too.
| OS | Folder |
|---|---|
| Windows | %APPDATA%\melee-pc\ (usually C:\Users\<you>\AppData\Roaming\melee-pc\) |
| Linux | ~/.local/share/melee-pc/ |
| macOS | ~/Library/Application Support/melee-pc/ |
| Android | The app's private storage; use the in-app settings. |
Delete launcher.cfg to reset every setting. The dawn_cache.db next to it is the compiled-shader cache; deleting it is harmless but brings back the first-use stutter.
FAQ
Where do I get the game? Can you send me the ISO?
No. melee-pc contains no Nintendo assets and we will not link, host, or help you find a disc image. The only supported way to obtain one is to dump the disc you own (see Setup). Requests for ROMs on the issue tracker or Discord are closed and removed.
Which disc version do I need?
USA revision 2 — NTSC-U 1.02, game ID GALE01. This is the only version the code was recovered from, and the only one the disc verifier has a reference hash for. A PAL (GALP01) image also boots, experimentally: it runs the USA game code on the PAL files, with English (UK) text and at 60 Hz. PAL images always show as "unverified" because there is no reference hash for them.
1.00 and 1.01 discs, the Japanese release, and any modified image will not work. If you own a 1.00/1.01 US disc you are out of luck for now.
Sources: README, release notes.
Can I play 20XX, UnclePunch Training Pack, Slippi Nightly, or another modded ISO?
No. Those projects patch the PowerPC executable on the disc. melee-pc does not run that executable at all: it is the game's C source compiled for your CPU, so assembly patches and Gecko codes have nothing to attach to. A modded image will crash at boot or verify as unknown. Features from those mods (UCF, training tools, …) have to be reimplemented natively, and some are on the roadmap.
Source: #28.
Verify says "unverified" or a different hash. Is it broken?
Verification reads the whole image through nod (compressed .ciso/.rvz included) and compares the SHA-1 with Redump's d4e70c064cc714ba8400a849cf299dbd1aa326fc, 1,459,978,240 bytes. A mismatch means the image is not a clean NTSC-U 1.02 dump: another revision or region, a scrubbed/trimmed rip, or a modded build. PAL is expected to be unverified. Unverified images still launch, but bug reports about them are triaged last.
Sources: README, #28.
Windows says "Windows protected your PC" / SmartScreen blocks melee.exe.
The executable is not code-signed (certificates cost money and this is a hobby beta), so SmartScreen warns on first launch. Click More info > Run anyway. If an antivirus quarantines the exe, restore it and add the folder to its exclusions. You can always rebuild from source if you would rather not trust a binary.
Windows: the launcher works but the game closes the moment I press Play.
First, update. Every release from v0.1.4 to v0.1.6 had one variant of this and each was fixed in the next build: Failed to commit memory for MEM1 strictly under 4GB (v0.1.5, fixed in v0.1.6) and a null write inside melee.exe right after Initialized 0x1000000 bytes of ARAM (v0.1.6, fixed in v0.1.7).
Still crashing on the latest release? Run RUN-AND-LOG.bat from the game folder instead of melee.exe. It sets verbose logging, runs the game, and leaves melee-pc.log, melee-pc-env.log and melee-frames.log beside the exe. Attach melee-pc.log to a bug report. Even the plain melee.exe writes melee-pc.log next to itself on Windows, flushed line by line, so it survives a crash.
Windows: DXGI_ERROR_DEVICE_HUNG / "Device lost" on an older Intel laptop.
Intel HD 4000/4400/4600 (Haswell) iGPUs cannot use Direct3D 12 here: Dawn refuses D3D12 on Intel Gen7 outright and Intel never shipped a Windows Vulkan driver for them, so Auto is meant to land on Direct3D 11. That fallback is built but nobody has confirmed it working on such a machine yet, so a report with a log from one is genuinely useful. A DXGI_ERROR_DEVICE_HUNG in the log on one of these machines is Intel's last Haswell driver (20.19.15.x, from 2020) timing out the GPU mid-match — Pokémon Stadium transformations are a reliable trigger — and there is no further API to fall back to on that hardware.
The graphics backend can be pinned from the launcher's Graphics tab (Direct3D 11) or with MELEE_BACKEND=d3d11, which is useful when reporting so the log shows the same path every run.
The game freezes for a second the first time a character uses a move or a stage loads. Audio keeps playing.
That is shader (pipeline) compilation. The GameCube has no programmable shaders; every new combination of TEV stages, blend modes and lighting the game asks for is turned into a GPU pipeline the first time it is seen, and your driver compiles it synchronously. The result is cached on disk (dawn_cache.db in the settings folder), so each hitch happens once per machine. Releases ship a pre-seeded cache (initial_pipeline_cache.db) covering common cases; the rest fill in as you play. Deleting dawn_cache.db or changing GPU/driver/backend starts over.
Source: #46.
Fullscreen crashes at launch, windowed is fine.
Two different bugs looked like this. Overlays that hook the swapchain (NVIDIA ShadowPlay, Discord, Steam) briefly hand the game a 0x0 surface when fullscreen toggles; fixed in v0.1.6. Fullscreen driver buffers fragmenting the low 4 GB of address space before the GameCube memory was mapped; also fixed in v0.1.6. If you still see it on a current build, attach the log.
Android: what phones work, and why does it close immediately on mine?
Requirements: Android 8.0+, 64-bit ARM, a Vulkan-capable GPU. Devices stuck on OpenGL ES (many Android 9 phones and cheap tablets) are not supported and there is no plan to add a GLES renderer. Inverted red/blue colours on Adreno GPUs were fixed in v0.1.6. Some Snapdragon 7 Gen 3 / 8 Gen 2 devices (Honor 200, OnePlus Ace 3, AYN Odin 2) still close at boot on v0.1.7 and this is being investigated; a logcat capture filtered on the tag Aurora is what helps most.
I built it myself and the textures cycle through garbage / the log says OpenGLES.
You compiled the Linux build and ran it under WSL. WSL has no real GPU driver for this, so Dawn falls back to a software OpenGL ES path that renders wrong and slowly. On Windows, build the Windows package (tools/package_windows.sh cross-compiles from Linux with MinGW) or download the release zip.
Source: #69.
Can I remap buttons, turn off tap jump, change what the C-stick does?
Button, stick and trigger remapping per controller is built in (Controls tab, launcher or F1). Tap jump, C-stick macros and input buffers are game-engine behaviour from vanilla 1.02, not settings; toggles for them are tracked as feature requests and would have to be disabled for online play later.
Sources: README, #3.
It runs below 60 FPS on my Switch / Raspberry Pi / 4-core ARM board.
v0.1.6 removed thread pinning that had squeezed the game, FIFO and render threads onto two cores of quad-core ARM devices. If a current build still drops frames, lower internal resolution to 1x and turn off MSAA and post-processing in the Graphics tab. MELEE_FPS=1 prints the frame rate to the log once a second.
Source: #47.
Is there online play?
Not yet. Rollback netcode with serverless peer discovery is Phase 4 of the roadmap. Until then, local multiplayer with up to four controllers works.
macOS: "Melee.app is damaged" or it will not open.
The app is ad-hoc signed, not notarised. Right-click > Open the first time, or run xattr -d com.apple.quarantine Melee.app. Apple Silicon is tested; the Intel build is produced by CI but nobody has run it on Intel hardware yet.
Source: README.
Where is the log file?
| OS | Log |
|---|---|
| Windows | melee-pc.log in the folder with melee.exe (always written). RUN-AND-LOG.bat adds melee-pc-env.log and melee-frames.log. |
| Linux / macOS | Console output. To keep it: MELEE_LOG_FILE=melee-pc.log ./Melee-x86_64.AppImage disc.iso. |
| Android | adb logcat -s Aurora. |
The log records CPU, GPU, driver, backend, and on a crash the faulting address and module. It contains your username in file paths and nothing else personal.
Known issues
All platforms
- Online play is not implemented.
- First-use shader compilation hitches (FAQ).
- Widescreen applies to fights only (VS, Sudden Death, Training); menus, results and cutscenes stay at the original aspect. The wide HUD is a separate toggle.
- All-Star mode needs the full roster unlocked (or the Unlock Everything cheat).
- It is a decompilation port: a scene nobody has tested yet can still crash. Reports with a log and steps get fixed quickly.
Windows
- Haswell-era Intel iGPUs (HD 4000/4400/4600) have no working API here yet: D3D12 refuses them, Intel shipped no Vulkan driver, and the Direct3D 11 fallback is unverified (FAQ).
- Unsigned executable: SmartScreen warning on first run.
- Overlay software (ShadowPlay, Discord) occasionally interferes with fullscreen toggles; fixed in v0.1.6, report if it recurs.
Linux
- Vulkan only. No Vulkan driver (old Intel, NVIDIA without proprietary or NVK driver, WSL) means no game.
- Under Xwayland, some screenshot tools return a stale frame while the game is running normally.
macOS
- Experimental. Intel build untested on hardware.
Android / iOS
- No OpenGL ES fallback; Android 9 GLES-only devices unsupported (#66).
- Some Snapdragon 7 Gen 3 / 8 Gen 2 devices close at boot on v0.1.7 (#23, #59).
- iOS requires sideloading; there is no App Store listing and there will not be one.
- iOS touch controls are invisible screen regions, not the drawn overlay Android gets: no on-screen buttons, no calibration, and they do not hide when you connect a controller.
Community
- Discord: help, testing, chatting. The fastest place to ask "is this a known thing?".
- GitHub issues: bugs and feature requests. Please use the bug report form; it asks for the log and hardware details every report needs. Search first: most first-launch crashes already have a thread.
- Source code: the port layer is GPL-3.0-or-later. Read CODING_STYLE.md before opening a pull request.
Credits
- doldecomp/melee: the decompilation this port is built from, years of work by many contributors.
- aurora by Luke Street and contributors: the GameCube compatibility layer and WebGPU renderer.
- SDL3, Dawn, RmlUi, stb_vorbis, nod.
- dusklight, whose approach this port follows.
- Everyone who filed a bug with a log attached.
AI coding tools were used extensively to write and debug the PC layer of this port; every change is reviewed, built and played by a person before it is released, and the game code itself is the decompilation team's work.
Super Smash Bros. Melee is a trademark of Nintendo / HAL Laboratory. This project is not affiliated with or endorsed by them.