Enabling visual hitboxes discussion


#1

This topic keeps popping up in the “SSF2T, in the house” and “The Yoga Book Hyper questions/translation requests” threads (which are both vast wealths of information), but appears it may be at the point of deserving a thread of its own.

So, here’s what I’ve found for enabling and playing with “dev mode”, on SF2: Turbo/Hyper Fighting. Anybody that knows how to get into dev mode on any other games, please share the knowledge. So far, I think it’s safe to say that this will only apply to CPS-1 games…but maybe somebody out there knows something more about CPS-2 games (other than you need an actual dev kit or additional piece of hardware…).

To keep this thread legit, particularly with the discussion moving into doing this with emulators, I have included a pic of my SF2T board, in the example file linked below.

The emulator I’m using is FBk Alpha Plus! '06 Edition! v.0.2.95.23.*

  1. Start SF2T (US version, for these instructions), then close it.
  2. Go to \config\games folder in FBKA+ install folder (i.e. C:\FBkAlpha+!\config\games)
  3. Locate sf2t.ini file (you may need to enable hidden files in Windows Explorer…google it if you don’t know how)
  4. Edit the last three lines of the file, so they read:
    input “Dip A” constant 0x73
    input “Dip B” constant 0xEF
    input “Dip C” constant 0x83
    If you don’t see these lines, simply add them after the ‘input “Reset”…’ line. If you are using a different emulator, it may not use hex for the dip switch setting values, or may handle dip switches differently. Ultimately, the emulator has to acknowledge all dip switches, not just those used for particular game settings, in order for this to work.
  5. Restart SF2T, holding player 1 strong punch button through opening screens, until you arrive at “dev mode” screen
  6. Once in dev mode:
    Change char: P1 Fierce + P1 UP
    Remove data layer: P1 Fierce + P1 Roundhouse
    Display hitboxes: P2 Forward
    Cycle through attacks: P1 Up/Down
    Progress through attack animation: P1 Jab
    Reset attack animation: P1 Strong

I have been unable to make this work in WW or CE. If you start up either game with the dip switches set as outlined above, you will arrive at a “test mode” screen. The same will occur with SF2T, if you do not hold down P1 strong punch though boot screens. Possibly there is a different button to hold down for WW and/or CE?..altho, I think I’ve exhausted all the single-button possibilities.

Anyhoo, here is the animation frames for Ryu’s “close” standing fierce: http://www.mediafire.com/?e9u0tyyjtrm.

The frames progress as follows: 1st frame without hitboxes, 1st frame with, 2nd frame without hitboxes, 2nd with, etc etc.

Hope this is useful…share your knowledge. I would personally be interested in being involved in putting guides together, documenting the SF2 engine, etc etc, if others are also interested.

*This emulator refers to a hex value for the dip switch settings. If attempting to use a different emulator, you will need to ensure:
a) it also refers to a hex value for dip switch settings,

or

b) it refers to binary (requring conversion of the value from hex to binary)

and

c) it uses all dip swithces (not just those used for gameplay options).


#2

Ah, yes this is the “Obj Test” mode that I’ve mentioned a few times. I got it to work in an emulated SF2T a while back. The text for this menu does exist within the SSF2 and SSF2T ROMs, unfortunately I don’t have any idea on how to access the menu if it actually still exists.

You can also view hitboxes ingame with certain combinations of dipswitch settings (can’t recall them offhand, though).

An explanation on what each box represents: The black box is the attack’s hitbox, that determines where it can hit. There are three boxes that determine where a character can be hit, white (high), tan (mid), and brown (low). Another brown box displays the “solid” part of the character, that prevents characters from walking or jumping through each other.


#3

Good info, felineki. You know of anybody ever getting it to work in CE or WW?

Nohoho had PM’ed some questions about particular moves of Guile’s, Blanka’s and Chun’s, which I am in the process of documenting now. Hope to have something similar to Yoga Book, but with every animation frame detailed, within the next day or so.


#4

Yeah

This is awesome! Thanks a lot guy. I’m also interested in putting informations together. I could shot the animation frames with drawn hitbox for some characters, if others do the same thing, we could easilly have hitbox for all chars and all moves in sf2t.


#5

Here’s the ones nohoho asked about. The numbers underneath each are the duration (in video frames, based on 59.63 hz/fps) that each frame is displayed. Notice that some frames a variable. The numbers were verified by doing the move 4 times.

I also reduced emulation speed to 75%, as SF2T runs fast, and it is generally accepted that 75-80% is actual speed.

http://img180.imageshack.us/img180/8976/hitboxbreakdowntp0.png


#6

Good stuff NoAffinity!

Blanka and Chun are no go. But Guile’s vulnerable box definitely gets more narrow… hmm. I’ll try to play with it a little.


#7

We need more stuff like this. Is there anyone working on this?


#8

It would be great if this stuff were made available with info for all characters’ moves. I think that frame data and hit boxes should be made available for reference by competitive players. If a full codex were compiled, it should be presented in an organized fashion on a web page like the SRK Wiki or SobatCarnival.com. It would be a shame if such valuable data were buried in some thread in the forums.

I’ve tried talking umbrellastyle into taking on such a project and hosting it on SobatCarniva.com, but I’ve had difficulty reaching him since Evo. I think school might be starting for him, so he might have other things on his plate.

This is basically what INH did with the YBH, but an online version would kick ass.


#9

@ DoughBoy & umbrellastyle

There’s a collect call from heroism guys… will you except the charges?


#10

Oh shit ! This is awesome stuff !
I would definitely love to see a compiled guide of hit boxes for SFT !

Let me know if there’s any ‘grunt’ work I can help out with.

I really have no clue with the technical emulator stuff, but I can whip up PDF files no problem if I had the images to work with.


#11

I’d love to help out with this as well, though I have no idea how.


#12

If I can find out how to do this, I could see myself documenting character by character in my freetime.


#13

I’ve provide the info. Put it to use, if you really want to help. :wink:

Here’s how I do it…but to each their own:

Get into dev mode.
Get to a character.
Remove "data background"
Cycle through moves one at a time.
For each move:
-capture one screenshot w/ hitboxes, per animation frame

Then, use emulator with CPU clock adjustment and AVI recording capabilities (both is preferable, for most reliable comparisons). Adjust CPU clock to 75%. Make sure ‘auto frame skipping’ is disabled in the emulator’s Video Options, if such an option exists. Capture uncompressed AVI (full frames) of each move. I usually do the move 3-4 times, for comparison.

Get AVIEdit ($15 to register, after 30 days…well worth it for anybody serious about this). Load your uncompressed AVI file into AVIEdit, and step through it. Document the number of video frames that each animation frame lasts.

Then, edit your screenshots with photoshop or summat (trimming waste and applying the hit/hittable boxes).

Create some document depicting the accumulated frame data.

Personally, I use the following programs to get the job done:
dev mode emulator - FBkAlpha+!06
AVI capturing emulator - Final Burn Evolution 3.03
AVIEdit - http://www.am-softhome.com/aviedit.html
screenshot editing - Micrografx Picture Publisher
document compilation - MS Word

The process is very time consuming. I could probably bang out a half a character sometime within the next two months. I intend to dedicate time to documentation as I can, but my time is very limited. :sad:


#14

Here’s a somewhat better method for hitbox documenting for anyone interested:

First of all, here’s an easier way to get at the Obj Test menu, without any dipswitch business. Set all your dipswitches back to how you nomrally have them for gameplay. Then download this modified Nebula/Kawaks cheat file for SF2T: http://randomselect.i-xcell.com/temp/sf2t.dat It has an “Obj Test” cheat, Turning this on will take you straight to the Obj Test menu when you hit the service button.

You’ll notice the different colored hitboxes are no longer visible. The dipswitch combination that activated these also makes the game run at super speed, making the menus impossible to navigate. However now that you can actually navigate them, there’s another way to see each individual box.

Press P2 Start so that “EDIT” is highlighted (with an “A” to the left) at the upper middle of the screen. P1 Up and Down switch from animation to animation. P1 HK advances to the next animation frame in the current animation. The “CHAR CTR: XXXX” value in the upper right is the amount of gametime frames the current animation frame displays for. You can hold down P1 LP to count this value down and view the anuimation in realtime. P1 MP resets the current animation to its start.

P2 LK lets you select individual collision boxes (highlighted in the left column by a green cursor). Pressing P2 HK will display the currently highlighted box. HEAD, BODY and FOOT are vulnerability boxes (where you can be hit). I have no idea what “WEAK” is, it seems to appear in dizzy animations. “ATCK” is the offensive hitbox (the part of you that can hit the opponent). “BODY1” is the solid part of the character that prevents him from moving through another character.

Although this way is a bit more tme comsuming since you can only see one box at once, it’s better in the long run since the menus are actually navigatable (so you can be sure you aren’t skipping any frames), and it allows you to differentiate between the pesky FOOT and BODY1 boxes which are both the same color in the other method.


#15

NoAffinity & felineki: thanks for all the info !!

I tried the method that NoAffinity suggested, but for some reason (most likely because I’m new to this), I wasn’t able to get it to work. However, I was able to successfully complete felineki’s instructions.


felineki, I have a few questions:

  1. How do I switch characters in Obj Test?

  2. Some moves overlap with the numbers, is there a way to hide the numbers?

  3. The frame counts listed at “CHAR CTR: XXXX”, if it it says “0002” this means 2 frame duration? Does the game run at 60 fps?

  4. Can you give the frame rate example for Ryu’s standing HP? i.e., how many frames start up, hit frames, recovery.

  5. How do I set the proper screen proportion for Kawaks. So far, I’m just resizing by dragging the window and guessing the proportions.

  6. Any ideas on what the other numbers represent? or any other information I can compile?

  7. Ryu’s crouch HK frames say 4, 6, 6, 8, A. What’s the “A” mean in his final frames ?

Thanks a bunch !

I’d like to compile a complete hitbox & frame count guide eventually.


#16

Why are the brown boxes around each character of varying size? Shouldn’t each character frame box be the same size?


#17
  1. Change char: P1 Fierce + P1 UP
    Remove data layer: P1 Fierce + P1 Roundhouse
    Display hitboxes: P2 Forward
    Cycle through attacks: P1 Up/Down
    Progress through attack animation: P1 Jab
    Reset attack animation: P1 Strong

  2. See above, “Remove data layer”

  3. I believe so, but hopefully felinki can verify. The game runs at 59.63hz, or ~60fps. I have witnessed, both capturing from arcade and capturing via emulator that the displayed frames are variable. I would only speculate that this is due to the video being generated at 60 fps, but being displayed at 59.63hz. However, the variability does not seem to apply to all thing being displayed in a given frame (i.e. it’s not a single frame being dropped). So, possibly the hardware does make some decision, or it is simply a matter of the low-level hardware’s performance…

I don’t think it’s worth discussing why it happens, but at least confirming that it does occur natively.

  1. Depends on which one you’re talking about (hitting frames in yellow):

close standing fierce:

3 - 1/2 - 5/6 - 9 - 12

so, you’ve got 3 startup frames, 6-8 hitting frames and 21 recovery frames

far standing fierce:

3 - 1/2 - 6/7 - 9 - 10/11

so, you’ve got 4-5 startup frames, 6-7 hitting frames and 19-20 recovery frames

  1. Dunno…but proportions shouldn’t matter for this.

  2. felineki may be able to answer this

  3. A is hex for 10. Crouch roundhouse is

3 - 5/6 - 5/6 - 7/8 - 10/11

So, you’ve got 8-9 startup, 5-6 hitting, 17-19 recovery

I personally am analyzing the game in this manner, because I want “real world” data. I want to know what I should expect my eyes to perceive, not simply what the games says it has been programmed to do. The effort may be more time consuming, but anything worth doing is worth doing well, imho. :slight_smile:


#18

Thanks so much for all that info, I’m another step closer to getting all the information I need before proceeding to compile the data.


A few more questions:

  1. How did you get the values: “3 - 5/6 - 5/6 - 7/8 - 10/11” for Ryu’s c.Hk? I cycled through the animation using 1P’s HK and read the “CHR CTR” and saw 4,6,6,8,A.

  2. Does anyone know how I can set kawaks to a consistant proportion & size every time I use it? I’d like to compile hitbox screen shots in addition to the frame data.

  3. In hex value, A=10, B=11, C=12, and so on ?

  4. Any suggestions on most efficient way to capture screenshots ?

Thanks so much !


EDIT: in your above post, I think you meant “Display hitboxes” should be P2 Roundhouse instead of Forward ?


#19

The game runs at ~60 FPS, yes. However in gameplay, HF, like ST and many other Capcom fighters with variable speed, skips the display of every Xth frame. The frame still takes place in terms of movement, animation, collision detection, etc., but in terms of the 60 images that are displayed on screen every second, every Xth frame (where X varies depending on the setting) is skipped. This gives the effect of faster overall gameplay.

Due to the fact that this skipping is not synchornized to any player action, it’s impossible to get accurate frame data for any character action in terms of “displayed” frames. However, all of the frames that you read from the CHR CTR data actually will take place event-wise, even if you don’t see all of them.

For Kawaks’s window, it always starts up in the same size for me. As for proper proportion, it depends on what you want: Pixel perfect accuracy (i.e. one pixel of game screen = one pixel of computer screen; this will make things “fatter” than when played on an arcade cabinet or whatever) or proportionate accuracy (pixels won’t line up perfectly, but the characters’ ratio of width and height will be the same as when played fullscreen or on an arcade cabinet). For the former, click the “Video” menu on the menu bar, select “Correct window ratio”, and click “None”. For the latter, do the same but click “Smaller display” or “Bigger display”. Also remember, if you want to take screenshots of the latter, be sure to click “Screenshot (filtered)” from the “Tools” menu, otherwise the width/height settings will not be applied to the screenshot.

As for what the other numbers on the Obj Test screen represent: The numbers in the left column for each box type are box IDs. Individual boxes are reused whenever possible. For example, note that all of the vulnerability boxes are the same in each frame of Ryu’s close standing HP. In each frame, the box IDs (each of which defines a set of coordinates relative to the axis) for HEAD, BODY, and FOOT all remain the same.

KAGE likely refers to the ground shadow sprite that is used for that frame. As you’ve likely noticed, SF2 has a few different shapes and sizes of character ground shadow sprites, and that different character franes have different shadows.

CATCH in the left column is used for throwing/grabbing animations. For example, the third frame of Ryu’s shoulder throw animation has a CATCH value of 2. When a character is caught in a throw, the sprite that thy display and the coordinates they are offset by are detemined by this value. You can confirm this by using ArtMoney and such to freeze a throwing character and change him through various animation frames. When the thrower’s sprite changes, the throwee’s sprite changes, too.

BLOCK refers to whether or not the character can guard. 0 is vulnerable, 1 is high guard, 2 is low guard. Normally this is used only for blocking states of course, but when screwing around with ArtMoney before, I have managed to get characters to block during various attacks.

SIT refers to whether a character is crouching or not. 0 is not crouching, 1 is crouching.


#20

Thank you for that clarification…exactly what I was looking for! Great info, all around. :tup: