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

Melee Gecko Codes + Guide and Discussion

ShockSlayer

Smash Cadet
Joined
Feb 19, 2011
Messages
58
Yeah, I also burned a disc with it and ran it on my TV and noticed it was just like the "widescreen hack" that comes with dolphin:


It's still progress though, which is awesome regardless, but I'd really love to nail down whatever the issue is so everyone can have perfect widescreen without the need of an AR.

One other thing I noticed, when I was messing around with the code in the 1.02 .dol, around offset 3b9b98 there was some text talking about the "fov" and since IE says his code works by changing the fov, I figure that's the next area to look into. I did get some odd results(the camera was zoomed way out) by just randomly changing values in there.

Think we can get this to work somehow? I'm willing to test stuff in both dolphin and on my cube, it's chipped and I've got a handful of DVD-R's just beggin' to be put to a good cause.

SS
 

ShockSlayer

Smash Cadet
Joined
Feb 19, 2011
Messages
58
Yeah, I mean I'd like to get the 1.2 code working in a 1.2 start.dol but I can't seem to figure that out either. I don't know how to get dolphin to tell me what the code's actually modifying. How's the best way to go about that? I think I need to go find wherever Magus is hiding, haha.

SS
 

Sliraobe God

Smash Apprentice
Joined
Dec 9, 2006
Messages
181
Location
Albuquerque, NM
[COLLAPSE="Hold L+R for Salty Runback"]
Code:
Hold L+R for Salty Runback (v1.02, Gecko) [InternetExplorer]:
C21A4160 00000008
39C00000 3DE08046
61EFB108 820F0000
56110253 41820010
56110295 41820008
38000002 39CE0001
2C0E0004 4080000C
39EF0008 4BFFFFD8
981F0003 00000000
[/COLLAPSE]
Thank you for the hard work, Dan! The code works perfectly as described. However, I can't pause and quit out of a match. The game runs it back instead of loading the "No Contest" screen since L+R overlap with the L+R+A+Start bindings. Even though players turn pause off nowadays, I still assume this is an unintended side effect.

I would prefer a different combination such as X+Y. I imagine it's a quick fix, right? Just search through the controller memory addresses and change the button activator? Normally I'd do it myself, but I couldn't find 0x0060 here. Would you be able to write that code, please? Or, at the very least, could you show where the button activator values are? You pointed out the location of the color values for the L-cancel and shield stun codes, and that was really helpful.

Or maybe I don't understand the mechanism here and the ASM commands have nothing to do with button activators at all. Either way, thanks! ^_^
 

ShockSlayer

Smash Cadet
Joined
Feb 19, 2011
Messages
58
Still messing with widescreen junk, it is now my prime goal to get perfect widescreen on Melee. I've got a ton of notes written down and I'm starting to understand a bit more about how certain things work. What helped the most was figuring out how to use Dolphin's debug options a bit better. I figure my best bet for getting working widescreen into a start.dol is figuring out and then tweaking standardtoaster's asm injection thingy, since there's no offset in the start.dol that corresponds to where the code edits.

I think I have an idea of the real "problem" with it...Melee has multiple places where you can set the FOV for certain things.
- So basically, IE's code tells JUST the single FOV at 80BDC5E4 to render in 4/3(which in hexland is 3FCFC217). The other FOV's remain unchanged, which is why basically everything else is still stretched and you don't notice the background weirdness.

- With toaster's code I think it tells ALL or at least multiple FOV's to render in 4/3. This includes the background shader things and thus with toaster's code you see the 640x480 background weirdness during battle, which is the "problem."

What supports this is during battle, I searched through the memory for every instance of 3FCFC217.
- With just IE's code, I can only find one instance of 3FCFC217, and it's at 04BDC5E4 like it's supposed to be.
- With delicious toast, I can find like 12... If I change some of those, certain things change! For example, on 1.0 if I change the 3FCFC217 I found at 00fde964 back to 3F9BD194 the HUD icons get stretched just like IE's code!

So, we can use this new info to create a better widescreen code, atleast. I'm going to try to find out exactly what each instance does just by poking at it a bit more. I'll get back with that because now I have something fun to do.

Anyways, as far as general productivity goes, I managed to develop IE's widescreen code for all versions, since I'm pretty familiar with what it's supposed to do and don't remember seeing anyone else do it:
1.0: 04BDA464 3FCFC217
1.1: 04BDB8C4 3FCFC217
1.2: 04BDC5E4 3FCFC217
PAL: 04C05144 3FCFC217

Initially I tried doing it with math but I think I miscalculated or something because that didn't work, so being familiar with what and where the original code changes in 1.2 I just searched for all instances of it in the the other versions, found the right spot(it's the second to last instance of 3F9BD194 during a match) and copied the offset it was found at.

I've been steadily adding to this post for like the past couple hours, so a couple things may be repeated or oddly placed. And again, I'm just poking at this until I can make something happen, I'm probably gonna require help from someone who can write assembly or something for actually getting the start.dol thing to work.

SS
 
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
Awesome, we need more people like you in the scene. Consider that some of the addresses you mention might be dynamic and thus hard to pinpoint. You might have to find pointers to them or something, which would make life rather difficult.
 

Kou

Smash Apprentice
Joined
Nov 22, 2011
Messages
198
Location
Japan
Still messing with widescreen junk, it is now my prime goal to get perfect widescreen on Melee. I've got a ton of notes written down and I'm starting to understand a bit more about how certain things work. What helped the most was figuring out how to use Dolphin's debug options a bit better. I figure my best bet for getting working widescreen into a start.dol is figuring out and then tweaking standardtoaster's asm injection thingy, since there's no offset in the start.dol that corresponds to where the code edits.

I think I have an idea of the real "problem" with it...Melee has multiple places where you can set the FOV for certain things.
- So basically, IE's code tells JUST the single FOV at 80BDC5E4 to render in 4/3(which in hexland is 3FCFC217). The other FOV's remain unchanged, which is why basically everything else is still stretched and you don't notice the background weirdness.

- With toaster's code I think it tells ALL or at least multiple FOV's to render in 4/3. This includes the background shader things and thus with toaster's code you see the 640x480 background weirdness during battle, which is the "problem."

What supports this is during battle, I searched through the memory for every instance of 3FCFC217.
- With just IE's code, I can only find one instance of 3FCFC217, and it's at 04BDC5E4 like it's supposed to be.
- With delicious toast, I can find like 12... If I change some of those, certain things change! For example, on 1.0 if I change the 3FCFC217 I found at 00fde964 back to 3F9BD194 the HUD icons get stretched just like IE's code!

So, we can use this new info to create a better widescreen code, atleast. I'm going to try to find out exactly what each instance does just by poking at it a bit more. I'll get back with that because now I have something fun to do.

Anyways, as far as general productivity goes, I managed to develop IE's widescreen code for all versions, since I'm pretty familiar with what it's supposed to do and don't remember seeing anyone else do it:
1.0: 04BDA464 3FCFC217
1.1: 04BDB8C4 3FCFC217
1.2: 04BDC5E4 3FCFC217
PAL: 04C05144 3FCFC217

Initially I tried doing it with math but I think I miscalculated or something because that didn't work, so being familiar with what and where the original code changes in 1.2 I just searched for all instances of it in the the other versions, found the right spot(it's the second to last instance of 3F9BD194 during a match) and copied the offset it was found at.

I've been steadily adding to this post for like the past couple hours, so a couple things may be repeated or oddly placed. And again, I'm just poking at this until I can make something happen, I'm probably gonna require help from someone who can write assembly or something for actually getting the start.dol thing to work.

SS
Finally widescreen support to any verions!!
Thanks a lot!
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
Made an AR code that makes training mode become develop mode so you can show hit boxes. I also included comments to show how it works.


Code:
$Training mode boots in develop mode.
#If in menus.
c8bda603 000000ff
#And also in training mode character select.
0c406e54 005d40dc
#Then change to develop mode.
044d4a08 00000004
#If not in training mode character select.
14406e54 005d40dc
#Switch to normal mode.
044d4a08 00000000
 

ShockSlayer

Smash Cadet
Joined
Feb 19, 2011
Messages
58
Awesome, we need more people like you in the scene. Consider that some of the addresses you mention might be dynamic and thus hard to pinpoint. You might have to find pointers to them or something, which would make life rather difficult.
<3

Yeah, I did notice that addresses containing the HUD didn't stay in the same place...for example if I found where it was stored during a match on FD with Link and Mario, the same code wouldn't work on Corneria, and wouldn't work if I had a match on FD with Link and Ice Climbers, etc. But that data has to come from somewhere, and I guess that place is said pointers. I also noticed that the HUD and pause screen are grouped together, when I changed the HUD address the pause screen reflected the same change.

Anyways, going back to the other part of widescreen, I do know that 003bcb98 is important. If I change it to 3fcfc217 during a match, the camera zooms in. If I leave it as 3fcfc217 and start a new match, the characters and stage are all un-squished. If I change it back during that same match, I get the same effect as the widescreen code. Then starting a new match we're back to having nothing because 003bcb98 is back to normal. What's important about this though is that 003bcb98 also exists in the start.dol, it's at offset 3b9b98, which is where I started to begin with...so that's progress. I made some images to demonstrate what I'm talking about:







Maybe I'm just weird, but perhaps the 3rd image is what widescreen's actually supposed to look like? Granted I like having it zoomed out like the regular code, but I dunno. It lines up with the first picture at least, and there aren't any 640x480 related glitches from what I can tell.

I'm at my wit's end here as far as what to do. If I change 003bcb98 in the start.dol I basically get widescreen but it's zoomed in, and the only way I know how to zoom it back out it changing it back afterwards. *sigh* I kinda want to nail this down first, then I can move on to all the HUD/Menu stuff. I still think toaster's approach is the best with the asm injection, but I don't know anything about writing asm, I can't even get his code to work in 1.2.

Thoughts?

SS
 
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
Yes, but picture 3 also looks like it has a really weird FOV. The shape of the stage is pretty bizarre if you focus on the back 3 edges.
 

ShockSlayer

Smash Cadet
Joined
Feb 19, 2011
Messages
58
It does look like it's tilted forward a bit. What the most obvious is that in #1 you could see the energy ball thing below stage, whereas it's gone in the 3rd. Aaargh. Ah well. I've been poking at this a bit more and I can't seem to find anything else...my last plan of attack is to try to figure out where the "foreground" shader's FOV is and modify that, 'cause the only in-battle issue with toaster's code is the foreground shader(the white flash you get when you hit someone really hard) has the 640x480 weirdness. Interestingly enough the background shader's FOV is untouched, so I at least know that they're separate. I doubt even if I found it that I could do anything though, because it looks like toaster's code overwrites it anyways so I don't know how to tell it "okay look code, you're supposed to be 3F9BD194 so don't change no matter what any magical toasters tell you, ok?"

So, for the time being I'm at a dead end as far as my own skills go, so I have to wait for a wizard to come fix everything for me or find a wizard and try to enlist some help. Speaking of which, after spending hours and hours I'd gladly pay for some coding magic, or do whatever's necessary to get the job done.

In the meantime, to make up for clouding up this thread with my nonsense, I feel that I'm now familiar enough with dolphin that I can try to convert codes to other versions as well as attempt to find their respective .dol offsets, no guarantees of course but if anyone has any requests lay 'em on me and let's see if we can get something done.

SS
 

Kou

Smash Apprentice
Joined
Nov 22, 2011
Messages
198
Location
Japan
Made an AR code that makes training mode become develop mode so you can show hit boxes. I also included comments to show how it works.


Code:
$Training mode boots in develop mode.
#If in menus.
c8bda603 000000ff
#And also in training mode character select.
0c406e54 005d40dc
#Then change to develop mode.
044d4a08 00000004
#If not in training mode character select.
14406e54 005d40dc
#Switch to normal mode.
044d4a08 00000000
Awesome.
Could you make that code for 1.00?
 

CaptainFabulous

Smash Cadet
Joined
Mar 19, 2013
Messages
42
Has anyone had any luck getting the flash on l-cancel code to work in cfg usb loader? The other codes seem to work fine but this one just crashes my game as soon as I try to play a match. Any help would be greatly appreciated.
 

Kou

Smash Apprentice
Joined
Nov 22, 2011
Messages
198
Location
Japan
Has anyone had any luck getting the flash on l-cancel code to work in cfg usb loader? The other codes seem to work fine but this one just crashes my game as soon as I try to play a match. Any help would be greatly appreciated.
Infinite Shields code also crashes USB launching.
Some codes seem not to be able to use.
All we have to do is mod .dol.
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
In messing around I found that NTSC does have lower case letters for name tags, unless of course they are Japanese characters. Can anyone verify that they are not?

 

VietGeek

Smash Hero
Joined
Mar 19, 2008
Messages
8,133
Not Japanese. May be Japanese typeface of Latin characters, but even so they'd be functionally the same.

How'd you do it?
 
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
Yeah, if you don't mind, please share with me any information you may have found regarding name tags. It will probably be very useful for SSBMO.
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
So I think figured out how name tags work.

It consists of 24 hexadeximal characters and each 4 stores a character. The last 8 hexadecimal characters
are the rumble setting for that name tag. That means there are 16^4(?) different possible characters that can be stored. To get the lower case letters like I did above I just choose random combinations.

So say the start of a name was held at 0x0

0x0 82738263 stores TD (where 8273 = T and 8263 = D)
0x4 82648275 stores EV (8264 = E and 8275 = V)
0x8 00010500 Means rumble is set to on(00000500 means rumble is set to off).

Now, even better, with that I made a code that shows we can do in game toggling of codes based on the rumble setting of name tags. I took my previous code that changes training mode to develop mode and added a few lines in the beggining to allow it.

and here it is

Code:
$Training mode boots in develop mode with first name set to TDEV and its rumble set to on
#If first name tag equals TDEV.
cc45d850 82738263
cc45d854 82648275
#And rumble is set to on.
cc45d858 00010500
#If in menus.
c8bda603 000000ff
#And also in training mode character select.
0c406e54 005d40dc
#Then change to develop mode.
044d4a08 00000004
#If not in training mode character select.
14406e54 005d40dc
#Switch to normal mode.
044d4a08 00000000
EDIT: For reference the first name tag is stored at 0x8045d850
 
Joined
Oct 10, 2011
Messages
1,126
Location
Boise, ID
NNID
dansalvato
Awesome work. I'll look a little further into this myself as well. Are the nametag memory locations static, or do they change with the start of each match?
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
I think they are static, I have tried it only with the first name tag and the second which seem to be in the same place in memory every time I restart melee in dolphin. Also, if you change the character value of the name tag while in game and reload the name entry screen in the menus you instantly see the new name.

EDIT: First value is at 0x8045d850 and second is at 0x8045d9f4
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
I did some messing around with this. It seems that each group of characters is exactly 0x1a4 from the last.

Also while I was trying different values for the characters, I stumbled upon this:


The last two letters (bP) were stored in one value (6250) in the last half of the last address.
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
It seems that Melee support up to 8 letters, and that each character can fit in two bits.
474f474f 474f474f shows as GOGOGOGO.

20 is space ( )
22 is quotes (")
27 is apostrophe (')
2c is comma (,)
2d is dash (-)
2e is period (.)
1 to 9 are in order from 30 to 39.
3a is colon (:)
A to Z values (upper case) are in order from 41 to 5a.
A to Z values (lower case) are in order from 61 to 7a.

Unknown values make weird stuff happen and confuse the game.

2-bit characters can be used in conjunction with 4-bit characters, so you can still use the extra characters not included in the 2-bit values.

Changing the value instantly changes it in the name entry menu (not the name tag box on the player)

These can actually save to the memory card.
 

Kou

Smash Apprentice
Joined
Nov 22, 2011
Messages
198
Location
Japan
ohhhhhhhhh
5+ letters and small letters will be able to be used!?
Im looking forward
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
8 characters:


2-bit characters with 4-bit character:


Grabs! is 47726162 73814900.

47 is G
72 is r
61 is a
62 is b
73 is s
8149 is !
Any zeroes at the end are nothing.
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
that's awesome, but it kind of sucks that the box behind the name doesn't fit the added letters
That could probably be fixed, considering it already stretches depending on the amount of characters, so there has to be a value you can change to expand it.

Edit: Wait I'm not sure lol. The characters inside get thinner.
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
Wow, I did not expect this. So I guess characters are stored in 2 hexadecimal numbers. But my letters had a 82 prefix to mean one character, I guess you can use multiple conventions to mean one character.

Also look what happens when you have more than 4 characters.



I guess that's why more than 4 characters were scrapped.
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
Wow, I did not expect this. So I guess characters are stored in 2 hexadecimal numbers. But my letters had a 82 prefix to mean one character, I guess you can use multiple conventions to mean one character.

Also look what happens when you have more than 4 characters.

<image>

I guess that's why more than 4 characters were scrapped.
I don't see anything wrong other than EV, which usually means that the value you put doesn't represent any character.



There are also some characters that I didn't find in 2-bit, such as ! which is in my example.
8149 is !, but 49 is the letter I. What I noticed though, is the the ! starts with 81, but I'm sure the I would start with 82.

The only apparent issue is that the game's boxes weren't made to fit more than 4 characters, but Nintendo could have easily stretched them or fit the letters in.
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
Yea they probably just thought bigger boxes were more distracting so they scrapped it on release. On a side note I documented more characters

8141-8149 Special Characters that I didnt bother to write down
8250-814E blank
814F- More special characters
8150 blank
8151 underscore
8152-815A blank
815B Dash
815C-815D blank
815E forward slash or /
815F blank
8160 tilda or ~
8162 line or | character
8163-8165 blank
8166 single right handed quote or ' character
8167 blank
8168 double right handed quote or "
8169 left handed parenthesis or (
816A right handed parenthesis or )
816B-816C blank
816D left handed bracket or [
816E right handed bracket or ]
816F left handed curly bracket or {
8170 right handed curly brackey or }
8171-817A blank
817B plus, +
817C minus, -
817D blank
817E multiply or X
817F-8180 blank
8181 equals, =
8182 blank
8183 less than sign or <
8184 greater than sign or >
8185-818E blank
818F Yen symbol
8190 $
8191-8192 blank
8193 percent or %
8194 hashtag or #
8195 and sign or &
8196 star or *
8197 @ symbol
8198-8200 blank
8260 to 8279 is uppercase(A-Z)
8280 is blank
8281-829A is lower case(a-z)
829B-829E is blank
829F-82ED these look to be paris of upper and lower case Japanese characters although I cannot confirm this because I don't know Japanese.
82EE-82EF blank
82F0-82F2 Two more Japanese characters both appear uppercase.
82F3-82FF blank.

Still not sure how individual characters are stored. 82 cannot be blank because that should make 8261 lower case a but it is upper case B. You can also see 82 cannot just be blank because 8281 and 61 seem to make the same character. Maybe characters are stored in four hexadecimal digits but all two character combinations are recognized as subdivisions such as 6162 (a b) which might be the subdivision of two character a's that has b.

EDIT: more values
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
Still not sure how individual characters are stored. 82 cannot be blank because that should make 8261 lower case a but it is upper case B. You can also see 82 cannot just be blank because 8281 and 61 seem to make the same character. Maybe characters are stored in four hexadecimal digits but all two character combinations are recognized as subdivisions such as 6162 (a b) which might be the subdivision of two character a's that has b.

EDIT: more values
81 and 82 are probably just some sort of indicator for the game. I don't think 2-bit characters were ever meant to be used. A lot of characters are missing in the 00 through FF values, but not in the 81## through 82## values.

Edit: Some of the characters you found can't be used through the normal menu.
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
I don't think they are a sort of indicator because that would mean that you could add 82 to anything and it would modify it. This doesn't seem likely because 63(or 6300) is a single lower case c but if you add 82 to the front of it (to make 8263), it becomes uppercase D (NOT uppercase C) and I think it works the same for the rest of the alphabet.

EDIT: Yea I think names are represented by 4 hexadecimal numbers because while 6300 is c, 0063 is nothing.
 

danny135

Smash Apprentice
Joined
Jul 25, 2012
Messages
150
Location
Puerto Rico
I don't think they are a sort of indicator because that would mean that you could add 82 to anything and it would modify it. This doesn't seem likely because 63(or 6300) is a single lower case c but if you add 82 to the front of it (to make 8263), it becomes uppercase D (NOT uppercase C) and I think it works the same for the rest of the alphabet.

EDIT: Yea I think names are represented by 4 hexadecimal numbers because while 6300 is c, 0063 is nothing.
No as in, 81 and 82 indicate that the next two bits are the value of a character in one of the two sets of characters. 81 is for one set of characters and 82 is for the other. This allows for more characters. 2-bit characters (which weren't meant to be used) are just one set.

Pairs of zeroes mean there are no more values. 6300 is 63 (which is c) and then nothing. In 0063 the game ignores everything after the 00. If you changed the 00 to a valid 2-bit value, it would show that, and then c.
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
What does this mean for people using Gecko or USB loaders with hacks? Will there eventually be a code that lets us modify a tag to use extra characters/length?
 

ResidentWaffle

Smash Lord
Joined
Jan 22, 2006
Messages
1,125
Location
UCLA
Yea, also I'll try to figure out how the name entry menu works so we can get all these extra characters enabled.
 

SypherPhoenix

Smash Lord
Joined
Feb 12, 2007
Messages
1,563
Location
Fairfax, VA
ぁ - 829F
あ - 82A0
ぃ - 82A1
い - 82A2
ぅ - 82A3
う - 82A4
ぇ - 82A5
え - 82A6
ぉ - 82A7
お - 82A8


Adding 1 to the below values will give the character a ゛ diacritical mark
か - 82A9
が - 82AA
き - 82AB
く - 82AD
け - 82AF
こ - 82B1
さ - 82B3
し - 82B5
す - 82B7
せ - 82B9
そ - 82BB
た - 82BD
ち - 82BF
つ - 82C2
て - 82C4
と - 82C6



な - 82C8
に - 82C9
ぬ - 82CA
ね - 82CB
の - 82CC




Adding 1 to the below values will give the character a ゛ diacritical mark, adding 2 will give a
は - 82CD
ひ - 82D0
ふ - 82D3
へ - 82D6
ほ - 82D9



ま - 82DC
み - 82DD
む - 82DE
め - 82DF
も - 82E0

ゃ - 82E1
や - 82E2
ゅ - 82E3
ゆ - 82E4
ょ - 82E5
よ - 82E6

ら - 82E7
り - 82E8
る - 82E9
れ - 82EA
ろ - 82EB

ゎ - 82EC
わ - 82ED

を - 82F0
ん - 82F1


っ - 82C1
一 - 815B
〜 - 8160
。 - 8141
、 - 8142





too lazy to do katakana, perhaps some other day
if katakana follows the same ordering it shouldn't be hard, the small A has the value 8340, so one could start from there.
 
Top Bottom