Hi everyone!
A short while ago, I got a capture card, so I dropped everything I was working on to focus on something that I’ve been meaning to look into for a while: Hitstun Cancelling. The currently accepted theory is that Air Dodges can interrupt Hitstun once Hitstun is greater than 41 frames. Well, according to my findings, it’s much more complicated than that.
Here is a spreadsheet that contains all of the data I’ve collected so far. Every tab has its purpose and procedure outlined, so hopefully that means it’s easy to understand. It’d be good to skim over all the data for a bit before reading the rest of this post. In case it’s too confusing, don’t worry about that since I will be going through everything you need to know anyways. I also
have a playlist made containing all of the raw footage I recorded and analyzed to collect that data. It is also pretty long.
Anyways, the general procedure involved me using a move on Bayonetta in Training Mode, buffering an input (most of the time, air dodge) on my Turbo controller, uploading the footage to YouTube, and then counting how many frames it took for the move to come out. At this point, I should mention that everybody is free to scrutinize my raw footage and frame count for themselves. Just set the quality to at least 720p so that it comes out at 60 fps, and then use the >/. key to move forward frame-by-frame. It is important to mention that the point I started counting from was when the percent first changed to reflect the damage from the move. So on the first frame you see Bayonetta’s percent change, that is Frame 1. Also, I stopped counting once I reached the frame before the next animation started. This is why I picked Bayonetta for this study—her animations, especially her air dodge animation, are pretty exaggerated and easy to distinguish from her launch animation. So the frame before she begins her Air Dodge, for example, would be the last frame you include in your counting.
Moving on, the moves I used were Yoshi’s Up Throw, Pikachu’s Up Throw, and Charizard’s Up Tilt. (Notice that all of these moves have angles greater than 70°. So untechable reel animations had no influence on this data whatsoever.) With Yoshi’s Up Throw, I first verified that Gravity does not affect Hitstun or Hitstun Cancelling. As you can see on Yoshi’s first tab, I have columns showing the calculated Knockback and resultant Hitstun along with their Gravity-adjusted counterparts. Based on the data, the resultant pattern under “Frames Until Air Dodge” seems to more closely follow the change in unadjusted Knockback and Hitstun. So I feel comfortable saying that Gravity really does not have any effect on Hitstun Cancelling (assuming our current understanding of Gravity is correct). Some other interesting results: Once the knockback passed 80 units, “Frames Until Air Dodge” went from Hitstun + 1 to Hitstun + 2. In addition, Hitstun Cancelling began when “Frames Until Air Dodge” was 41 frames, which was when Hitstun was still 39 frames. More on this later.
I’m actually going to go out of order and talk about the tabs involving Charizard’s Up Tilt first. Since throws have no Hitlag, I wanted to use a move that has Hitlag to see if the principles of Hitstun Cancelling remained the same. Also, because I used Bayonetta for the entirety of this study, I used Mario as the test dummy under “Charizard Up Tilt 2” to verify that these findings apply to everyone else as well. According to the first experiment, it seems that Hitstun Cancelling is pretty much the same. Charizard’s Up Tilt has 7 frames of Hitlag, so “Frames Until Air Dodge” looked like the data from Yoshi’s Up Throw plus 7. And based on the data from “Charizard Up Tilt 2”, yes, these findings seem to apply to everyone. Of course, they reach the same Knockback/Hitstun value at different percents because of their different weights, but that’s a given.
Next, let’s talk about Pikachu’s Up Throw. Here, I tested Air Dodge, Attack (Nair), Special, and Jump over a much wider range than Yoshi’s Up Throw or Charizard’s Up Tilt. One universal result is that when Knockback was less than 80 units, “Frames Until Air Dodge” was Hitstun + 1. 80 units and above resulted in Hitstun + 2. Now, to go through each one:
Jump and Special
After the Knockback is greater than 80 units, “Frames Until Jump/Special” was consistently Hitstun + 2. So I guess that means that Hitstun Cancelling doesn’t apply to these two actions.
Knockback | Frames Until Jump/Special
KB < 80 | Hitlag + Hitstun + 1
KB ≥ 80 | Hitlag + Hitstun + 2
Air Dodge
Most of my time has been spent looking into this. I originally only considered percents from 0% up to 245%, with a bunch of percents skipped in-between. (I only wanted to look at the percent before and after Hitstun increased by 1 frame with a few random extra percents here and there.) While counting frames, I noticed that after a while, Hitstun Cancelling seemed to stray away from 41 and increase at an irregular pace. It did not change in a pattern that followed changes in Hitstun. I then went through every percent from when FUAD first changed to 42 all the way until 300%. After collecting all of that data, I realized that Hitstun Cancelling doesn’t seem to change based on Hitstun, but rather when it passes certain Knockback Thresholds. Recall that FUAD first changed when Knockback passed 80 units. And Hitstun Cancelling first began when the Knockback passed 100 units. I tried to make educated guesses as to what the thresholds were, but there were certain points where the Knockback Threshold was too ambiguous for me to try and guess “correctly”. So then I used Yoshi’s Up Throw to try and narrow down the range that contained the real Knockback Threshold values. But then I realized that my educated guesses could be wrong, so I went back to Pikachu’s Up Throw. Using Pikachu’s Close Jab (1.4%), Aerial Thunder Jolt (4.8%), and Nair (8.5%), I could check percents to the first decimal place. And of course I found that my guesses were pretty wrong. On the bright side, I was able to narrow down the range of possible threshold values for every change in FUAD to a range of .0570652. That’s pretty good, in my opinion. It’s also important to mention that in the end, Hitstun Cancelling ceases and Air Dodge begins to behave like Jump and Special.
First, here is a table of the ranges containing the actual Knockback Threshold value:
Knockback Threshold | Range Containing the True Value
X-42 | 143.8206522 < x ≤ 143.8777174
X-43 | 145.5326087 < x ≤ 145.5896739
X-44 | 147.1875 < x ≤ 147.2445652
X-45 | 148.8994565 < x ≤ 148.9565217
X-46 | 150.611413 < x ≤ 150.6684783
X-47 | 152.3233696 < x ≤ 152.3804348
X-48 | 153.9782609 < x ≤ 154.0353261
X-49 | 155.6902174 < x ≤ 155.7472826
X-50 | 157.4021739 < x ≤ 157.4592391
X-51 | 159.1141304 < x ≤ 159.1711957
X-52 | 160.826087 < x ≤ 160.8831522
X-53 | 162.4809783 < x ≤ 162.5380435
X-54 | 164.1929348 < x ≤ 164.25
X-55 | 165.9048913 < x ≤ 165.9619565
X-56 | 167.6168478 < x ≤ 167.673913
X-57 | 169.3288043 < x ≤ 169.3858696
X-58 | 170.9836957 < x ≤ 171.0407609
X-59 | 172.6956522 < x ≤ 172.7527174
X-60 | 174.4076087 < x ≤ 174.4646739
X-61 | 176.1195652 < x ≤ 176.1766304
X-62 | 177.8315217 < x ≤ 177.888587
X-63 | 179.486413 < x ≤ 179.5434783
X-64 | 181.1983696 < x ≤ 181.2554348
X-65 | 182.9103261 < x ≤ 182.9673913
X-66 | 184.6222826 < x ≤ 184.6793478
X-67 | 186.2771739 < x ≤ 186.3342391
X-68 | 187.9891304 < x ≤ 188.0461957
X-69 | 189.701087 < x ≤ 189.7581522
X-70 | 191.4130435 < x ≤ 191.4701087
X-71 | 193.125 < x ≤ 193.1820652
X-72 | 194.7798913 < x ≤ 194.8369565
X-73 | 196.4918478 < x ≤ 196.548913
X-74 | 198.2038043 < x ≤ 198.2608696
X-75 | 199.9157609 < x ≤ 199.9728261
X-76 | 201.6277174 < x ≤ 201.6847826
X-77 | 203.2826087 < x ≤ 203.3396739
X-78 | 204.9945652 < x ≤ 205.0516304
X-79 | 206.7065217 < x ≤ 206.763587
X-80 | 208.4184783 < x ≤ 208.4755435
X-81 | 210.1304348 < x ≤ 210.1875
X-82 | 211.7853261 < x ≤ 211.8423913
X-83 | 213.4972826 < x ≤ 213.5543478
X-84 | 215.2092391 < x ≤ 215.2663043
X-85 | 216.9211957 < x ≤ 216.9782609
X-86 | 218.6331522 < x ≤ 218.6902174
X-87 | 220.2880435 < x ≤ 220.3451087
X-88 | 222 < x ≤ 222.0570652
X-89 | 223.7119565 < x ≤ 223.7690217
X-90 | 225.423913 < x ≤ 225.4809783
X-91 | 227.0788043 < x ≤ 227.1358696
X-92 | 228.7907609 < x ≤ 228.8478261
X-93 | 230.5027174 < x ≤ 230.5597826
X-94 | 232.4429348 < x ≤ 232.5
Note: X-# is the Knockback Threshold for when FUAD becomes #.
Next, here’s a table with the FUAD for different Knockback values.
Knockback | Frames Until Air Dodge
KB < 80 | Hitlag + Hitstun + 1
80 ≤ KB < 100 | Hitlag + Hitstun + 2
100 ≤ KB < X-42 | Hitlag + 41
X-42 ≤ KB < X-43 | Hitlag + 42
X-43 ≤ KB < X-44 | Hitlag + 43
X-44 ≤ KB < X-45 | Hitlag + 44
X-45 ≤ KB < X-46 | Hitlag + 45
X-46 ≤ KB < X-47 | Hitlag + 46
X-47 ≤ KB < X-48 | Hitlag + 47
X-48 ≤ KB < X-49 | Hitlag + 48
X-49 ≤ KB < X-50 | Hitlag + 49
X-50 ≤ KB < X-51 | Hitlag + 50
X-51 ≤ KB < X-52 | Hitlag + 51
X-52 ≤ KB < X-53 | Hitlag + 52
X-53 ≤ KB < X-54 | Hitlag + 53
X-54 ≤ KB < X-55 | Hitlag + 54
X-55 ≤ KB < X-56 | Hitlag + 55
X-56 ≤ KB < X-57 | Hitlag + 56
X-57 ≤ KB < X-58 | Hitlag + 57
X-58 ≤ KB < X-59 | Hitlag + 58
X-59 ≤ KB < X-60 | Hitlag + 59
X-60 ≤ KB < X-61 | Hitlag + 60
X-61 ≤ KB < X-62 | Hitlag + 61
X-62 ≤ KB < X63 | Hitlag + 62
X-63 ≤ KB < X-64 | Hitlag + 63
X-64 ≤ KB < X-65 | Hitlag + 64
X-65 ≤ KB < X-66 | Hitlag + 65
X-66 ≤ KB < X-67 | Hitlag + 66
X-67 ≤ KB < X-68 | Hitlag + 67
X-68 ≤ KB < X-69 | Hitlag + 68
X-69 ≤ KB < X-70 | Hitlag + 69
X-70 ≤ KB < X-71 | Hitlag + 70
X-71 ≤ KB < X-72 | Hitlag + 71
X-72 ≤ KB < X-73 | Hitlag + 72
X-73 ≤ KB < X-74 | Hitlag + 73
X-74 ≤ KB < X-75 | Hitlag + 74
X-75 ≤ KB < X-76 | Hitlag + 75
X-76 ≤ KB < X-77 | Hitlag + 76
X-77 ≤ KB < X-78 | Hitlag + 77
X-78 ≤ KB < X-79 | Hitlag + 78
X-79 ≤ KB < X-80 | Hitlag + 79
X-80 ≤ KB < X-81 | Hitlag + 80
X-81 ≤ KB < X-82 | Hitlag + 81
X-82 ≤ KB < X-83 | Hitlag + 82
X-83 ≤ KB < X-84 | Hitlag + 83
X-84 ≤ KB < X-85 | Hitlag + 84
X-85 ≤ KB < X-86 | Hitlag + 85
X-86 ≤ KB < X-87 | Hitlag + 86
X-87 ≤ KB < X-88 | Hitlag + 87
X-88 ≤ KB < X-89 | Hitlag + 88
X-89 ≤ KB < X-90 | Hitlag + 89
X-90 ≤ KB < X-91 | Hitlag + 90
X-91 ≤ KB < X-92 | Hitlag + 91
X-92 ≤ KB < X-93 | Hitlag + 92
X-93 ≤ KB < X-94 | Hitlag + 93
X-94 ≤ KB | Hitlag + Hitstun + 2
Hopefully to make things easier to understand, here’s an example: Let’s say a move has a Knockback of 152 units. This is greater than
any possible value of X-46 and less than
any possible value of X-47. So X-46 ≤ 152 < X-47. According to the second table, the opponent will Air Dodge after 46 frames (plus however many frames of Hitlag).
Attack
There appears to be some form of Hitstun Cancelling with Attack as well. Though “Frames Until Attack” stalls at 46 for a while and not 41. I didn’t really look into this one much so far because I’ve been so focused on Frames Until Air Dodge. But now I’ll research it and post here again once I learn more about it.
Alright, that’s all I have to say. I know this is a lot of information and I'm not sure if I explained it as clearly as possible, so if anyone has any questions, I’m more than happy to help. c: