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

Request remove DJC on all/specific character(s)

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
Anyone searched for a way to remove the Double Jump Cancel? With characters Peach, Mewtwo, Yoshi and Ness, if they do an attack during their double jump, they lose their momentum.

I'd like to have a code where the player doesn't lose that momentum and still move upward (like Ness in PM, or all characters in Sm4sh).

I don't know where to start, I've checked in there a little 800cb950, where it's the function that controls for the double jump, but no find so far. Maybe it's in the positioning function, or gravity...
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
I wanted to learn a little more about the player action state functions, so I tried to see if I could find a correlation here with the physics function pointer. I wasn’t able to stop the DJC, but I learned a little bit about how double jumps for DJC characters differ from normal characters.

I don’t know if this will be of any help, but I thought I’d share my notes.

There’s a series of “playerThink” update functions that run every frame for every player. They each rely on a blrl link to a special function referenced via stored pointers in the player data. These pointers are variably assigned by action state changes, I think.

playerThink_Physics has a blrl at 8006b8ac, which uses a pointer stored at internal data offset 0x21A4 in order to link to one of many functions that handle things like velocity changes specific to a character action state.

I tested the roster and found that the physics action function pointer is common between characters while progressing through the actions necessary to do a DJC. There are only a few deviations, and they occur in the double jump action of DJC characters (as well as kirby/JP -- presumably for the multi-jumps.)

Note that these functions linked from the blrl are only used to append other instructions that might be common between states:

The blrl for common double jumps simply updates for fastfalling.



The blrl for Peach/Yoshi/Mewtwo double jumps have a common means of handling X velocity differently than other characters do. It also makes a call to another function that handles Y velocity based on whether or not the bunny hood is equipped.



Ness double jumps have a different means of calculating X velocity from the other DJC characters, but the Y velocity is common with Peach/Yoshi/Mewtwo.



The common "call ? (something with Y velocity)" function between the DJC characters seems to rely on a calculation made earlier in the frame that’s had its result stored in internal player data 0x6A8.



The internal player data offset 0x6A8 is interesting. If you place a breakpoint in the playerthink_physics function, and modify the value; it will directly translate into vertical velocity for certain actions. Again, I think it’s just used to finalize the player’s vertical velocity when using the bunny hood.

All doublejumps for DJC characters use it, but the address is also shared by up-b recoveries in Mario(s)/Luigi, Peach, Cfalcon, Kirby, GAW, and Marth/Roy. The values don't zero out once invalidated.

I’m having some issues getting memchecks to work on a new system right now; otherwise I might have taken a look into the functions that modify Y velocity float at internal player data offset 0x84 (and 0x6A8.)

Maybe you can find a culprit for the DJC by monitoring these values?
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Should probably be looking at 0x2344 (0x23A4 by sheet standard). I think at least a few of us knew for a while it wasn't just shield related, and it's loading a float from there.

Also, 0x74 (0xD4 sheet) isn't labelled. Presumably that's related to the velocity, because it's close to other physics data.

Looking at your Y Velocity function, I'd 0x6A8 (0x708) guess it's probably related to calculating Y offset based on input. I haven't looked at that region before (and I'm not atm), but it follows controller data and may be related to prev. frame. So, it would be Input Direction * Coefficient = Final Y Velocity.
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
So, looked into it a bit more. I think 0x6A8 is the current Y offset from when I did my double jump, so it can go to negatives from falling. So, I think the coefficient is what applies the floaty affect, because it's multiplying that offset by the coeff to reduce your fall speed without using the logic the rest of the physics would for that.
 
Top Bottom