• 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!

DRGN’s DOL Manager - Easily Add Codes to Your Game!

Status
Not open for further replies.

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
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/remove, and otherwise manage all of your game’s default settings and custom codes, including DOL static overwrites of any length, as well as DOL injection mods. Everything is presented in a very easy-to-use interface, which simply presents you with a list of available codes (found in the post following this one), graphically shows you what is currently enabled/disabled in your game, what you've selected to be changed, and allows you to toggle codes on & off by a single graceful, yet powerful, click.

Please note that I've Made a big v2.0 update to this, and migrated the thread to the
parent forum here in order to make this more visible to the average user.


Even if you don't know what the DOL file is, that's ok! Besides with DOL files, you can use this directly with a complete ISO/GCN disc image.

Take a look!

SO Tab.PNG

Besides the open button, you can just drag your DOL or ISO directly anywhere onto the program interface to open it.


And seen below, we have the Injections Mod tab. The main advantage here is that there’s no more need for figuring out branches or converting dol offsets to RAM addresses (even for authors of new codes; all you need to know is the injection point). The program keeps track of the free space in the dol and then calculates all of the branches, just for you! It even shows you how full the DOL is with the 'fill meter' on the left.

IC Tab.png


Not only does this save a lot of time, but this finally eliminates the old problem of the custom code functions of one injection mod overwriting another.

All injected ASM is aligned directly one-after-another, with no gaps, to optimize the DOL’s free space. If updates or changes are made to any codes, their placements will be adjusted accordingly the next time you save.

And, of course, the general Game Settings tab:

Settings Tab.png


This is currently the very first release, so keeping that in mind, I recommend creating a back-up of your stuff. Hopefully it won't be needed, but you never know.

Also, right now this program isn't compatible with games that use custom debug menus such as those in 20XX/SD Remix (unless those are added as static overwrite and/or injection mods to the library), because this program rewrites the DOL's free space regions. So basically, any coding you want in the game should be in the library. You can still work around this though. Simply put code in the free space regions toward the end of the DOL, which this program won't touch if it isn't adding that much code. Or you can leave the 'Overwrite Debug Mode' checkbox unchecked (so the program won't touch that area), and then add custom code there.

- - - -​


I want to give thanks to @shuall for his injections mod guide and for helping me understand how the dol is broken up and distributed in RAM, and also thanks to @ Achilles1515 Achilles1515 and @Jorgasms.

Title is tentative; feel free to offer suggestions.

Potential To-Dos:
- rumble settings
- option to add custom dropdowns on code modules (like for default debug language)
- ability to branch to anywhere rather than just back to the injection site
- config file for setting the free space for codes (rather than hard-coded), and other preferences
- increase of defined 'free space' in the DOL.
- An aid to quickly add and format new codes directly from the GUI
- Gecko Code to DOL Mod converter?
- 'character default names' and/or other dol-mod related tabs
- button to mute the audio? (if anyone cares. lol)
- convince cx_freeze to not import all pygame modules, mainly to reduce program size

Ever have one of those projects that you pick up to do “real quick like”? Haha, yeah, that’s what this was supposed to be, which then slowly became more and more until it turned into this. Oh well, I don’t regret doing it. I'll probably come back to add features to this later after DTW3, besides any bugs that might need fixing, which I'll try to get to right away. Feel free to post about new features or improvements, even if it's already on the todo list, so I know which features are most wanted. Anyway, that's all for now. Hopefully this proves useful and we can all ditch our text files used for tracking this stuff. :)
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Here are the most up-to-date code lists. The program download comes with two text files with a bunch of codes, but those lists are only updated when new program versions come out. So there may be more codes available here. You can just copy/paste whichever codes you want to text files in the "Mods" folder included in the program download. (I have the codes divided into two .txt files simply for distinction between the two types, but they can all be in one file, or in as many files as you want. So you can organize them however you’d like.)

The only important thing to note when copy/pasting the codes is that they need to be separated by a "-==-", which you'll notice if you look through the lists.

Code:
        * Game Mode and Menu Behavior:


Normal C-Stick Functionality in 1P Mode
-C-Stick functions in 1P modes like it does in VS mode
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x167744 ---- 48000008 -> 60000000 ---- (b 0x08 -> nop)
1.01 ------ 0x167D6C ---- 48000008 -> 60000000 ---- (b 0x08 -> nop)
1.02 ------ 0x168060 ---- 48000008 -> 60000000 ---- (b 0x08 -> nop)
PAL ------- 0x168A30 ---- 48000008 -> 60000000 ---- (b 0x08 -> nop)


    -==-


Unlock All Characters & Stages & Random Stage Select
- All characters are available (does not save to memory card)
- All stages are available (does not save to memory card)
- Random stage select is available (does not save to memory card)
[standardtoaster]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x160CA0 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x160894 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x16F6BC ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)

1.01 ------ 0x161280 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x160E74 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x16FE1C ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)

1.02 ------ 0x1614A8 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x16109C ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x170160 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)

PAL ------- 0x161E78 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x161A6C ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)
----------- 0x170B14 ---- A0BF0000 -> 38A007FF ---- (lhz r5,0(r31) -> li r5,2047)


    -==-


All 51 Event Matches Open but Not Complete
(Completed event matches are read from the memory card, or from the current boot as normal.)
[achilles]
Version -- DOL Offset ------ Hex to Replace ----------
1.02 ------ 0x249aa4 ---- 2c1f0005 -> 48000058 ----
----------- 0x15fac8 ---- 4182000c -> 60000000 ----


    -==-


Disable Automatic Start Screen Transitions
-Game never transitions away from the title screen by itself.
[achilles]
Version -- DOL Offset ------ Hex to Replace ----------
1.02 ------ 0x19e838 ---- 800db078 -> 38000000 ----


    -==-


Boot to Character Select Screen
(Does not skip loading memory card data.)
[achilles?]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1BB794 ---- 887F0004 -> 38600002 ---- (lbz r3,4(r31) -> li r0,2)
1.02 ------ 0x1BC600 ---- 887F0004 -> 38600002 ---- (lbz r3,4(r31) -> li r0,2)
PAL ------- 0x1BE160 ---- 887F0004 -> 38600002 ---- (lbz r3,4(r31) -> li r0,2)


    -==-

Jump From Opening Movie to CSS
Pressing Start at the opening movie sends you to the CSS instead of the title screen.
[Starreaver1]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ----- 0x001a7204 ---- 38600000 -> 38600002


    -==-


Player Hands Default to HMN Button
[achilles]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ----- 0x00435e5c ---- C1AC0000 -> C0200000


    -==-


Unlock Stage Select Upon Boot
[Ato]
1.00 ---- 0x15afac ---- 8803186c -> 3800000e
1.02 ---- 0x15ba28 ---- 8803186c -> 3800000e


    -==-


Players Can Choose the Same Costume Color for the Same Character
[achilles and Starreaver1]
Version -- DOL Offset ------ Hex to Replace ----------
1.02 ------ 0x25ce2c ----- 4082000c -> 4800000c ----
----------- 0x25a6f4 ----- 4082000c -> 4800000c ----
----------- 0x25cd5c ----- 4082000c -> 4800000c ----


    -==-


Unrestricted Pause Camera
[achilles]
Version ---- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------- 0x221804 ---- C0230040 -> 39E00000 ---- lfs f1,0x40(r3) -> li r15,0
------------ 0x02C190 ---- D03F02F8 -> 91FF02F8 ---- stfs f1,0x2F8(r31) -> stw r15,0x2F8(r31)
------------ 0x221824 ---- C0230048 -> 3DE04700 ---- lfs f1,0x48(r3) -> lis r15,0x4700
------------ 0x02C19C ---- D03F02FC -> 91FF02FC ---- stfs f1,0x2FC(r31) -> stw r15,0x2FC(r31)
------------ 0x22183C ---- EC210032 -> 3DE04700 ---- fmuls f1,f1,f0 -> lis r15,0x4700
------------ 0x02C16C ---- D03F02E8 -> 91FF02E8 ---- stfs f1,0x2E8(r31) -> stw r15,0x2E8(r31)
------------ 0x221854 ---- EC210032 -> 3DE04700 ---- fmuls f1,f1,f0 -> lis r15,0x4700
------------ 0x02C174 ---- D03F02EC -> 91FF02EC ---- stfs f1,0x2EC(r31) -> stw r15,0x2EC(r31)
------------ 0x22186C ---- EC210032 -> 3DE04700 ---- fmuls f1,f1,f0 -> lis r15,0x4700
------------ 0x02C184 ---- D03F02F4 -> 91FF02F4 ---- stfs f1,0x2F4(r31) -> stw r15,0x2F4(r31)
------------ 0x221884 ---- EC210032 -> 3DE04700 ---- fmuls f1,f1,f0 -> lis r15,0x4700
------------ 0x02C17C ---- D03F02F0 -> 91FF02F0 ---- stfs f1,0x2F0(r31) -> stw r15,0x2F0(r31)


    -==-


Debug Menu replaces Tournament Mode
- Selecting Tournament Melee in the main menu takes you to the Debug Menu instead
- Selecting Single Button Mode takes you to the Tournament Melee mode instead
[Magus, donny2112, SypherPhoenix] - Concomitant Graphical Mod Here
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x228F20 ---- 3800001B -> 38000006 ---- (li r0,27 -> li r0,6)
----------- 0x227F2C ---- 3800002C -> 3800001B ---- (li r0,44 -> li r0,27)

1.01 ------ 0x229A90 ---- 3800001B -> 38000006 ---- (li r0,27 -> li r0,6)
----------- 0x228A9C ---- 3800002C -> 3800001B ---- (li r0,44 -> li r0,27)

1.02 ------ 0x22A218 ---- 3800001B -> 38000006 ---- (li r0,27 -> li r0,6)
----------- 0x229224 ---- 3800002C -> 3800001B ---- (li r0,44 -> li r0,27)

PAL ------- 0x22C084 ---- 3800001E -> 38000006 ---- (li r0,30 -> li r0,6)
----------- 0x22B08C ---- 3800002F -> 3800001E ---- (li r0,74 -> li r0,30)


*    -==-


*Normal C-Stick Functionality in Develop Mode
*- C-Stick additionally provides Master mode functionality while in Develop Mode
*[Magus]
*Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
*1.00 ------ 0x067918 ---- 800D9368 -> 38000000 ---- (lwz r0,-27800(r13) -> li r0,0)
*1.01 ------ 0x067A28 ---- 800D9368 -> 38000000 ---- (lwz r0,-27800(r13) -> li r0,0)
*1.02 ------ 0x067A70 ---- 800D9368 -> 38000000 ---- (lwz r0,-27800(r13) -> li r0,0)
*PAL ------- 0x068154 ---- 800D9388 -> 38000000 ---- (lwz r0,-27768(r13) -> li r0,0)


    -==-


Normal C-Stick Functionality in Develop Mode [Updated]
- C-Stick additionally provides Master mode functionality while in Develop Mode
- C-Stick no longer also toggles fixed camera mode
[Magus (1st set) and achilles (2nd set)]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x067918 ---- 800D9368 -> 38000000 ---- (lwz r0,-27800(r13) -> li r0,0)
1.00 ------ 0x02CC04 ---- 38000008 -> 38000000 ---- (li r0,8 -> li r0,0)

1.01 ------ 0x067A28 ---- 800D9368 -> 38000000 ---- (lwz r0,-27800(r13) -> li r0,0)
1.01 ------ 0x02CC84 ---- 38000008 -> 38000000 ---- (li r0,8 -> li r0,0)

1.02 ------ 0x067A70 ---- 800D9368 -> 38000000 ---- (lwz r0,-27800(r13) -> li r0,0)
1.02 ------ 0x02CC84 ---- 38000008 -> 38000000 ---- (li r0,8 -> li r0,0)

PAL ------- 0x068154 ---- 800D9388 -> 38000000 ---- (lwz r0,-27768(r13) -> li r0,0)
PAL ------- 0x02D1B0 ---- 38000008 -> 38000000 ---- (li r0,8 -> li r0,0)


    -==-


Debug Menu Default Language to English
(You can edit the text file in the "Mods" folder to change what language this sets.)
[SypherPhoenix]
Version -- DOL Offset --- Hex to Replace
1.00 ------ 0x3F53CB ------- 00 -> 01
1.01 ------ 0x3F657B ------- 00 -> 01
1.02 ------ 0x3F725B ------- 00 -> 01
PAL ------- 0x3F8003 ------- 02 -> 01

*Values:
*00 - Japanese
*01 - US English
*02 - UK English (PAL Only)
*03 - German (PAL Only)
*04 - French (PAL Only)
*05 - Italian (PAL Only)
*06 - Spanish (PAL Only)


    -==-



        * Gameplay Changes:


    -==-


Taunt Canceling
- Taunting during dash carries momentum
- Taunting can be interrupted by teeter animation
[Dan Salvato]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x0C6CF4 ---- 40820034 -> 40820058 ---- ()
----------- 0x0DB604 ---- 4BFA5439 -> 4BFA55B5 ---- ()

1.01 ------ 0x0C6E38 ---- 40820034 -> 40820058 ---- ()
----------- 0x0DB7DC ---- 4BFA5349 -> 4BFA54C5 ---- ()

1.02 ------ 0x0C70AC ---- 40820034 -> 40820058 ---- ()
----------- 0x0DBA50 ---- 4BFA5295 -> 4BFA5411 ---- ()

PAL ------- 0x0C7850 ---- 40820034 -> 40820058 ---- ()
----------- 0x0DC204 ---- 4BFA515D -> 4BFA52D9 ---- ()


    -==-


Every Character Can Wall Jump
- Note: Peach can wall jump out of up-B infinitely (any character with a wall jump and the parasol item can do this, even in vanilla Melee)
[Y.S.]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0x07E2A0 ---- 540007FF -> 60000001 ---- ()
----------- 0x07E2A4 ---- 41820254 -> 981F2224 ---- ()


    -==-


No Rapid Jabs - All Applicable Characters
[achilles]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0xD36CC ------ 480000A1 -> 60000000


    -==-



        * Stage Modifications:



Pokémon Stadium - Disable Stage Transformations
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1CD158 ---- 48002FA5 -> 60000000 ---- (bl 0x2FA4 -> nop)
1.01 ------ 0x1CDABC ---- 48002FA5 -> 60000000 ---- (bl 0x2FA4 -> nop)
1.02 ------ 0x1CE128 ---- 48003001 -> 60000000 ---- (bl 0x3000 -> nop)
PAL ------- 0x1CFD4C ---- 48003135 -> 60000000 ---- (bl 0x3134 -> nop)


    -==-


Dreamland 64 - Disable Wind
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x20CF3C ---- 4800059C -> 60000000 ---- (b 0x59C -> nop)
1.01 ------ 0x20D89C ---- 4800059C -> 60000000 ---- (b 0x59C -> nop)
1.02 ------ 0x20E024 ---- 4800059C -> 60000000 ---- (b 0x59C -> nop)
PAL ------- 0x20FE8C ---- 4800059C -> 60000000 ---- (b 0x59C -> nop)


    -==-


Yoshi's Story - Disable Fly Guy Spawns
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1DEE64 ---- 480000D1 -> 60000000 ---- (bl 0xD0 -> nop)
1.01 ------ 0x1DF7C8 ---- 480000D1 -> 60000000 ---- (bl 0xD0 -> nop)
1.02 ------ 0x1DFF28 ---- 480000D1 -> 60000000 ---- (bl 0xD0 -> nop)
PAL ------- 0x1E1D58 ---- 480000D1 -> 60000000 ---- (bl 0xD0 -> nop)


    -==-


Corneria - Disable Arwing Spawns
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1D95FC ---- 4BFFF3D5 -> 60000000 ---- ()
1.01 ------ 0x1D9F60 ---- 4BFFF3D5 -> 60000000 ---- ()
1.02 ------ 0x1DA628 ---- 4BFFF3D5 -> 60000000 ---- ()
PAL ------- 0x1DC438 ---- 4BFFF3D5 -> 60000000 ---- ()


    -==-


Brinstar - Disable Acid
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1D5594 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)
1.01 ------ 0x1D5EF8 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)
1.02 ------ 0x1D65C0 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)
PAL ------- 0x1D83D0 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)


    -==-


Fountain of Dreams - Remove Side Platforms
- Remove (Disable) Side Platforms
- Disable Water Jets
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1C84C4 ---- 801B0014 -> 4800013C ---- (lwz r0,20(r27) -> b 0x13C)
----------- 0x1C84BC ---- EC0007FA -> FC000028 ---- (fmadds f0,f0,f31,f0 -> fsub f0,f0,f0)

1.01 ------ 0x1CDABC ---- 801B0014 -> 4800013C ---- (lwz r0,20(r27) -> b 0x13C)
----------- 0x1C8E20 ---- EC0007FA -> FC000028 ---- (fmadds f0,f0,f31,f0 -> fsub f0,f0,f0)

1.02 ------ 0x1C9494 ---- 801B0014 -> 4800013C ---- (lwz r0,20(r27) -> b 0x13C)
----------- 0x1C948C ---- EC0007FA -> FC000028 ---- (fmadds f0,f0,f31,f0 -> fsub f0,f0,f0)

PAL ------- 0x1CB0B8 ---- 801B0014 -> 4800013C ---- (lwz r0,20(r27) -> b 0x13C)
----------- 0x1CB0B0 ---- EC0007FA -> FC000028 ---- (fmadds f0,f0,f31,f0 -> fsub f0,f0,f0)


    -==-


Green Greens - Disable Whispy Woods (Wind & Apples)
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x20F538 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)
1.01 ------ 0x210068 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)
1.02 ------ 0x2107F0 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)
PAL ------- 0x1EB0C8 ---- 7C0802A6 -> 4E800020 ---- (mflr r0 -> blr)


    -==-


Peach's Castle - Disable Switches and Banzai Bills
[Zauron]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x1C94D8 ---- 48001FA1 -> 4800000C ---- (bl 0x1FA0 -> b 0x0C)
1.01 ------ 0x1C9E3C ---- 48001FA1 -> 4800000C ---- (bl 0x1FA0 -> b 0x0C)
1.02 ------ 0x1CA4A8 ---- 48001FA1 -> 4800000C ---- (bl 0x1FA0 -> b 0x0C)
PAL ------- 0x1CC0CC ---- 48001FA1 -> 4800000C ---- (bl 0x1FA0 -> b 0x0C)





    -==-



        * Character Modifications:



Donkey Kong - Giant Punch cannot be lost during Up+B
[VietGeek]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x10C18C ---- 9004222C -> 60000000 ---- (stw r0,8748(r4) -> nop)
1.01 ------ 0x10C470 ---- 9004222C -> 60000000 ---- (stw r0,8748(r4) -> nop)
1.02 ------ 0x10C6E4 ---- 9004222C -> 60000000 ---- (stw r0,8748(r4) -> nop)
PAL ------- 0x10CE98 ---- 9004222C -> 60000000 ---- (stw r0,8748(r4) -> nop)


    -==-


Samus - Charge Shot cannot be lost during Up+B
[VietGeek]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x125818 ---- 901F2230 -> 60000000 ---- (stw r0,8752(r31) -> nop)
1.01 ------ 0x125BC8 ---- 901F2230 -> 60000000 ---- (stw r0,8752(r31) -> nop)
1.02 ------ 0x125EA4 ---- 901F2230 -> 60000000 ---- (stw r0,8752(r31) -> nop)
PAL ------- 0x126648 ---- 901F2230 -> 60000000 ---- (stw r0,8752(r31) -> nop)


    -==-


Mr. Game & Watch - N/B/U-Aerials L-Cancelable, w/ U-Air Lag Bug Fix
[Magus]

Attack -- DOL Offset ------ Hex to Replace ---------- ASM Code
* N-Air
1.00 ----- 0x147F98 ---- 3880015E -> 38800041 ---- (li r4,350 --> li r4,65)
---------- 0x147FA4 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x147FA8 ---- C02501F8 -> C0230258 ---- (lfs f1,504(r5) --> lfs f1,600(r3))
---------- 0x147FAC ---- 4BF42095 -> 4BF41F89 ---- (bl 0x8008d460 --> bl 0x8008D354)
* B-Air
---------- 0x148028 ---- 3880015F -> 38800043 ---- (li r4,351 --> li r4,67)
---------- 0x148034 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x148038 ---- C0250200 -> C0230260 ---- (lfs f1,512(r5) --> lfs f1,608(r3))
---------- 0x14803C ---- 4BF42005 -> 4BF41EF9 ---- (bl 0x8008d460 --> bl 0x8008D354)
* U-Air
---------- 0x1480B8 ---- 38800160 -> 38800044 ---- (li r4,352 --> li r4,68)
---------- 0x1480C4 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1480C8 ---- C0250200 -> C0230264 ---- (lfs f1,512(r5) --> lfs f1,612(r3))
---------- 0x1480CC ---- 4BF41F75 -> 4BF41E69 ---- (bl 0x8008d460 --> bl 0x8008D354)


Attack -- DOL Offset ------ Hex to Replace ---------- ASM Code
* N-Air
1.01 ----- 0x1483E8 ---- 3880015E -> 38800041 ---- (li r4,350 --> li r4,65)
---------- 0x1483F4 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1483F8 ---- C02501F8 -> C0230258 ---- (lfs f1,504(r5) --> lfs f1,600(r3))
---------- 0x1473FC ---- 4BF41D2D -> 4BF41C21 ---- (bl 0x8008d460 --> bl 0x8008D354)
* B-Air
---------- 0x1484D0 ---- 3880015F -> 38800043 ---- (li r4,351 --> li r4,67)
---------- 0x1484DC ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1484E0 ---- C0250200 -> C0230260 ---- (lfs f1,512(r5) --> lfs f1,608(r3))
---------- 0x1484E4 ---- 4BF41C45 -> 4BF41B39 ---- (bl 0x8008d460 --> bl 0x8008D354)
* U-Air
---------- 0x1485B8 ---- 38800160 -> 38800044 ---- (li r4,352 --> li r4,68)
---------- 0x1485C4 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1485C8 ---- C0250200 -> C0230264 ---- (lfs f1,512(r5) --> lfs f1,612(r3))
---------- 0x1485CC ---- 4BF41B5D -> 4BF41A51 ---- (bl 0x8008d460 --> bl 0x8008D354)


Attack -- DOL Offset ------ Hex to Replace ---------- ASM Code
* N-Air
1.02 ----- 0x1486DC ---- 3880015E -> 38800041 ---- (li r4,350 --> li r4,65)
---------- 0x1486E8 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1486EC ---- C02501F8 -> C0230258 ---- (lfs f1,504(r5) --> lfs f1,600(r3))
---------- 0x1486F0 ---- 4BF41BF9 -> 4BF41AED ---- (bl 0x8008d460 --> bl 0x8008D354)
* B-Air
---------- 0x1487C4 ---- 3880015F -> 38800043 ---- (li r4,351 --> li r4,67)
---------- 0x1487D0 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1487D4 ---- C0250200 -> C0230260 ---- (lfs f1,512(r5) --> lfs f1,608(r3))
---------- 0x1487D8 ---- 4BF41B11 -> 4BF41A05 ---- (bl 0x8008d460 --> bl 0x8008D354)
* U-Air
---------- 0x1488AC ---- 38800160 -> 38800044 ---- (li r4,352 --> li r4,68)
---------- 0x1488B8 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x1488BC ---- C0250200 -> C0230264 ---- (lfs f1,512(r5) --> lfs f1,612(r3))
---------- 0x1488C0 ---- 4BF41A29 -> 4BF4191D ---- (bl 0x8008d460 --> bl 0x8008D354)


Attack -- DOL Offset ------ Hex to Replace ---------- ASM Code
* N-Air
PAL ------ 0x148E80 ---- 3880015E -> 38800041 ---- (li r4,350 --> li r4,65)
---------- 0x148E8C ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x148E90 ---- C02501F8 -> C0230258 ---- (lfs f1,504(r5) --> lfs f1,600(r3))
---------- 0x148E94 ---- 4BF41B0D -> 4BF41A01 ---- (bl 0x8008d460 --> bl 0x8008D354)
* B-Air
---------- 0x148F68 ---- 3880015F -> 38800043 ---- (li r4,351 --> li r4,67)
---------- 0x148F74 ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x148F78 ---- C0250200 -> C0230260 ---- (lfs f1,512(r5) --> lfs f1,608(r3))
---------- 0x148F7C ---- 4BF41A25 -> 4BF41919 ---- (bl 0x8008d460 --> bl 0x8008D354)
* U-Air
---------- 0x149050 ---- 38800160 -> 38800044 ---- (li r4,352 --> li r4,68)
---------- 0x14905C ---- 80A3002C -> 90830070 ---- (lwz r5,44(r3) --> stw r4,112(r3))
---------- 0x149060 ---- C0250200 -> C0230264 ---- (lfs f1,512(r5) --> lfs f1,612(r3))
---------- 0x149064 ---- 4BF4193D -> 4BF41831 ---- (bl 0x8008d460 --> bl 0x8008D354)

Code:
Pressing Start at the title screen boots directly to the CSS
[Starreaver1]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ----- 0x001AD554 ---- 38600001 -> Branch

3C602802 60632D00
90640000 481AC7DC


    -==-


Remove Special Messages
- Gets rid of all those annoying messages that pop up if you used some DOL codes to unlock stuff.
[???]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ----- 0x001BC600 ----- 887f0004 -> Branch

3E408045 6252C20C
3AA03940 B2B20000
3AA00010 9AB20024
3AA00001 9AB20023
3AA00080 9AB2001C
3DE08046 61EFAF5C
3E00803F 6210A25C
39E00000 99F0008A
887F0004 481BC310


    -==-


Hold A+B For Salty Runbacks
- Holding A+B at the end of a match immediately starts a new match on that stage.
[Dan Salvato and Sham Rock]

Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.00 ------ 0x19FFf8 ---- 0x981F0003 -> Branch

39C00000 3DE08046
61EF9140 820F0000
5611018D 41820010
561101CF 41820008
38000002 39CE0001
2C0E0004 4080000C
39EF000C 4BFFFFD8
981F0003 4819EEC0

1.02 ------ 0x1A0D40 ---- 981F0003 -> Branch

39C00000 3DE08046
61EFB108 820F0000
5611018D 41820010
561101CF 41820008
38000002 39CE0001
2C0E0004 4080000C
39EF000C 4BFFFFD8
981F0003 4819FC08

PAL ------ 0x1A18C4 ---- 0x981F0003 -> Branch

39C00000 3DE08045
61EFBF10 820F0000
5611018D 41820010
561101CF 41820008
38000002 39CE0001
2C0E0004 4080000C
39EF000C 4BFFFFD8
981F0003 481A078C


    -==-


Hold L+R+Y For Salty Runbacks
- Holding L+R+Y at the end of a match immediately starts a new match on that stage.
[Dan Salvato]

Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0x1A0D40 ---- 981F0003 -> Branch

39C00000 3DE08046
61EFB108 820F0000
56110253 41820018
56110295 41820010
56110109 41820008
38000002 39CE0001
2C0E0004 4080000C
39EF0008 4BFFFFD0
981F0003 4819FC00


    -==-


Always skip the result screen, And stock count = placement
- Game skips the result screen after a match, and changes the stars for the amount of stocks taken to the placement of the player in the last match.
[Sham Rock]
Version -- DOL Offset ------ Hex to Replace -------

1.00 ------ 0x19FFf4 ---- 3803FFFF -> Branch

3803FFFF 2C000004
40820060 2C0B0020
41820058 3A400000
3E808047 62947D90
3EA0804D 62B545AF
8E1400A8 8A340001
2C10004E 4080000C
9E350001 4800000C
3A310001 9E350001
3A520001 2C120004
41A0FFD8 3A000000
3A200000 3A800000
3AA00000 38000000
60000000 4819EF8C

1.02 ------ 0x1a0d3c ---- 3803ffff -> Branch

3803FFFF 2C000004
40820060 2C0B0020
41820058 3A400000
3E808047 62949D58
3EA0804D 62B5672F
8E1400A8 8A340001
2C10004E 4080000C
9E350001 4800000C
3A310001 9E350001
3A520001 2C120004
41A0FFD8 3A000000
3A200000 3A800000
3AA00000 38000000
60000000 4819FCD4

PAL ------- 0x1A18C0 ---- 3803FFFF -> Branch

3803FFFF 2C000004
40820060 2C0B0020
41820058 3A400000
3E808046 6294AB60
3EA0804C 62B579EF
8E1400A8 8A340001
2C10004E 4080000C
9E350001 4800000C
3A310001 9E350001
3A520001 2C120004
41A0FFD8 3A000000
3A200000 3A800000
3AA00000 38000000
60000000 481A0858


    -==-

Always Skip Results Screen, & KO Stars Function Normally
- Game skips the result screen after a match.
[achilles]
Version -- DOL Offset ------ Hex to Replace -------

1.02 ------ 0x1A0D3C ---- 3803FFFF -> Branch

3803FFFF 2C0B0020
41820064 2C000004
4082005C 3AC00000
3E608045 6273226F
3E40804D 6252672F
8E320001 8E930E84
7E31A214 8E930004
7E31A214 8E930004
7E31A214 8E930004
7E31A214 2C1100FF
41800008 3A2000FF
9A320000 3AD60001
2C160004 41A0FFC4
38000000 4819FCD4


    -==-


L Cancel % in Results Screen (revised 2/11/15)
- Shows the player's L-cancel success rate in the end of game stats page.
[Wooggle]
Version -- DOL Offset ------ Hex to Replace -------
1.02 ------ 0x3D79C ----- 90030C68 -> 60000000
----------- 0x8A1E0 ----- 3880FFFF -> Branch

8A830678 3DC08000
61CE45D4 1EB40008
7DCEAA14 81EE0000
39EF0001 91EE0000
3A0EFFFC 82300000
7E717BD6 3E408045
62523DA4 1EB40E90
7E52AA14 92720000
3880FFFF 4808A2F8

----------- 0x8A284 ----- EC010024 -> Branch

8A830678 3DC08000
61CE45D4 1EB40008
7DCEAA14 81EE0000
3A0EFFFC 82300000
3A310064 92300000
7E717BD6 3E408045
62523DA4 1EB40E90
7E52AA14 92720000
EC010024 4808A354

----------- 0x174E04 ---- 80030008 -> Branch

3DC08000 61CE45D0
39E00000 91EE0000
91EE0004 91EE0008
91EE000C 91EE0010
91EE0014 91EE0018
91EE001C 3DC080C6
61CE1DB8 3DE01620
61EF151A 91EE0000
3DE0200C 61EF2024
91EE0004 3DE02031
61EF2026 91EE0008
3DE02028 61EF202F
91EE000C 3DE01A21
61EF0300 91EE0010
39E00000 91EE0014
91EE0018 91EE001C
80030008 48174E08


    -==-


Disable Tree Blow on Dreamland if P1's nametag is !WND
[Wooggle]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0x33950 ---- 3BE00000 -> Branch

3E208021 62311444
3E404800 6252059C
92510000 3DC0EC0B
61CE2020 3DE080BD
61EF5D60 820F0000
7C0E8000 40820034
3DC00B20 61CE170B
820F0004 7C0E8000
40820020 3DC0200D
61CE0F0D 820F0008
7C0E8000 4082000C
3E406000 92510000
3BE00000 480338EC


    -==-


Set Menu Music in Sound Test
- The last song played in Sound Test will play for all menus, including the CSS and SSS.
- Remembers the last song even after matches.
[Dan Salvato]

Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0x2480B8 ---- 7C7C002E -> Branch

7C7C002E 2C030000
40820008 3860FFFF
808D8840 98641851
3C808046 60849D40
9064005C 2C030000
40800008 38600000
4BE200C8

----------- 0x22B514 ---- 4BDF55F5 -> Branch

3C808046 60849D40
8084005C 2C040000
41820018 41810008
38800000 80AD8840
98851851 7C832378
3D808002 618C3F28
7D8903A6 4E800421
4BE034E8

The format for both types of codes are pretty simple, so it should be pretty easy to follow. Feel free to post any questions on it though. And btw, a * preceding a line comments it out, so the program won't bother to read it.

With the injection mods, you might be wondering about the branch back (since those are already set in the existing mods). As long as the last instruction is a '48' or '4B' branch the program will rewrite them. So it doesn't matter which of those two you use when writing new codes for this, and the number doesn't matter either; you can just use all zeros or any other number you want (still needs to be a full 8 character instruction). In the future I'll need to add the ability to branch to anywhere, but for now they will only branch back to directly after the injection site. So far I don't think I've seen any codes that branch to other places though.

Please help me grow this library by posting codes in the required format!
 
Last edited:
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
Congrats on this, it looks great and I hope it sees lots of use around here.

Do you happen to know exactly how much free space the dol has, by the way?
 

TerryJ

Smash Journeyman
Joined
Apr 12, 2010
Messages
488
Location
BEST COAST, WA
NNID
1337-1337-1337
3DS FC
1337-1337-1337
Welp it looks like it's finally time for me to rebuild my ISO again. I've been putting it off but thankfully this will really help save time! Thanks for this :)
 
Last edited:
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
By the way, if someone documents the parameters of the file loading function, you could just modify the DOL to include a Gecko codehandler and then stick a Gecko code file on your ISO. Such a solution would permanently replace DOL modding, provide cleaner code with the features of Gecko, and also prevent modders to have to convert codes to DOL mods in the first place.

It's probably something I'll be interested in looking into at some point.
 

Chaos 0

Smash Rookie
Joined
Apr 5, 2015
Messages
5
Uhh First post ever but, when I try to open it I get this error:

Trace (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py".
line 27, in <module>
File "DRGN's DOL Manager.py", line 1433 in <module>
File "C:\Python27\lib\newTkDnD.py", line 15, in __init__
File "C:\Python27\lib\newTkDnD.py", line 8 in _load_tkdnd
TclError: can't find package tkdnd

Im a super noob when it comes to this kinda stuff , so please excuse me ;P
 
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
Uhh First post ever but, when I try to open it I get this error:

Trace (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py".
line 27, in <module>
File "DRGN's DOL Manager.py", line 1433 in <module>
File "C:\Python27\lib\newTkDnD.py", line 15, in __init__
File "C:\Python27\lib\newTkDnD.py", line 8 in _load_tkdnd
TclError: can't find package tkdnd

Im a super noob when it comes to this kinda stuff , so please excuse me ;P
I get the same thing. Is there a chance that some Python dependencies aren't packaged in the application?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Congrats on this, it looks great and I hope it sees lots of use around here.

Do you happen to know exactly how much free space the dol has, by the way?
I haven't defined and added up all of the regions yet, but the total of the known areas is somewhere between 0x2C34 and 0x39E8, with another 0x3AFC if you want to overwrite the Debug Menu.

According to achilles, it's all of the regions of zeroes from 0 to 0x2900, then 0x3f7124 to
0x3fac20 if you're overwriting the Debug Menu, and finally 0x407950 to 0x408f50. He said there are bits of the Debug Menu in other places too, but I don't know those areas. I'll post all the exact regions between 0 and 0x2900 once I have them all defined.

Uhh First post ever but, when I try to open it I get this error:

Trace (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py".
line 27, in <module>
File "DRGN's DOL Manager.py", line 1433 in <module>
File "C:\Python27\lib\newTkDnD.py", line 15, in __init__
File "C:\Python27\lib\newTkDnD.py", line 8 in _load_tkdnd
TclError: can't find package tkdnd

Im a super noob when it comes to this kinda stuff , so please excuse me ;P
Thanks. I'll fix this when I get home. As Dan said, looks like cx_freeze forgot a module during compilation; it's a simple fix. The program should work fine still. That module is just for drag-and-drop. So just use the open button for now.
 
Last edited:

Acryte

Smash Ace
Joined
Mar 30, 2005
Messages
986
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/remove, and otherwise manage all of your game’s default settings and custom codes, including DOL static overwrites of any length, as well as DOL injection mods. Everything is presented in a very easy-to-use interface, which simply presents you with a list of available codes (found in the post following this one), graphically shows you what is currently enabled/disabled in your game, what you've selected to be changed, and allows you to toggle codes on & off by a single graceful, yet powerful, click.


Even if you don't know what the DOL file is, that's ok! Besides with DOL files, you can use this directly with a complete ISO/GCN disc image.

Take a look!

View attachment 48504
Besides the open button, you can just drag your DOL or ISO directly anywhere onto the program interface to open it.


And seen below, we have the Injections Mod tab. The main advantage here is that there’s no more need for figuring out branches or converting dol offsets to RAM addresses (even for authors of new codes; all you need to know is the injection point). The program keeps track of the free space in the dol and then calculates all of the branches, just for you!

View attachment 48506

Not only does this save a lot of time, but this finally eliminates the old problem of the custom code functions of one injection mod overwriting another.

All injected ASM is aligned directly one-after-another, with no gaps, to optimize the DOL’s free space. If updates or changes are made to any codes, their placements will be adjusted accordingly the next time you save.

And, of course, the general Game Settings tab:

View attachment 48513

This is currently the very first release, so keeping that in mind, I recommend creating a back-up of your stuff. Hopefully it won't be needed, but you never know.

- - - -​


I want to give thanks to @shuall for his injections mod guide and for helping me understand how the dol is broken up and distributed in RAM, and also thanks to @ Achilles1515 Achilles1515 and @Jorgasms.

Title is tentative; feel free to offer suggestions.

Potential To-Dos:
- rumble settings
- option to add custom dropdowns on code modules (like for default debug language)
- config file for setting the free space for codes (rather than hard-coded), and other preferences
- increase of defined 'free space' in the DOL.
- An aid to quickly add and format new codes directly from the GUI
- Gecko Code to DOL Mod converter?
- 'character default names' and/or other dol-mod related tabs
- button to mute the audio? (if anyone cares. lol)
- convince cx_freeze to not import all pygame modules, mainly to reduce program size

Ever have one of those projects that you pick up to do “real quick like”? Haha, yeah, that’s what this was supposed to be, which then slowly became more and more until it turned into this. Oh well, I don’t regret doing it. I'll probably come back to add features to this later after DTW3, besides any bugs that might need fixing, which I'll try to get to right away. Anyway, that's all for now. Hopefully this proves useful and we can all ditch our text files used for tracking this stuff. :)
Such a great tool! Can't wait to check this out.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
I fixed the problem. The dependency 'newTkDND' was included, but not the module that that in-turn needed; the latter was loaded in a weird way, so cx_freeze wouldn't detect that it needed to be included. I never noticed it myself since even the compiled version of the program was defaulting to an already installed copy of the module on the systems I tested on.

And I updated the second post. Check it out, and help me add to the library of codes! The format is really easy to use!

I also finished defining the 'free space' for custom code. All of the regions the program uses are:
Code:
debugMenuRegion = (0x3f7124, 0x3fac20)
customCodeRegions = [ ( 0x2C8, 0x398 ), ( 0x39C, 0x498 ), ( 0x4E4, 0x598 ),    ( 0x5CC, 0x698 ),            # 0xD0, 0xFC, 0xB4, 0xCC     = 0x34C
                     ( 0x6CC, 0x798 ), ( 0x8CC, 0x998 ), ( 0x99C, 0xA98 ), ( 0xACC, 0xB98 ),            # 0xCC, 0xCC, 0xFC, 0xCC     = 0x360
                     ( 0xBCC, 0xE98 ), ( 0xECC, 0xF98 ), ( 0xFCC, 0x1098 ), (0x10CC, 0x1198 ),            # 0x2CC, 0xCC, 0xCC, 0xCC     = 0x530        +(119C, 11B8) 0x0C?
                     ( 0x1220, 0x1298 ), ( 0x1308, 0x1398 ), ( 0x1408, 0x1498 ), ( 0x1508, 0x1598 ),    # 0x78, 0x90, 0x90, 0x90     = 0x228
                     ( 0x15CC, 0x1698 ), ( 0x16CC, 0x1898 ), ( 0x18CC, 0x1998 ), ( 0x19CC, 0x1E98 ),    # 0xCC, 0x1CC, 0xCC, 0x4CC     = 0x830
                     ( 0x1ECC, 0x1F98 ), ( 0x1FCC, 0x2098 ), ( 0x20CC, 0x2198 ),                         # 0xCC, 0xCC, 0xCC             = 0x264
                     (0x407950, 0x408f50) ]
@ Dan Salvato Dan Salvato , @ Achilles1515 Achilles1515 , @SypherPhoenix, or anyone else, if you guys identify more regions that are safe to use, let me know and I'll include those in this. In the future I'd like to add a config file so anyone can easily adjust or add regions.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
DRGN, this looks really awesome and will certainly be helpful for a lot of people.

Thoughts for features:

- Ability to branch link into custom functions/ability to have custom functions end in blr’s.

- “ability to branch to anywhere rather than just back to the injection site”. Should be anywhere in the DOL, making sure to be able to go to custom functions that the program has already inserted. This is when branch linking would be nice.

- Ability to write tables/ASM into the DOL without having an injection point.

Example of using the above stuff:
I write a custom function (with no injection point) that when branch linked into, takes a floating point number and converts it into an integer. Then branch link returns back to whatever function called it. I want to throw that function into the DOL and then have the ability to branch link into it, whenever I am writing custom functions (with or without injection points).

EDIT: Also, a Tools page.

Decimal to hex and vice versa.

32 bit floating point to hex and vice versa.

64 bit floating point as well.


Subtractions/additions in hex/decimal.

Theoretical outputs of some ASM instructions with customizable inputs.

Idk.I'm probably going to make an Excel doc for all this stuff soon.


The Big Question (because I don’t know anything about Python, etc.):
Can you run the ASM<>WiiRD converter “in the background” of your program? Basically, could you build the same input windows that program takes, within the DOL Manager, and then “run ASM<>WiiRD in the background” and just mirror it’s outputs into your program?

If the answer is yes, then we’ve got a lot to talk about…

Amazing work as always. Sorry for any rambling/unorganization of this post. You do amazing work for this community.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
DRGN, this looks really awesome and will certainly be helpful for a lot of people.

Thoughts for features:

- Ability to branch link into custom functions/ability to have custom functions end in blr’s.

- “ability to branch to anywhere rather than just back to the injection site”. Should be anywhere in the DOL, making sure to be able to go to custom functions that the program has already inserted. This is when branch linking would be nice.

- Ability to write tables/ASM into the DOL without having an injection point.

Example of using the above stuff:
I write a custom function (with no injection point) that when branch linked into, takes a floating point number and converts it into an integer. Then branch link returns back to whatever function called it. I want to throw that function into the DOL and then have the ability to branch link into it, whenever I am writing custom functions (with or without injection points).

EDIT: Also, a Tools page.

Decimal to hex and vice versa.

32 bit floating point to hex and vice versa.

64 bit floating point as well.


Subtractions/additions in hex/decimal.

Theoretical outputs of some ASM instructions with customizable inputs.

Idk.I'm probably going to make an Excel doc for all this stuff soon.


The Big Question (because I don’t know anything about Python, etc.):
Can you run the ASM<>WiiRD converter “in the background” of your program? Basically, could you build the same input windows that program takes, within the DOL Manager, and then “run ASM<>WiiRD in the background” and just mirror it’s outputs into your program?

If the answer is yes, then we’ve got a lot to talk about…

Amazing work as always. Sorry for any rambling/unorganization of this post. You do amazing work for this community.
I like these ideas and I think it's all possible. I'll need to do some research on the different kinds of branches first though; I only know the 48 and 4B types. Actually, I'd never even done an injection mod or written branches before writing this program, haha. XD

Integrating programs that can use the command line is fairly simple (now that I've already got it figured out anyway), but it looks like ASM<>WiiRD doesn't have command line access. However, luckily (amazingly), I found a python module built for the same thing. PyiiASMH. So that's even better; using a module rather than python to command line intercommunication is more efficient. I should be able to build that into a tools tab with everything else. So theoretically, you could just write ASM into a text area and click a button to convert and write that directly into the game.

Constructive rambling is good rambling, right?
 

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
This is pretty awesome.

2 things.
Isn't the other extension for ISOs .gcm?
It crashes if you start it without an audio device plugged in. Not sure if you can fix that or if it's even worth it haha
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
This is pretty awesome.

2 things.
Isn't the other extension for ISOs .gcm?
It crashes if you start it without an audio device plugged in. Not sure if you can fix that or if it's even worth it haha
Uhh, is it? Haha, I've only had like two games that weren't ISO, so yeah, that could be. *Looks it up* Yup, apparently is. Maybe stands for "GameCube Media"? I'll change that for the next update. And yeah, I know about the sound. It's not whether something isn't plugged in, but whether an audio device driver is installed. Yeah, like you said, not a big problem (how often is a system not going to have an audio driver? They're probably not going to be playing smash on it, for one thing. lol) but I can fix that pretty easily for the next version too.

On that note, I started making a 'Tools' tab already. So far I just have the number converters achilles suggested. I'm thinking about other things like a Gecko code to DOL mod converter, so you can just give it Gecko codes and not have to go and edit the text file library. Or you could just give it strait ASM like I mentioned before.
 
Last edited:

oOSuperMarioOo

Smash Rookie
Joined
May 21, 2015
Messages
6
Would it be possible if someone made a DOL mod that allows the player to cancel any of their special attacks? If someone can make that mod, then it could probably be one of the best ones to add to your ISO.
 

MagicScrumpy

Smash Journeyman
Joined
Feb 25, 2015
Messages
251
Location
Ann Arbor, Michigan
Strictly speaking, it's definitely doable, but it would be very tedious to do that with every single move, and the behaviors of some moves make certain kinds of instant interrputs really wonky. On top of that, there are lots of types of cancels which special moves in Melee use and therefore could be applied to others (e.g. jump cancelling, airdodge cancelling, and dash cancelling). And then on top of THAT, you can interrupt specials with functions such as wait (which should let you do anything out of the move that you can do out of just standing on the ground), but that can be really buggy with a whole lot of moves.

I'm assuming you're looking for something along the lines of a Melee turbo mode, but I don't think there's much of a desire to create such a thing due to the complexity of the code and how horribly tedious creating such a code would be.

Also, this would be appropriate in the DOL mod topic.
 
Last edited:

oOSuperMarioOo

Smash Rookie
Joined
May 21, 2015
Messages
6
I'm assuming you're looking for something along the lines of a Melee turbo mode, but I don't think there's much of a desire to create such a thing due to the complexity of the code and how horribly tedious creating such a code would be.
Of course I can edit the moves to allow them to cancel into another attack in Crazy Hand; however, due to the odd locations of special attacks, I'll have to use HxD Text Editor to edit the special moves so that they can be cancellable, although I do hope that there would one day be a program that would allow me to cancel special attacks without having to do tedious work to enabling Turbo Mode.
 

MajinSweet

Smash Journeyman
Joined
Jun 13, 2007
Messages
295
Location
New York
Would you be able add this Gecko code?

Aerials are Automatically L-Cancelled (v1.02) [InternetExplorer]:
0406B620 60000000

Been having trouble converting it into dol.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Would you be able add this Gecko code?

Aerials are Automatically L-Cancelled (v1.02) [InternetExplorer]:
0406B620 60000000

Been having trouble converting it into dol.
Try adding this to the library of codes (in the "Static Overwrites.txt" text file in the "Mods" folder):

Code:
    -==-


Aerials are Automatically L-Cancelled
[Dan Salvato]
Version -- DOL Offset ------ Hex to Replace
1.02 ------ 0x68200 ---- 41820010 -> 60000000
Let me know if it works. I'll add this and many more codes to the library when I release the next version of the program.
 
Last edited:

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
Since sharing DOLs is perfectly legal, might I suggest adding the ability to create a DOL with no input file, just from a vanilla 1.00, 1.01, 1.02, or PAL DOL that would be stored in the program itself?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
With the new release, there will just be a folder with the original DOLs (for each version) included in the download.

I could add a button like 'Create new DOL', to start a new DOL from scratch using one of those. But that would basically just be the same thing as copying an original DOL and opening it in the program. Not sure whether that justifies a button.
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
By the way, if someone documents the parameters of the file loading function, you could just modify the DOL to include a Gecko codehandler and then stick a Gecko code file on your ISO. Such a solution would permanently replace DOL modding, provide cleaner code with the features of Gecko, and also prevent modders to have to convert codes to DOL mods in the first place.

It's probably something I'll be interested in looking into at some point.
Code:
int32_t 80016c64(r3, r4, r5, r6, r7, r8, r9, r10)

r3 = ptr to String, Ex. "GmTtAll.usd"
r4 = Empty region
r5 = ptr to String, Ex. "TtlMoji_Top_joint"
r6 = 0 or r4 + 0x04
r7 = 0 or ptr to String, Ex. "TtlMoji_Top_animjoint"
r8 = 0 or r4 + 0x08
r9 = 0 or ptr to String, Ex. "TtlMoji_Top_matanim_joint"
r10 = 0 or r4 + 0x0C

Returns an an int32_t in r3
Pretty sure it's the caller of this, since it seems to be called at startup, menu loading, and match loading, then if I remember right, it blrs back to the caller function, does mr r27, r3, then calls malloc. So, I think the r3 returned is the size in bytes of the particular subregion defined by the string in r5.

I remember seeing called to load character data too.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
this needs stage striking
like this REALLY needs stage striking
Here, I converted it to a DOL mod:

Code:
    -==-


Stage Striking
Works like it does in PM.
X = ban currently selected stage
Y = ban all stages that aren't allowed in random, and unban all that are allowed
Z = unban all
Banned stages can't be selected anymore, however they can still be selected when someone
chooses "Random".
(Replace the line "9A900000 1E12001C" in the code with "9A900024 1E12001C" for
the black version of the code.)
[Sham Rock]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0x256F9C ---- C022C9E8 -> Branch

39E00001 3E008046
6210B0FC 1E2F000C
7E31802E 5630014B
4182000C 3A200001
48000020 56300109
4182000C 3A200002
48000010 563002D7
418200DC 3A200003
3EA0803F 62B506D0
3EC0804D 62D66CAE
3A800000 3A600000
3A400000 2C110001
40820014 8A560000
2C12001C 418100A8
48000050 2C110003
40820010 3A80003F
3A600002 4800003C
1E12001C 7E10AA14
8AF0000A 3E008045
6210C388 82100000
7E10BC30 561007FF
41820010 3A600002
3A80003F 4800000C
3A600000 3A800000
1E12001C 7E10A82E
2C120016 41800008
82100010 82100018
82100004 82100008
8210001C 82100008
9A900000 1E12001C
3A100008 7E70A9AE
3A00001E 9A160000
2C110001 41820010
3A520001 2C12001D
41A0FF4C 39EF0001
2C0F0005 41A0FEE8
C022C9E8 48000000

1.00 ------ 0x255CEC ---- C022C9E8 -> Branch

39E00001 3E008046
62109134 1E2F000C
7E31802E 5630014B
4182000C 3A200001
48000020 56300109
4182000C 3A200002
48000010 563002D7
418200DC 3A200003
3EA0803E 62B5E840
3EC0804D 62D64B2E
3A800000 3A600000
3A400000 2C110001
40820014 8A560000
2C12001C 418100A8
48000050 2C110003
40820010 3A80003F
3A600002 4800003C
1E12001C 7E10AA14
8AF0000A 3E008045
6210A3C0 82100000
7E10BC30 561007FF
41820010 3A600002
3A80003F 4800000C
3A600000 3A800000
1E12001C 7E10A82E
2C120016 41800008
82100010 82100018
82100004 82100008
8210001C 82100008
9A900000 1E12001C
3A100008 7E70A9AE
3A00001E 9A160000
2C110001 41820010
3A520001 2C12001D
41A0FF4C 39EF0001
2C0F0005 41A0FEE8
C022C9E8 48000000

PAL ------- 0x257AD4 ---- C022CA40 -> Branch

39E00001 3E008045
6210BF04 1E2F000C
7E31802E 5630014B
4182000C 3A200001
48000020 56300109
4182000C 3A200002
48000010 563002D7
418200DC 3A200003
3EA0803F 62B51550
3EC0804C 62D67FC6
3A800000 3A600000
3A400000 2C110001
40820014 8A560000
2C12001C 418100A8
48000050 2C110003
40820010 3A80003F
3A600002 4800003C
1E12001C 7E10AA14
8AF0000A 3E008044
6210D190 82100000
7E10BC30 561007FF
41820010 3A600002
3A80003F 4800000C
3A600000 3A800000
1E12001C 7E10A82E
2C120016 41800008
82100010 82100018
82100004 82100008
8210001C 82100008
9A900000 1E12001C
3A100008 7E70A9AE
3A00001E 9A160000
2C110001 41820010
3A520001 2C12001D
41A0FF4C 39EF0001
2C0F0005 41A0FEE8
C022CA40 48000000
Just copy/paste that into the text file library (in the "Mods" folder) and it should work. If it doesn't, double check that you separated it from the other mods before and/or after it with the little "-==-" divider.
 
Last edited:

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
I've got a question on what this does. When you apply an ASM injection, does it just put it in the first available spot of the pre-defined free space and change the branches?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Yeah, basically. I mean, besides other checks/calculations for things like the game version, which mods are installed or are pending addition/removal, the graphical "meter" to show how much space is used, monitoring to make sure mods have valid input and prevent them from being only partially added (due to bad user input, for example), etc. Since it adds any additional code directly after the last, with no space in-between, then this program is especially useful if you really want to maximize the amount of space that's available, so you don't have to manually move around lots of hex (and recalculate all of the branches!) from multiple mods when you want to change something.

The new version (not yet released) will also do a lot more, such as allow you to write DOL mods using RAM addresses rather than DOL offsets, making it super easy to convert mods. And it will allow you to call one function from another by using a syntax in your code as simple as "call nameOfFunction", which will not only call the other code (doing the branch calculations for you of course), but add code to save, and later restore , the link register. This should allow any functions to keep calling other functions, without the game execution ever becoming "lost" and not knowing where it originated from. Ultimately, this is all nice for efficiency as mods get more complex, because lots of mods could use some of the same functions, but each function will only be written to the DOL once, saving on precious code space.

Plus there's the Tools tab the new version will have, which should be useful.
 

Benny P

Smash Journeyman
Joined
Dec 10, 2014
Messages
465
Location
Coming Soon
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/remove, and otherwise manage all of your game’s default settings and custom codes, including DOL static overwrites of any length, as well as DOL injection mods. Everything is presented in a very easy-to-use interface, which simply presents you with a list of available codes (found in the post following this one), graphically shows you what is currently enabled/disabled in your game, what you've selected to be changed, and allows you to toggle codes on & off by a single graceful, yet powerful, click.


Will this work for PAL? pleeeeaaasse say yes
 

Gehis514

Smash Apprentice
Joined
Jul 25, 2015
Messages
119
Switch FC
SW 4004 9260 8249
Does this program use a specific version of windows? Because i sadly can't run it :'(
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Will this work for PAL? pleeeeaaasse say yes
Yes. It supports all game/DOL versions, but it still depends on whether the mod has been written/converted to work for that game version too.
Does this program use a specific version of windows? Because i sadly can't run it :'(
It should work on Windows 7/8. Though the only Windows 7 and 8 I've tested it on were 64 bit. I haven't tried it on 32 bit (x86) (because my only 32 bit system still running is kinda buried). I assume most of the limitations are based on the compiler I'm using (cx_Freeze); but I'm actually not sure if it's also dependent on the architecture (x86 vs x64) of my python installation. I'll probably look into that later.
 
Last edited:

Gehis514

Smash Apprentice
Joined
Jul 25, 2015
Messages
119
Switch FC
SW 4004 9260 8249
I have 32 bit window 7, so that most likely would be the case
 
D

Deleted member

Guest
This stuff is really all foreign to me, is there an easy way to add these codes in?

Code:
Disable Tap Jump (1.02) [Achilles]
C20CBBC0 00000003
89FD06BE 2C0F0004
40800008 4E800020
7C0802A6 00000000
C20CB4E0 00000003
2C040001 40820008
4E800020 7C0802A6
60000000 00000000
Code:
All Players Can Control the Debug Menu (1.02) [wParam]
Paste Overwrite @ DOL 0x300584

39400000 39000000
38E00008 3C80804C
608420BC 1CAA0044
7D242A14 80690008
70631F10 7D081B78
80690000 70600020
41820008 38E00000
5460C8C6 5060D884
5060F002 7D080378
54606006 7D080378
54604007 4182000C
38E00000 7D080378
394A0001 2C0A0004
4180FFA4 7500F000
41820028 886DB7AC
2C030000 41820014
3863FFFF 986DB7AC
5508013E 48000014
98EDB7AC 4800000C
38600000 986DB7AC
7D034378 4E800020
Thanks.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Yeah. These and many more are going to be included by default when I can get around to releasing the update to this, but here these are for now:

Code:
    -==-


Disable Tap Jump
Affects all players
[Achilles]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ----- 0x800CBBC0 --- 7C0802A6 -> Branch

89FD06BE 2C0F0004
40800008 4E800020
7C0802A6 48000000

1.02 ----- 0x800CB4E0 --- 7C0802A6 -> Branch

2C040001 40820008
4E800020 7C0802A6
60000000 48000000


    -==-


All Players Can Control the Debug Menu
Hold R or use C-Stick for turbo speed through menu selections.
[wParam]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ----- 0x803039A4 --- 3C80804C -> Branch

39400000 39000000
38E00008 3C80804C
608420BC 1CAA0044
7D242A14 80690008
70631F10 7D081B78
80690000 70600020
41820008 38E00000
5460C8C6 5060D884
5060F002 7D080378
54606006 7D080378
54604007 4182000C
38E00000 7D080378
394A0001 2C0A0004
4180FFA4 7500F000
41820028 886DB7AC
2C030000 41820014
3863FFFF 986DB7AC
5508013E 48000014
98EDB7AC 4800000C
38600000 986DB7AC
7D034378 4E800020
60000000 48000000
Just copy/paste those into any text file in the 'Mods' folder.

Also, I should point out more (I should update the OP with this as well) that right now this program is isn't compatible with games that use custom debug menus such as those in 20XX/SD Remix (unless those are added as static overwrite and/or injection mods to the library), because this program rewrites the DOL's free space regions. So basically, any coding you want in the game should be in the library.
 
D

Deleted member

Guest
Yeah. These and many more are going to be included by default when I can get around to releasing the update to this, but here these are for now
Thanks. You rock dude, you saved me a lot of time.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
To anyone who might find themselves here: I Made a big v2.0 update to this, and migrated the thread to the parent forum here in order to make this more visible to the average user.
 
Status
Not open for further replies.
Top Bottom