back to home

doldecomp / melee

A decompilation of Super Smash Bros Melee brought to you by a bunch of clever folks.

832 stars
120 forks
21 issues
CPythonCSS

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing doldecomp/melee in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/doldecomp/melee)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

Super Smash Bros Melee \ [![Build Status]][actions] [![Code Progress]][progress] [![Data Progress]][progress] [![Linked Progress]][progress] [![Discord Badge]][discord] ============= [ ][Progress] [Build Status]: https://github.com/doldecomp/melee/actions/workflows/build.yml/badge.svg [actions]: https://github.com/doldecomp/melee/actions/workflows/build.yml [Code Progress]: https://decomp.dev/doldecomp/melee.svg?mode=shield&measure=code&label=Code&category=all [Data Progress]: https://decomp.dev/doldecomp/melee.svg?mode=shield&measure=complete_data&label=Data&category=all [Linked Progress]: https://decomp.dev/doldecomp/melee.svg?mode=shield&measure=complete_code&label=Linked%20Code&category=all [Discord Badge]: https://img.shields.io/discord/933849697485983765?color=%237289DA&logo=discord&logoColor=%23FFFFFF [discord]: https://discord.gg/hKx3FJJgrV [progress]: https://decomp.dev/doldecomp/melee This repo contains a WIP decompilation of Super Smash Bros Melee (US). > [!TIP] > The DOL this repository builds can be shifted! Meaning you are able to now add and remove code as you see fit, for modding or research purposes. It builds : |Version|Game ID|SHA-1 -|-|- 1.02| | Dependencies Windows: On Windows, it's **highly recommended** to use native tooling. WSL or msys2 are **not** required. When running under WSL, objdiff is unable to get filesystem notifications for automatic rebuilds. • Install Python and add it to . • Also available from the Windows Store. • Download ninja and add it to . • Quick install via pip: macOS: • Install ninja: • Install wine-crossover: After OS upgrades, if macOS complains about being unverified, you can unquarantine it using: Linux: • Install ninja. • For non-x86(_64) platforms: Install wine from your package manager. • For x86(_64), WiBo, a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used. Building • Clone the repository: • Using Dolphin Emulator, find your ISO and click . Go to the tab, right-click and select . Choose of this repository. • To save space, only (and ) are necessary. Other files can be deleted. • Configure: • Build: Tooling We use Python for our command line tooling. It is recommended that you use a virtual environment. • Create a virtual environment. • You'll need to activate it whenever you open a new shell. • Windows: • Linux/macOS: • After that, you can install or update our packages with: • Now you can run to decomp a function using m2c. Pass it to see all the options. Modding Coming soon. Containers Coming soon. Diffing Once the initial build succeeds, an should exist in the project root. Download the latest release from encounter/objdiff. Under project settings, set . The configuration should be loaded automatically. Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, , or . > [!TIP] > It's recommended that you enable the option under . Contributing Contributions are welcome! If you're new to decomp, check out our Getting Started guide. Before opening a pull request, please read our contributing guidelines. If you're new to Git and don't know how to create a pull request, we encourage you to create an issue with your decomp.me link and a maintainer will add your code to the repository. We're also happy to answer any questions in the channel on Discord. FAQ How is the codebase structured? The code in is divided into several modules, the main one being , which is the game code. The main game code is divided into several two-letter folders, which were left behind by HAL in assert messages and game data on the original disc. Short|Full|Notes -|-|- |Camera| |Debug| |Effect|Visual effects. |Fighter|The player characters. |Game|The main game loop. |Ground|Stages and other levels. |Interface|User interface. |Items| |Library|Utility functions that are often thin wrappers around or code. |Menu| |Map|Related to stages and contains things like (map collisions). |Player|As in users. |Scene|Menu, versus mode, single-player, etc. The game mode. |Toy|Trophies. |Unknown|This isn't an actual folder in the original code. |Visual|Cutscenes, etc. HAL also used two-letter abbreviations for each fighter. Short|Full|Canonical English -|-|- |Zako 1 Boy|Male wire frame |Captain|Captain Falcon |Crazy Hand| |Child Link|Young Link |Common|Shared code |Donkey Kong| |Dr. Mario| |Falco| |Fire Emblem|Roy |Fox| |Giga Koopa|Giga Bowser |Zako Girl|Female wire frame |Ganondorf| |Mr. Game & Watch| |Kirby| |Koopa|Bowser |Luigi| |Link| |Master Hand| |Mario| |Mars|Marth |Mewtwo| |Nana| |Ness| |Pichu| |Peach| |Pikachu| |Popo| |Purin|Jigglypuff |Sandbag| |Seak|Sheik |Samus| |Yoshi| |Zelda| 1 Zako (雑魚) is Japanese for "trash mob" in video games, literally "small fish." HAL's core internal library. Class|Full -|- |Animation |Camera |Draw/Display |Frame |Global/Game |Joint |Light |Material |Polygon |Texture |Reference |Scene |World The Dolphin SDK. The Metrowerks Target Resident Kernel. The Metrowerks Standard Library. The Gekko hardware runtime. What can be done after decompiling Melee? Note that this project's purpose is to only match the ASM with C code. This is entirely for research and archival purposes. After this is created, you essentially have a C project that can be compiled into Melee, but it won't be portable (aka you can't compile it to run on a normal computer). So creating mods would be a lot easier as C code is much easier to consume than ASM. However, there are additional projects that could be undertaken once this is complete, but those technical endeavours are out-of-scope for this repo. Do we know how the compiler works? • Kind of. We don’t have its source though. How do we get the compiler to pick a certain register allocation? Considering we don't have the source for the compiler, this is kind of "anything goes" territory. Unfortunately regis…