• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Official Melee Modding Wizard (latest: v1.0.0)

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
logo.png

- ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ -

Download:
Melee Modding Wizard - v1.0.0 (64-bit)

- ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ - ~ -

If you'd like to give back:

Or you can follow me on Patreon!


Hello! Off and on for the past couple of years, I've been working on this program for modding Melee. It combines functionality from DTW and MCM (with many improvements over those) and introduces many new features. It also provides simple, yet powerful command-line support to integrate this into other workflows, programs, or scripts. It has a much more robust framework (much more modular and object-oriented), which will make adding new features much easier than my older programs. It's still missing a couple of features from DTW and MCM, but let me know which ones you use the most or want to see in this new program and I'll port them over. And of course, let me know if you have ideas for new features you'd like to see.

1664593235474.png

Other GameCube/Wii games are supported to some extent (disc operations and code mods), but there aren't specialized areas of focus on other games atm.


Major GUI features so far:
Disc Operations - view file info/hex, import/export/add/remove files, etc.​
Edit Disc Properties - Image Name, Title/Maker text, banner image, etc.​
Code Manager - like MCM, but better (details below)​
Stage Manager - view/change icons/stages/preview-text, and more​
Stage Editing - change some properties of stages and view blastzones, collisions, and more​
Music Manager - listen to game music, import/export, etc.​
Texture Editing - replace textures, like with DTW, but with a 3D renderer!​
Debug Menu Editor - currently mostly a struct info viewer (e.g. see 20XX menu)​
Character Modder - Edit character general and special properties; edit subAction events​

Other miscellaneous tools:​
- new Character Color Converter​
- fully-automated Tri-CSP Creator for 20XX HP​
- quickly boot-test characters/stages from external/standalone files​
- xDelta integration; build a disc from a patch or make a patch for a disc​
- assemble/disassemble ASM, reformat hex code​
Major command-line features so far:
Disc Operations - file import/export/add/remove, view disc info, list files, etc.​
Root Folder Operations - build a disc from a folder of files, list files, or view info​
Asset Tests - boot the game directly to an external character or stage file for quick tests​
File Validation - test whether files are of an expected type (stage/char/music/etc.)​
Code Operations - install codes or view code/library info. WIP​

I still have a lot of ideas for simplifying Melee hacking processes or adding features. Below are some examples on my todo list. Let me know what you'd like to see so I know what to prioritize!

Potential next areas of focus:
Game Font Changer​
More features for DAT file operations (export/import structures/branches)​
More command-line operations​
m-ex feature integration?​
Structural Analysis interface from DTW​
Expand character support in Character Color Converter​
Code Installation Summary tab from MCM​
Sound Effects Manager​
Dark Mode​
More work on 20XX Tri-CSP creator​
More work on Music Manager (scrubbing/editLoop)​
Remember window size/coordinates​
Moveset Editor?​
Model/Joint (or other structs) Exporter​
Stock Icons Replacer (update in all 4 game file locations)​


I realize much of the functionality I'm working on or have thoughts on making is already present in other programs, like HSDRaw or mexTool, and I certainly don't intend for this to replace them! But even with those, some of the more common operations in modding Melee can be difficult or otherwise still require multiple steps using multiple programs... so the goal is to create simpler and more intuitive interfaces for some of these things.


This is open-source, and I have the code up on GitHub, above. It's written in Python 2, but I plan to move it to Python 3 at some point. (Let me know if you'd like to help with that! I assume it won't be a small feat.) You'll need to install Python in order to run the github repo while uncompiled. However, I've included a "Dependencies" folder which includes Python 2.7.18 and all of the Python dependencies, as well as a script to install them for you. If you want to use audio-related features that include converting audio (such as importing a song in mp3 format), you may need to install Microsoft's .Net Framework v4.6.1, which you can get here.


Some of the main features that this is starting with are improvements in code installation and development. It's backward compatible with the old MCM code library format, and also supports a new format with a few advantages. Like with MCM, custom code may be saved in a library as raw source code or assembled hex data. However, with this program, an assembled code cache is also created. This cache is automatically updated any time you make changes to individual codes (when saving the mod or saving it to your game) and is used during code installation. This allows you to conveniently keep all of the mods in your library in their source-code form, while still enjoying very fast code installation times of just a few seconds. This makes an especially big difference when amassing hundreds of codes for a large project. Library load times and GUI performance have also been dramatically improved compared to MCM, so huge code libraries can be used.

Another improvement that makes this program more convenient than MCM is that codes don't need to be uninstalled from your game in order to edit and re-save them. (This was a limitation in MCM, usually worked around by opening a vanilla DOL each time, and saving everything to that instead of opening an already-edited DOL and uninstalling->editing->reinstalling.) This program can also automatically create a .map file during saving, with the names and locations of all of your custom code. This is incredibly helpful when stepping around in code in Dolphin for RnD or debugging.

One of my favorite new code-related features of this program are code "customizations". These allow code creators to offer very simple and easy-to-use user configurations or options for their mods, without the user needing to know anything about assembly/hex or how the custom code works. For example:

Mods that have configuration options available will display an extra button on the mod:
Mod Configurations example 1.png


This example will open a window to provide a drop-down menu to select a kind of turnip:
Mod Configurations example 2.png


This window is very dynamic; a mod can have any number of customizations, and they can each appear with different forms of input, such as sliders (with customizable range), dropdown menus, or standard value input (if you hover over the integer and float values here, an entry box appears so you can directly edit the value). Here's an example of these:
Mod Configurations example 3.png


I was thinking about ON/OFF toggles and color choosers for more input types. If you'd like to try adding some configurations to a mod, you can look at the "!Test Codes.txt" file for some quick and simple examples of how to define them. And I can go into more detail as well if you'd like. I'll make a guide later on all of the specifics on how to add these to your mod.

When you load a game disc in the program, if the mod is installed, it will check and display the configuration values currently installed in your game. Masking support for AND or ORing options together in custom code hasn't been finished yet, but simpler scenarios (i.e. single values per offset in the code) work.

Another big feature will be to save codes to the heap rather than just to the DOL file. This means a large increase in the amount of code you can save to your game, limited by free space in RAM rather than free space in the DOL. You can save to one or both if you'd like. And this is done without the need for the Gecko codehandler and codelist, which saves even more space (you may be surprised at how much overhead can be found in the Gecko codelist!). This feature isn't active in this beta build, but it's mostly done, so let me know if you'd like to try it and I'll finish it for the next build. This could be further expanded in the future to load code on a per-scene basis, making code space practically unlimited.

I also used this program and framework to help me a great deal with working on 20XX, so you'll notice there are a few 20XX-specific features, such as the Debug Menu Editor, which shows you the file offsets and RAM addresses of menu entries, strings, functions, current value location, etc. Plus there's support for the 20XX stage file-swapping system, 20XX's extra music (Hex Tracks), and a more-automated Tri-CSP Creator.

I think one of the main problems in my Melee hacking endeavors (besides finding enough free time to work on them) has been not having much transparency on my current projects. So I want to try to share what I'm doing more often. If you want to join my Patreon, I'd like to create a Discord server for my patrons if I get enough followers (maybe at least ~20-30). I think that would make it much easier for folks to track development, make suggestions for features, and get early program test builds. I could even add custom features to special builds if you need something extra.

Anyway... there are probably bugs! Please let me know if you find any. It has been a while since I've tested some specific features, but anything that I might have broken by refactoring will likely be an easy fix, so let me know about it and I'll fix it. And of course, let me know if you have any questions or requests for features.

That's all for now. Hope you guys find this useful! ^_^​
 
Last edited:

DNFonty

Smash Rookie
Joined
Jul 11, 2022
Messages
4
Appreciate the work you put in for the community! Love the update to 20XX and this makes it easier to customize, Especially the Tri CSP creator, I was doing it manually forever! Many Thanks.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
I haven't gotten any feedback or feature requests, so my focus has jumped around a bit between features on this program. I've also worked on the decomp project a little here and there, but I've been back to working on this again more recently.

I finally ported over MCM's Mod Construction interface and DTW's Disc Details tab, and I plan to add a few more features to the latter, like hash generation, so you can easily get an MD5/CRC/SHA (and/or others). I also added a new interface to modify characters. So far, you can edit General Fighter Properties (like run speed, jump height, etc.) and Special Character Attributes (properties specific to one character, like fireball speed or height gained from a rising tornado move). Or you can edit subAction events:

1664581900640.png


Even supports drag-and-drop for reordering! Some of these are quite similar to HSDRaw, but I want to make them more intuitive and easier to work with, even for beginners. For example, the question marks above will give you notes and information on each event. If anyone would like to test this out or help me fill in more friendly names (such as "Rapid Jab Startup" instead of "Attack100Start"), notes, or the "Unknown" parameters, please let me know and I can show you how to add them.

I've also made minor upgrades to the SIS Text Editor for Sd__.dat files. Some files had several hundreds of strings, and the GUI couldn't handle them all. So I added a page system with buttons at the bottom. Reading/writing for Japanese characters in these files has also been improved. To access this, just right-click on an Sd___.dat file in the Disc File Tree, and click on Browse Strings.

1664582401951.png


Some other improvements include:
  • Convenient "Restore to Vanilla" feature in the Disc File Tree to quickly restore a file
  • Greatly improved Gecko code importing (converting it to static overwrites/injections)
  • Now [optionally] offers to convert Gecko codes to a more efficient format when saving to disc
  • DOL 'Save As' feature added to Code Manager tab (saves it to an external file)
  • Improved messaging for changes that are still pending saving (warns if any will be lost)
  • Fixes/improvements to code installation/detection, particularly for mods with configuration options
  • Fixed a bug where sometimes the need for a disc rebuild would not be detected
  • Bunch of other minor bug fixes

And someone has offered to help me move this from Python 2 to Python 3, so that may be happening sooner rather than later!
 
Last edited:

Pentameric

Smash Rookie
Joined
Oct 11, 2022
Messages
1
Hello! I can potentially assist with the Python conversion. Regardless, that wasn't the reason I posted (or made an account in the first place).

I was wondering if you could use this utility to create fully custom characters, or if you plan to ever make it able to. Don't consider this a request, since this is already incredibly powerful (and you have more urgent things for this project), but I've become very interested in the prospect of backporting SSBU characters to Melee.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Hello! I can potentially assist with the Python conversion. Regardless, that wasn't the reason I posted (or made an account in the first place).

I was wondering if you could use this utility to create fully custom characters, or if you plan to ever make it able to. Don't consider this a request, since this is already incredibly powerful (and you have more urgent things for this project), but I've become very interested in the prospect of backporting SSBU characters to Melee.
Hi! Welcome to Smashboards.

Possibly, but I don't know yet. I've considered adding support for m-ex (a project that allows for new characters to be added; you can find their GitHub here), but I'm not sure there's much point. They have a program for modifying m-ex content already, called mexTool. I haven't used either really, so I don't know how much capability of m-ex is covered in the tool or how well it's covered. That question would probably be best answered by UnclePunch UnclePunch if he happens to find himself around here. Even if I added support for it, it wouldn't be until I've finished bringing over other functionality from DTW and MCM.
 

Ux66

Smash Rookie
Joined
Mar 14, 2019
Messages
4
Location
Burlington, VT
Slippi.gg
UX#66
What an incredible program this is! Compiling several tools we already use into one program would be huge by itself, but the little additions you've implemented (like explaining what some confusing event names actually do in the character modding section, for example) are going to make this a must-have for people just starting to mod this game. Major kudos, can't wait to see what else is in store!
 

Ux66

Smash Rookie
Joined
Mar 14, 2019
Messages
4
Location
Burlington, VT
Slippi.gg
UX#66
The idea of adding codes to the heap instead of the DOL is also really smart, and helpful for me personally - mods like mexTool weren't compatible with Crazy Hand's FSM mod, for instance, and it threw a wrench in the works of some of my projects. Also, you mentioned needing help to fill in more friendly names for the subactions/figuring out the "Unknown" parameters; I've spent too many hours modding this game, I'd be happy to help :)
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
There are a few different areas that have unknowns or incomplete definitions. Most of these I've tried to keep in files that can be easily edited by users rather than being inaccessibly hardcoded in source files, so when this is released in compiled builds later, individuals can still add to or update them. I'm hoping some people also contribute their findings to me or this project's GitHub repo so they can be included for everyone though. If you want to do that, you can send me files that you've updated in a PM (here or on Discord), or you can submit them to the GitHub repo directly (with a pull request). Anyway, here are some of the main areas for configurable additions that could still use more, and how to contribute to them:

  • File descriptions - These are descriptions for disc files, as seen in the Disc File Tree, shown below.
    These are defined in the file ".\File Descriptions\GALE01.yaml"
    1668732227279.png

    You might notice that a few things are dynamically determined and aren't defined there, like character costume files and files with the .usd extension.

  • SubAction Names - These are the more human-friendly nicknames for subActions that appear in the program, like "Forward Tilt" rather than "AttackS3S". These can be found at the start of the file ".\bin\CharDataTranslations.json"

  • SubAction Event Descriptions - These are the help descriptions and notes that appear by clicking on the question mark button on subAction events, as shown below.
    1668733050951.png

    These too are in the ".\bin\CharDataTranslations.json" file, immediately following the subAction names (look for the "eventNotes" dictionary). These can be as long as you want (within reason!); include anything you think will help other users understand what it is and how it should be used (you could also include notes on the values that can be changed when expanding the event). The full note definition should start with the name of the event, followed by a "|" (pipe) character, followed by the actual notes. Also, notice that the ID that the note is defined for (the "0x01", "0x02", etc. in the dictionary) is the ID the game uses to reference them; in some places online, this ID is referenced as a multiple of 4 of this number (i.e. ID "0x04" for Execute Loop would be "0x10" in those other resources).

  • SubAction Event Values - These are the values that you can see and edit when you expand a subAction event; for example, Damage or Size for the Create Hitbox event. We could really use some more knowledge in this area... there are quite a few unknowns. However, these are one of the few definitions that are hardcoded, because defining these incorrectly can cause strange behavior in parsing a subaction struct, and be difficult to diagnose or even notice sometimes. If interested, you can find them in the ".\FileSystem\charFiles.py" file. If you're confident in your abilities, you can edit them there (search for the SubAction class). Or, you can PM what you want to submit and I can add them.

    Each event is defined like this:
    1668736898538.png

    The total data length of all values should add up just under the total size of the event (total value bits + 6 = event size). This is because the first 6 bits for the even are reserved for the opCode or event ID of the event. (e.g. in the above example, 10+16+6 = 32 bits, which is 4 bytes.)
    "Padding" values are skipped when populating the GUI.

  • Special Character Attributes - As seen in the Character Modding's "Properties" tab. These also appear in the ".\bin\CharDataTranslations.json" file, under all the event note descriptions (you can search for the "specialAttributes" string). This is a dictionary, where the entry is the character's fighter abbreviation (e.g. "Mr" for Mario), and each definition for that character entry is a list. Each item in the list is another list. Hopefully it'll make sense when you're looking at the file, but basically, the final lists each have 4 items in them: [ offsetOfProperty, propertyType, propertyName, propertyNotes ]. The offset is relative to the start of the properties structure. Property type designates whether it's a float or unsigned int ("f" or "I"; case-sensitive!). And the last item in the list are notes that appear in the GUI when you hover over the name.

    Here are some sources where you can find many of these:
 
Last edited:
D

Deleted member

Guest
Good tool (thinking to myself wide teary-eyed, ARCADE-ARCADE-ARCADE.) Why we continue to live in the past?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
The first compiled release is now finally out!

You can find the version 1.0.0 download in the OP.
 

ohuro

Smash Rookie
Joined
Nov 15, 2014
Messages
13
Location
jpn
Slippi.gg
LGA#785
Can I edit the hitboxes of falco's infinite jab with mmw?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Can I edit the hitboxes of falco's infinite jab with mmw?
You can edit his Jab 1 and Jab 2, but not his rapid jab (yet). Due to the subroutines and gotos that repeating moves like that one use. I need to look into what kind of structures those subActions are pointing to and modify the GUI to deal with them.
 

Game&Lucas

Smash Rookie
Joined
Nov 27, 2023
Messages
1
Slippi.gg
GL#140
How the hell can I save fighter changes in the properties section, using the save option from the 'file' menu doesn't do anything about it
Edit: Nvm, already figured it out.
 
Last edited:
Top Bottom