• 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 Texture Hack Thread

Ndrew

Smash Rookie
Joined
Jul 10, 2014
Messages
20
Does anyone have blue fire effects for any move(s) in the game? If so can you link me to them?
 

likiji123

Smash Journeyman
Joined
Sep 2, 2014
Messages
319
Location
Australia
NNID
Likiji123
3DS FC
2964-9225-5942
Does anyone know how to do shadings in paint.net or paint?
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Is there a RAM address that shows the exact state in the animation that you character is currently in? (For example, if I wanted to exactly replicate a shot of Falcon kneeing, I would want an address that would allow me to freeze the game at that exact point during the knee animation)
I've looked at the SSBMO spreadsheet but it's a bit confusing. I used it to get pixel-perfect Marth taunt CSPs but I must have written down something incorrectly or I just don't understand the spreadsheet because I can't get the RAM address I need for Falcon.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Is there a RAM address that shows the exact state in the animation that you character is currently in? (For example, if I wanted to exactly replicate a shot of Falcon kneeing, I would want an address that would allow me to freeze the game at that exact point during the knee animation)
I've looked at the SSBMO spreadsheet but it's a bit confusing. I used it to get pixel-perfect Marth taunt CSPs but I must have written down something incorrectly or I just don't understand the spreadsheet because I can't get the RAM address I need for Falcon.
Just wrote this quick code for you.
Code:
C216CDA0 00000006
3DE08045 81EF3130
820F0070 2C10ZZZZ
40820018 A20F0448
2C10XXXX 4082000C
3E000005 920F2278
9421FFD0 00000000
*Only works for P1
[COLLAPSE="ASM Notes"]
Code:
Injected @ 0x8016cda0 - a function that gets hit every frame of the game while in a match. Part of this function adds one to the overall match frame counter (which describes how long the match has taken).
- default code line at this address is: stwu sp,-0x30(sp)

lis r15,0x8045          // 0x80453130 is the static location of the pointer to the start of Player 1's data offset
lwz r15,0x3130(r15)   // load the 32-bit word at this address into r15. So r15 now contains the actual start of P1's data offset
lwz r16,0x70(r15)      // load the 32-bit word at 0x70 + data offset start into r16 which equals the action state that player 1 is currently in
cmpwi r16,0x42       // does the action state equal...whatever you want. In this case, 0x42 is f-air.
bne- END               // if the current action state does not equal the one I want, just branch to the end and skip this code

*if this line gets executed, P1 is doing a f-air
lhz r16,0x448(r15)      // load the 16-bit halfword at 0x448 + data offset start into r16, which is the action state frame counter
                                // the action state frame counter is a 32-bit floating pt. number, but we're only going to be dealing with integers so I'm only going to worry about the first half. 
cmpwi r16,0x4080     // is r16, the first half of the frame number, equal to....whatever you want. In this case, 0x4080(0000) = decimal 8.
                              // so is P1 doing a f-air AND in frame 8 of that action state?
bne- END               // if not, then branch to the end and don't perform the freezing part

*if this line gets executed, P1 is doing a f-air and is in frame 8
lis r16,0x0005             // r16 now equals 0x00050000
stw r16,0x2278(r15)    // store r16 into 0x2278 + data offset start, which is the "freeze character" address...it's a weird address...

END:
stwu sp,-0x30(sp)       // the default code line that was to be executed at the injection point
[/COLLAPSE]
Within the code above,

2C10ZZZZ: ZZZZ = the action state to freeze during. 0x0042 is f-air. Use the action state reference page in the SSBMO spreadsheet.

2C10XXXX: the "4080" is the first 16-bits of a 32-bit float number. This corresponds to the frame during the action state mentioned above that you want to freeze the character in.

Use this website to convert a decimal to a 32-bit float. Use the first 4 hex characters (16-bits) after the conversion in the line above.

Ex. if you want to freeze during frame 4 (dec. 4 = 0x40800000), you would use 4080 as the XXXX value.

Since you're talking about frames, only use integers.


This may come in handy as well.
Code:
Every Stage has a Plain Magenta Background and No Stage Textures (1.02) [Achilles]
04452C70 FF00FF00
04453000 00C40000

*The "FF00FF" can be changed to any color value. 0xFF00FF is magenta.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
The magenta background is a good idea, but I don't know if it will work in practice. Because you'll get a lot of magenta hybrid colors when it mixes with the anti-aliased edges of the character. So you'll have two problems: 1) when you create the palette, you'll be losing precious color count to multiple shades of magenta, and 2) you'd have to then search for and replace all those shades in the tpl for the hexing part.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
The magenta background is a good idea, but I don't know if it will work in practice. Because you'll get a lot of magenta hybrid colors when it mixes with the anti-aliased edges of the character. So you'll have two problems: 1) when you create the palette, you'll be losing precious color count to multiple shades of magenta, and 2) you'd have to then search for and replace all those shades in the tpl for the hexing part.
True, nonetheless, you can use it to easily pull out a selection of just your character since it is a nice solid background (erase background tool in photoshop. idk about gimp). Then select pixels of just the character cutout, contract selection by 1 pixel, select inverse, delete. Then any magenta around the edges should be gone and you have a perfect cutout of just your character that you can lay that on a magenta background.

That's what I did for the alt costume poses on the 20XX post.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
Yeah. Depending on how the specific selection method works; whether you're selecting by whole pixels, or with partial selections (e.g. selecting by alpha). In any case, the background needs to be re-added in one of these ways or another so that the edges are solid colors and there is only one magenta value (ff00ff). So mostly I wanted to warn against using the full image with the magenta background from that code as the same "replacement" color background used in the guides that use magenta for transparency (meaning not replacing it), if that makes sense. It might be better to stick with black for the background during ripping/dumping to prevent confusion or mistakes. Especially since the standard 'stage and environment to black' option in debug mode can be used in the same way as you described for making character selections.
 

Starreaver1

Smash Apprentice
Joined
Oct 12, 2013
Messages
132
Location
Minneapolis, MN/Princeton, NJ
Just wrote this quick code for you.
Code:
C216CDA0 00000006
3DE08045 81EF3130
820F0070 2C10ZZZZ
40820018 A20F0448
2C10XXXX 4082000C
3E000005 920F2278
9421FFD0 00000000
*Only works for P1
Within the code above,

2C10ZZZZ: ZZZZ = the action state to freeze during. 0x0042 is f-air. Use the action state reference page in the SSBMO spreadsheet.

2C10XXXX: the "4080" is the first 16-bits of a 32-bit float number. This corresponds to the frame during the action state mentioned above that you want to freeze the character in.

Use this website to convert a decimal to a 32-bit float. Use the first 4 hex characters (16-bits) after the conversion in the line above.

Ex. if you want to freeze during frame 4 (dec. 4 = 0x40800000), you would use 4080 as the XXXX value.

Since you're talking about frames, only use integers.


This may come in handy as well.
Code:
Every Stage has a Plain Magenta Background and No Stage Textures (1.02) [Achilles]
04452C70 FF00FF00
04453000 00C40000

*The "FF00FF" can be changed to any color value. 0xFF00FF is magenta.
Thanks Achilles, you never fail to deliver! However I am also wondering what the actual RAM address is that contains that float number that corresponds to the frame in the action state (if such an address exists). I know it's referenced in SSBMO but I am terrible at reading that spreadsheet, sorry for the trouble! The reason why is because I already have the exact pose for 4 CF costumes, but I need to match that pose for the last two (why does he get more costumes than everyone else? ):< )

Also thanks for the second code, I already saw it in one of your earlier posts and have been putting it to good use, along with the control all humans and remove HUD 20xx toggles :) So I really only need P1 info, thanks to you.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Thanks Achilles, you never fail to deliver! However I am also wondering what the actual RAM address is that contains that float number that corresponds to the frame in the action state (if such an address exists). I know it's referenced in SSBMO but I am terrible at reading that spreadsheet, sorry for the trouble! The reason why is because I already have the exact pose for 4 CF costumes, but I need to match that pose for the last two (why does he get more costumes than everyone else? ):< )

Also thanks for the second code, I already saw it in one of your earlier posts and have been putting it to good use, along with the control all humans and remove HUD 20xx toggles :) So I really only need P1 info, thanks to you.
I added ASM notes to the previous post. Hopefully it will help the spreadsheet make sense.

The RAM address that contains the frame counter float is based on a pointer, the data offset start for a player. You can always find the address of P1's data offset start by looking at 0x80453130. This is noted, along with the other players, on the Global Addresses page.
 

likiji123

Smash Journeyman
Joined
Sep 2, 2014
Messages
319
Location
Australia
NNID
Likiji123
3DS FC
2964-9225-5942
Does anyone know how to do shadings in paint.net or paint?
Let me rephrase that (i didnt write it that well)
Does anyone know how to change the colours (including the darker colours) to one set colour for example, red to dark red into blue to dark blue
 
Last edited:

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
Not the idea I was going for, but this is nice too.

Actually what I wanted to do is take the CSPs out of MnSlChr.dat/usd and load them straight from the disc. However, this may be difficult in that in the dat the palettes are after the data, but are before the data in the tpls. I want to either find a way to load CSPs from the TPL in the normal way, or simply make a format for this, which will simply be loaded where the CSP goes.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
Not the idea I was going for, but this is nice too.

Actually what I wanted to do is take the CSPs out of MnSlChr.dat/usd and load them straight from the disc. However, this may be difficult in that in the dat the palettes are after the data, but are before the data in the tpls. I want to either find a way to load CSPs from the TPL in the normal way, or simply make a format for this, which will simply be loaded where the CSP goes.
Would be pretty random if it was the same. What did you have in mind?
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
Would be pretty random if it was the same. What did you have in mind?
You probably already know this, but in the MnSlChr.dat, the CSPs are lined up data first, and the palettes right after, in one large block. I was thinking of just putting the CSPs in it's own file and load it from there, instead of loading from MnSlChr, which will save a step, and make CSP replacement more streamlined.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
You probably already know this, but in the MnSlChr.dat, the CSPs are lined up data first, and the palettes right after, in one large block. I was thinking of just putting the CSPs in it's own file and load it from there, instead of loading from MnSlChr, which will save a step, and make CSP replacement more streamlined.
Oh, I see. Maybe a ".csp" format, huh? That would be cool.

Do you have knowledge of how the textures are called/referenced? Like a line of code that says something like 'load image x from file y to object/position z'. I seem to remember reading somewhere that there are two different ways that the game this; probably one way for 2D images, and one way for textures that need to wrap to objects.

You should be able to rewrite a standard TPL file to have the palette come after the image data by changing the pointers in the file's headers (and of course actually moving the data).
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
'ello!






Jester Young Link - Patches Young Link's white costume, based off the blue jester from gauntlet dark legacy. Also comes equipped with Troll Shield.
Made by FrederickCrescent
Download: http://www.filedropper.com/plclwh








Raven Knight Young Link - Patches Young Link's Green/Normal costume.
Made by FrederickCrescent
Download: http://www.filedropper.com/plclnr
Sword effect: http://www.filedropper.com/plcl

Awesome CSPs!!!
Is there any way you could upload these to Mediafire? Filedropper is not working on my computer.
 

CanadianBakn

Smash Rookie
Joined
Apr 15, 2014
Messages
16
Location
Winnipeg, Manitoba, Canada
I have a simple request.

It's time to get into that Christmas spirit ;)

What I'm looking for is fairly simple. I'd like a tiny Santa hat on Fox in Melee. I'll figure out how to load the skin into 20xx myself, I'm fairly new to all of this. Suit colour is optional, red would be nice but I think it'd be entertaining even on vanilla fox.

The Red Fox CSP from the first post on here seems like a great colour to compliment it.



But, again, if you just wanna toss a Santa hat on vanilla fox skin, that's fine with me. If you want to go all-out and make Fox a santa suit, that's cool too :D.

I figure it's easy enough to find a small Santa hat vector, so I haven't included any here. If you need any further clarification, or something like this, please reply.

Sorry for being new to all of this. Just want to have some fun smashing over the holidays.

EDIT: Using Google found a Puff in Brawl that is pretty much exactly what I am looking for. Here's a pic for reference.

 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
I have a simple request.

It's time to get into that Christmas spirit ;)

What I'm looking for is fairly simple. I'd like a tiny Santa hat on Fox in Melee. I'll figure out how to load the skin into 20xx myself, I'm fairly new to all of this. Suit colour is optional, red would be nice but I think it'd be entertaining even on vanilla fox.

The Red Fox CSP from the first post on here seems like a great colour to compliment it.



But, again, if you just wanna toss a Santa hat on vanilla fox skin, that's fine with me. If you want to go all-out and make Fox a santa suit, that's cool too :D.

I figure it's easy enough to find a small Santa hat vector, so I haven't included any here. If you need any further clarification, or something like this, please reply.

Sorry for being new to all of this. Just want to have some fun smashing over the holidays.

EDIT: Using Google found a Puff in Brawl that is pretty much exactly what I am looking for. Here's a pic for reference.

I wish. No one active knows how to do Melee vertex hacking.
 

Veggies

Smash Journeyman
Joined
Mar 9, 2014
Messages
367
Location
Gunsan-Si, South Korea
i made a thing! dark/evil captain falcon, over pink/white https://www.mediafire.com/?9qpton6t74r7ugt

screenshots:

Front


Back


yes, that is a nazi falcon holding the smash logo. but hes evvvvviiill man. sorry if this offends anyone :/
wrong format look at front post
FOLLOW IT EXACTLY

Saikou Fox (C9) (Replaces Blue)
Made By: Siro
Download: https://mega.co.nz/#!wpQUXb5K!RT4LSGQp9z7nQ5Px_kPQkIoME2ei_3lrfxvsVf05k5A

Mizushiro Fox (Replaces Neutral)
Made By: Siro
Download: https://mega.co.nz/#!4hxzyZxR!u8-Vrm7ZjljD8NYhxhozWh4SpprVPwRVoWSUdEejWqE

Marth Redux Version 1 (Replaces Neutral)
Made By: Siro
Download: https://mega.co.nz/#!VgpH3axZ!sVPYEhKW8cJRw1YkonmSquf11emWRrMHEDtw1TcUJKY
Added
 

Anutim

Smash Apprentice
Joined
Oct 22, 2013
Messages
185
I wish. No one active knows how to do Melee vertex hacking.
It's a shame really, I'm dying to change models in Melee. We could do so many cool things with it. Hopefully tcll gets his converter to the point where we may alter these models. :)
 
Top Bottom