Straining is Mario's movement in the air. It involves how the joystick is angled relative to Mario's facing direction (which cannot be changed midair in most situations). Because of how the mechanic works, it can often result in a trade-off of speed vs distance.
When in the air, the game deals with Mario's intended movement in two directions- forward and sideways (when forward speed is negative, it indicates backwards speed). These two different directions behave differently from one another, although the two are not independent. The farther the joystick is held in a given direction, the less of the effect it has on the other. This is true all the way to the point where one direction is maxed, and the other direction is zeroed.
The following calculations allow you to find what the effects of straining will be, but are not separate equations. Both equations are calculated at the same time and use the same values. This is why the two are not independent.
Forward movement is cumulative where some speed can be added to the forward speed. The maximum speed that can be added to forwards speed in a given frame is 1.15, although this depends on speed and type of air movement.
The formula for forwards speed is-
- Forward Speed = Old Forward Speed + 1.5 * Stick Magnitude * cos(Angle from Forwards) ± 0.35 - Drag
Where angle from forwards is the angle from a vector straight forwards to the joystick direction, and stick magnitude is the magnitude of the stick being held divided by the maximum value. In other words, if the control stick is pushed all the way, the magnitude is 1. The ±.35 always brings the speed towards 0, so minus when speed is positive and plus when the speed is negative.
Drag depends on two things- whether or not Mario is long jumping and what his speed is after the stick magnitude and -0.35 is added to the old speed. The values for drag are-
|Forwards Speed ≤ 32, Non-Long Jump||0|
|Forwards Speed > 32, Non-Long Jump||1|
|Forwards Speed ≤ 48, Long Jump||0|
|Forwards Speed > 48, Long Jump||1|
|Backwards Speed ≥ -16||0|
|Backwards Speed < -16||-2|
There's a couple important things to note from the drag table. Drag is never zero when considering the .35, you will always slow down if not straining. Drag is not linear, it only changes over certain barriers. The impact of this can create odd movement effects, like the 31.99 Trick. Lastly, the backwards speed drag when faster than -16 is so strong, you cannot actually accelerate faster than it. This creates a soft cap for backwards speed which prevents Mario from moving backwards fast (typically).
Sideways movement is a tad simpler than forward movement. Any sideways movement applied gives Mario sideways displacement, but not speed. This displacement is a max of 10 with pure sideways direction being held.
The formula for sideways displacement is-
- Sideways Displacement = 10 * Stick Magnitude * sin(Angle from Forwards)
Where angle from forwards is the angle from a vector straight forwards to the joystick direction, and stick magnitude is the magnitude of the stick being held divided by the maximum value. In other words, if the control stick is pushed all the way, the magnitude is 1.
The XX.99 Trick is a way to maximize speed when moving forward or backwards in the air. Due to how drag works during forward movement, maximum forward magnitude can actually be slower than significantly smaller forward magnitudes. For example-
Speed at the start of the frame (normal air movement)- 30.86 New speed with full magnitude- 31.01 (=Speed (30.86) + Stick Magnitude (1.5) - Drag (1.35)) New speed with a lower magnitude- 31.99 (=Speed (30.86) + Stick Magnitude (1.48) - Drag (.35)) Speed lost due to poor straining- 0.98
The barrier in the above case is 32 speed which dictates behavior. It is important to remember that drag is determined after the + stick magnitude - .35, which is why the component is different between the two situations. Essentially, using too much magnitude can push you over the drag threshold (32 here).
Long jumping and backwards movement also have their own versions, 48 and -16 respectively. While the 32, 48, and -16 barriers would work for this purpose, it is not typically possible to hit them exactly and not go over. Because of this, the goal speed is usually to approach 31.99, 47.99, and -15.99 on the last frame before the barrier is hit. The table below breaks down which speed should be aimed for depending on your speed-
|Air State||Speed Range for Trick||Goal Speed for Trick|
|Normal Forwards||30.85 – 31.85||31.99 (32 exact)|
|Long Jump Forwards||46.85 – 47.85||47.99 (48 exact)|
|Backwards||-14.85 – -15.99 (-16 exact)*||-15.99 (-16 exact)|
This trick also allows "free" sideways movement, since the stick magnitude is not maxed. For this reason, if sideways air movement is beneficial, it should be done here.
Since you can continue to strain forwards unbounded, many different hyperspeed methods involve using the 0.15 acceleration per frame to build up large amounts of speed. Usually, Mario is somehow kept in an air action with something holding him in place, like a wall. These methods can only build forward hyperspeed, since they are achieved through forward straining. These methods cannot be used to get PU speed, since Mario will bonk on out-of-bounds, removing his speed.
Hyperspeed methods using this method include-
- Pedro Spot
- Hyperspeed Wall Kicking
- Hyperspeed Grinding
- Subframe Grinding
- Hyperspeed Jump Kicking
- Hyperspeed Slide Kicking
- Wiggler Hyperspeed
- Boo Hyperspeed
Straining is also important for Backwards Long Jumping. When starting to backwards long jump, it is important maximize your negative speed at the start of the jump. This can be done by using the -15.99 trick. Holding maximum in the direction of movement will actually lower the speed every time -16 speed is passed, which can be incredibly costly given backwards long jumping's exponential behavior.