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

Fixed Toggleable Alternate Character Textures

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
For some reason Dolphin is NOT breaking when the memory write breakpoints that I set (to see if the RAM where the alt CSP data resides was being overwritten) are written to. For example: I set my breakpoints (81500000 and a bunch onwards), and when you first enter the title screen, these values are all 00000000. I keep refreshing the RAM, and a couple seconds later the game writes a ton of values there. Dolphin doesn't break. I tried playing matches and doing other stuff with the breakpoints on, and it never broke, so I'm HOPING that it just has something to do with the code at the title screen, and that the RAM isn't actually being overwritten in other cases, but I can't tell for sure since the BPs don't seem reliable...
DebugFast version?
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
DebugFast version?
Yep DebugFast 64-bit. Downloaded straight from Achilles' thread.
Edit: the memory write BPs do work in general, it's just that in this case they're not for some reason which worries me. I don't really want to parse through that much RAM to see if something has changed or not (like after I play a match or load a menu, or something)
Edit 2: Never knew that you could just use a load immediate instruction and still have the game look at the RAM correctly (always thought that you had to have the RAM in the 80000000s), good to know, saves a few lines of code.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
For some reason Dolphin is NOT breaking when the memory write breakpoints that I set (to see if the RAM where the alt CSP data resides was being overwritten) are written to. For example: I set my breakpoints (81500000 and a bunch onwards), and when you first enter the title screen, these values are all 00000000. I keep refreshing the RAM, and a couple seconds later the game writes a ton of values there. Dolphin doesn't break. I tried playing matches and doing other stuff with the breakpoints on, and it never broke, so I'm HOPING that it just has something to do with the code at the title screen, and that the RAM isn't actually being overwritten in other cases, but I can't tell for sure since the BPs don't seem reliable...
I've noticed that BPs just don't work for some things. And it seems to happen much more in the 0x81... area. Idk if it's fixable.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
I talked to Dan Salvato about this, and he gave me the idea to dump MRAM at certain spots and use vbindiff to search for differences. I found that 81500000 to 817f0400 is written to in two cases: a couple of seconds into idling at the title screen (I have no idea why), and during Pokemon Stadium transformations, because for whatever reason PS stage data is loaded there instead of where I've seen most of the other stages load their data (81300000+ range). I haven't checked if single player mode overwrites these values, it'd be a real pain if it did though. I just wrote a code to transfer the alt CSP data somewhere else during the match loading cycle and write it back to 81500000 post-game, so that fixes the problem with PS. As for swapping CSPs, I don't have a code for it yet but I've located the pointers to all of the image and palette data so now I can change any vanilla CSP to an alt CSP just by changing two values in the RAM.
Even if this alt CSP project doesn't work out, I still see applications for loading data via apploader.ldr. There's only so much room in the RAM, but as far as I can tell there isn't a limit to how much data you can append to the end of apploader.ldr. You may find some use for it to place codes in unused RAM space Achilles, though I don't know what your current situation is with extra code space (I just remember you saying that you were putting codes/debug menu stuff at the end of MnSlChr.usd).
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Has anyone tested the x toggle? I think the one I use is slightly different than whats in the main post.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
So the code in the OP doesnt work because it has a messed up branch somewhere off by 0x04. Ill update it later tonight to the working one after I figure out what to do with falcon. Apparently his outfit isnt in the ram anywhere during the CSS so Ill have to write an exception for him so that it doesnt break the game. Ill also add a code to add alternate stage skins with it.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
I talked to Dan Salvato about this, and he gave me the idea to dump MRAM at certain spots and use vbindiff to search for differences. I found that 81500000 to 817f0400 is written to in two cases: a couple of seconds into idling at the title screen (I have no idea why), and during Pokemon Stadium transformations, because for whatever reason PS stage data is loaded there instead of where I've seen most of the other stages load their data (81300000+ range). I haven't checked if single player mode overwrites these values, it'd be a real pain if it did though. I just wrote a code to transfer the alt CSP data somewhere else during the match loading cycle and write it back to 81500000 post-game, so that fixes the problem with PS. As for swapping CSPs, I don't have a code for it yet but I've located the pointers to all of the image and palette data so now I can change any vanilla CSP to an alt CSP just by changing two values in the RAM.
Even if this alt CSP project doesn't work out, I still see applications for loading data via apploader.ldr. There's only so much room in the RAM, but as far as I can tell there isn't a limit to how much data you can append to the end of apploader.ldr. You may find some use for it to place codes in unused RAM space Achilles, though I don't know what your current situation is with extra code space (I just remember you saying that you were putting codes/debug menu stuff at the end of MnSlChr.usd).
Have you made any progress on loading the alt CSPs? If not I was thinking about looking into how the CSS is loaded.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Have you made any progress on loading the alt CSPs? If not I was thinking about looking into how the CSS is loaded.
What do you mean by loading the alt CSPs? The concept of my code is changing the image and palette pointers of the CSPs in the RAM. I've tested it and it works. I haven't really done much work on the code itself yet because of sickness and Apex but hopefully I'll get around to it soon.
Also @ Achilles1515 Achilles1515 idk if you saw what I said in my previous post but I was wondering if you're interested in the apploader.ldr code that I wrote? Should give you a lot more room to store codes in the RAM.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
What do you mean by loading the alt CSPs? The concept of my code is changing the image and palette pointers of the CSPs in the RAM. I've tested it and it works. I haven't really done much work on the code itself yet because of sickness and Apex but hopefully I'll get around to it soon.
Also @ Achilles1515 Achilles1515 idk if you saw what I said in my previous post but I was wondering if you're interested in the apploader.ldr code that I wrote? Should give you a lot more room to store codes in the RAM.
Did you get the changing pointers thing to work with custom csps added to the end, or just changing the pointers to a different default csp?

And I don't need the code right now, because I extended the MnSlChr file by a few megabytes. So I have tons of room for the time being. And 20XX boots to CSS so the MnSlChr is always loaded right when the game is started up. I can just run code at the CSS to copy things to the RAM if I need to (which I have not needed to do yet).

But by all means, feel free to post the code. I'm sure someone could find good use out of it. It's nice that there is, apparently, no limit to the amount you can add to that file.
 
Last edited:

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Did you get the changing pointers thing to work with custom csps added to the end, or just changing the pointers to a different default csp?

And I don't need the code right now, because I extended the MnSlChr file by a few megabytes. So I have tons of room for the time being. And 20XX boots to CSS so the MnSlChr is always loaded right when the game is started up. I can just run code at the CSS to copy things to the RAM if I need to (which I have not needed to do yet).
I got the changing pointers thing to work with CSP data stored in a completely different location in the RAM (my apploader.ldr code loads , though it works if you change the pointer to point at data in the vanilla MnSlChr.usd as well.

Did you fix the issue with the game crashing after idling a while at the CSS, with the extra data appended to the end of the file? I just seem to remember you mentioning that a while back.

Random tangent: it was nice to see you hopping into my stream for a bit yesterday :)
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
I got the changing pointers thing to work with CSP data stored in a completely different location in the RAM (my apploader.ldr code loads , though it works if you change the pointer to point at data in the vanilla MnSlChr.usd as well.

Did you fix the issue with the game crashing after idling a while at the CSS, with the extra data appended to the end of the file? I just seem to remember you mentioning that a while back.

Random tangent: it was nice to see you hopping into my stream for a bit yesterday :)
Ok, cool. So what was going wrong when you posted that picture awhile back of the CSP that was had the general outline of the custom one, but was all fuzzy and stuff? I know there's a palette pointer and an image pixel pointer, but what else did you need to change? I'm curious because I had that same problem happen to me.

And I fixed the idling freeze months ago. I just haven't released anything since. When I was first experimenting with adding code to the end of MnSlChr, I didn't know it was placed in the same location in RAM everytime. I guess I was leaning on the safe side and thinking it may be loaded into slightly different locations depending on how you accessed the character select screen. But that's not the case - it's always in the same spot. So instead of doing bctrl to code, I just did a normal branch and it fixed the problem.
 

Goxplex

Smash Apprentice
Joined
May 16, 2013
Messages
139
Location
Panamá
Ok, cool. So what was going wrong when you posted that picture awhile back of the CSP that was had the general outline of the custom one, but was all fuzzy and stuff? I know there's a palette pointer and an image pixel pointer, but what else did you need to change? I'm curious because I had that same problem happen to me.

And I fixed the idling freeze months ago. I just haven't released anything since. When I was first experimenting with adding code to the end of MnSlChr, I didn't know it was placed in the same location in RAM everytime. I guess I was leaning on the safe side and thinking it may be loaded into slightly different locations depending on how you accessed the character select screen. But that's not the case - it's always in the same spot. So instead of doing bctrl to code, I just did a normal branch and it fixed the problem.
So, for the next 20XX release the default CSS is going to be needed for proper functionality of the mod?
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
So, for the next 20XX release the default CSS is going to be needed for proper functionality of the mod?
Well, the very first four bytes of the file and everything from the default end of the file and onward will be necessary. But everything in between (CSS textures, etc) can be modified, and is nothing more than a copy and paste of that chunk of data from any custom one.

It’ll be good, though. I’ll give you guys a plethora of options!
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Ok, cool. So what was going wrong when you posted that picture awhile back of the CSP that was had the general outline of the custom one, but was all fuzzy and stuff? I know there's a palette pointer and an image pixel pointer, but what else did you need to change? I'm curious because I had that same problem happen to me.

And I fixed the idling freeze months ago. I just haven't released anything since. When I was first experimenting with adding code to the end of MnSlChr, I didn't know it was placed in the same location in RAM everytime. I guess I was leaning on the safe side and thinking it may be loaded into slightly different locations depending on how you accessed the character select screen. But that's not the case - it's always in the same spot. So instead of doing bctrl to code, I just did a normal branch and it fixed the problem.
I actually have no idea what the problem was with the fuzzy picture and everything. That was back before I wrote my apploader code and was just testing pointer stuff using CSP data appended to the end of MnSlChr. It works fine now, with the alt CSP data loaded with my code and just changing the two pointers, I haven't a clue what went wrong before.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
The code in the OP should be the same as the one I use on my wii. Let me know if anything is wrong. I plan on moving the code into the MnSlChr file hopefully this weekend. Ill also add an exemption for cpus ports not to change colors.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
So Im pretty sure I could change the icon behind the character so that it loads the name of the costume for you or find some other way of implementing the name if people are interested. I can't see how to get around the ram limitations without reloading the CSS which someone better at reverse engineering than me might figure out.
 

Anutim

Smash Apprentice
Joined
Oct 22, 2013
Messages
185
So Im pretty sure I could change the icon behind the character so that it loads the name of the costume for you or find some other way of implementing the name if people are interested. I can't see how to get around the ram limitations without reloading the CSS which someone better at reverse engineering than me might figure out.
Would I be able to for example switch out the logo for C9s logo or something similar (only when selecting a certain skin, of course)? That would be ballin'.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Would I be able to for example switch out the logo for C9s logo or something similar (only when selecting a certain skin, of course)? That would be ballin'.
There might be some weird transparency but yeah. Just add the files you want to the end of the file. I havent throughly tested this on the wii but it works for 2 stages so I dont see why not. If it works for the SSS screen Im making though then I think that be enough of a test.
 

Bakasama

Smash Apprentice
Joined
Feb 10, 2013
Messages
120
Location
Massachusetts
I'm trying to integrate this into my 20XX setup and I'm unclear on if I'm supposed to plug in daz files for every single costume for every character for the game to boot, or if I have to do something else? I can edit my dol file fine, but as soon as I add the brunt of this code, it boots to black screen :\
 

NeoTurtle

Smash Rookie
Joined
Jul 21, 2014
Messages
24
I'm hoping to integrate this code for a build for a big tournament, but I can't have an alternate costume for every character. I noticed that the BEAST V build only had alternate costumes for specific slots. Would anyone be able to help me break down this code so I can set it for certain characters? And to set out the alternate colours that the slot changes to? Thanks in advance.
 

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
Sorry to necro an old thread, but has anyone done more about the CSP thing? I'm planning on writing a code similar to this and would be perfectly happy with just 1.5x the number of costumes as vMelee if there's enough space in the RAM for 1.5x the CSPs.

Also someone should put this in the Melee Codes board, it's a pretty cool code.
 

Mcubed

Smash Rookie
Joined
Feb 8, 2015
Messages
7
I read through the whole thread, but i still dont get how to just add new files to the ISO. Im using GC rebuilder and all of it is to import different files, not to add. any help?
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
I read through the whole thread, but i still dont get how to just add new files to the ISO. Im using GC rebuilder and all of it is to import different files, not to add. any help?
GC rebuilder has the option to open a root folder. Use that instead of opening the iso. You cannot simply add files to the iso. You have to rebuild it with the new files.
 

Mr.Uncrusble

Smash Rookie
Joined
Jan 24, 2016
Messages
2
Sorry about posting to an old post, but when I have compiled everything with Gcr , the .daz files and the codes zankyou supplied to the .dol when I go to load it on Dolphin when there are 4 player slots open it slows down when I select the cpu's cursor on dolphin , but when I play it on my wii when all four slots are open and you select 4th players cursor the game freezes, please help or update your code

,thank you
 
Last edited:

CaptainJazz

Smash Cadet
Joined
Oct 1, 2014
Messages
42
Location
Mute City
Sorry about posting to an old post, but when I have compiled everything with Gcr , the .daz files and the codes zankyou supplied to the .dol when I go to load it on Dolphin when there are 4 player slots open it slows down when I select the cpu's cursor on dolphin , but when I play it on my wii when all four slots are open and you select 4th players cursor the game freezes, please help or update your code

,thank you
I really think this should be made into a guide. I know it works for Achilles1515 Achilles1515 in his 20XX pack. Is there a start.dol or mnchrsl.usd we can just download and get started with? I could help make it into a guide if SOMEONE could explain it to me.


It is very hard to be a part of the Melee Mod community when there are 6 people who know what they are doing and 3,000 people who are interested but just have to wait for those 6 people to bring it down to a science.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
I really think this should be made into a guide. I know it works for Achilles1515 Achilles1515 in his 20XX pack. Is there a start.dol or mnchrsl.usd we can just download and get started with? I could help make it into a guide if SOMEONE could explain it to me.


It is very hard to be a part of the Melee Mod community when there are 6 people who know what they are doing and 3,000 people who are interested but just have to wait for those 6 people to bring it down to a science.
Idk if I'm still one of those six (all my time is spent on 19XXTE) but when I was, I can say all the resources to figure this stuff out were right in front of me. I just had to look. Just because there's not a "how to do this step by step" guide doesn't mean we haven't hinted at it or left breadcrumbs for you to follow. I know for sure that I made my personal mod with SD remix and pal character toggle with my own .sdr and .pal extensions after reading a post much like this one.

Take the initiative to learn yourself and ask questions so that you'll become a better modder and thinker.


Edit: also, saying "I can't get it to work" when the codes have been provided for you leaves me with nothing. I'd more than gladly help but I need more than "I get an error" or "the game freezes."
 
Last edited:

Mr.Uncrusble

Smash Rookie
Joined
Jan 24, 2016
Messages
2
look i had entered the entire code set into the Start.dol . Every time i play using the code set that was supplied on this form, the 4th player port freezes when ever someone decides to plug in a controler to select a character, 2 switching a cpu on the 4th port freezes the game on picking up the 4p token or cpu token , 3 switching the characters with the left hand corner on the csp buttion that is named cpu or hum on 4th port. every character has a .daz alt btw on every color palette
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
look i had entered the entire code set into the Start.dol . Every time i play using the code set that was supplied on this form, the 4th player port freezes when ever someone decides to plug in a controler to select a character, 2 switching a cpu on the 4th port freezes the game on picking up the 4p token or cpu token , 3 switching the characters with the left hand corner on the csp buttion that is named cpu or hum on 4th port. every character has a .daz alt btw on every color palette
I never actually did much testing with the 4th port. Its been a really long time since Ive worked on this code and the method I used is kinda obsolete now so I probably wont update it unless there is a lot of demand for it.
 

TDRR

Smash Journeyman
Joined
Sep 18, 2017
Messages
286
Location
Venezuela
Oh come on, i have been looking for something like this over all the forums and it was linked on the thread i read 1000 times!
Anyways, it's pretty unfortunate that it requires all characters to have alts, but it shouldn't be hard to fix that, while i'm here, anyone knows what do i need to add this to MCM? I assume that if i were to install this via hex editing then there's the very very big risk of overwriting another code and messing stuff up, but i dunno.
 

TDRR

Smash Journeyman
Joined
Sep 18, 2017
Messages
286
Location
Venezuela
This code appears to be broken, no matter if i install it by editing the hex as is said in the OP or if i install it via MCM, it just crashes 100% of the time in the CSS, of note is that i haven't yet placed any alternate textures, but do i really need one for each and every character just so it doesn't crash on the CSS?
EDIT: I'm an idiot, of course they're required, fixed now.
 
Last edited:
Top Bottom