百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

melee

> 编程语言
开源

一群聪明人给你带来的"超级粉碎兄弟"的剪辑.

957 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

一群聪明人给你带来的"超级粉碎兄弟"的剪辑.

Super Smash Bros Melee

This repo contains a matching 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 main.dol:

Version Game ID SHA-1
1.02 GALE01 08e0bf20134dfcb260699671004527b2d6bb1a45

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 %PATH%.
    • Also available from the Windows Store.
  • Download ninja and add it to %PATH%.
    • Quick install via pip: pip install ninja

macOS:

  • Install ninja:
    brew install ninja
    
  • Install wine-crossover:
    brew install --cask --no-quarantine gcenx/wine/wine-crossover
    

After OS upgrades, if macOS complains about Wine Crossover.app being unverified, you can unquarantine it using:

sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app'

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:

    git clone https://github.com/doldecomp/melee.git --depth=1
    
  • Using Dolphin Emulator, find your ISO and click Properties. Go to the Filesystem tab, right-click Disc - GALE01 and select Extract System Data. Choose orig/GALE01 of this repository.

    • To save space, only main.dol (and .gitkeep) are necessary. Other files can be deleted.
  • Configure:

    python configure.py
    
  • Build:

    ninja
    

Tooling

We use Python for our command line tooling. It is recommended that you use a virtual environment.

  1. Create a virtual environment.
    python -m venv --upgrade-deps '.venv'
    
  2. You'll need to activate it whenever you open a new shell.
    • Windows:
      .venv/Scripts/Activate.ps1
      
    • Linux/macOS:
      . .venv/bin/activate
      
  3. After that, you can install or update our packages with:
    pip install -r reqs/decomp.txt
    
  4. Now you can run decomp.py to decomp a function using m2c. Pass it -h to see all the options.
    python tools/decomp.py my_function_name
    

Modding

  1. Dump the full game disc to a folder as described under Building, not just the system files.
  2. After cloning the repository, you can freely add new source files/folders under /src.
  3. Enable the non-matching build by running:
    python configure.py --non-matching
    
  4. Add each of your source files to configure.py. The order determines when your files are linked, but in most cases does not matter. You can create a new MeleeLib definition, but you don't have to. Make sure any newly created files are marked Equivalent.
        MeleeLib(
            "My Custom Library",
            [
                Object(Equivalent, "my-cool-mod/helloworld.c"),
            ],
        ),
    
  5. Run ninja to build the game.
  6. Move the build DOL from build/GALE01/main.dol to the sys folder of the game directory you created.
  7. Make sure your game directory is configured under Paths in Dolphin, then launch your main.dol from the Games list.

Containers

We use nix for most of our tontinuous integration, which can be containerized under nixos/nix or nix-toolbox. We plan on fully migrating our CI to nix; see issue #1368.

Diffing

Once the initial build succeeds, an objdiff.json should exist in the project root.

Download the latest release from encounter/objdiff. Under project settings, set Project directory. 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, configure.py, splits.txt or symbols.txt.

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.

Most of our efforts now are directed to naming and cleanup. See our todo list and cleanup index.

We're also happy to answer any questions in the #smash-bros-melee channel on Discord.

FAQ

How is the codebase structured?

The code in src is divided into several modules, the main one being melee, which is the game code.

melee

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
cm Camera
db Debug
ef Effect Visual effects.
ft Fighter The player characters.
gm Game The main game loop.
gr Ground Stages and other levels.
if Interface User interface.
it Items
lb Library Utility functions that are often thin wrappers around dolphin or baselib code.
mn Menu
mp Map Related to stages and contains things like mpcoll (map collisions).
pl Player As in users.
sc Scene Menu, versus mode, single-player, etc. The game mode.
ty Toy Trophies.
vi Visual Cutscenes, etc.

melee/ft/kinds

HAL also used two-letter abbreviations for each fighter.

Short Full Canonical English
Bo Zako1 Boy Male wire frame
Ca Captain Captain Falcon
Ch Crazy Hand
Cl Child Link Young Link
Co Common Shared code
Dk Donkey Kong
Dr Dr. Mario
Fc Falco
Fe Fire Emblem Roy
Fx Fox
Gk Giga Koopa Giga Bowser
Gl Zako Girl Female wire frame
Gn Ganondorf
Gw Mr. Game & Watch
Kb Kirby
Kp Koopa Bowser
Lg Luigi
Lk Link
Mh Master Hand
Mr Mario
Ms Mars Marth
Mt Mewtwo
Nn Nana
Ns Ness
Pc Pichu
Pe Peach
Pk Pikachu
Pp Popo
Pr Purin Jigglypuff
Sb Sandbag
Sk Seak Sheik
Ss Samus
Ys Yoshi
Zd Zelda

1 Zako (雑魚) is Japanese for "trash mob" in video games, literally "small fish."

sysdolphin/baselib

HAL's core internal library.

Class Full
AObj Animation
CObj Camera
DObj Draw/Display
FObj Frame
GObj Global/Game
JObj Joint
LObj Light
MObj Material
PObj Polygon
TObj Texture
RObj Reference
SObj Scene
WObj World

dolphin

The Dolphin SDK.

MetroTRK

The Metrowerks Target Resident Kernel.

MSL

The Metrowerks Standard Library.

Runtime

The Gekko hardware runtime.

What can be done now that the game is fully decompiled?

See our FAQ.

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言