Here is a sample of Street Fighter II hitboxes, made with the MAME-rr emulator and Lua script that I developed based on work by mz and felineki.
A brief guide to seeing the hitboxes in action:
- Download and set up either MAME-rr or FBA-rr. We recommend MAME because the boxes can cause slowdown in FBA, but it works fine in either.
- Get the SF2 hitbox script and save it as a text file with the emulator.
- Launch the emulator and start any one of the SF2 games: World Warrior, Champion Edition, Hyper Fighting, Super, Super Turbo or Hyper Street Fighter II. Both "parent" and "clone" sets work.
- Open a Lua window. In MAME-rr this is done with Ctrl-L by default. In FBA, click Game, Lua Scripting, and New Lua Script Window. Click the Browse button in the window, select the Lua file, and click Run.
Now as you play the game, hitboxes are superimposed on the sprites. Blue is the area that can be hit by the opponent, and red is the area that can hit the opponent. The green boxes are the areas that can never overlap and will cause characters to push each other.
And now for some hitbox demonstrations:
Getting hit by different attacks causes different reel animations, and heavier attacks cause more exaggerated reeling. Some characters lean way back, others not so much.
There is a fourth box type peculiar to the CPS-1 games known as the weak box, colored yellow. Getting hit in the weak box causes you to take double damage, but only if an associated parameter has a certain value. The boxes are present in some form in the first three games but cause double damage only in World Warrior.
In this shot, we can see the weak box on Blanka's ball attack and the animation frame of Ryu's dizzy that leans farthest forward. (These boxes are absent in CE.) This makes WW Ken plainly better than WW Ryu, if there are no other differences. The tall skinny pushbox on the WW Blanka ball is what causes it to bounce off knocked down opponents. This property was not preserved in HSF2.
Each of the bosses in WW also has a weak box during their signature moves: boxer's TAP startup, claw's wall dive, Sagat's tiger uppercut recovery and dictator's psycho crusher active frames.
Weak boxes, being confusing and worthless, were abolished in Super and ST, but brought back in HSF2 for the CPS-1 modes. A proper counterattack system wasn't implemented in a Capcom game until SFA3.
Chun's headstomp shifts her vulnerability boxes up high enough that she can fall through low tiger shots and block them safely on the ground. (There's no air blocking in SF2.)
Super Turbo-version T.Hawk has a famous stray hitbox on the recovery of his c.MP. You can easily punch him in the head without touching him. Furthermore, his Tomahawk startup is less safe and the body splash is horribly downgraded from Super.
ST Dhalsim's upflame has no collision box, so it can't negate other projectiles, which would be limited to another upflame or Akuma's air fireball anyway. It does, however, have a momentary attack box behind him, which makes it possible to hit someone jumping over you.
His Yoga Inferno super, besides having a ridiculous number of invincibility frames, also leaves him headless for the duration. Since the hit area is huge and it can negate any non-super projectile without being negated itself, this makes it an unreasonably hard move to punish if whiffed.
Trying to hit the projectile limit in Rainbow Edition. In general, if an attack keeps the character stationary, the pushbox won't budge, even if you lean way forward during the move. This is what allows attacks like the hadouken to be used harmlessly at point blank. It's possible to pack sonic booms more closely than this but you'd need a more complicated setup.
...and here it is. The limit is indeed eight. Doing more makes the character perform the move but nothing new comes out.
Juggling was first encountered by accident in Champion Edition. If CE Dhalsim is hit in a way that makes him go off the ground but land on his feet instead of his back, he is vulnerable during a particular animation frame of the fall. (This glitch was not preserved in HSF2.) In this shot, Guile landed an air-to-air MK and is about to juggle with an LK flash kick.
Attack boxes gradually got toned down. In the earlier games there was a tendency for extended limbs to have a huge red box but no vulnerability. While this is fun, it tends to favor mashing and spamming by making it harder to punish irresponsible attacks. The red boxes got smaller and the blue boxes got bigger as Capcom games evolved.
Blanka's HP electricity opposite Honda's HP hands, in WW and ST. Incidentally, hundred hand slap became steerable in Champion Edition and lost that ability in ST, in exchange for lunging forward.
Bison HP Psycho Crusher opposite Zangief's KKK lariat, in Hyper Fighting and ST. The CE version of the torpedo is even cheaper, with the hittable area only where the yellow box is. HF Zangief's KKK lariat spins three times quickly and is unhittable below the arms for the whole duration. It was changed in the later games to have midsection invulnerability, just like the PPP version but with two spins.
Ken's MP shoryuken opposite Blanka's jumping roundhouse, in CE and ST. For most of the series, Ryu and Ken's dragon punches are invincible on the way up, until after the last active frame. In ST they have head and body vulnerability, except the jab versions which are unhittable from the neck down, to avoid fireballs. Notice how Blanka's shadow gets longer like his sprite in ST.
DeeJay's LP machine gun punches opposite Balrog's LP dash straight, in Super and ST. MG punches lost some upper body invulnerability and dash straights became crouchable in ST. (They were also crouchable in CE.) Not that you'd ever want to use the old versions of these characters.
P1 Akuma has no problem timing the dragon punch through P2 Akuma's air fireball, while P2 Akuma shows off the hurricane kick that hits on the way up while invincible.
The hitbox code got more complicated the farther back I looked, with SF2 being the most convoluted. It uses pointers for both the animation frame data and the hitbox data. That means you won't find either the box IDs or the box parameters in each character's personal memory area. Instead you'll find a pointer to the animation frame data, which contains the IDs, and a pointer to the character's hitbox tables, which contain the box parameters. The ID tells you which box to look up from the tables. (A pointer is a value in memory that contains an address to some other value.)
The four box parameters are the horizontal and vertical offsets from the character position, and the horizontal and vertical size. Each uses only one signed byte, which limits them to ±128 pixels. This was a problem for Dhalsim's long range attacks with their huge horizontal offsets. felineki figured out there was another byte that, if greater than 128 (unsigned), took precedence over the usual horizontal offset byte. The developers must have thought one byte would be enough and added this as an afterthought as Dhalsim's design was fleshed out.
Except for using two bytes for box parameters, Hyper Street Fighter II's hitbox code is mostly unchanged from the rest of the series despite being released in 2004. The CPS-2 games sometimes have an extra frame of delay between inputting a command and seeing the response on screen. This causes the boxes to update one frame too soon. This can be corrected by increasing the DRAW_DELAY value near the top of the script.
Now, please enjoy some of Xenozip's videos.
Damn, good work sir. These are really cool to look at.
Haha, it's hard to believe how much of this stuff i already knew about though. I've even seen that wacky Dhalsim upflame hitbox in videos before.
Btw, WW TAP (startup) and WW Psycho Crusher (active) both take increased damage, along with WW Vega's wall dive and WW Tiger Uppercut (recovery).
And i think the RE projectile limit is eight, but that's pretty easy to test if you just throw fireballs and walk forward while the other character jumps backward.
- Maj
http://sonichurricane.com
Posted by: Maj | 09/10/2010 at 07:48 PM
Considering how much of this I learned from quietly reading your stuff, it figures. For the most part, hitboxes are just accelerated training mode.
That's pretty interesting about the WW weak points. Maybe they just disabled them altogether after WW but left the boxes in until CPS2.
I'll have to test out that projectile setup in RE sometime.
Posted by: dammit | 09/11/2010 at 12:15 AM
Well, keep in mind that WW was created in a vacuum. It literally established a genre. So while it's fucking insane how many things they got right, there's also no shortage of things they got wrong.
I mean, it's fine for unplayable bosses to have double damage penalties for moves they use all the time, but once they become playable characters, that needs to go. Nobody would play Blanka seriously if his ball attack still had a double damage penalty. Using that move in WW amounts to a suicide note.
And the RE thing, you can even test it manually. I did it with Guile right before making that post. I have 2P Up mapped to T and Right mapped to H so i just held TH with my left index and middle fingers, then threw slow Sonic Booms with my right hand on the arrows plus my left pinky pressing A for LP. You just throw four, then walk forward, throw four more, then walk forward, and the rest don't come out. And Ken dies a grizzly death shortly thereafter.
Speaking of him, WW Ken was already (officially?) considered better than WW Ryu because his HK throw travels farther, which means it's better for cornering opponents. That's my favorite tiering justification of all time.
So that basically makes Ryu the worst character in the game. Seriously, Shotos were awful in WW!
Posted by: Maj | 09/11/2010 at 01:18 AM
Ah, got it now thanks. Screenshot added above. Yeah, Ken is screwed.
This is the macro used:
# sf2rb stacking booms
# guile vs ken, default positions
&2 W10 UL.W26,
((_L,W29,*.R1.)4, W29,L5.-UR+..)3*,
!
Posted by: dammit | 09/11/2010 at 07:57 PM
I've added a short guide to the top and cleared up the confusion about weak boxes.
Posted by: dammit | 09/13/2010 at 06:08 PM