• 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

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Fixed code below. G&W now has an alt as well and Red falcons alt dat should be names PlCaRa.usd

Every character is has an alternate texture for every color and is toggleable through rotation. Ive added an x toggle if you really want it.

I wrote my first code of melee. Probably should have started with something easier but oh well. I know this code is long so I apologize ahead of time. The csp background is like half the code and Im still optimizing it. This is more of a proof of concept since the semester is starting soon and I won't have much time to play around with this.

Im sure everyone's read shamrock's thread about adding files to the iso. This code should allow you to add character skins toggleable in the css. Things to note. It switches every time you rotate using Y. I'll add a X toggle soon. Also the background port for that player should switch as well. Also should work with the code that lets you pick the same Colors. You cant play with two different versions of the same color, both players will be the texture of the second person to pick it.

First you have to rebuild your iso adding all the character skins. You need to add an alt for everyone. Head over to the texture hack thread and comb through the characters. Dont worry about kirby hats and G&W though. Change all the extensions to .daz. It wouldn't let me rebuild saying the file size was over the limit eventhough its under 1.45gb so I deleted one of the opening movies from the root. Grab achilles code to disable start screen transitions and this shouldnt be a problem unless you deliberately try to play the movie.

@25cdc4--->4BDA445C
@25ac64--->4BDA666C
@25fc2c---->4BDA1884

paste @16d0
01 0A 07 06 0D 03 10 0F 0B 04 0C 0C 13 0E 05 14
15 02 17 0F 11 00 09 12 16 08 18 00 00 00 00 00
4B FF FE E0 41 82 00 E8 2C 15 00 16 40 82 00 10
3D E0 80 3D 61 EF 28 E6 48 00 00 60 3E 00 80 00
62 10 46 CF 3A 40 FF FF 8E 30 00 01 3A 52 00 01
7C 15 88 00 40 82 FF F4 3D C0 80 3C 61 CE 23 5C
39 E0 FF FF 39 CE 00 04 39 EF 00 01 7C 0F 90 00
40 82 FF F4 81 EE 00 00 89 DB 00 01 39 CE 00 01
3E 00 00 00 3A 10 00 01 39 EF 00 0C 7C 0E 80 00
40 82 FF F4 81 EF FF F4 3E 00 80 3F 62 10 0D E4
3E E0 80 00 62 F7 46 EB 3A 10 00 24 3A F7 00 01
7C 10 D8 00 40 82 FF F4 8A 17 00 00 2C 15 00 07
40 82 00 2C 2C 0E 00 03 40 82 00 24 39 EF FF FA
3E 20 43 61 62 31 52 65 2C 10 00 00 41 82 00 0C
3E 20 43 61 62 31 52 61 48 00 00 14 3E 20 61 74
2C 10 00 00 41 82 00 08 3E 20 61 7A 92 2F 00 08
2C 12 00 07 3A 52 00 0C 41 82 FF 50 2C 12 00 16
3A 52 FF F5 41 82 FF 44 3C 80 80 36 60 00 00 00
48 25 98 98 80 4C 24 EC 80 4C 24 58 80 4C 25 58
80 4C 24 C4 E5 4C 4C 00 4B 4C E5 00 FF CB 00 00
00 B2 00 00 FF AA 41 00 99 00 33 00 99 66 33 00
00 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00
81 DB 00 00 3D E0 80 3F 61 EF 0E 74 3E 00 80 3F
62 10 0D E4 3A 10 00 24 7C 1B 80 00 41 82 00 18
82 30 00 00 7C 11 70 00 41 82 00 14 7C 10 78 00
41 82 00 08 4B FF FF E0 2C 15 00 19 4B FF FE 90
4B FF FF 80

paste @18d0
3E 60 80 00 62 73 46 EB 3E 80 80 00 62 94 47 F0
86 B4 00 04 8E D3 00 01 3E E0 80 00 62 F7 46 ED
7C 13 B8 00 41 81 00 08 82 B5 00 00 82 B5 00 00
82 B5 00 00 82 B5 00 08 82 B5 00 18 82 B5 00 08
82 B5 00 1C 82 B5 00 04 82 B5 00 08 2C 16 00 00
40 82 00 0C 3A F4 00 10 48 00 00 08 3A F4 00 20
82 D7 00 00 92 D5 00 00 3E C0 80 00 62 D6 46 EF
7C 13 B0 00 41 80 FF 9C 88 03 00 0E 48 25 E7 04

paste @15d0
89 DB 00 01 2C 0E 00 00 40 82 00 5C 7C 0E E0 00
41 82 00 54 2C 1C 00 01 41 82 00 4C 2C 1C 00 09
41 81 00 44 39 C0 00 01 3D E0 80 3F 61 EF 0D E4
3E 00 80 00 62 10 46 EB 39 EF 00 24 3A 10 00 01
7C 0F D8 00 40 82 FF F4 8A 30 00 00 2C 11 00 00
40 82 00 0C 39 C0 00 01 48 00 00 08 39 C0 00 00
99 D0 00 00 2C 15 00 19 48 00 01 F8 00 00 00 00
7C 00 E0 00 41 80 00 40 39 C0 00 01 3D E0 80 3F
61 EF 0D E5 3E 00 80 00 62 10 46 EB 39 EF 00 24
3A 10 00 01 7C 0F E8 00 40 82 FF F4 89 F0 00 00
2C 0F 00 01 40 82 00 0C 99 50 00 00 48 00 00 08
99 D0 00 00 80 6D B6 10 48 25 BB 60


Table
paste @17f4
804c24ec 804c2458 804c2558 804c24c4
e54c4c00 4b4ce500 ffcb0000 00b20000
FF330000 99003300 99663300 00330000

Those last 4 you can change to be the color of your choosing. I haven't tested this on the wii yet and I wont be able to for a while but it works on dolphin so maybe you guys can.

These codes are useful. Should add my code is also for 1.02.

Players Can Choose the Same Costume Color for One Character (1.02) [Achilles]
Version ── DOL Offset ────── Hex to Replace ──────────
1.02 ────── 0x25ce2c ──── 4082000c -> 4800000c ────
───────── 0x25a6f4 ───── 4082000c -> 4800000c ────

───────── 0x25cd5c ──── 4082000c -> 4800000c ────

Shout out to Starreaver1 for finding the third 1.

Disable Automatic Start Screen Transitions (1.02) [Achilles]
Version ── DOL Offset ────── Hex to Replace ──────────
1.02 ────── 0x19e838 ──── 800db078 -> 38000000 ────

Edit: In case you guys didnt read shamrocks instructions. You still have to choose the option not to use the games system files when rebuilding.
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
On a side note I think I figured out how to add relocation entries. Testing but it looks like Ill be able to replace the color toggle with 4 different csp for each character if Im right about this. Not to mention the implications of this for dol mods.
 
Last edited:

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Ideally you want to replace MvHowto.mth and MvOmake15.mth with any shorter .mth file. You can also replace it with a 1 frame .mth file that you make yourself, or find on Smashboards, I'm sure someone's done it (I made one for myself but I never used it and ended up losing it >.>). That'll give you plenty of space in your ISO, you can basically replace all of the .mth's with a 1 frame video.
Also, sorry for being dumb, but is this essentially Achilles' 20xx code for alt costumes, except that you can toggle through all the costumes (original and alt) using Y, instead of having to press L/R first? For example, you can toggle through the 4 original Fox costumes as well as 4 alts just by pressing Y? And you don't have to replace trophy files of course but that's not what I'm confused about.
Thanks for the code, if you get toggleable CSPs to work that would be amazing!
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Ideally you want to replace MvHowto.mth and MvOmake15.mth with any shorter .mth file. You can also replace it with a 1 frame .mth file that you make yourself, or find on Smashboards, I'm sure someone's done it (I made one for myself but I never used it and ended up losing it >.>). That'll give you plenty of space in your ISO, you can basically replace all of the .mth's with a 1 frame video.
Also, sorry for being dumb, but is this essentially Achilles' 20xx code for alt costumes, except that you can toggle through all the costumes (original and alt) using Y, instead of having to press L/R first? For example, you can toggle through the 4 original Fox costumes as well as 4 alts just by pressing Y? And you don't have to replace trophy files of course but that's not what I'm confused about.
Thanks for the code, if you get toggleable CSPs to work that would be amazing!
Yeah I didnt feel like dealing with making a 1 sec video so I just didnt add it to the iso. Also it functions similarly to achilles code but the method is probably completely different. Its based off of Shamrocks discovery. Also this gives every character an alt instead of just a few.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Yeah I didnt feel like dealing with making a 1 sec video so I just didnt add it to the iso. Also it functions similarly to achilles code but the method is probably completely different. Its based off of Shamrocks discovery. Also this gives every character an alt instead of just a few.
Makes sense. I'm looking forward to trying out this code. Also, if you have the time I'd like to hear about what you've got on relocation entries. I don't know much about how they work or how you can apply them to alt CSPs. I'd like to help out wherever I can though, this is cool stuff.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
The relocation table points to things in the file. The game takes these and loads into it into the ram. If you add relocation entries you can add whats getting loaded into the ram. This doesnt have to be a csp. You might be able to say add a dol mod that branches to and from the location in the ram with code. Im basically using my knowledge of dat files from stage editing and guessing a checking what breaks the game and what doesnt.
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Will your method of doing this allow alternate CSPs?
No. Right now it only gives every character an alternate choice for each color. When your on the rotation for alternate colors the background color of that players port is changed.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Not related to the current code (hopefully the code will reflect this in the future), but I'm a little bit confused. So say you have all of the original and alt CSP data loaded into the RAM, how would you tell the game to display a different CSP after you've toggled through all of the originals, or for that matter, how do you tell the game to display a different CSP altogether, one that's not in the vanilla MnSlChr? Or does no one know how to do this yet.
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Not related to the current code (hopefully the code will reflect this in the future), but I'm a little bit confused. So say you have all of the original and alt CSP data loaded into the RAM, how would you tell the game to display a different CSP after you've toggled through all of the originals, or for that matter, how do you tell the game to display a different CSP altogether, one that's not in the vanilla MnSlChr? Or does no one know how to do this yet.
You have to find it in the ram and change the pointer. You might need to add a relocation entry for multiple.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Forgive my lack of knowledge on this subject, but wouldn't changing the pointer mean that that one CSP would be the alt for every player selecting it? Also, I THINK I have a way to fully load all of the alt CSP data into the RAM in one piece, but how would you have a pointer point to a far-off spot in the RAM instead of within the file it originated in? These pointers/relocation entries you're talking about, they would be in MnSlChr.usd?
I'd like to try a proof-of-concept sort of thing, just having the game visually load one extra CSP (for instance, Falco has five CSPs instead of four), but I don't know how I would accomplish this since I don't know how the game decides what CSP to load.
On the other hand (someone's probably found this before but I'll post anyway), there is a table in start.dol, starting in 803d51a0 of the RAM. The first byte of each word contains the number of CSPs different characters have. Idk if this info helps or not.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Forgive my lack of knowledge on this subject, but wouldn't changing the pointer mean that that one CSP would be the alt for every player selecting it? Also, I THINK I have a way to fully load all of the alt CSP data into the RAM in one piece, but how would you have a pointer point to a far-off spot in the RAM instead of within the file it originated in? These pointers/relocation entries you're talking about, they would be in MnSlChr.usd?
I'd like to try a proof-of-concept sort of thing, just having the game visually load one extra CSP (for instance, Falco has five CSPs instead of four), but I don't know how I would accomplish this since I don't know how the game decides what CSP to load.
On the other hand (someone's probably found this before but I'll post anyway), there is a table in start.dol, starting in 803d51a0 of the RAM. The first byte of each word contains the number of CSPs different characters have. Idk if this info helps or not.
Youd be swapping them on the fly. Adding more would require you to understand the game logic on how it decides how many csps a character has and you'd definitely would have to change the toc or at least some system files. If you really good load the alt data eventhough there doesnt seem to be enough space in the ram for it then itd be worth looking into. The problem isnt really that one csp can't be done. Its that when you add all of them there isnt enough space in ram for a 6mb file. If you knew how to get around that itd be awesome.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Youd be swapping them on the fly. Adding more would require you to understand the game logic on how it decides how many csps a character has and you'd definitely would have to change the toc or at least some system files. If you really good load the alt data eventhough there doesnt seem to be enough space in the ram for it then itd be worth looking into. The problem isnt really that one csp can't be done. Its that when you add all of them there isnt enough space in ram for a 6mb file. If you knew how to get around that itd be awesome.
I think I can load all of the alt CSP data into the RAM, but it's only a theory atm as I haven't tested it thoroughly yet and it appears that all the space in the RAM is used for something. I haven't tested whether overwriting certain values in RAM breaks the game or not, though if you could it'd certainly allow you to load more CSP data.
Here's my idea pertaining to loading ALL of the alt CSP data into RAM: use AppLoader.ldr. I found that I was able to append all of the CSP data at the end of that file and have it loaded into the RAM. Two problems with this: the game has a function that erases or overwrites all the Apploader values in RAM (I think you could write a code to work around this, since I think know where the said function is), and as you said there doesn't appear to be space in the RAM for another set of CSP data. Second problem: I found a bunch of unused RAM space, but as soon as I went into singleplayer, it overwrote everything there. So finding the loading cycle function and hotswapping CSP data as you said may be the best way to go, I'm not sure. I've also discovered how to change pointers during the game to make it look at different CSP data than its supposed to. I think I can make the game look at alt CSP data instead of the original CSP, but this is just a theory, I'll post when I find out more.
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
dol mods... my most revered enemy.

time to figure this out and make purin toggles

e~ 500th spent in the melee workshop
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
I think I can load all of the alt CSP data into the RAM, but it's only a theory atm as I haven't tested it thoroughly yet and it appears that all the space in the RAM is used for something. I haven't tested whether overwriting certain values in RAM breaks the game or not, though if you could it'd certainly allow you to load more CSP data.
Here's my idea pertaining to loading ALL of the alt CSP data into RAM: use AppLoader.ldr. I found that I was able to append all of the CSP data at the end of that file and have it loaded into the RAM. Two problems with this: the game has a function that erases or overwrites all the Apploader values in RAM (I think you could write a code to work around this, since I think know where the said function is), and as you said there doesn't appear to be space in the RAM for another set of CSP data. Second problem: I found a bunch of unused RAM space, but as soon as I went into singleplayer, it overwrote everything there. So finding the loading cycle function and hotswapping CSP data as you said may be the best way to go, I'm not sure. I've also discovered how to change pointers during the game to make it look at different CSP data than its supposed to. I think I can make the game look at alt CSP data instead of the original CSP, but this is just a theory, I'll post when I find out more.
Ive made it look at alt CSPs before. The change is displayed the next frame. The problem is that you need a way to load the CSPs to the ram on the fly. Only idea I had were reloading the CSS or possible looking at audio files but thats a stretch and something Id put off till later testing.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Ive made it look at alt CSPs before. The change is displayed the next frame. The problem is that you need a way to load the CSPs to the ram on the fly. Only idea I had were reloading the CSS or possible looking at audio files but thats a stretch and something Id put off till later testing.
I'll see if I can write a code that preserves what you've loaded via AppLoader.ldr. I'm pretty sure I know where the function is that overwrites what it has loaded into RAM.
So I just did some testing, changing some RAM pointers during the game. I tried to have Yellow Roy's CSP load Blue CF's CSP (which was in a separate location in RAM, not the usual location where MnSlChr.usd is loaded), but instead but I ended up with this:
I'm not sure what's going wrong here. I'll play around with it a bit more but your suggestion of hotswapping CSP data may be what we have to look for if I can't figure out what's going on here... What's interesting is that if you change the pointers but have it point at RAM data that's already in the vanilla MnSlChr.usd, it'll work
I'll try playing around with this a bit more in the meantime.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
I'll see if I can write a code that preserves what you've loaded via AppLoader.ldr. I'm pretty sure I know where the function is that overwrites what it has loaded into RAM.
So I just did some testing, changing some RAM pointers during the game. I tried to have Yellow Roy's CSP load Blue CF's CSP (which was in a separate location in RAM, not the usual location where MnSlChr.usd is loaded), but instead but I ended up with this:
I'm not sure what's going wrong here. I'll play around with it a bit more but your suggestion of hotswapping CSP data may be what we have to look for if I can't figure out what's going on here... What's interesting is that if you change the pointers but have it point at RAM data that's already in the vanilla MnSlChr.usd, it'll work
I'll try playing around with this a bit more in the meantime.
Thats interesting, I just added it to the end of mnslchr and it worked.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Oh god I dont remember and didnt really keep the file. It was sheiks csp though. You have to find the original pointer in the ram though.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Okay I could use some help here. I wrote a code that can read alt CSP data and load ALL of the extra CSP data into the RAM - just one problem: All of that data gets cleared. I've been trying to use Apploader.ldr to load the extra CSP data into RAM, and it works but the entirety of that file is wiped from RAM at the start of the game. There's a function at RAM 8000318C that does this, but I've been unable to modify it without causing the game to freeze. If I had a code that basically prevented a certain portion of the RAM from being overwritten at the start of the game, we could get toggleable textures with CSP portraits.
Another thing I've been testing are instructions that affect the game's physical memory, such as eciwx, but I haven't had any luck with them thus far.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Sooooo apparently Melee just doesn't have that much RAM. I've written a code to load an ENTIRE set of CSP data into the RAM, the only problem being that it's very easily overwritten. I'd have to write more codes to overwrite existing RAM values and basically play hot potatoes with the alt CSP data, just transferring it all over the place to prevent it from being overwritten when certain things are loaded. It's pretty big progress though, I think. If anyone wants to help me polish the code and integrate it with zankyou's code, I'd really appreciate it :)
Oh yeah, I don't even know if there are enough CSPs in existence to have alts for every single character lol.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Sooooo apparently Melee just doesn't have that much RAM. I've written a code to load an ENTIRE set of CSP data into the RAM, the only problem being that it's very easily overwritten. I'd have to write more codes to overwrite existing RAM values and basically play hot potatoes with the alt CSP data, just transferring it all over the place to prevent it from being overwritten when certain things are loaded. It's pretty big progress though, I think. If anyone wants to help me polish the code and integrate it with zankyou's code, I'd really appreciate it :)
Oh yeah, I don't even know if there are enough CSPs in existence to have alts for every single character lol.
Yeah, theres just not enough space in the ram. Where are you writing it for it to even fit originally. Might be able to play around with that.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Yeah, theres just not enough space in the ram. Where are you writing it for it to even fit originally. Might be able to play around with that.
I loaded the data via Apploader.ldr, wrote a code to prevent the game from overwriting the CSP data, moved the data to RAM offset 80f00000 (this is all BEFORE the game even visually starts), now I'm just testing out spots to transfer the data to at certain points. I'm pretty sure game data loaded from files like MnSlChr.usd refresh every time you load up the screen so I just overwrite certain offsets in the RAM that aren't currently being used. Like I said, hot potatoes.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Yes. It's overwritten at the very very start of the game. I referred to this in my previous post, but I wrote a series of codes to move the CSP data and prevent that from being overwritten. It's a bit finicky since there's not really any space in the RAM, you're just overwriting existing values and moving the data a lot, but it works, more or less. As I said, I still need to find spots in the RAM that are optimal for overwriting, but it should work.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Is it possible to change pointers in the RAM DURING the game (like using a code) to change where the game looks for CSP data? I posted my attempts at this previously but I still haven't figured out what the problem was. Perhaps I just don't know which values to change, and what to change them to. So far in order to change CSPs I've just been using codes to swap entire sets of CSP data around, I think that using pointers would be much easier.
EDIT: Never mind I think I've got it figured out :D
Btw I think I've figured out the whole writing CSP data into RAM thing. I'll need to test it a bit more but it looks like I've got all of the alt CSP data loaded into the RAM, intact, at the CSS.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Any large amount of "free space" in the RAM would be at the end. This would be space that the game never uses or writes to, and this is where Dan Salvato places the majority of his 20XX TE codes and such. I couldn't tell you the furthest line down that the game ever writes to, but I believe I did an experiement awhile back where I placed a complete set of CSPs at the end of the RAM (or just calculated it, I forget), then played a few matches or whatever, and some of the data did get overwritten. If this actually is the case, then you're probably going to need to double load the CSS everytime it gets loaded in order to place the alt CSP image data back at the end of the RAM. This would be incredibly annoying to the user, though.
Is it possible to change pointers in the RAM DURING the game (like using a code) to change where the game looks for CSP data? I posted my attempts at this previously but I still haven't figured out what the problem was. Perhaps I just don't know which values to change, and what to change them to. So far in order to change CSPs I've just been using codes to swap entire sets of CSP data around, I think that using pointers would be much easier.
EDIT: Never mind I think I've got it figured out :D
Btw I think I've figured out the whole writing CSP data into RAM thing. I'll need to test it a bit more but it looks like I've got all of the alt CSP data loaded into the RAM, intact, at the CSS.
And what happens to this alt CSP data after you play a match?
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Any large amount of "free space" in the RAM would be at the end. This would be space that the game never uses or writes to, and this is where Dan Salvato places the majority of his 20XX TE codes and such. I couldn't tell you the furthest line down that the game ever writes to, but I believe I did an experiement awhile back where I placed a complete set of CSPs at the end of the RAM (or just calculated it, I forget), then played a few matches or whatever, and some of the data did get overwritten. If this actually is the case, then you're probably going to need to double load the CSS everytime it gets loaded in order to place the alt CSP image data back at the end of the RAM. This would be incredibly annoying to the user, though.

And what happens to this alt CSP data after you play a match?
Looks like there's still a lot of holes in my concept. The game freezes when I try to load a stage :/ Back to hunting for a spot in RAM to write to once again, I suppose.
And there's another problem that I didn't think about before. Every time that you leave the CSS, upon returning the pointers that were changed to point to alt CSPs are reset. I may have gotten excited too early, there's still so much that needs to be done...

Edit: Yeah I'm definitely having trouble finding a place in the RAM to write the CSP data to. Would anyone know about fitting that much data, fully intact, into the RAM? I might just have to keep moving the CSP data around instead of having a permanent spot where it's written to...
 
Last edited:

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Can't we just change the texture flags of the CSPs so that they expect CMPRs which are half as long? Sure the shadows become solid black but the doing this would immediately double the potential amount of CSPs for each character.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
@ Achilles1515 Achilles1515 where did you write the CSP data into the RAM? I haven't been able to load a match without the game freezing, with the spots in RAM that I'm writing to.
I'm pretty sure I actually just calculated it and realized my idea wasn't going to work. Something like 0x817f0000 minus however much space a full CSP set takes up. But as I played matches, the game was using some of the space that would be needed. idk...this was months ago...and never fully tested or anything.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Okay so I tried putting my codes and the extended Apploader.ldr into a vanilla ISO and oddly enough the game stopped freezing at matches, but would instead freeze when going into the settings at the CSS. One of the other codes that I have in my dol must be messing something up but I'm not sure which one. I'll keep working on this.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Okay so I tried putting my codes and the extended Apploader.ldr into a vanilla ISO and oddly enough the game stopped freezing at matches, but would instead freeze when going into the settings at the CSS. One of the other codes that I have in my dol must be messing something up but I'm not sure which one. I'll keep working on this.
Idk if this applies to what you're doing, but DO NOT use the random stage music code in an ISO that uses additional files not normally in vanilla. The "song IDs" must be tied into the file structure or something and starting matches will more often than not freeze. It took me like...a week to figure that out. I'm still really salty about it.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Idk if this applies to what you're doing, but DO NOT use the random stage music code in an ISO that uses additional files not normally in vanilla. The "song IDs" must be tied into the file structure or something and starting matches will more often than not freeze. It took me like...a week to figure that out. I'm still really salty about it.
I'm not using additional files atm but wow that really sucks :( Hopefully that gets sorted out eventually. Also I'm afraid that neutral start might be causing the freezing but I haven't tested it for sure yet though if it is neutral start then I don't feel like it'd really be worth the trade-off for alt CSPs.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Okay well oddly enough it was actually the random music code that was causing the freezing. It appears that it can cause freezing even without additional files. Now I'M salty too lol, but at least I've got the CSPs loaded and ready to go. Just gotta check that the data isn't being overwritten at certain points and then it's on to integrating the alt CSP data with zankyou's code :)
Edit: Will also take a look at the random music code. It appears that the song IDs are different now..?
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Idk if this applies to what you're doing, but DO NOT use the random stage music code in an ISO that uses additional files not normally in vanilla. The "song IDs" must be tied into the file structure or something and starting matches will more often than not freeze. It took me like...a week to figure that out. I'm still really salty about it.
Oh wow thats what was going on. I thought I had written my code wrong for the longest.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
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...
 
Top Bottom