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

Important Melee, Hacks, and You -- New Hackers Start Here, in the OP!

Myougi

My posts are gluten free.
Joined
Mar 14, 2014
Messages
484
Location
WEST COAST BEST COAST
What's this?
I'm probs going to butcher explaining this but I'll do my best to make it understandable.

For Kirby, each midair jump's height is reduced slightly every jump. You have infinite jumps, but you're still reducing the value applied to how far Kirby will jump the next time. Check the character attributes and modify the Midair jump vertical momentum variables.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
What's this jumping.png

I'm probs going to butcher explaining this but I'll do my best to make it understandable.

For Kirby, each midair jump's height is reduced slightly every jump. You have infinite jumps, but you're still reducing the value applied to how far Kirby will jump the next time. Check the character attributes and modify the Midair jump vertical momentum variables.
So what about the mid-air dash attacks?
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Modifying the stage select screen. I can't get rid of the transparency on the portrait because its tied to an unknown structure but it doesnt look too bad hopefully. I just hope the ram supports the amount of images Im going to try to add.
I guess its time I got back to this...
 

adjective

Smash Rookie
Joined
Nov 4, 2015
Messages
12
Location
Toronto, Ontario
Hey, not 100% sure where to put this, but I've been doing some legwork on trying to decompile melee's subaction scripting language into a slightly more readable / understandable format. Code's up on github, and you can see the dumps here.

I think I mostly have a good idea of the lengths of each instruction based on the contexts they're used in. (mainly trying to make consecutive commands not fall into each other based on known command lengths). Most of it is based on scanning through forum posts here and on stuff from various wikis. There are some really shaky assumptions here though.

If anyone has a good idea on what direction I should be taking it on following this, or is interested in lending a hand, let me know!

EDIT: fixed the link to the datfile dumps
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Hey, not 100% sure where to put this, but I've been doing some legwork on trying to decompile melee's subaction scripting language into a slightly more readable / understandable format. Code's up on github, and you can see the dumps here.

I think I mostly have a good idea of the lengths of each instruction based on the contexts they're used in. (mainly trying to make consecutive commands not fall into each other based on known command lengths). Most of it is based on scanning through forum posts here and on stuff from various wikis. There are some really shaky assumptions here though.

If anyone has a good idea on what direction I should be taking it on following this, or is interested in lending a hand, let me know!

EDIT: fixed the link to the datfile dumps
This looks nifty.

0x2D - bonegfx?

is a hitbox.

Take the first byte of a command and perform these bit shifts to get the real opcode.
http://smashboards.com/threads/craz...r-editing-program.389500/page-9#post-19077235

This applies to every single one.
 
Last edited:

adjective

Smash Rookie
Joined
Nov 4, 2015
Messages
12
Location
Toronto, Ontario
\
This looks nifty.

0x2D - bonegfx?

is a hitbox.

Take the first byte of a command and perform these bit shifts to get the real opcode.
http://smashboards.com/threads/craz...r-editing-program.389500/page-9#post-19077235

This applies to every single one.
Thanks! This simplifies things a lot. I think I fixed it. I was having trouble understanding the post you linked: you're just supposed to ignore the 2 least significant bits of the first byte, right? Because that's what I ended up doing.
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
Hey guys, for anyone interested in automating import/export of .dat files from .iso, here is a console version of gcr that does the job (do any other tools already exist for that?)


EDIT: ups, forgot the link https://github.com/Yax42/ssbm_stage_edit/raw/master/GCRC/bin/Release/gcrc.exe
Yeah, this. It says it can root extract/rebuild ISOs (even adjusting their alignment and works with GCReEx and DiscEx formats). Though I'm not sure if it can also instead do only a few or specific files. Let us know if you try it out.

@_glook
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Is there any documentation on how to check if a player presses or holds a button?
Code:
804C1FAC   P1 Button values, length 68/0x44 (so players are 0x44 apart)
                0x00 = all buttons pressed this frame
                0x04 = held buttons, I think
                0x08 = instant buttons
                0x18 = jX, byte
                0x19 = jY, byte
                0x1A = cX, byte
                0x1B = cY, byte
                0x1C = L analog, byte
                0x1D = R analog, byte
                0x1E = ?? byte A (soft analog L?)
                0x1F = ?? byte B (soft analog R?)
                0x20 = joystick x-axis, float
                0x24 = joystick y-axis
                0x28 = c-stick x-axis, float (-1 to 1)
                0x2c = c-stick y-axis, float (-1 to 1)
                0x30 = L analog, float 
                0x34 = R analog, float
                0x38 = ?? float A (soft analog L?)
                0x3C = ?? float B (soft analog R?)
                0x41 = Controller plugged in bool (00 = yes, FF = no), byte
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
Yeah, this. It says it can root extract/rebuild ISOs (even adjusting their alignment and works with GCReEx and DiscEx formats). Though I'm not sure if it can also instead do only a few or specific files. Let us know if you try it out.

@_glook
GCIT from the command line is prone to corrupting ISO files.

That's why the 20XX Installer never took off; it kept killing people's images.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
GCIT from the command line is prone to corrupting ISO files.

That's why the 20XX Installer never took off; it kept killing people's images.
Ah. I wonder what was wrong, or if there were only specific commands that didn't work.

Why don't we just use xdelta patches, anyway?

Alternatively, I could probably make an installer that doesn't use GCIT.

Achilles1515 Achilles1515
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
Ah. I wonder what was wrong, or if there were only specific commands that didn't work.

Why don't we just use xdelta patches, anyway?

Alternatively, I could probably make an installer that doesn't use GCIT.

Achilles1515 Achilles1515
I specificially don't use xdelta patches because of the fact that customization would not be possible from the Installer.

In the future I plan on simply making a full patch system in which you can select costumes, stages, music you want and it'll download and compile everything for you. Sort of like thcrap but for Melee.
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
I specificially don't use xdelta patches because of the fact that customization would not be possible from the Installer.

In the future I plan on simply making a full patch system in which you can select costumes, stages, music you want and it'll download and compile everything for you. Sort of like thcrap but for Melee.
XDelta sounds super awesome, but I have not used it yet. I plan to eventually make one for 4.0.
I like that idea Doqtor Kirby. I've thought about ways to do something similar for a while, but as a program that could be used on an ISO at any time. Basically, modularity similar to the Melee Code Manager, but with costumes, stages, etc, where you would just select what you want to be in the game, and that's it (previews for everything too would be awesome). Actually, I don't see any reason a single program couldn't fulfill both roles. It might make sense to have a program that can turn your vanilla ISO (including an MD5 checker) into any of the major game mods (20XX, SD Remix, MNCB), and then also be able to customize it at any time. Maybe we could collab on something in the future.

In the meantime, I created an xdelta patch for the [updated] 20XX beta. I'll post it in the 20XX thread once it's done uploading.
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
I like that idea Doqtor Kirby. I've thought about ways to do something similar for a while, but as a program that could be used on an ISO at any time. Basically, modularity similar to the Melee Code Manager, but with costumes, stages, etc, where you would just select what you want to be in the game, and that's it (previews for everything too would be awesome). Actually, I don't see any reason a single program couldn't fulfill both roles. It might make sense to have a program that can turn your vanilla ISO (including an MD5 checker) into any of the major game mods (20XX, SD Remix, MNCB), and then also be able to customize it at any time. Maybe we could collab on something in the future.
Well that may or may not be difficult due to our specialty in different programming languages. Also I more prefer CLI than GUI.
mlap.png
 
Last edited:

Godwin_Point

Smash Cadet
Joined
May 25, 2014
Messages
70
Is there any ressource anywhere to start with the stage select screen hack?
For exemple, the SSS of the netplay community build looks really cool, but if you simply copy the MsImpap.usd on another iso, when you click on corneria it will load final destination instead. I'm guessing it has to do with the adresses in the main.dol being changed...

Is there any method to re-organise the layout of the sss?
 

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
If I want to store a register temporarily because they're almost all used where I inject my gecko code, what is the best way of doing it, using some address offsets at r1 or r2, or simply finding a free place in memory?
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
If I want to store a register temporarily because they're almost all used where I inject my gecko code, what is the best way of doing it, using some address offsets at r1 or r2, or simply finding a free place in memory?
Move the stack back at the beginning of the code, then push registers into stack. Then, at end of code, load register from stack then restore the original stack location.

START:
subi sp,sp,0x10
stw r3,0x8(sp)
......

END:
lwz r3,0x8(sp)
addi sp,sp,0x10


Don't put anything at 0x4(sp) because if you branch link to another function during your inject code, 0x4(sp) will likely get overwritten immediately in that vanilla game function.

Go to Magus' Physics display code post and look at his notes for the big function. The first lines of code he does move the stack back for register space and then a "stmw" to store a whole bunch of registers in one instruction.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Don't put anything at 0x4(sp) because if you branch link to another function during your inject code, 0x4(sp) will likely get overwritten immediately in that vanilla game function.
I dont understand this part. Youre basically creating a separate stack frame so even if you branched to a different function, that function would create its own stack.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
I dont understand this part. Youre basically creating a separate stack frame so even if you branched to a different function, that function would create its own stack.
The new function does create it's own stack frame, but only after storing the link register to 0x4(sp).

I went to a completely random function and took this screenshot. The red line shows what I mean (imagine bl'ing into this function from your own custom one). But the function above it is an example where this doesn't matter, because there are no further branch links.

Capture.PNG
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
This is hurting my head. I dont understand why they would do it this way.
Edit: After reading the ABI a bit it seems the first 2 words are pretty much reserved for the back chain and bl. Its just really weird to me that its not part of the function prologue.
 
Last edited:

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
I've just tested using the branch "ba" and it worked except that it branched to 00xxxxxx adress instead of 80xxxxxx adress. Is this the reason why it's not used?
 

Mean Green

Smash Lord
Joined
Sep 12, 2014
Messages
1,637
Hi, I've done a little texture editing here and there, but that's just because it was simple enough for me to figure out intuitively. I have been a bit preoccupied lately so I don't even play as often as I'd like, not to mention that learning to stage/vertex hack seems a bit too difficult and time-consuming for me atm. That's why I'm making requests, and I can't tell you how much I'll appreciate any help.

So I have two requests- First, would somebody be willing to make a Hyrule 64 for Temple or Termina? I'm into 64, and I've really been wanting that stage in Melee.
Second, it possible to make a texture from a trophy? If anybody reading this knows how, would you mind doing that for Marth, Roy, Samus (with the trophy shoulders)? If it's not too much trouble, that is?
 
Last edited:

Itaru

MasterGanon
Joined
Jun 25, 2014
Messages
279
Location
日本 茨城県
In PlKp.dat, I thought 0x7460-0x76D0 is free space. But, it was wrong. (All character has empty space like PlKp.dat)
Let's try this bowser. (0x7460-0x76D0 is all 'F')
Some animation became very slow or broken.

My hypothesis
-frame speed modifiers in vanilla melee?
-value of one animation is 1 bite? 2bite.

It may be an important hint of melee animations.
Achilles1515 Achilles1515 , Ampers Ampers , Doq Doq , @Tater

F**kin' funny XD
****in Funny.jpg
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
In PlKp.dat, I thought 7460-76D0 is free space. But, it was wrong. (All character has empty space like PlKp.dat)
Let's try this bowser. (7460-76D0 is all 'F')
Some animation became very slow or broken.

My hypothesis
-frame speed modifiers in vanilla melee?
-value of one animation is 1 bite?

It may be an important hint of melee animations.
Achilles1515 Achilles1515 , Ampers Ampers , Doq Doq , @Tater

F**kin' funny XD
View attachment 87247
Great find! This might lead to something interesting.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
In PlKp.dat, I thought 7460-76D0 is free space. But, it was wrong. (All character has empty space like PlKp.dat)
Let's try this bowser. (7460-76D0 is all 'F')
Some animation became very slow or broken.

My hypothesis
-frame speed modifiers in vanilla melee?
-value of one animation is 1 bite?

It may be an important hint of melee animations.
Achilles1515 Achilles1515 , Ampers Ampers , Doq Doq , @Tater

F**kin' funny XD
View attachment 87247
What am I looking at. Also feel free to add any info you find to the progress I made on animations. The pl**.dat files contain certain animations in them
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Since we can't import moving platforms, would this one be "easy"? (Ignoring the platform or making it static)
That stage looks pretty simple to do. Tomorrows a reading day so I might start on it, but its exam week so dont expect much from me.
I also have an idea about making a function to do certain animation. What would be cool is if I could completely ignore the Pl**AJ.dat and write a function for brawls animations.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
That stage looks pretty simple to do. Tomorrows a reading day so I might start on it, but its exam week so dont expect much from me.
I also have an idea about making a function to do certain animation. What would be cool is if I could completely ignore the Pl**AJ.dat and write a function for brawls animations.
Awesome. Creating a new function for animations would be amazing, but I bet would be incredibly difficult and time consuming to make it function the same as vanilla Melee.

Awhile back, I was going to start making a function executed every frame to move Battlefield's platforms around. And while I can move the on-screen object and it's collisions, making it interact with characters the same way as a vanilla platform would was the problematic part. I had a character standing on a platform and then moved it elsewhere the next frame, and the character just enters the "Fall" action state, instead of going with the platform. But if they are charging a smash attack, they get instantly warped to the new platform collision link location. Just things like that. So I just stopped and moved on to other things.
 
Top Bottom