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

Ledgeteching, L-Cancel, and, a new type of code.

Dantarion

Smash Champion
Joined
May 21, 2007
Messages
2,492
Location
Santa Barbara, CA
So yeah, Fighter.pac. We can't edit it, and even with codes, we are limited to modifying it, as inserting lines is impossible. WROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONG.

Heres how this ledgeteching code came to be.

I noticed that when moveset .pac are loaded by the game, the relative offsets in the file are replaced with global offsets in memory. Then I thought of something. What if we use ocarina codes to replace a command with a Goto command, and then point the Goto command towards extra lines of code, which ends with a Goto to get back to the original action?

Well, it works.

Heres how the code works.
It goes to 0x81061000, a spot in brawls tmp space, and writes the following information.
1. A small PSA subroutine, written in hex and taken from the place that checks if you should tech, bounce off a wall, etc. This subroutine ends with the PSA command normally at 0x80FB368C, followed by a Goto to 80FB3694, where execution would normally continue
2. Two PSA variables, one for the Goto to the custom subroutine, and one for getting back

Then, the code goes to 0x0x80FB368C, inside fighter.pac, and replaces a command with a Goto command to the previously describted subroutine.

As a result, additional lines of PSA codes are inserted inside Fighter.pac.

Now, I present to you, Ledgeteching v1
http://www.youtube.com/watch?v=tfPvPSBxW_Q
Code:
[Ledgeteching v1.1 by Dantarion]
07061000 00000038 - Write Custom PSA subroutine into tmp space
00070100 80FB3F0C - These are 3 "Run subroutine" commands run normally during tumble for teching 00070100 80FB3F14
00070100 80FB3F1C
0D000200 80FB362C - This is the PSA command that is later replaced with a Goto to this subroutine
00090100 81061028 - This is the Goto to the command normally after the replaced command
00000002 80FB3694 - This is the avriable for the Goto back to the funciton in Fighter.pac
00000002 81061000 - This is the variable for the Goto to the custom subroutine

06FB368C 00000008 - This line overwrites a command in Fighter.pac with a Goto that ends up pointing to the above subroutine.
00090100 81061030

v1 - First attempt
v1.1 - Bugfix, now the replaced PSA command is actually run.
My first attempt at L-Cancel. Currently works by speeding up landng lag 2X if you are holding shield when you land. Future attempts will work by looking for shield input during an aerial, setting a bit variable, waiting X frames, then clearing it. If the aerial is interrupted by hitting the ground, the variable SHOULD still be set, and then I can check for that input during landing lag.

Anyways, L-Cancel Code by Dantarion v1
Code:
[L Canceling v1, Dantarion]
 07060FC0 00000050
 000A0200 81060FE8
 04070100 81060FF8
 000F0000 00000000
 02010200 80FAF3EC
 00090100 81061000
 00000006 00000032
 00000000 00000003
 00000001 0001D4C0
 00000002 80FC1C18
 00000002 81060FC0
 06FC1C58 00000008
 00090100 81061008
 

Team Giza

Smash Lord
Joined
Mar 5, 2006
Messages
1,119
Location
San Diego, CA
I haven't had a chance to try it out, but this sounds like an awesome development. I can't wait to see what other things will be able to be done with this in the future.
 

shanus

Smash Hero
Joined
Nov 17, 2005
Messages
6,055
This is awesome.

Dantarion, minor request (if you don't have the time for it, its fine):

Can you alter the L-cancel code to be:

If Button Not Pressed: Shield; .5x


This way it makes every pac we currently have not need 5 attributes adjusted (aka 200 pac adjustments).


Also, mind posting the footstool code?
 
D

Deleted member

Guest
dant, does this work for PAL? and if not, what do I need to do to port it?
 

Veril

Frame Savant
Joined
Jun 20, 2008
Messages
3,062
Location
Kent Lakes, New York
We aren't putting in a manual L-canceling code... right? That's a melee 2.0 thing... right?

I can't play with manual L-canceling :( its terrible for your hands (repetitive stress injuries ftl).


Ledgeteching is gonna be sick though.
 

shanus

Smash Hero
Joined
Nov 17, 2005
Messages
6,055
We aren't putting in a manual L-canceling code... right? That's a melee 2.0 thing... right?

I can't play with manual L-canceling :( its terrible for your hands (repetitive stress injuries ftl).


Ledgeteching is gonna be sick though.
its for melee2.0
 

shanus

Smash Hero
Joined
Nov 17, 2005
Messages
6,055
Code:
[Footstool with Only Up-Taunt] Dantarion
04FAA8D8 00000006
04FAA8B8 00000001
 

JCaesar

Smash Hero
Joined
May 28, 2004
Messages
9,657
Location
Project MD
NNID
JCaesar
What does that mean?

Is there a way to jump and footstool with the same button, without it being up-taunt which is impractical to hit during an actual fight?
 
D

Deleted member

Guest
Anything we can do about port priority with Fighter.pac, Dantarion?
no. I tested stuff about this once and the game loop just comes past the player 1 stuff first, and the only way to fix it would be if the wii had a quadcore CPU if you get what I mean.
 

Dantarion

Smash Champion
Joined
May 21, 2007
Messages
2,492
Location
Santa Barbara, CA
NOPE. The correct way is for the game to let BOTH people be hit. For some reason when the hitbox hits two people at once during a grab, the response is to have one person get hit and the other person goes into grab break animation. This has something to do with special treatment of the grab state, as the problem doesn't occur when two people get hit by the same attack normally. I beleive this has something to do with one person being hit, the game putting the other person in grab break, and for some reason being invincible to that hitbox.

Other games don't have a quadcore CPU and don't have port priority because they correctly process stuff.
 

goodoldganon

Smash Champion
Joined
Mar 17, 2008
Messages
2,946
Location
Cleveland, Ohio
Not sure if this is the right place to ask, but what do we feel about that faux grab super armor? Drives me nuts and I think it's dumb, but I'm just asking.
 

Yeroc

Theory Coder
BRoomer
Joined
Feb 28, 2004
Messages
3,273
Location
In a world of my own devising
Code:
L Canceling v1.1 plus Edge Canceling, Dantarion & Yeroc
07060F08 000000E8
08000100 81060F40
000A0200 81060F48
04070100 81060F58
11001000 81060F60
000F0000 00000000
02010200 80FAF3EC
00090100 81060FE0
00000000 00000001
00000006 00000032
00000000 00000003
00000001 0001D4C0
00000000 00000010
00000000 00000000
00000001 FFFA81C0
00000001 00075300
00000001 FFFBE150
00000001 00000000
00000001 00000000
00000001 00000000
00000001 0000AFC8
00000001 00000000
00000001 00000000
00000001 00000000
00000001 00000000
00000001 00000000
00000001 00000000
00000003 00000001
00000002 80FC1C18
00000002 81060F08
06FC1C58 00000008
00090100 81060FE8
I suppose I should have posted it here too.

Edit: Edge canceling by itself is only 2 of those lines, so as a standalone code it'd be probably 5.
The only difference is, the edge doesn't stop you and bring up the teetering animation, you just always automatically fall off.
 

Team Giza

Smash Lord
Joined
Mar 5, 2006
Messages
1,119
Location
San Diego, CA
Just a random request that I think could help us balance some characters. Is there anyway we could make it so there is a new action that could be added to moves be put into PSA? Basically making it so when any attack with this action on could have IASA frames starting at a certain point but only if the attack actually hits the opponent? Then also have it so that so there is another action that activates IASA when a collision with a shield occurs.

I have a feeling that it would be extremely difficult but just wondering.
 
D

Deleted member

Guest
so basically a move that can be canceled on hit?

there should be a bit for this since otherwise an opponent would get hit every frame the hitbox connected instead of only the first.
 
Top Bottom