Some time ago I found out about throwboxes in Marvel, SFA3 and later KOF. I was disappointed to find they couldn't be shown in vsav or SFA2 with the current tools because the box dimensions never actually get written to memory in those games.
I assumed the same for the SF2 series since it's older, but it turns out the data is just sitting there at 0x64 after the character base. It was right there the whole time. So, I was able to update the SF2 Lua script to show them for this game.
Like SFA3 and KOF, the data doesn't get cleaned after it's used, so I am forced to make the script write zeroes there to keep from drawing old throws. This time, I took the trouble to ensure that throw attempts are correctly drawn on frame zero rather than frame one, when normal attacks start animating. This required some messing with the framebuffer code. I should probably go back and do this for the other scripts as well.
And like KOF, there's a box just for throw vulnerability, centered horizontally on the char's axis. With the current checks, it should disappear at unthrowable times, like during DP startup. I also made it different colors for ground and air throwable states (white and almost black) because there are some moves in SF2 where it's hard to tell. Remember to hit hotkey 5 to show throwable boxes.
Here are some random observations.
There's a byte at 0x143 from the char base that counts down from a random value after you recover from a reset or knockdown. You can't be thrown until it's zero. This applies to air throws as well, so you could immediately jump and be unthrowable for a bit.
There seems to be some bug with Zangief in the CPS1 games where normal throws don't get attempted unless you try at somewhat close range, meaning his actual range is smaller than it should be. The range is different for his different throws. This was preserved in HSF2.
Airthrows with punch give a high grab area while kicks are low:
Different characters have different altitude requirements to attempt an air throw. What's more, the minimum height depends on if the throw is coming out on the way up or down, though it's the same for punch/kick variants. Fei's downward requirement is so high that you practically can't throw after the peak of his jump. And some aerial moves like horizontal Blanka ball are low enough that they are unthrowable by anyone.
|character||min height above ground level||relevant PC address|
Zangief's infamous ssf2u magic reversal:
An odd property of command throws: You can get multiple active frames on SPD, Typhoon and Oicho, but you have to earn them. After inputting the motion, any punch pressed or released during the move's leniency window can register an active frame, though it's not totally reliable. You can stay dangerous well into the SPD whiff animation or get a throw to overlap a normal attack. NKI claimed in "How to Reverse Tick Attempts" that SPD has 11 active frames. I thought, "Nah, can't be right" after messing around in macrolua with the minimal input. But now I can believe it.