Do you like awesome custom codes? Do you like Melee? Do you like awesome custom codes in your Melee? Then this is the program for you!
This is the best way to view, add, and/or remove all of your code based mods in Melee, and set up your game’s default gameplay settings (game mode, stock count, etc., so they all finally stay remembered after restarting the game!). Supports DOL mods (including injection mods) as well as Gecko codes. Everything is done in a very easy-to-use interface, which simply presents you with a list of available mods, and allows you to install or uninstall them from your game with just a single click.
Cool stuff for average users:
- Easiest and fastest way to add code-based mods to your game
- Use DOL mods instead of Gecko codes, to make your game run more efficiently
- No need to understand hex editing or ASM coding
- Easily adjust your game’s default settings (stock mode, items/stages, etc.)
- Provides visual ‘fill-meters’ to show how much space is available for custom code
- No need to extract/import the DOL from your game to update it
- Eliminates the old problem of mods' custom code overlapping one another
- Mod conflict detection feature identifies mods that may be incompatible with one another
- Avoid dealing with Nintendont/DIOS MIOS Gecko/.GCT code loader problems
- Easily create and add injection mods without needing to calculate branches
- Easily create and add static overwrites of any length
- Large game projects can be much more modular and manageable
- Automatic, efficient usage of available [user-defined] ‘free space’ used for custom code
- Relocates all custom code after editing if it uses more or less space
- Troubleshoot problems easier by quickly swapping out suspected mods
- Can use RAM addresses for DOL mods instead of searching for DOL offsets
- Easily convert Gecko codes to DOL mods using the above functionality
- New "Custom Branch Syntaxes" for easily making function calls (info below)
- Use "Standalone Functions" to reduce redundant code usage in the DOL
- Automatically looks up DOL ‘original’ code when adding a new mod via the GUI
- ASM to Hex converter and RAM Address to-from DOL Offset converter built-in
- Plus more converters and other useful tools in the Tools tab
Take a look!
Dark green are mods that are currently installed, while light green are mods selected to be installed once you hit ‘Save’, and those in red are mods that will be uninstalled upon saving.
The ASM of injection mods is automatically aligned directly after one-another to optimize the DOL’s free space. If updates or changes are made to the mods, the locations in the DOL of their custom code will be adjusted accordingly the next time you save.
You can give this program a DOL file, or an entire ISO (disc image file).
Before getting to the download, if this is your first time using this, please read the important info below first.
This will typically work best if you start using it with a fresh, unmodified DOL or ISO. If you already have codes installed in your game, that’s OK, it will automatically detect those too as long as they’re included in the “Mods Library”, which is the folder of text files that contains all of the mods. The Mods Library included in the download comes with many mods by default, and I will add more over time. However, if mods that you'd like to use aren't included (or if you'd like to create new ones), you can easily add them using the interface in the Mod Construction tab. More info and details on this can be found in the post below this one.
Codes in your game that are not added to the library may be overwritten when you use this program to modify your ISO. There are two simple solutions to this: 1) Add the code to the library as mentioned above, or 2) edit the “settings.py” file to ignore the DOL sections where those other, non-library codes reside (notes can be found in that file which go into more depth on how to do this). In any case, I recommend backing up your game just in case, or more specifically, your DOL file (the game's executable file that holds these codes), before using this program. There's a clearly visible button labeled "Export DOL", which you can use to do this easily. Also, if you need one, the download comes with copies of the original DOLs for each game version.
Note that because of the issues mentioned above, this won't work for versions of 20XX HP prior to v5.0. MCM didn't exist when Achilles first started 20XX, so the main problem is that a lot of the older versions of 20XX's changes are not included in any MCM library, and are just manually edited into the DOL independently. Thus, they're at risk of being overwritten when attempting to make changes. However, starting with 20XX v5.0, the entire code set has been collected into a complete Code Library, which you can find on the 20XX HP GitHub page.
Gecko Codes are supported, but cannot be copied/pasted into the library text files exactly as-is, and must be slightly modified from the format commonly seen in .gct files. You can look at a few examples in the library to compare. Or you can use the Mod Construction tab to input them, which will do this for you and save them to the library in the required format. Or you may convert them to DOL mods, which is a form that's more efficient for the game to run. Please see the post below this one on how to do this conversion. The Gecko codehandler used by MCM is from Dolphin build 5.0-11297. (Or, you may rename/remove the ./lib/codehandler.bin file and revert to using the older, simpler, modified version of the one posted and discussed here.)
Important note on making changes to mods: If you need to change the injection point that a mod uses or the location of a static overwrite, then you must first uninstall the mod from your game. This is necessary in order to prevent changes that are no longer used from the old version of the mod to be permanently included in your game. (Naturally, this is because if you change the places that a mod targets, the program has no reason to look at or modify code from the old areas.)
Custom debug menus can be used, but being able to use them to control other mods will depend on the method you’re using. Control that does not target the mod itself, such as setting a flag that the mod will independently use on its own, or working by only modifying the game’s code (e.g. toggling an injection mod’s branch back to the game’s original code, as long as you save/restore the branch) will work as normal. However, targeting the mod’s custom code with a normal branch will not work because its location is variable. Instead, you can target them as you would a standalone function. Check out the second post in ’Standalone Functions and Special Branch Syntaxes’ for details.
Codes in your game that are not added to the library may be overwritten when you use this program to modify your ISO. There are two simple solutions to this: 1) Add the code to the library as mentioned above, or 2) edit the “settings.py” file to ignore the DOL sections where those other, non-library codes reside (notes can be found in that file which go into more depth on how to do this). In any case, I recommend backing up your game just in case, or more specifically, your DOL file (the game's executable file that holds these codes), before using this program. There's a clearly visible button labeled "Export DOL", which you can use to do this easily. Also, if you need one, the download comes with copies of the original DOLs for each game version.
Note that because of the issues mentioned above, this won't work for versions of 20XX HP prior to v5.0. MCM didn't exist when Achilles first started 20XX, so the main problem is that a lot of the older versions of 20XX's changes are not included in any MCM library, and are just manually edited into the DOL independently. Thus, they're at risk of being overwritten when attempting to make changes. However, starting with 20XX v5.0, the entire code set has been collected into a complete Code Library, which you can find on the 20XX HP GitHub page.
Gecko Codes are supported, but cannot be copied/pasted into the library text files exactly as-is, and must be slightly modified from the format commonly seen in .gct files. You can look at a few examples in the library to compare. Or you can use the Mod Construction tab to input them, which will do this for you and save them to the library in the required format. Or you may convert them to DOL mods, which is a form that's more efficient for the game to run. Please see the post below this one on how to do this conversion. The Gecko codehandler used by MCM is from Dolphin build 5.0-11297. (Or, you may rename/remove the ./lib/codehandler.bin file and revert to using the older, simpler, modified version of the one posted and discussed here.)
Important note on making changes to mods: If you need to change the injection point that a mod uses or the location of a static overwrite, then you must first uninstall the mod from your game. This is necessary in order to prevent changes that are no longer used from the old version of the mod to be permanently included in your game. (Naturally, this is because if you change the places that a mod targets, the program has no reason to look at or modify code from the old areas.)
Custom debug menus can be used, but being able to use them to control other mods will depend on the method you’re using. Control that does not target the mod itself, such as setting a flag that the mod will independently use on its own, or working by only modifying the game’s code (e.g. toggling an injection mod’s branch back to the game’s original code, as long as you save/restore the branch) will work as normal. However, targeting the mod’s custom code with a normal branch will not work because its location is variable. Instead, you can target them as you would a standalone function. Check out the second post in ’Standalone Functions and Special Branch Syntaxes’ for details.
These programs take quite a bit of time. If you'd like to give back or show how much support there is out there for these, please consider donating!
You can do so via Paypal:
Or you can follow me on Patreon to support my main Melee projects.
Version 4.4.1:
Version 4.4:
*I'll probably be making a guide detailing the benefits and usage of this later.
**These are given via the -I argument. Previously, include directories were only included if a .include statement was found in the custom code.
Version 4.3 (64-bit):
* The priority for .import directives is as follows:
Version 4.2 (64-bit | 32-bit):
Version 4.1.1:
* Used to search for Mods in your Mods Library by name. It was already previously available by pressing CTRL-F (since v4.0), but I figure it was mostly only known to those who noticed its introduction in the change logs, or by word of mouth.
** Switches between Simple View and Advanced View (Sorting by Offset) modes. Again, this feature previously existed (by clicking on the DOL Offset/RAM Address header), but was probably not widely known-about.
Version 4.0 ( 64-bit | 32-bit ):
**Use the "20XX 4.07++ Codes.txt" file from the GitHub, but rename the Sheik/Zelda CPU Disable Transformations mods so that they're not seen as duplicates. You don't need to use the settings.py file from there; just use the 20XX Regions that comes with this new MCM version.
***Using the Tournament Mode Region for the codelist grants over 260% more space for Gecko codes!
Version 3.2 ( 64-bit | 32-bit ):
*The dictionary for this converter resides in the settings.py file, so you may modify it if you want to figure out more characters.
Version 3.1:
Version 3.0 (considered beta, since there are so many new changes):
Version 2.1 (x64 | (x86):
Version 2.0 (from the original release of this program):
- Fixed "settings.py" configurations not taking effect
- The configuration file "settings.py" is now located in the "lib" folder
- The Gecko "codehandler.bin" file is now located in the "bin" folder
- Fixed disassembly of hex code with mixed-in special syntaxes
- Fixed the "Info" button in Mod Constrution tab for mods with Standalone Functions
- Fixed warnings of duplicate and differing u32.float/float.u32/log.timestamp SFs
- Added 'Lagless FoD' and 'Boot to Match' codes
Version 4.4:
- Support for alternate mod/library syntax: the ASM Mod Folder Structure (AMFS)*
- New Mods Library Selection interface to easily swap between multiple library directories
- New punkpc and general Melee-related PPC .include libraries, from Punkline
- Improvements/fixes to the Mod Construction tab's undo history functionality
- Directories for '.include' imports are now always given to the assembler**
- Uses a new Gecko codehandler via the "codehandler.bin" file (from Dolphin build 5.0-11297)
- Improvements to the ASM <-> Hex Converter window:
- Fixed cases of giving incorrect line numbers for warnings/errors
- Window resizing improved (now only the text entry fields change size)
- Added a button to show assembly context for .include file imports
- Added a label to display assembly times for performance testing
- Warnings during assembly that contain no actual errors no longer block final assembly
- Made some changes to add the crash printout code, "Enable OSReport Print on Crash":
- The Tournament Mode Region has been partitioned into two parts (P1 and P2)
- Default region for the Gecko codehandler is now "Tournament Mode Region, P1"
- Crash printout code added to library, now that Aux Code Regions isn't needed
- Aux Code Regions are now disabled by default
- Crash printout code is always selected by default (can be disabled in settings.py)
- Added an extra check during injection/SF code space allocations to ensure 4 byte alignment
- Summary tab's "Mods Installed" now counts SF-only modules that had functions installed
- Fixed a hang when selecting a Mods Library from a drive that no longer exists
- Hitting Enter in the ISO/DOL field now loads that path instead of prompting for a file
- YouTube is now an acceptable domain for mod 'web links'
- The Debug Mode region is now disabled by default
- Added a few more mods to the default Mods Library
- Refactoring and code clean-up for GitHub repo
*I'll probably be making a guide detailing the benefits and usage of this later.
**These are given via the -I argument. Previously, include directories were only included if a .include statement was found in the custom code.
Version 4.3 (64-bit):
- Added a feature for special branch syntax offsets; e.g. 'bl <GeckoCodehandler>+0xA4'
- Fixed installation detection of mods that use a special branch syntax (broke in 4.2)
- Mod Web Links feature added (GUI can link to a Smashboards thread and/or Git repo)
- .imports now scan a hierarchy of directories as well as the executable root folder *
- 'Create GCT File' was renamed to 'Create INI', which is what it was actually creating
- Added a new 'Create GCT' feature, which creates a binary gecko codelist file
- Improved checking/handling of Gecko codes in cases where Gecko codes are disabled
- The 'View DOL Hex' feature now shows current program data instead of saved file data
- Improved undo/redo history states and tracking in the Mod Construction tab
- 'Import Gecko Code' feature (specifically for C2 codes) is no longer case-sensitive
- The update button on the Mod Construction tab now works for Standalone Functions
- Avoids loading custom code regions that are not compatible with the current DOL
- Button added to choose a Mods Library folder when no Mod Library is found/chosen
- The prompt to choose a Mods Library directory now defaults to closest existing folder
- Hovering over the button to choose a Mods Library now shows the current library
- Improved mod detection in cases where multiple regions cover some of the same area
- Improved tab/scroll-position re-setting when re-scanning Mods Library
- Eliminated redundant error messages from bad Gecko code imports
- Fixed disassembly of unconditional branches (b, bl, ba, bla). Output normalized
- Fixed an audio initialization error occurring when no audio driver is installed
- Fixed an audio initialization error occurring after no Mod Library was found
- Fixed character conversion in Menu Text to Hex feature for '耐' and '待' characters
- Fixed a bug that could cause a Mods Library panel to temporarily appear on other tabs
- The ASM <-> Hex Converter window's spawn position now always over the main window
- Added 4 bytes to all revisions of 'Tournament Mode Region' ends (overwrites last blr)
- Added around 40 mods to the default mods library
- Small improvements to assembly/disassembly performance
- Added support for [REDACTED. TOP-SECRET]. Edit: Declassified; it was for 20XX 5.0
* The priority for .import directives is as follows:
1) The current working directory (this is usually the MCM root folder)
2) Directory of the mod's code file (particularly useful if the mod has its own folder)
3) The current Mods Library's ".include" directory (this is a new folder)
4) The MCM root folder's ".include" directory (this is a new folder)
Version 4.2 (64-bit | 32-bit):
-The Mods Library folder you're loading from can now be changed within the program
- Added a new feature to the Mod Construction tab: "Import Gecko Code"
- Now able to create a GCT file from selected mods
- Improved error message reporting related to resolving special syntaxes
- Can now Shift-Click 'Select All'/'Deselect All' buttons to apply to the entire library
- Folders starting with . (such as ".git") are now excluded from Mods Library parsing
- Last instruction of injection code no longer replaced if it ends with a special syntax
- Modules consisting of only SFs are no longer detected as installed if they're not used
- Additions to the ASM <-> HEX Converter:
- Fixed disassembly of branch values (incorrect in v4.1.1)
- Code length display
- Scrollbars
- Proper window resizing rather than a fixed size
- Disassembly of '.word' is converted to '.long' for hex input that is 4 bytes long
- Fixed some obscure bugs that could occur when parsing <<RAM>> symbols
- Fixed resolving of multiple <<RAM>> syntaxes mixed with assembled hex code
- Fixed usage of the assembly OR operator, '|', in custom code
- Fixed 'check if writing to custom code regions' for mods written with RAM addresses
- Fixed preservation of whitespace preceding comments during mod parsing
- Drastically improved speed of folder-opening functions; e.g. 'Open Mods Library Folder'
- Added '-d' command line argument for Debug Mode, to log debug/error messages
- A good amount of refactoring, code clean-up, and small efficiency improvements
Version 4.1.1:
- Updated the "Menu Text to Hex" tool, to include all Hiragana, Katagana, and Kanji characters
- Greatly improved assembly performance (no longer using pyiiasmh to interface with EABI libraries)
- Trying out disabling the linker during assembly (ba = 00000000); discuss. Might later re-enable
- Added a new special syntax that can be used when writing codes, 'RAM symbols' (described in spoiler below)
- Added a warning if any mods appear to be installed to disabled regions, with a prompt to enable them
- Added a "Mod Search" button to the Mod Construction tab (same function as pressing CTRL-F) *
- Comments on lines containing special branch syntaxes are now preserved
- Fixed a performance regression regarding assembling unconditional branches that don't set any flags
- Fixed a small GUI/highlighting related bug on the Item Switch window's "Item Frequency" dropdown
- Improvements/additions to the Summary tab:
- Added a context menu option to toggle whether it's sorting by offset (Advanced/Simple View) **
- Added a context-menu option to toggle showing DOL Offsets or RAM Addresses
- Added standalone function names to the Mods Summary tree when switched to Advanced View
- 'View in...' features on a child item in the Mods Summary tree (in Simple View) now refers to parent item
- 'View in...' features added to Standalone Functions tree when selecting a mod listing
- Audio output simplified (moved from pygame to pyaudio)
- Removed warning of audio problems if no audio driver/device is available
* Used to search for Mods in your Mods Library by name. It was already previously available by pressing CTRL-F (since v4.0), but I figure it was mostly only known to those who noticed its introduction in the change logs, or by word of mouth.
** Switches between Simple View and Advanced View (Sorting by Offset) modes. Again, this feature previously existed (by clicking on the DOL Offset/RAM Address header), but was probably not widely known-about.
Version 4.0 ( 64-bit | 32-bit ):
- Support expanded to other GameCube and Wii games!*
- Supports 20XXHP 4.07++**
- The game's vanilla Debug Mode can now be used alongside Gecko codes
- The Gecko codehandler and codelist can now be stored in user-defined regions***
- Free-space code regions updated slightly:
- Start area of Aux Code Regions changed to 0x407540 (NTSC 1.02)
- Aux Code Regions end point moved to 0x4088B0
- "20XXHP 4.07 Regions" added (do not use with other regions selected)
- Conflict with CrazyHand resolved (via AuxCodeRegions end point change above)
- Free Space indicator divided into two; one for standard codes, one for Gecko
- Gecko codehandler and codelist wrapper excluded from free space indicators
- Code Free Space Indicators show exact used and available free space on mouse-over
- CMD windows no longer briefly appear during mod parsing or ASM assembly/disassembly
- Finally completely revamped the Summary tab:
- See each and every change done to the DOL, as well as their locations
- See how much free space each mod or individual change uses
- Left-click the DOL Offset header to sort changes in order of offset
- Right-click the DOL Offset header to view locations as RAM Addresses
- New features: "Create Installed Mods List", and "Install Mods List"
- Convenient 'View DOL Hex' button added
- Mod Search Feature! Press CTRL-F in Mods Library tab to search for mods by name
- All hex inputs in the Tools tab now automatically remove spaces & line breaks
- Mod Construction tab improvements:
- The offsets shown can now be toggled between DOL Offsets or RAM Addresses
- Undo/redo functionality added
- Much more intelligent 'Unsaved' status detection
- Fixed mods misunderstanding their installation status
- Mouse-wheel scrolling over module list added
- "New Hex" scroll position now preserved when switching between code change modules
- GUI elements now properly fill space when expanding the window
- Custom code length display added to static overwrites
- Tools tab GUI elements now properly fill space when expanding the window
- Code Offset Converter updated:
- Now can also be used with RAM Addresses (outputs in same form as input)
- Fixed an issue reducing quickSearch=False (option in settings) match effectiveness
- The available input fields now based on the DOLs present in the Original DOLs folder
- RAM Address Converter input fields now based on the DOLs in the Original DOLs folder
- ToolTip module updated; fixes multi-monitor issues
- Original DOL files no longer hash-checked before use (for hex restoration, etc.)
- Code-Space Options button now brings the window to the front if it's already open
- settings.py file changed. But MCM 4.x will still be backwards compatible with MCM 3.x files
- Mod Library parsing features/improvements:
- Folders/subfolders/files within the Mods Library that start with "!" are now ignored
- Folders/subfolders/files starting with "+" are parsed exclusively (others ignored)
- Pseudo-ops (assembly directives) can now be used within raw ASM code
- empty lines (those with only line breaks) are now preserved in mod descriptions
- Duplicate mod detection added. Previously could have caused problems when saving
- Errors are now output to "Error Log.txt"
- "Restore Original DOL" feature added (Reverts the currently loaded DOL to vanilla)
- Region details tooltip added to total region size labels in Code-Space Options window
- "Save As..." button now always available
- Improved logic for installing SFs; should add stability for recursive SF calls
- Fixed: Mods that share many SFs no longer need to be ordered in the Mods Library
- Fixed cases of some injection mods not being detected as installed
- Fixed branching to standalone functions from long static overwrites
- Fixed an obscure case where a conflict being detected could break an installed mod
- Other fixes and behavior improvements
- Lots of logic improvements and code refactoring, so we'll still need some testing
*To use MCM with other games, see the spoiler regarding that in the second post of this thread.**Use the "20XX 4.07++ Codes.txt" file from the GitHub, but rename the Sheik/Zelda CPU Disable Transformations mods so that they're not seen as duplicates. You don't need to use the settings.py file from there; just use the 20XX Regions that comes with this new MCM version.
***Using the Tournament Mode Region for the codelist grants over 260% more space for Gecko codes!
Version 3.2 ( 64-bit | 32-bit ):
- New option: "Update Default Game Settings Only". Compatible with 20XX!
- A new text to hex converter for Melee's unique menu texts in the Tools tab*
- Rumble options (per-player defaults) added to the Default Game Settings tab!
- Simplified/cleaned-up default game settings code (now much easier to add more options)
- Conflict detection feature now works between mods and the game's default game settings
- Fixed a parsing bug for some long static overwrites created by the GUI
- Fixed a bug stopping an automatic rescan of enabled codes after changing program options
- Fixed installation false-positives occurring on some codes using static overwrites
- Fixed the Code Offset Conversion input (was broken in just v3.1)
- Improved some messages & dialog boxes to the user
- 32-bit build also available!
*The dictionary for this converter resides in the settings.py file, so you may modify it if you want to figure out more characters.
Version 3.1:
- Standalone function definitions can be shared across specific, or all, game versions
- Standalone functions can now be the only thing in a mod; i.e. "Function Modules"
- Scanning for mods is faster
- Fixed an uncommon, odd GUI bug causing mods to render incorrectly
- Fixed small bug on Mod Construction tab dealing with PAL code updates
- Mods can now be filtered out from parsing by use of a '!' in first few lines (example)
- Further mod organization, and new mods added to library (& a few duplicates removed)
- Will now assume mods are disabled if a static overwrite occurs in reserved regions
- Message for conflicting mod detection fixed to accurately report range ends
- Minor aesthetic fixes (folder tab icon disappearances)
- Fixed notes incorrectly stating that some gecko codes were unavailable
- Tooltip message added to explain the update button in the Mod Construction tab
- Summary tab now displays totals for how much space mods and standalone functions use
- Pressing CTRL-s on the Mods Library or General Settings tab saves your codes to the DOL
- Pressing CTRL-s on the Mod Construction tab saves the selected mod to your library
- If a mod is saved to a new file, Library is rescanned to include it
- "Open this File" button now works on empty Mods Library tabs
- Better validation of "Offset" input field in Mod Construction tab code changes
- The Share/Save functions will now attempt to retrieve missing Original Hex values
- Scroll position and tab selection are now preserved when rescanning Mods Library
- Now remembers last opened file type for the next time you want to open an ISO or DOL
- Added a check for mods writing a static overwrite or injection point to regions used for custom code
- much code cleanup, and testing, bringing this out of the 3.0 "beta"
Version 3.0 (considered beta, since there are so many new changes):
- New nested tab interface for far-greater, user-customizable mod organization
- Mods can now be stored in library as ASM rather than just hex
- New "Mod Construction" tab, for better in-program mod editing and creation
- Mod Construction tab supports viewing/editing ASM with notes/comments
- Rewrote core code-saving logic to be more stable/concise/efficient
- Catches and warns you about mods that conflict with (overwrite) one another
- Rewrote checking for installed mods; should eliminate false-positives
- Improved error checking when saving codes to a DOL/ISO
- Improved support for Gecko codes (for 04 and C2 types)
- Now remembers and defaults to the directory of the last file loaded
- Processing/saving mods that include special branch syntaxes is much faster
- Standalone Functions now only need to be included with one mod
- Custom Branch Syntaxes can now be used with static overwrites
- Fixed parsing bug where branching to 0x8 would be mistaken as a RAM address
- Free space region ( 0x15CC, 0x1698 ) changted to ( 0x15F0, 0x1698 )
- Regions for custom code are now defined differently in the settings.py file
- More regions defined for injecting custom code (Tournament Mode, etc.)
- Regions defined in settings.py now have separate toggles within the GUI
- If new regions are added to settings.py, they will show up in GUI as well
- Empty lines now usable in descriptions
- Fixed (hopefully) all branch Hex -> ASM converter (disassembly) issues
- Improved disassembly performance (speed)
- Fixed a bug that caused ASM not aligned to 8 bytes to fail assembly
- Now zeroes-out unused areas of the free space regions upon saving
- New "Summary" tab, which shows mod totals and lists installed mods
- Mods parser now picks up comments preceded with "#" in descriptions, etc.
- "##" now used in Mods Library files to exclude comments from the parser
- "Save As..." button/functionality added
- Progress indication added for save operations
- Can now just hit 'Enter' in the "ISO / DOL" text field to load that file
- Fixed 'Hitbox Displays Do Not Interpolate' (had bad formatting in library)
- Gecko codehandler moved to the settings.py file, for user modifications
- Better behavior on Gecko codes use (warns about overwriting required regions)
- New option to ignore hash-check on hex restoration (vanillaDolSafetyOverride)
- Fixed alignment for injection code saved directly after the Gecko codehandler
- Removed Herobrine
Version 2.1 (x64 | (x86):
- 32-bit build now available!
- Fixed a parsing bug that would occur with mods that use several standalone functions
- Fixed ASM compiling bug relating to using standalone functions with custom branch syntaxes
- Added measures to prevent enabled/disabled mods with the same injection points from conflicting
- Scrollwheel support!
- Added 'CTRL-A' (Select All) support for text entry fields
- Slightly improved ASM > Hex conversion efficiency
- Number Conversion Tool: 'L' character removed from negative 32-bit floats
- Font size now adapts to user's system's font size setting (tested on Win7)
- Increasing/decreasing font size is now an option in the settings file
Version 2.0 (from the original release of this program):
- Added support for standalone functions (can be shared by multiple mods)
- New convenient calling/branching syntax for functions (e.g. "bl 0x800948a8")
- The 'Offset' value can now optionally be given as a RAM address instead
- Program renamed, from "DRGN's DOL Manager" to "Melee Code Manager"
- Can now add/remove & manage Gecko codes in the DOL (thx to R&D by Dan Salvato)
- Added the Tools tab with the following tools:
- Interface to easily add new codes to the library (formats them for you)
- Can add new codes in the form of assembly without needing to convert first
- ASM <-> Hex Converter (available separately from the above functionality)
- Number converter, RAM address converter, and code offset converter
- Text to Hex (ASCII) converter
- Drag-and-drop now works with the program icon (previously only available on GUI)
- Before overwriting/changing a game's DOL, now asks if you'd like to back it up
- Now uses '#' rather than '*' for comments in Mods Library (the code text files)
- Fixed an alignment problem occurring with free space in non-v1.02 game versions
- Better error handling in case of a problem while applying a mod to a game
- Better parsing of mods library (attempts to explain errors if encountered)
- New, more convenient syntax for long static overwrites (and can be any length)
- Recognizes .GCM files now rather than .GCN
- Fixed the audio causing a crash when no audio drivers were detected
- Increased custom code free space by 0xF64 (thx to R&D by achilles)
- Free space regions exposed to user via settings file (can set to ignore regions)
- Injection Mods show how much space they use (by byte; separate from the meter)
- Reorganized the mods in the text files by their purpose
- Converted a lot of Gecko codes to DOL mods and added them to the library
In the future, I don't see why a program couldn't use packs (even could be a standard zip) that include any combination of game files, textures, audio, and/or ASM. For example, the 'Debug Menu Replaces Tournament Mode' combined with the graphics for it, or a mod pack for a stage, where you might need the stage file as well as a few code changes separate from it, and perhaps music. There could be a program that could install all parts of it, as one unit, directly to your ISO in one step. Adding a custom debug menu builder to this would also likely be possible.
- - -
Shout-outs and special thanks to @ Achilles1515 and Michael Ashby for their support!
And also thanks to @shuall, @_glook, @Jorgasms, @SinsOfApathy, and others, who each stopped their busy hacking to answer questions or give suggestions during my initial design stages. And to @Punkline, for lots of testing/bug reporting/documenting and other feedback.
I plan to put this on Github at some point, but feel free to PM me for the source code for now.
Last edited: