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

ATTENTION EVERYONE! I'm making a GCT decompiler, and I need your help!

Status
Not open for further replies.

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
So I'm making a new program called GCTEdit (hopefully it will even be released tonight!).

What this program does:
Open TXT or GCT Files
Add Codes if you wish
Save as TXT or GCT

meaning...
you can open a GCT file and save as a TXT file!!!

:)yay gct decompiler!:)

You said:
But ChiboSempai, GCT files have no headers for codes that contain the name of it! Golly jee how do you do it?
Glad ya asked, I have sort of a database you might want to call it of code in my program that we already know exist. Then when it gets all of the codes from the GCT file, it searches the big hump of codes for the ones in the database. If it finds a match, congrats! It then knows to set aside that code and give it the appropriate name for the code. For any codes it doesn't find, it puts that into a big code under the title Unknown Codes :p

Eventually I'm sure that the database will become big enough that it will soon be able to decode every code it comes across!

So where do I come in you ask?

You get to help me populate my code database! yay!

To add a entry into my program, it's one simple line of code that looks like this:
Code:
codes.addElement(new Code("Unrestricted Pause Camera","040A7D604E80002004109D8838800001","040A7D604E80002004109D8838800001",32));
It's in the form of:
codes.addElement(new Code(code name, code, what to search for, length));

The reason for the what to search and stuff:
some codes use different values such as the default settings code. Obviously you can't search for the whole code since the values will be different in every gct you come across (like 3 for stocks in vB, 4 for B+). So the default settings code is as follows:

Default Settings Modifier[Igglyboo, Brkirch, and FMK]
24494A98 80000000
20523300 00000000
04523300 DEADBEEF
42000000 90000000
0417F360 0000XXYY
0417F364 FFGGZZNN
0417F368 KKTTPPSS
0417F36C JJ000000
E0000000 80008000

YY = Time counter(Infinite time is 00)
FF= Stock counter
KK = Stock Time Limit(Infinite Time is 00)

The first variable in the code doesn't occur until the 5th line, meaning every single time you see the default settings code the first 4 lines will be the same. The first 4 lines is what you wan't to search for. The name would be "Default Settings Modifier" (you can include the brackets for the author as well for a more complete experience, but I'm lazy lol), the code would be the entire code as you see it (it doesn't matter with the variable. to be honest my program doesn't even use the code field at the moment, but it might later so I'm adding them in just for the sake of doing so for future use, so its ok if it has variables in it for vBrawl settings, even if this will be decompiling a brawl+ gct), and the length is the number of characters in the code. A quick way to know is that each line is 16 characters, so that default settings code is 144 characters. When you input the code, what to search for, and the name, remember to put " " quotation marks around it. Also remember to put no spaces in the codes.

With all of this in mind, the database input for the default settings code would be:

Code:
codes.addElement(new Code("Default Settings Modifier","24494A9880000000205233000000000004523300DEADBEEF42000000900000000417F3600000XXYY0417F364FFGGZZNN0417F368KKTTPPSS0417F36CJJ000000E000000080008000","24494A9880000000205233000000000004523300DEADBEEF4200000090000000",144));
It's a little long, but it works!

I didn't even have the default settings code in it yet and just made it for the first time in this thread as an example and popped it in my program and it works! It now detects the default settings modifier perfectly!

So, if you wish to help, make code entries like the one I did above. It looks much nicer on SWF if you put the CODE tags around each code (one line of code per set of tags).

For everyone that submits a entry, I will note you down to mention you in the credits. Don't worry about duplicates. Obviously it's a waste of time, but if I accidentally put a duplicate entry in my program it won't matter, it will just detect whichever entry I put in first.

Edit, the only ones I made myself at first were triple jump fix, unrestricted pause cam, and default settings

Edit2: At the moment this means that if there's a variable in the first line of the code then it can't be added to the database atm. I'm going to think of a way to work around this later.

Edit3:

ALL LETTERS IN THE CODES HAVE TO BE UPPERCASE!

Edit4:

Bionic Sonic made a lil database webform you can use to make lines database entries: http://siriusuplink.com/codedatabase.php
It's a handy little app that can speed things up. Just at the moment only use it for codes that don't have variables in it, or codes with variable length.
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
So you just want us to post common codes except reformat them into that one line so you can add them into your program without having to convert them all yourself?

Sure, seems simple enough.

Code:
codes.addElement(new Code("Tags in replays","0404B14038A00000","0404B14038A00000",16));
Code:
codes.addElement(new Code("All players can be on the same team","0468D53438600000","0468D53438600000",16));
Code:
codes.addElement(new Code("Can start game with 1 player","0468D4202c060001","0468D4202c060001",16));
Code:
codes.addElement(new Code("Infinite length replays","040EB80460000000","040EB80460000000",16));
Custom CSS stuff:
Code:
codes.addElement(new Code("Lone Zelda icon","046900E860000000","046900E860000000",16));
Code:
codes.addElement(new Code("CSS fixes for Samus/ZSS and Zelda/Shiek","80693D503880000406693D6C00000008380000003880000F046900E86000000004697F586000000004697EEC60000000","80693D503880000406693D6C00000008380000003880000F046900E86000000004697F586000000004697EEC60000000",96));
Code:
codes.addElement(new Code("CSS fixes for Giga Bowser","C2684940000000029BB400B857BD06BE2C1D001B00000000040AF8D4546025B6040AF964546025B6040AF830546025B6040AF528546025B6040AF810546025B6040AF880546025B6040AF848546025B6","C2684940000000029BB400B857BD06BE2C1D001B00000000040AF8D4546025B6040AF964546025B6040AF830546025B6040AF528546025B6040AF810546025B6040AF880546025B6040AF848546025B6",160));
Code:
codes.addElement(new Code("Independent Pokemon engine","06407BD00000000E04030F0D1E1B1F1B201B211B221B0000C268496400000007881400B82C00003F41A000282C03001D40A200083860001E2C03001F40A20008386000202C03002140A2000838600022987400B800000000","06407BD00000000E04030F0D1E1B1F1B201B211B221B0000C268496400000007881400B82C00003F41A000282C03001D40A200083860001E2C03001F40A20008386000202C03002140A2000838600022987400B800000000",176));
Code:
codes.addElement(new Code("Custom CSS","0668310C00000030387E006C3B6000003C80806838840DE07CBB20AE7CA507754180001494A300043B7B00012C1B00324180FFE8480000380469033848000068066900d8000000082c1700284182016802680DE00022FFFF06680DE00000002D000102030607082028091A0E0416131B23280D050F171F255D0B12280C141018115E1927281524220A215C2629282828","0668310C00000030387E006C3B6000003C80806838840DE07CBB20AE7CA507754180001494A300043B7B00012C1B00324180FFE8480000380469033848000068066900d8000000082c1700284182016802680DE00022FFFF",288));
Code:
codes.addElement(new Code("Custom Random","066858240000000C3C6080687C63021488630E8000000000046857F03AE0002806680E8000000028000102030607081112091A0E1716131B21260D0514101F25200B270C152422180A23190F045D5E5C","066858240000000C3C6080687C63021488630E8000000000",160));
Some of these are kinda long, but they're not variable except the CSS itself... I hope I did these right.

Also, I think the Custom CSS/Custom Random codes could be a little longer depending on how big you make it. Mine uses 45 icons (9x5), but if you fill it up to 50 icons, it might take an extra line or two.
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
thx hotdogturtle, yup that worked perfect!

edit: I just decided what I'm going to do with the codes being in the code database
im prob gonna have a drop down list of every code in the program that you can add to files that way, so you dont have to type em in
 

MK26

Smash Master
Joined
Jun 29, 2008
Messages
4,450
Location
http://www.mediafire.com/?zj2oddmz0yy for ZSS fix!
I think this is impossible to work for codes with a variable amount of lines, such as CSS and Custom Random...

HDT, which versions of the codes do you have there? specifically, is that version 2.1 of the Z/S & S/Z Fix?

======

For people who don't like tripping (note: the last 8 digits actually are variable, the float value of the trip chance percentage iirc):
Code:
codes.addElement(new Code("No Tripping","0481CB34C0220020045A934000000000","0481CB34C0220020045A934000000000",32));
I'll probably go through much of the B+ery 5.0 later
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
HDT, all of your entries work so far

At first the CSS one didnt, and it took me a while to find out the prob, but it's because there was 2 lowercase characters in the search part. I forget to mention, all letters have to be uppercase

Edit: uhg mk26 is right, I forgot about variable lines... hmmmm il think of a fix

Edit2: Thx mk26, ur code works. as for things like no tripping, as you did, entries could be like No Tripping with the full code in the search part, instead of like Tripping Modifier code with the first part. Practically no one is gonna have a tripping modifier thats not no tripping lol. i guess an entry could also be made for 100% Tripping lol, with the whole code input with the variable for 100% lol

il work on a fix for some variable length codes, such as CSS
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
I made a specific fix for CSS codes in my program, it can now detect them of any size, if theres a CSS of one character, or of 50 :)

I should be able to make specific fixes for any code, especially because there arent that many
I'll eventually make a specific exception for frame speed mod codes soon

Once I make support for opening TXT files, the program will essentially be done except for populating the code database. it should be done tonight, I'm just lazy lol
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
The file patch code is 1840 characters long... Do you actually need the whole thing or is there some cutoff point you could use?
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
for the full code part of the code, keep it the same. for the search part you could use like half of it

the search will work as long as its "unique enough." like i doubt any other code would have the same first half of the file patch code
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
Code:
codes.addElement(new Code("File Patch Code v3.5.1","E000000080008000225664EC000000000401BFE04858BE20065A7E000000007038A00067388100203CE0805A60E37C184BE5253138A0007F3883FFE8386100204BE5252138A0006860E47C18386100209421FF80BC410008386100884BA74DB97C7C1B782C0300004082000C382100804800001CB8410008382100804BE524E5386100084BA742E17C7C1B784BA741E8040223E048585BC0065A7FA000000028800100443C6080016063581C7C0018004082000C7FDDC8503BDEFFE093DB00084BA7A424000000000401CD0C4858B1F4065A7F00000000382C0300004182000C4BA7DD514BA74E04807800082C030000418200148118000C7C6342147C7B1850480000088078000C4BA74DE000000000043EE9D848000014043EEBD448000014043D8B9C48000018043E9B4C38600000043E9D3838600000043D8C8060000000800000008040692080000001805A7C008A00100100000000045A7C102F525342045A7C14452F706680000001805A7B008A00100100000000065A7B100000000F2F525342452F70662F736F756E642F00041C6CE0483E0D20065A7A00000000289421FF80BC4100083C60805A60637B1F4BE52931B8410008382100804BE529954BC1F2C400000000065A7900000000789421FF807C0802A69001000CBC8100109421FF007C87237854B2BA7E7CD33378388000009081000C9081001090610014908100183880FFFF9081001C38610020906100087CE43B7838A000804BE529F5386100084BA752A16000000080210000B88100108001000C7C0803A6802100004E80002000000000043E399C481C3F04065A78A00000001080BC00207CA592143A4000004BE3C0F4043DBAEC481CBDE4065A78D000000018800302A42C130000418200087E609B783A6000004BE3420C041CDF7C483D9884065A780000000098818C00149421FF80BC4100083D00903461089D947C0340004082003C7C8823783C60804D606300003C80805A60847B007CC5337838C0420080E400802C0700004082001460000000480000B92C03000041820010B8410008802100004BC2672470A501FF3868FFFF3C80804C6084FFFF7C842A1438A0400138A5FFFF8C0400019C0300012C0500004082FFF0B8410008802100004BC2670C141CCF90483DA770065A7700000000489421FF80BC4100087FE3FB783C80805A60847B0038A0000038C04000480001E590640080807F0008907A0014907A005C907A0074B841000880210000807F00004BC2585400000000E000000080008000","E000000080008000225664EC000000000401BFE04858BE20065A7E000000007038A00067388100203CE0805A60E37C184BE5253138A0007F3883FFE8386100204BE5252138A0006860E47C18386100209421FF80BC410008386100884BA74DB97C7C1B782C0300004082000C382100804800001CB8410008382100804BE524E5386100084BA742E17C7C1B784BA741E8040223E048585BC0065A7FA000000028800100443C6080016063581C7C0018004082000C7FDDC8503BDEFFE093DB00084BA7A424000000000401CD0C4858B1F4065A7F00000000382C0300004182000C4BA7DD514BA74E04807800082C030000418200148118000C7C6342147C7B1850480000088078000C4BA74DE000000000043EE9D848000014043EEBD448000014043D8B9C48000018043E9B4C38600000043E9D3838600000043D8C8060000000",1840));
 

Isatis

If specified, this will repl[0x00000000]ce the
Premium
BRoomer
Joined
Dec 18, 2008
Messages
10,253
Location
San Francisco, CA
NNID
reverite
I might be able to setup a webpage where they can enter in names/codes and store it to a database the way you defined it

...if nobody abuses it
 

Dantarion

Smash Champion
Joined
May 21, 2007
Messages
2,492
Location
Santa Barbara, CA
Dude, theres an easier way.
Just write a txt parser and feed a few of the huge Brawl code collection txt's into it.
TELB has a huge one over at GSCentral that has 80% of all codes in it.
Along with Brawl+, thats most of the codes
 

Isatis

If specified, this will repl[0x00000000]ce the
Premium
BRoomer
Joined
Dec 18, 2008
Messages
10,253
Location
San Francisco, CA
NNID
reverite
Dude, theres an easier way.
Just write a txt parser and feed a few of the huge Brawl code collection txt's into it.
TELB has a huge one over at GSCentral that has 80% of all codes in it.
Along with Brawl+, thats most of the codes
That was my plan lol

Split all of it by \n\n, and in a foreach() loop, split by \n, $array[0] is the name, $array[1] through $array[count($array)-1] would be codes, and then store it the way ChiboSempai defined it as (java code)

And anyone can contribute, plus if it has a code already entered in to the database, it'll reject putting that code in
 

Isatis

If specified, this will repl[0x00000000]ce the
Premium
BRoomer
Joined
Dec 18, 2008
Messages
10,253
Location
San Francisco, CA
NNID
reverite

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
No, I'm still going to be releasing updates periodically with a more updated codelist

thats a neat thing u whipped up, but all of the length values are wrong

its pretty limited, u cant change the code u search for since it always seems to be the same as the full code, which works in some situations but not all.

also out of curiosity, whats that z = |x| code?
 

Isatis

If specified, this will repl[0x00000000]ce the
Premium
BRoomer
Joined
Dec 18, 2008
Messages
10,253
Location
San Francisco, CA
NNID
reverite
No, I'm still going to be releasing updates periodically with a more updated codelist

thats a neat thing u whipped up, but all of the length values are wrong
Length values? :confused:

its pretty limited, u cant change the code u search for since it always seems to be the same as the full code, which works in some situations but not all.
I see...

also out of curiosity, whats that z = |x| code?
The z = |x| code was something I copied from GSCentral to make sure more-than-one-line code would work...I'll probably remove it though.
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
look at hotdogturtles entries for the difference in code and code search values, all of his are perfect. the length is the 4th part of the entry, and is the number of characters in the full code (not the code search).

dont include codes that have variable length like the custom css code. let me know about em here as i have to hard code in exceptions for em
 

Isatis

If specified, this will repl[0x00000000]ce the
Premium
BRoomer
Joined
Dec 18, 2008
Messages
10,253
Location
San Francisco, CA
NNID
reverite
Ah, now I see where the length differs, I was basing mine on how many lines of code there were, although the right solution would've been to count how many characters in the 2nd argument, so I'm definitely fixing that.

As for what it searches for, why not put a star in front of codes ignored when searching? For instance:

Code:
Default Settings Modifier[Igglyboo, Brkirch, and FMK]
24494A98 80000000
20523300 00000000
04523300 DEADBEEF
42000000 90000000
*0417F360 0000XXYY
*0417F364 FFGGZZNN
*0417F368 KKTTPPSS
*0417F36C JJ000000
*E0000000 80008000
will yield this:
Code:
codes.addElement(new Code("Default Settings Modifier","24494A9880000000205233000000000004523300DEADBEEF42000000900000000417F3600000XXYY0417F364FFGGZZNN0417F368KKTTPPSS0417F36CJJ000000E000000080008000","24494A9880000000205233000000000004523300DEADBEEF4200000090000000",144));
mainly because the starred lines aren't being put into the 3rd argument of addElement()
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
ah thats a nice idea, that should work fine. i didnt test that line of code it yielded, but i dont see any problem with it. it should work fine.

i was thinking of coding something like u made into the program and using save files for people to store their database, but i sort of like ur idea better than hard coding those lines into the program, that way when i make releases of the program, everyone has the same code database.

everytime i see like 10 or so new codes and iv got a couple mins of free time il pop all new entries in the program, make sure they work, then release an update. so at first updates may just be daily, but only with database updates, changes in the program itself will be slightly more separated.
 

Isatis

If specified, this will repl[0x00000000]ce the
Premium
BRoomer
Joined
Dec 18, 2008
Messages
10,253
Location
San Francisco, CA
NNID
reverite
ah thats a nice idea, that should work fine. i didnt test that line of code it yielded, but i dont see any problem with it. it should work fine.

i was thinking of coding something like u made into the program and using save files for people to store their database, but i sort of like ur idea better than hard coding those lines into the program, that way when i make releases of the program, everyone has the same code database.

everytime i see like 10 or so new codes and iv got a couple mins of free time il pop all new entries in the program, make sure they work, then release an update. so at first updates may just be daily, but only with database updates, changes in the program itself will be slightly more separated.
Done and done, even updated the example on the bottom with an example of lines NOT to search for.
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
If you only search for that though, theres no telling what it could pick up. It could for instance pick up the last 3 characters of a code and the first character of the next one. Since all codes in the program are stored in a long line with no spaces, it could be anywhere in there.
 

MK26

Smash Master
Joined
Jun 29, 2008
Messages
4,450
Location
http://www.mediafire.com/?zj2oddmz0yy for ZSS fix!
Im just saying, you dont need the have half of the file patch code in the search section...

Also, if you make the character length section calculate in hex, all the values will end in 0 (ex 32 dec = 20 hex). Convert the number of lines to hex and add a 0 at the end to get the symbol count.

Also, I will search the first 4 bytes (thats 8 digits) of file patch using a decompiled txt of the 5.0 nightly, and tell you how many times that string comes up. OK?
 

CT Chia

Smash Obsessed
Joined
Sep 4, 2007
Messages
24,416
Location
Philadelphia
That way of searching is a neat idea, but then I have to worry about A0 - F0.

Those two ways work, but it doesn't offer anything that the current way does, and it's easier to code with a simple integer of character size. And the code search doesn't really matter. It's different from entry to entry and can be big or small. I just keep it big to be safe, cause you never know. There's no extra work in having a larger code search entry in the database line of entry, and it doesn't make the program run slower or anything. Just a precaution really.
 

MK26

Smash Master
Joined
Jun 29, 2008
Messages
4,450
Location
http://www.mediafire.com/?zj2oddmz0yy for ZSS fix!
Also, I will search the first 4 bytes (thats 8 digits) of file patch using a decompiled txt of the 5.0 nightly, and tell you how many times that string comes up. OK?
Since the line E0000000 80008000 is a common line (i think it's a function for clearing memory or something), i searched '225664EC' in a continuous text string of the 5.0 nightly (that means no spaces, on a single, continuous, 9-page-long line), and that string only came up once (I'm assuming it's at the beginning of file patch). How did I get this single line? Use and abuse of Word 07's text <-> table function, as well as copious usage of ctrl-h.

In fact, '2256' only came up once. Makes sense, seeing as how there's a 1-in-16^4 (65536) chance of that string being in a random dump of hex code...and there are only 24992 characters in the txt.

btw, that E0000000 80008000 line came up 8 times, two of which are in File Patch.
 

Flafla2

Smash Cadet
Joined
Apr 26, 2010
Messages
53
Location
WTF do you want to know?!?
Here is one... bionicsonic's page is down, btw.

Code:
codes.addElement(new Code(ASF1nk's Custom CSS V2  [spunit262], 0668310C00000030387E006C3B6000003C80806838840DE07CBB20AE7CA507754180001494A300043B7B00012C1B00324180FFE8480000380469033848000068066900d8000000082c1700284182016802680DE00022FFFF06680DE00000002F000102030607081112091A0E1716132021260D0514101F251B0B270C152422180A2319290F045D5E5C4A4E40464c5500, 900d8000000082c1700284182016802680DE00022FFFF06680DE00000002F000102030607081112091A0E1716132021260D0514101F251B0B270C152422180A2319290F045D5E5C4A4E40464c5500, 18));
 
Status
Not open for further replies.
Top Bottom