一群聪明人给你带来的"超级粉碎兄弟"的剪辑.
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 |
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.
%PATH%.%PATH%.pip install ninjabrew install ninja
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'
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.
main.dol (and .gitkeep) are necessary. Other files can be deleted.Configure:
python configure.py
Build:
ninja
We use Python for our command line tooling. It is recommended that you use a virtual environment.
python -m venv --upgrade-deps '.venv'
.venv/Scripts/Activate.ps1
. .venv/bin/activate
pip install -r reqs/decomp.txt
decomp.py to decomp a function using m2c. Pass it -h to see all the options.python tools/decomp.py my_function_name
/src.python configure.py --non-matching
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"),
],
),
ninja to build the game.build/GALE01/main.dol to the sys folder of the game directory you created.main.dol from the Games list.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.
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.
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.
The code in src is divided into several modules, the main one being melee, which is the game code.
meleeThe 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/kindsHAL 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/baselibHAL'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 |
dolphinThe Dolphin SDK.
MetroTRKThe Metrowerks Target Resident Kernel.
MSLThe Metrowerks Standard Library.
RuntimeThe Gekko hardware runtime.
See our FAQ.
暂无开放 Issues,或尚未同步最近议题。