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

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

Official Melee Code Manager (v4.4.1) - Easily Add Mods to Your Game!

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
I should have phrased the question differently. Given only a gecko code for one version of Melee, can I use MCM to port the code to the other versions of Melee?



Starting with

$Disable Pokemon Stadium Transformations (1.02) [Zauron]
041D1548 60000000

How do I use MCM to get to the 1.00 version?

If I try to run a RAM address conversion on 0x801d1548, all four of the DOL offsets are shown as 0x1CE128
0x1CE128 is correct for all game versions; the section that is in is actually loaded to the same place in all game versions. But sometimes the code in those places (whether in the DOL or in memory) is different between game versions. So that's what the Code Offset Conversion tool can be used to help with. It searches for identical patterns of instructions between game versions. Searching for identical strings of code doesn't work because the values for the instructions may be different, (like in the case of slightly different branches (the hex values to replace) in the Pokemon Stadium code), which is why manual searching can be really difficult. If you enter one of those dol offsets into the Code Offset Converter, you'll see the offsets Zauron used for the other game versions.

Starting with

$TAS Input Polling Fix (1.02) [Dan Salvato]
04432a5c 000a8000

How do I use MCM to get to the 1.00 version?

If I try to run a RAM address conversion on 0x80432a5c, all of the DOL offsets are "not found"
Ahh, that address falls into a section called the 'bss'. I don't know what that stands for, but I don't think it exists in the DOL. I read somewhere that it's the game's "scratchpad" while it's running. So this means that the gecko code couldn't be converted to a DOL mod using a static overwrite (i.e. simply replacing some hex in the DOL before booting the game). But the code could still be re-written in the form of an injection mod, that modifies that address you want once the game boots up. You might want to post that code in the codes subforum, and ask if someone could do that sort of re-write. Someone there could probably whip it up a lot faster than me.

Although, you might not need to do anything with it; MCM already supports many Gecko codes. Have you tried using that gecko code in MCM? It won't convert it to something else; it'll add a Gecko codehandler to the DOL, as well as your Gecko codelist, if it detects that any Gecko codes were selected. You'll need to change the format of it slightly though, to this:

TAS Input Polling Fix
[Dan Salvato]
1.02
04432a5c 000a8000

Edit: Forgot you needed this for v1.00! So, in v1.02, the bss section starts at 0x804316C0 in memory. The address this code affects is 0x80432a5c, and that's 0x80432a5c - 0x804316C0 = 0x139C bytes away from the start of the section. In v1.00, the bss goes to memory at 0x8042F700, and so the same address in there would be 0x8042F700 + 0x139C = 0x80430A9C. But again, I don't know if the actual code there will be equivalent, but if so, this might work:

TAS Input Polling Fix
[Dan Salvato]
1.02
04432a5c 000a8000
1.00
04430A9C 000a8000
 
Last edited:

PracticalTAS

Smash Cadet
Joined
Nov 25, 2015
Messages
34
Edit: Forgot you needed this for v1.00! So, in v1.02, the bss section starts at 0x804316C0 in memory. The address this code affects is 0x80432a5c, and that's 0x80432a5c - 0x804316C0 = 0x139C bytes away from the start of the section. In v1.00, the bss goes to memory at 0x8042F700, and so the same address in there would be 0x8042F700 + 0x139C = 0x80430A9C. But again, I don't know if the actual code there will be equivalent, but if so, this might work:

TAS Input Polling Fix
[Dan Salvato]
1.02
04432a5c 000a8000
1.00
04430A9C 000a8000
Thank you! That works perfectly!

Where can I find a list of memory sections for all the Melee versions?

Also, when I type 0x1CE128 into the Code Offset Conversion section and press enter, nothing happens. What am I doing wrong?
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Thank you! That works perfectly!

Where can I find a list of memory sections for all the Melee versions?

Also, when I type 0x1CE128 into the Code Offset Conversion section and press enter, nothing happens. What am I doing wrong?
Cool!

The section info is in the beginning of the dol files. There's some documentation on it here. But so you don't have to pick it all out, here it is:

Code:
v100SectionInfo = {
    #name  |      off     addr     size
    'text0': ( 0x000100, 0x003100, 0x002420 ),
    'text1': ( 0x002520, 0x005940, 0x3AFA40 ),
    'data0': ( 0x3B1F60, 0x005520, 0x0001A0 ),
    'data1': ( 0x3B2100, 0x0056C0, 0x000280 ),
    'data2': ( 0x3B2380, 0x3B5380, 0x000020 ),
    'data3': ( 0x3B23A0, 0x3B53A0, 0x000020 ),
    'data4': ( 0x3B23C0, 0x3B53C0, 0x0025C0 ),
    'data5': ( 0x3B4980, 0x3B7980, 0x077D80 ),
    'data6': ( 0x42C700, 0x4D1520, 0x002D00 ),
    'data7': ( 0x42F400, 0x4D5860, 0x007220 )
    #'bss'  : (        0, 8042F700, 000A6141 )
    #'entry': (        0, 8000522C, 0 )
    }

v101SectionInfo = {
    #name  |      off     addr     size
    'text0': ( 0x000100, 0x003100, 0x002420 ),
    'text1': ( 0x002520, 0x005940, 0x3B0C20 ),
    'data0': ( 0x3B3140, 0x005520, 0x0001A0 ),
    'data1': ( 0x3B32E0, 0x0056C0, 0x000280 ),
    'data2': ( 0x3B3560, 0x3B6560, 0x000020 ),
    'data3': ( 0x3B3580, 0x3B6580, 0x000020 ),
    'data4': ( 0x3B35A0, 0x3B65A0, 0x0025C0 ),
    'data5': ( 0x3B5B60, 0x3B8B60, 0x077E80 ),
    'data6': ( 0x42D9E0, 0x4D2980, 0x002D00 ),
    'data7': ( 0x4306E0, 0x4D6CC0, 0x007220 )
    #'bss'  : (        0, 804309E0, 000A62C9 )
    #'entry': (        0, 8000522C, 0 )
    }

v102SectionInfo = {
    #name  |      off     addr     size
    'text0': ( 0x000100, 0x003100, 0x002420 ),
    'text1': ( 0x002520, 0x005940, 0x3B1900 ),
    'data0': ( 0x3B3E20, 0x005520, 0x0001A0 ),
    'data1': ( 0x3B3FC0, 0x0056C0, 0x000280 ),
    'data2': ( 0x3B4240, 0x3B7240, 0x000020 ),
    'data3': ( 0x3B4260, 0x3B7260, 0x000020 ),
    'data4': ( 0x3B4280, 0x3B7280, 0x0025C0 ),
    'data5': ( 0x3B6840, 0x3B9840, 0x077E80 ),
    'data6': ( 0x42E6C0, 0x4D36A0, 0x002D00 ),
    'data7': ( 0x4313C0, 0x4D79E0, 0x007220 )
    #'bss'  : (        0, 804316C0, 000A6309 )
    #'entry': (        0, 8000522C, 0 )
    }

vPALSectionInfo = {
    #name  |      off     addr     size
    'text0': ( 0x000100, 0x003100, 0x002420 ),
    'text1': ( 0x002520, 0x005940, 0x3B18A0 ),
    'data0': ( 0x3B3DC0, 0x005520, 0x0001A0 ),
    'data1': ( 0x3B3F60, 0x0056C0, 0x000280 ),
    'data2': ( 0x3B41E0, 0x3B71E0, 0x000020 ),
    'data3': ( 0x3B4200, 0x3B7200, 0x000020 ),
    'data4': ( 0x3B4220, 0x3B7220, 0x0024C0 ),
    'data5': ( 0x3B66E0, 0x3B96E0, 0x068D80 ),
    'data6': ( 0x41F460, 0x4C4720, 0x002F40 ),
    'data7': ( 0x4223A0, 0x4C8D00, 0x007260 )
    #'bss'  : (        0, 80422460, 000A6899 )
    #'entry': (        0, 8000522C, 0 )
    }
Which version of MCM are you using? And which text field are you entering 0x1CE128 into? If you put it into the v1.02 field (should work with or without the '0x'), and then hit 'Enter', the other text fields should say "Searching..." for a bit, and then slowly each turn into an offset. (If anyone else is reading this and has the program already, could you also test this?)
 

PracticalTAS

Smash Cadet
Joined
Nov 25, 2015
Messages
34
Thank you :)

Which version of MCM are you using? And which text field are you entering 0x1CE128 into? If you put it into the v1.02 field (should work with or without the '0x'), and then hit 'Enter', the other text fields should say "Searching..." for a bit, and then slowly each turn into an offset. (If anyone else is reading this and has the program already, could you also test this?)
v3.1 on windows 10. When I type it into the 1.02 box in Code Offset Conversion, nothing happens. No "Searching..." or anything.
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Also, when I type 0x1CE128 into the Code Offset Conversion section and press enter, nothing happens. What am I doing wrong?
If you put it into the v1.02 field (should work with or without the '0x'), and then hit 'Enter', the other text fields should say "Searching..." for a bit, and then slowly each turn into an offset. (If anyone else is reading this and has the program already, could you also test this?)
Huh, I'm getting the same problem here. Trying it with other offsets, it appears to not be working in 3.1. Backing up to 3.0 seems to work fine.

I've also noticed that RAM addresses entered into the injection offset field don't work like they used to in 3.0. They now get interpreted as offsets if they aren't used with "0x" prefix, and return an "offset is too big" error.

Might these be from a similar cause?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Thank you :)



v3.1 on windows 10. When I type it into the 1.02 box in Code Offset Conversion, nothing happens. No "Searching..." or anything.
Huh, I'm getting the same problem here. Trying it with other offsets, it appears to not be working in 3.1. Backing up to 3.0 seems to work fine.
Thanks for checking. (And thanks for mentioning the Windows version too, I forgot to ask about that.) I'm seeing the issue now too (I must've used an older version the other day). In troubleshooting, I was pretty confused at first, because the first couple of functions I looked at for differences were identical from 3.0 onward. But I found the problem. It simply wasn't detecting that 'Enter' was even being pressed, because the event handler for that was no longer bound to the same object, due to me adding something else to the GUI, combined with the shorthand way I did the binding before.

Thanks for pointing out it works in v3.0 and just not in 3.1. I've fixed this for the next version.

As for the injection offset field; you're talking about in the Mod Construction tab, right? So, no, those aren't related. But now that you mention it, I'm not sure off the top of my head why that's changed (but a lot of changes were being made between those versions). And although it's not innately a problem, I should probably change it back to have it try to determine whether it's a RAM address. Good catch.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Update!

Got some new features! And some bug fixes. I think all known bugs are currently fixed. Hopefully I didn't leave anything out during compilation, considering I did change around some dependencies. But if anything isn't working at this point, it should be an easy fix, so please let me know if you have any problems.


Version 3.2:
- 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.
 

Anutim

Smash Apprentice
Joined
Oct 22, 2013
Messages
185
Update!

Got some new features! And some bug fixes. I think all known bugs are currently fixed. Hopefully I didn't leave anything out during compilation, considering I did change around some dependencies. But if anything isn't working at this point, it should be an easy fix, so please let me know if you have any problems.


Version 3.2:
- 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.
The god! Thanks a lot, merry xmas!
 

Sycorax

Smash Ace
Joined
Jul 7, 2014
Messages
502
Location
Atlanta, GA
I'm trying to implement the input polling fix mod on an ISO for personal use. I took this gecko code from the Faster Melee Dolphin build and I want to convert it:

Code:
C21a4da0 00000003
901c0000 3d808001
618c95fc 7d8903a6
4e800421 00000000
08402cc4 009c0200
20020004 00000000
04019860 4bfffd9d
It looks to me like the first 4 lines are an injection mod and the last line is a static overwrite. But I can't figure out what the middle part is.

Can someone help me implement this in MCM?
 

Anutim

Smash Apprentice
Joined
Oct 22, 2013
Messages
185
I'm trying to implement the input polling fix mod on an ISO for personal use. I took this gecko code from the Faster Melee Dolphin build and I want to convert it:

Code:
C21a4da0 00000003
901c0000 3d808001
618c95fc 7d8903a6
4e800421 00000000
08402cc4 009c0200
20020004 00000000
04019860 4bfffd9d
It looks to me like the first 4 lines are an injection mod and the last line is a static overwrite. But I can't figure out what the middle part is.

Can someone help me implement this in MCM?
Go to the Mod Construction tab -> Add New Mod to Library

Alright, so you've got three gecko codes.

C21a4da0 00000003
901c0000 3d808001
618c95fc 7d8903a6
4e800421 00000000

08402cc4 009c0200
20020004 00000000

04019860 4bfffd9d

C2 is an injection mod, so add one of those.
Copy paste C21a4da0, paste it in offset, however you change the C2 to 80. Skip the 00000003 and just copy the rest of the code

901c0000 3d808001
618c95fc 7d8903a6
4e800421 00000000

Paste it in the box below "Injection Code:".

Next up is a 08 code, it does static overwrites. I haven't used 08 ever before, but unless I'm misunderstanding something, in this perticular case, it writes 009c0200 to 80402CC4, 80402CC8 and 80402CCC.

So create three Static Overwrites add 80402CC4, 80402CC8 and 80402CCC as offsets for them. Then select each of them and add 009c0200 in the box below "New Hex:", one at a time.

Last one is a 04 code, it's also a Static Overwrite, but it's only for one offset, so you only need to create one. Copy 04019860 as the offset, change the 04 to 80. Select it, and once again in the box below "New Hex:" paste 4bfffd9d.


And that should do it, I believe.
If you're interested in Gecko codetypes documentation: http://geckocodes.org/index.php?arsenal=1
 

Fizzi

Smash Ace
Joined
Feb 14, 2008
Messages
802
Location
Brooklyn, NY
Slippi.gg
FIZZI#36
DRGN DRGN

Finally got around to trying to use this and I definitely love the direction.

I have a slight confusion though. I converted the gecko code I've been using to extract game data. Looks like this:
upload_2017-1-8_11-36-55.png


Now this seems to have applied a branch to 800049CC in the correct place. The thing I don't understand though is I kind of expected it to branch back automatically but it doesn't seem to do that (causing a game crash). This is the end of the code:
upload_2017-1-8_11-39-29.png


The full code that I pasted into the box above can be found here:
https://github.com/JLaferri/HardwareEnhancedMelee/blob/master/ASM/MatchDataExtraction.asm

But in any case the last few lines are as follows:
Code:
#***************************************************************************
# subroutine: endExiTransfer
# description: stops port B writes
#***************************************************************************
endExiTransfer:
lis r11,0xCC00 #top bytes of address of EXI registers
li r10,0
stw r10,0x6814(r11) #write 0 to the parameter register
blr
GECKO_END:
lwz r0,0x94(r1) #execute replaced code line
So as you can see lwz is the last instruction with no branch after it and the game crashes.

Was I wrong to assume that the branch back would be calculated and added automatically?
 
Last edited:

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
So as you can see lwz is the last instruction with no branch after it and the game crashes.

Was I wrong to assume that the branch back would be calculated and added automatically?
The return branches are compiled optionally:

You might be wondering about that branch back at the end. Well, as long as the opcode for that last instruction is 48, 49, 4A, 4B, or 00, then that instruction will simply be replaced with a branch back to directly after the injection site.
I personally use .long 0x00000000 in my ASM to make it clear.

Your project btw, really cool stuff. It goes over my head quite a bit, but it's really interesting that you can use EXI registers like that.
 

Masterman

Smash Rookie
Joined
Jan 29, 2015
Messages
4
It seems like a very odd problem, but when using the program, the ISO just won't load. For example, I give the entire path to my ISO to the program, yet when I hit open, it continues to say nothing loaded. Is something wrong or am I genuinely stupid?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
It seems like a very odd problem, but when using the program, the ISO just won't load. For example, I give the entire path to my ISO to the program, yet when I hit open, it continues to say nothing loaded. Is something wrong or am I genuinely stupid?
Are you sure it's an ISO, and not a shortcut or some other kind of file? What's the full file name, including extension? Also, what OS are you using; Windows 7|8|10, 32|64 bit? Have you tried using drag-and-drop, or just the open button? What version of the program are you using? Can you open a DOL file in it?
 

Masterman

Smash Rookie
Joined
Jan 29, 2015
Messages
4
Are you sure it's an ISO, and not a shortcut or some other kind of file? What's the full file name, including extension? Also, what OS are you using; Windows 7|8|10, 32|64 bit? Have you tried using drag-and-drop, or just the open button? What version of the program are you using? Can you open a DOL file in it?
Well I managed to fix the problem already by moving the ISO, but it seemed to be a problem with my path involving a £ symbol when I tested it afterwards, but either way it seems to be fixed now.

Also, if it's not too much of a hassle for you, could you maybe explain how I would inject Achilles' code for projectile/item spawning? I'm not exactly sure of where to inject it
 
Last edited:

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
I'm trying to repurpose this for Kirby Air Ride. I changed the common free space value in settings.py to the correct offsets for KAR but when I try to load the .dol it says it cannot detect the game version. Is there anyway to bypass this check / what do I need to change to get this to work for KAR .dol's?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Excellent question! This program definitely has the potential to manage the code in other games, the same as it does with Melee, but I haven't added support for that yet. I'm working on some other Melee stuff and a slew of new features for DTW right now (when it's less convenient to do the other), but this ability is on this program's todo list. I probably just need to have certain checks be allowed to fail, but I don't know what else might need to be changed once version checking and game default settings are bypassed; I'd have to look through the code and do some testing.
 

maxics

Smash Rookie
Joined
Oct 7, 2015
Messages
11
Location
Chantilly, Virginia
I'm getting an error after I installed it. I try and run but I get a System Error saying I can't run it because python27.dll is missing from your computer. Any fix?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
I'm getting an error after I installed it. I try and run but I get a System Error saying I can't run it because python27.dll is missing from your computer. Any fix?
What did you install? It's an executable (is that what you're clicking on to try and run it?) and doesn't require installation. What are you running it on (windows 7/8/10)? 64-bit? What is giving you the message; can you screenshot it?
 
Last edited:

maxics

Smash Rookie
Joined
Oct 7, 2015
Messages
11
Location
Chantilly, Virginia
What did you install? It's an executable (is that what you're clicking on to try and run it?) and doesn't require installation. What are you running it on (windows 7/8/10)? 64-bit? What is giving you the message; can you screenshot it?
I downloaded the link, extracted the .zip, and then tried to run the .exe and it gave me that message. I'm on Windows 10 and downloaded the 64-bit version
 

Decipio-Carmen

Smash Apprentice
Joined
Apr 2, 2010
Messages
88
In Achilles' github, his settings.py and his 20XX 4.06 Codes in his Mods Library are for MCM v2.0. I tried copying his settings.py into my MCM v3.2 folder but it complained about not finding globalFontSize, so I put

globalFontSize = -12

at the top of the file and was able to load MCM, but none of the 20XX 4.06 Codes are green when I load the ISO. Does that mean that none of the codes are recognized? Should I be using MCM v2.0? First time using MCM so I feel like I did something wrong with settings.py.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
In Achilles' github, his settings.py and his 20XX 4.06 Codes in his Mods Library are for MCM v2.0. I tried copying his settings.py into my MCM v3.2 folder but it complained about not finding globalFontSize, so I put

globalFontSize = -12

at the top of the file and was able to load MCM, but none of the 20XX 4.06 Codes are green when I load the ISO. Does that mean that none of the codes are recognized? Should I be using MCM v2.0? First time using MCM so I feel like I did something wrong with settings.py.
The settings files between v2.x and 3.x use very different formatting for the data in them, so they're not compatible with each other. You can open them up and manually modify a 3.x settings file to match (i.e. use the same regions as) Achilles' settings file, or you could just use a 2.x build (I'd recommend trying the latest 2.x first, and if that doesn't work for some reason, lmk and use 2.0).

I downloaded the link, extracted the .zip, and then tried to run the .exe and it gave me that message. I'm on Windows 10 and downloaded the 64-bit version
Sorry, I haven't been able to reproduce this; I tried a few different versions and they're working for me. What version of MCM were you using? And did you have python installed on the system already (no, it's not required though).
 

Gehis514

Smash Apprentice
Joined
Jul 25, 2015
Messages
119
Switch FC
SW 4004 9260 8249
I realize that the current iteration of MCM could convert text to hex for use in menu texts. Could this be applied to change the text in the random stage switch menu? And as a little bonus question, how would I go about changing text in the SSS? Seeing how it's a texture I can't properly replicate it the way that I want
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
I realize that the current iteration of MCM could convert text to hex for use in menu texts. Could this be applied to change the text in the random stage switch menu? And as a little bonus question, how would I go about changing text in the SSS? Seeing how it's a texture I can't properly replicate it the way that I want
Yeah, it's probably the same kind of text. And I think it's in SdSlChr files. But I've never tried to change it, so I don't know the offsets or any other details. You could try posting in the 20XXHP thread.

As for the textures on the SSS, you'd have to use an image editing program to make a new texture. They're in the MnSlMap files. You can find the fonts and a template for making them here (.psd files also work in GIMP).
 

Gehis514

Smash Apprentice
Joined
Jul 25, 2015
Messages
119
Switch FC
SW 4004 9260 8249
Yeah, it's probably the same kind of text. And I think it's in SdSlChr files. But I've never tried to change it, so I don't know the offsets or any other details. You could try posting in the 20XXHP thread.

As for the textures on the SSS, you'd have to use an image editing program to make a new texture. They're in the MnSlMap files. You can find the fonts and a template for making them here (.psd files also work in GIMP).
Yeah i found that's where they are located, it would start at about 0x2ab6 and would be organized into columns and slots, which is very neat.

And for the second question, would i have to make new layers over the original text layers in the psd? I thought you couldn't edit the original psd text layers in GIMP
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Since I know many of you are using v2.x for 20XX stuff, I wanted to let you know that I just noticed that the v2.1 links were down, and that they're now fixed. Because how can anyone turn down scroll-wheel support? (If you don't already know, you can use MCM 2.0/2.1 with 20XX by using the files found here.)


Yeah i found that's where they are located, it would start at about 0x2ab6 and would be organized into columns and slots, which is very neat.

And for the second question, would i have to make new layers over the original text layers in the psd? I thought you couldn't edit the original psd text layers in GIMP
Yeah, you have to make new text layers. He tells you what fonts are used though, so it should be super easy to match them up. One of the fonts is a standard system font. If you don't have the other, A-OTF-FolkPro H, you can get it here.
 

Gehis514

Smash Apprentice
Joined
Jul 25, 2015
Messages
119
Switch FC
SW 4004 9260 8249
Since I know many of you are using v2.x for 20XX stuff, I wanted to let you know that I just noticed that the v2.1 links were down, and that they're now fixed. Because how can anyone turn down scroll-wheel support? (If you don't already know, you can use MCM 2.0/2.1 with 20XX by using the files found here.)




Yeah, you have to make new text layers. He tells you what fonts are used though, so it should be super easy to match them up. One of the fonts is a standard system font. If you don't have the other, A-OTF-FolkPro H, you can get it here.
Thanks a ton, you're a great help. Took some adjustments, but I managed to make the text look great
 

RyZe_

Smash Rookie
Joined
Jan 14, 2016
Messages
2
I tried this and it gave me IntCPU: Unknown instruction 00000000 at PC = 8040b8b0 last_PC = 800001f18 LR = 8006ebc4. Any idea what it is?
 

BaconSpaceman

Smash Rookie
Joined
Jul 15, 2015
Messages
2
I really don't understand any of this. Is there any way I can take gecko codes and just add them to my ISO? I want to put in some codes because I'm taking my melee mod on a real wii but this thread is really confusing for me.
 

Brandondorf9999

Smash Cadet
Joined
Mar 6, 2012
Messages
71
It would be nice if the code manager had support to allow custom user defined options for a code (like Lucas' Simpson's Hit and Run Mod Launcher) such as to adjust float with a slider, make a dropdown menu for bytes and even allow part of the injectable code with a ? mark to have adjustable decimal or float.
 
Last edited:

Capt. Tin

Smash Apprentice
Joined
Jul 25, 2014
Messages
105
Location
Chicago, IL
NNID
Capt.Tin
Any reason why the "Debug Menu replaces Tournament Mode" code would cause Dolphin to crash? It does this even on a vanilla ISO. It crashes as soon as I enter tournament mode.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
If anyone is curious, I'm working on a big overhaul of this program, so be sure to check back within a few weeks or so. Many of the benefits will be going towards developers of codes or full-game mods, but it will also introduce the ability to preserve the Debug Menu while still adding Gecko codes to the DOL, fix the situational incompatibility issues with CrazyHand, add support for the latest 20XX (if I finish reorganizing the codes for that), offer a much more in-depth view of how your DOL is changed, increase stability, allow the program to be used for other games, and more. It's pretty hype!


Sorry for the late replies; been pretty busy.

I really don't understand any of this. Is there any way I can take gecko codes and just add them to my ISO? I want to put in some codes because I'm taking my melee mod on a real wii but this thread is really confusing for me.
Yes, there are multiple ways that you can apply Gecko codes to your game. You can do so with or without this program. I don't know what you're using to boot your game, but you can google '[name of your loader] gecko codes'. If you want to add them directly into your ISO using this program, you'll need to modify the format of the Gecko code slightly. Look for a mod in the Mods Library for a Gecko code to see an example.

It would be nice if the code manager had support to allow custom user defined options for a code (like Lucas' Simpson's Hit and Run Mod Launcher) such as to adjust float with a slider, make a dropdown menu for bytes and even allow part of the injectable code with a ? mark to have adjustable decimal or float.
Yeah, I agree. I thought of this before too. Technically speaking, there are a few impositions to this:
  1. A good, simple syntax to define everything in the text files (both easily readable for people and the program's parser)
  2. GUI implementation; various translations of the above for different variable types that look alright
  3. Validation? What's acceptable input? This could be part of point 1
  4. Transparency in processing. As mods are loaded, analyzed, and installed, there are many processes that inspect/convert the codes which must be protected from any strange characters that aren't assembly commands or hex. I'm sure it's doable, it's just that there are a number of things that would need changing.
Any reason why the "Debug Menu replaces Tournament Mode" code would cause Dolphin to crash? It does this even on a vanilla ISO. It crashes as soon as I enter tournament mode.
I don't know the details of what you're doing, so it's kind of hard to say. What version of MCM and Dolphin are you using?

Try using the latest version of MCM if you're not already (3.2 at this time), and/or another version of Dolphin, like 5.0+ (or set your Dolphin's settings back to defaults in case there's some possibility of conflicting settings). I just tried that code by itself on a vanilla 1.02 disc via MCM 3.2 on Dolphin 5.0-5491 and it worked fine.
 

Benny P

Smash Journeyman
Joined
Dec 10, 2014
Messages
465
Location
Coming Soon
Ah, i'm really happy! i tried to use codes with my crazy hand mod and most of the time it just didnt work! hooray!
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Ah, i'm really happy! i tried to use codes with my crazy hand mod and most of the time it just didnt work! hooray!
Whether you ran into the problem should be dependent on your order of operations; if you used CH after MCM, it should work, but if you use them the other way around, that should be when you encounter crashes. However you can fix this in the current version yourself too. Open MCM's "settings.py" file in a text editor, and look for the definitions for the 'AuxCodeRegions'. Change the values there to these for whatever game version you want to work with (don't worry about the text strings, just change the hex values):

( 'NTSC 1.02, NTSC 1.03|AuxCodeRegions', [ ( 0x407540, 0x4088B0 ) ] ), # Total space: 0x1370
( 'NTSC 1.01|AuxCodeRegions', [ ( 0x406860, 0x407BD0 ) ] ),
( 'NTSC 1.00|AuxCodeRegions', [ ( 0x405580, 0x4068F0 ) ] ),
( 'PAL 1.00|AuxCodeRegions', [ ( 0x408400, 0x409770 ) ] ),
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
Major update!


Releasing this later than I anticipated, which is because this update was so big (not just with features, but also large program code reworks and refactoring), and I turned out to be pretty busy throughout December, so finding time to work on it was a little tough. I also wanted to release this in tandem with some other things I've been working on, but I finally decided to put those off for a bit and just get this update out.


To 4.0:
- 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 (use this just with 20XX)​
- 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
- Greatly 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 (only) 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!


I've always wanted to keep my programs free, but they do take a lot of time. So if you want to show me support or that there's still a lot of interest in these kinds of programs, please consider donating, which you can do with PayPal or by following me on Patreon. Even if it's just a bit, it's definitely appreciated!
 
Last edited:

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
Major update!


Releasing this later than I anticipated, which is because this update was so big (not just with features, but also large program code reworks and refactoring), and I turned out to be pretty busy throughout December, so finding time to work on it was a little tough. I also wanted to release this in tandem with some other things I've been working on, but I finally decided to put those off for a bit and just get this update out.


To 4.0:
- 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 (use this just with 20XX)​
- 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
- Greatly 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 (only) 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!


I've always wanted to keep my programs free, but they do take a lot of time. So if you want to show me support or that there's still a lot of interest in these kinds of programs, please consider donating, which you can do with PayPal or by following me on Patreon. Even if it's just a bit, it's definitely appreciated!
 
Top Bottom