• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Official Frame/Hitbox Data Repository

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
Setting Everything Up
To gather frame data, you must have the proper tools. I have compiled the tools for ease of access. You should down load them at: http://www.mediafire.com/?6ld67tb7dk6e8aq. This contains all the necessary tools needed. This includes Open Smash Attacks2 (which will be refered as OSA2), Project Smash Attacks (for emergency use), BrawlBox (one of hackings godliest tools) and the files that the game loads (fitCHAR.pac and fitCHARmotionetc.pac).

You should get comfortable with all these tools, it's important to know these programs, as they are the most accurate form of gathering data.​
Using Google Docs
Most of all the data that the Smash Lab collects will be placed in the Google Docs. It is imperative that you sign up in the "Setting Up the Google Docs" thread. Once you have signed up and I have let you in, feel free to look around and familize yourself with the Google Docs. Knowing how Google Docs works will definitely help you out.
https://spreadsheets4.google.com/ccc?key=tr1fWAXWPMLDSY66j8Eymaw&hl=en#gid=0

Alright, that's the sign-up sheet. Please fill out your name for the character. Do not mess with my highlighting
Gathering the Data
Familiarizing Yourself with OSA2
Open the zipped folder you downloaded and unzip it. Inside of there is four folders. One for OSA2, one for PSA, one for the .pacs and one for BrawlBox. Open the OSA2 folder and run the set-up. Once the set-up is finialized, OSA2 should open up. When you have that open, you will see the interface that looks like this: [collapse="Interface"]
[/collapse]Now that we have the interface running, we will open a FitCHAR.pac. (remember, this is not the FitCHARmotionetc.pac) Select your .pac that you will open, and open it up. In the interface you should see that you can now select the tabs. Here is a breif description of what is in each tab. [collapse="Tabs"]In the Events Tab, we have four subtabs. The first subtab is the Actions tab. This contains the information of how the logical flow of subactions occur in a tab. In the FitCHAR.pac, it shows how the flow of their specials go. This also applies to the Hidden(FS) Actoins. The Subactions is where the meat of everything is. It is the motherload. It contains the subactions which are performed during the actions. The subactions contain all the frame data and hitbox data that we need. The Subroutines are sometimes called in the subactions and may contain frame data, but they usually aren't entirely necessary. This is all you need to know about the tabs for now[/collapse]​
Ripping the Data
First of all, you should open up the Subactions tab of your file. This will get you to where the frame data is found. Then you should select the subaction you are looking for. Here is the list of subactions:
Code:
48 - Jab1
49 - Jab2
4A - Jab3
4B - RapidJabStart
4C - RapidJab
4D - RapidJab Ending
4E - Dash Attack
4F - F-tilt (upward facing)
50 - F-tilt
51 - F-tilt2 (Snake/MK)
52 - F-tilt3 (MK)
53 - F-tilt (downward facing)
54 - U-tilt
55 - D-tilt
56 - F-smash (Before Charge)
57 - F-smash (upward facing)
58 - F-smash 
59 - F-smash2 (Link/TL)
5A - F-smash (downard facing)
5B - F-smash (Charge)
5C - U-smash (Before Charge)
5D - U-smash 
5E - U-smash (Charge)
5F - D-smash (Before Charge)
60 - D-smash 
61 - D-smash (Charge)
62 - N-air
63 - F-air
64 - B-air
65 - U-air
66 - D-air
67 - N-air Landing
68 - F-air Landing
69 - B-air Landing
6A - U-air Landing
6B - D-air Landing
6C - Standing Grab
6D - Dash Grab
6E - Pivot Grab
72 - B-throw
73 - F-throw
74 - U-throw
75 - D-throw
Now, open up the subaction for the attack you are looking for. In there you should see (at the most basic level) something that looks like this:
Code:
---Start---
[B]Asynchronous Timer - Frames=2.00x,[/B]
Offensive Collision - Hitbox stuff...
[B]Asynchronous Timer - Frames=8.00x,[/B]
Terminate Collisions
[B]Asynchronous Timer - Frames=10.00x,[/B]
Allow Interrupt
---End---
This is how the frame data is stored. The Asynchronous timer is the frame count of what follows it. The hitbox stuff follows under the Frames=2.00x. For a more indepth explanation of how the frames work in there, refer to this: [collapse="Understanding PSA Frames vs. Game Frames"]So this is half for us and half for the public. I think it would be good to just put this out there, so we can make sure that our frame data is correct.

Alright, so we all know that in PSA, you can view the frame data for characters. However, the way this works can confuse lots of people. Things such as ZSS's and Squirtle's "0 Frame" Jabs, when we just consider them frame 1. So instead we adopted the system of adding one to what we see in PSA.

However, is this completely correct to just add 1? No.

People that say that ZSS's Jab comes out frame 0 are technically correct. However, the frame 0 is a misconception. It is actually the PSA frame 0. In PSA, the frames is spits out are not actually the frames seen in game. Instead, they are the parts in-between each frame. They are the inputs. So I would rather refer to the number that PSA spits out as "input" so ZSS's Jab would be considered Frame 1, Input 0.

For the rest, refer to this visualization:


This is a representation of a move I made up (the frame data would be so lulzy). Imagine that they grey part is the start-up of the move, the red part the hitbox of the move and the white part the cool-down.

Now in OSA2 the picture would look like the following
Code:
---Start---
[B]Asynchronous Timer - Frames=2.00x,[/B]
Offensive Collision - Hitbox stuff...
[B]Asynchronous Timer - Frames=8.00x,[/B]
Terminate Collisions
[B]Asynchronous Timer - Frames=10.00x,[/B]
Allow Interrupt
---End---
Now I believe that we can all agree on that the hitbox starts on Frame 3. This follows the +1 rule. As you can see, it also follows the I2. So that is entirely correct. Now, if we were to follow the +1 rule. The hitbox would last until frame 9. But would that mean that frame 9 has the hitbox out or gone? This is where the +1 rule leaves much to be desired. But, if we are to use the inputs, we can see that it is indeed not out on frame 9. This is because we are reading this as the game would read it. It would read that the collisions are terminated on Input 8. Therefore, the following frame has no collisions because they were eliminated during Input 8.

Using the the "Input" instead of the "Frame" system helps us to realize things easier like the FAF. Lets take for example the move above. Is the FAF Frame 10 or Frame 11. Well, based on the Input, which is Input 10, we can see that the following frame, Frame 11 is allowing the interrupt.

TL;DR - When you refer to numbers from PSA/OSA2, start using the input number to figure out the actual frame using this graphic.[/collapse]​
Filling out the fields
You will notice that in the Google Docs, we have a spreadsheet with a whole bunch of unfilled columns and rows. To find what goes in these rows, you should look into OSA2 and find what follows what. Here are the ways to find the info in the columns. [collapse="Fields"]
[Collapse="FAF"]The FAF (First Actionable Frame) is the first frame in which someone can go into any other action. To find this, look for the Allow Interupt. Now, we see the timer before that. That is the input frame in which the game inputs that you may interrupt your attack. The following in game frame is the FAF, so put the in game frame (which is going to be the input frame + 1) in the spreadsheet. If a move does not have an Allow Interrupt, we will use BrawlBox to find it (which I will explain later)[/collapse]
[collapse="Hitframe(s)"]The Hitframe, is the first frame in which a hitbox is active. To find this look for the Offensive Collision. The Offensive Collision is the hitbox; it also contains all the hitbox information. Put down all the frames in which a new hitbox is made**. The input frame will be the one that comes before the Offensive Collision. The following in game frame will have the hitbox active (which is going to be input frame + 1). In the case of mulihit attacks, make sure to include all of the frames in which the new hitboxes become active
**Attacks will usually have muliple Offensive Collisions. These do not necessarily mark that it is multi-hit attack, but rather it is not supposed to be completely spherical in shape.[/collapse]
[collapse="Duration(s)"]The duration is how long a hitbox lasts. To find this, look for the Terminate Collisions. This ends a hitbox. The duration is the total in-game frames in which a hitbox takes up. Using the "Understanding PSA Frames vs. In-Game Frames" resource will help you find how long the hitbox stays out. The easy way: subtract the amount of frames from the asynch timer containing the initialization of the hitbox from the asynch timer containing the terminate collisions. If the terminate collisions follows a synch timer, then the duration if the number displayed on the synch timer.[/collapse]
[collapse="Hitbox Changes"]The hitbox changes is when a hitbox changes propertys (exp. How Luigi's N-air becomes weaker, or in Melee where Doc's N-air becomes stronger) This is not present on all attacks. This it not to be confused with multihit attacks. To find where the hitbox change occurs, look to find where the hitbox is called again before a terminate collisions (based on the offensive collision ID). Record the in-game frame in which the new collision parameters are called into effect. The in-game frame follows directly after the input frame. (which is going to be input frame + 1)[/collapse]
[collapse="Charge Timing"]This will be found using BrawlBox. It will be explained in just a bit.[/collapse]
[collapse="Autocancels"]Autocancel is time during an aerial in which you will not be going into the landing lag of the move. This is set by the variable RA-Bit[30]. When this bit is set, the move will go into the attack landing lag, where as if it is not set, then the attack will not go into landing lag. We will be recording the last frame in which the early autocancel will occur and the first frame in which the late autocancel will occur. To find the early autocancel, record the in-game frame that occurs before bit is set. (which is going to be the number on the input frame). The late autocancel will occur directly after the input frame in which the bit is cleared. (which is going to be input frame + 1)[/collapse]
[collapse="Landing Lag"]The landing lag of a move is set by the attributes of a character. Use this spreadsheet, which is a dump of the attributes of characters to find the landing lag: https://spreadsheets1.google.com/ccc?key=teHQICDh3q_bLbhDAibuwTg&hl=en[/collapse]
[collapse="Jab Flow & Jab Loop"]As we have some concerns about how this functions, this can be left unfilled for now as it changes based on character.[/collapse]
[collapse="Invinciblity"]Invincibility is the frames in which a character will not take any damage from an attack. The invincibility will be recorded as the first active frame of invincibility, invinicibility is set by Body Collsion, in which the collision state is 2 or 1. You will record this (which is input frame + 1) then record the last frame in which invincibility is active. That is set by when the Body Collision state is set to 0. This will be the frame that occurs before the input frame. (which is going to be the number on the input frame).[/collapse]
[collapse="IBC"]IBC is invincible bone collisions. This occurs similarly to the invinciblity and will be recorded the same way. Just be sure to leave a comment on the spreadsheet which bone(s) are invincible.[/collapse]
[collapse="Others"]The Damage, HLM and Electric Hitstun? are for derivitive data. You do not need to fill these out unless you know what you are doing.[/collapse][/collapse]​
Using BrawlBox to fill out FAF and Charge Timing
Now, OSA2 can't gather all of the data. For example, information about the animations themselves are stored within a different .pac storage. They are stored in FitCHARmotionetc.pac. Now, open up Brawlbox and find the FitCHARmotionetc.pac. In there you will see the layout of the .pac. In it is 3 ARC file Archives. These hold the information we want. Now go to the FitCaptainMotion ARC. In it you should see a BRES AnimationData; go into that. Now you will see four folders. Double click the AnmChr. This will hold all of the characters animation. Find the animation you are looking for (in OSA2, it gives you an animation for each subaction. Just find the animation that matches the subaction you are looking for). When you click on one of them, it should bring up FrameCount and 3 Unknowns. To find the FAF based upon the animaiton, you need to record the animation length. To find the Charge Timing, you will find the animation lengths for Attack_4Start. Then, you subtract one frame for that and record the number in the appropriate place.​

That's it for now.
[collapse="Old OP"]
This thread will serve as a guide and sign-up thread for gathering accurate, standardized frame data.
To begin collecting basic data without using frame advance on your Wii you will need to download the necessary files. I have compiled them and you can download them at: http://www.mediafire.com/?6ld67tb7dk6e8aq

So to begin, this will be about gathering the Basic Frame data. Most of you already know how to do this, but this will serve as guide.

Gathering Hitbox Data
Using OSA2
In order gather necessary hitbox data, we need to open up the data from the source itself. OpenSA2 allows us to view this data. Once you have OSA2 installed on your computer, you need to open up a FitCHAR.pac file. Once you have this open, you will need to go to the subactions tab. In there you will find the various subactions of your character. This contains most of the hitbox data you will need. Now you need to gather the data. You will need to go to the correct subactions for each attack. They are:
Code:
48 - Jab1
49 - Jab2
4A - Jab3
4B - RapidJabStart
4C - RapidJab
4D - RapidJab Ending
4E - Dash Attack
4F - F-tilt (upward facing)
50 - F-tilt
51 - F-tilt2 (Snake/MK)
52 - F-tilt3 (MK)
53 - F-tilt (downward facing)
54 - U-tilt
55 - D-tilt
56 - F-smash (Before Charge)
57 - F-smash (upward facing)
58 - F-smash 
59 - F-smash2 (Link/TL)
5A - F-smash (downard facing)
5B - F-smash (Charge)
5C - U-smash (Before Charge)
5D - U-smash 
5E - U-smash (Charge)
5F - D-smash (Before Charge)
60 - D-smash 
61 - D-smash (Charge)
62 - N-air
63 - F-air
64 - B-air
65 - U-air
66 - D-air
67 - N-air Landing
68 - F-air Landing
69 - B-air Landing
6A - U-air Landing
6B - D-air Landing
6C - Standing Grab
6D - Dash Grab
6E - Pivot Grab
72 - B-throw
73 - F-throw
74 - U-throw
75 - D-throw
The data you will be gathering for each attack are the Damage, Angle, Base Knockback, Knockback Growth and Hitlag modifier. All other data about hitboxes are unnecessary. As you will see, each attack will have at least one "Offensive Collision" these are the hitboxes. Each of these will have the data that includes Damage, Angle, etc... For each one of these, record the ID and the data about it. When recording the data about it, remember that the numbers are in hexidecimal. Use the program calculator that is built into your computer and go into programmer mode or look it up on the internet.​

Using the Google Doc
For every character you gather hitbox data for, you will have to record the data. When recording the data, you should place the hitbox data in the cooresponding spreadsheet that we have set-up in the Google Docs folder. I will be setting these up for easy accesss. Here is the link to the spreadsheet that will hold the hitbox data: http://spreadsheets.google.com/ccc?key=0Ah0d-wQSDzcUdHpBZmI3RXB2Z3hVQTh0Q05aV2hubXc&hl=en#

Gathering Frame Data
First of all, I should give you the link to the spreadsheet we will be using: http://spreadsheets.google.com/ccc?key=0Ah0d-wQSDzcUdEx0RnR1X2xOd28tSVBEajBtUkNMcFE&hl=en#
Using OSA2 and PSA
AS you already know, the hitbox data we literally ripped from the game it's self. Now we are going to rip the frame data also from the game. To do this, you will need to install OSA2, as it is the best viewer of the data. Now that you have OsA2 installed on your computer, you are going to open the "Character.pac". Now to gather the specific frame data.
Frame Data Info
The information we will be looking for frame data wise, will include: Animation Duration, IASA, Start-Up, Hit-On, Earliest Jab Flow, Earliest Jab Loop, Autocancel (before), Autocancel (after), Landing Lag.
Finding this data in OSA2
The first thing you must understand about OSA2 is how it works. First pull up your characters data and go to their subactions tab. This tab holds all the information you need for most of the frame data. Go to the desired attack (see: list above) and view the subaction. [Exp. Jab1 is subaction 48, so select the 48 in the drop down list.] Now you will see some jargon that you might not be able to make out at first. This is the data we are looking for.
The parts that we are looking for the Timers. This is in direct relation with the frames that the games run on. An Asynchronous Timer, is a timer that does not rely on any previous timers and tells the amount of frames from the begining of the move the information "below" it is. A Synchronous Timer, is a timer that is dependant on the timers that occur before it. The frame data at which the information below it is, is equal to the frames of the timer plus the current frame position before the timer.
The other information in there is the information such as the IASA, Hitboxes, Termination of Hitboxes, etc... which are all reliant on the timers. The information we gather is frames based off of the timers and the events that happen as the timers occur. [exp. Captain Falcon's jab. If we look for the IASA, then we will find that it occurs after a 15 frame timer.]
Now we need to figure out which data we are looking for. Here is what is what when you look in OSA2:
Code:
IASA: Allow Interupt
Hit-On: Offensive Collisions and Terminate Collisions
Earliest Jab Flow: Bit Variable Set - RA-Bit[16]
Earliest Jab Loop: Bit Variable Set - RA-Bit[22]
Autocancel (before): Bit Variable Set - RA-Bit[30]
Autocancel (after): Bit Varibable Clear - RA-Bit[30]
Invincibility (start): Body Collision - Collision State=0x2
Invincibility (end): Body Collision - Collision State=0x0
Recording the Data
Now that you found out what's what, the next part is recording each part of the data. The first thing you need to know is that PSA runs on a base 0 for each action (an action is something such as F-smash, which has 3 subactions of before charge, charge and after charge, you only need to add the 1 frame.) We need to change it into a base 1, so we add one frame. Something that OSA2 says is on frame 6 is actually on frame 7 in game.
So I have to re-write this section because it was only semi-correct. I have recently made a thread for this, here are the contents:
So this is half for us and half for the public. I think it would be good to just put this out there, so we can make sure that our frame data is correct.

Alright, so we all know that in PSA, you can view the frame data for characters. However, the way this works can confuse lots of people. Things such as ZSS's and Squirtle's "0 Frame" Jabs, when we just consider them frame 1. So instead we adopted the system of adding one to what we see in PSA.

However, is this completely correct to just add 1? No.

People that say that ZSS's Jab comes out frame 0 are technically correct. However, the frame 0 is a misconception. It is actually the PSA frame 0. In PSA, the frames is spits out are not actually the frames seen in game. Instead, they are the parts in-between each frame. They are the inputs. So I would rather refer to the number that PSA spits out as "input" so ZSS's Jab would be considered Frame 1, Input 0.

For the rest, refer to this visualization:


This is a representation of a move I made up (the frame data would be so lulzy). Imagine that they grey part is the start-up of the move, the red part the hitbox of the move and the white part the cool-down.

Now in OSA2 the picture would look like the following
Code:
---Start---
[B]Asynchronous Timer - Frames=2.00x,[/B]
Offensive Collision - Hitbox stuff...
[B]Asynchronous Timer - Frames=8.00x,[/B]
Terminate Collisions
[B]Asynchronous Timer - Frames=10.00x,[/B]
Allow Interrupt
---End---
Now I believe that we can all agree on that the hitbox starts on Frame 3. This follows the +1 rule. As you can see, it also follows the I2. So that is entirely correct. Now, if we were to follow the +1 rule. The hitbox would last until frame 9. But would that mean that frame 9 has the hitbox out or gone? This is where the +1 rule leaves much to be desired. But, if we are to use the inputs, we can see that it is indeed not out on frame 9. This is because we are reading this as the game would read it. It would read that the collisions are terminated on Input 8. Therefore, the following frame has no collisions because they were eliminated during Input 8.

Using the the "Input" instead of the "Frame" system helps us to realize things easier like the FAF. Lets take for example the move above. Is the FAF Frame 10 or Frame 11. Well, based on the Input, which is Input 10, we can see that the following frame, Frame 11 is allowing the interrupt.

TL;DR - When you refer to numbers from PSA/OSA2, start using the number it has and say it's the Input and not the frame. (ex. ZSS's Jab is I0)

So now that I have that out of the way.
Here is how to record each section:
IASA
Find the corresponding timer under which the Allow Interupt is and record the frame on which it occurs. Sometimes moves do not have IASA. If it has no IASA, please record n/a.​
Hit-On
Hit on is the frames the hitbox is active. To find this, you must find the first frame the move is active via the corresponding timer and the last frame the hitbox is active via the corresponding timer. [exp. The hitbox timers start at asynch 5 and terminate at asynch 7, so record "I5-I7"]​
Earliest Jab Flow
To find the earliest jab flow, find the cooresponding timer in which the RA-Bit[16] is found​
Earliest Jab Loop
To find the earliest jab loop, find the cooresponding timer in which the RA-Bit[22] is found​
Autocancel
The frames before the RA-Bit[30] is set is the autocancel before the hitbox and the frames after RA-Bit[30] is cleared.​
Invincibility
To find all frames in which a character is invincible, look for the corresponding timers in front of the Body Collision states. [exp. The timer before Collision State 0x2 is 3 and the one before Collision State 0x0 is 7, you should record "I3-I7"]​
Using Brawlbox

Now, OSA2 can't gather all of the data. For example, information about the animations themselves are stored within a different .pac storage. They are stored in FitCHARmotionetc.pac. Now, open up Brawlbox and find the FitCHARmotionetc.pac. In there you will see the layout of the .pac. In it is 3 ARC file Archives. These hold the information we want. Now go to the FitCaptainMotion ARC. In it you should see a BRES AnimationData; go into that. Now you will see four folders. Double click the AnmChr. This will hold all of the characters animation. Find the animation you are looking for (in OSA2, it gives you an animation for each subaction. Just find the animation that matches the subaction you are looking for). When you click on one of them, it should bring up FrameCount and 3 Unknowns. Record the frame count in the correct space on the spreadsheet and you should be done with Brawlbox.

When recording the data in the sheet use the input number and not the frame number. This applies to everything except landing lag and animation duration.
[/collapse]
 

phi1ny3

Not the Mama
Joined
Apr 15, 2008
Messages
9,649
Location
in my SCIENCE! lab
I'm up for ROB, Lucario, ZSS, and TLink.

Unless Phil wants to take up Lucario.

Also, two things: the earliest I'll be able to gather the data will be earlier September, and I'd was wondering if I could also post my data in the respective character boards.
Sure, I'll do Lucario
 

The Cape

Smash Master
Joined
May 16, 2004
Messages
4,478
Location
Carlisle, PA
Landing lag is in attributes.

0x140 -> 0x150

Order is:

Nair
Fair
Bair
Uair
Dair

Note: 67 -> 6B are the landing animations (while you are suffering the landing lag). Some moves have extra hitboxes (example: Mario Dair) and some might have an IASA or something else. Thats is all you will find data wise in there, its what happens while you are on the ground in landing lag.

E Dash = Dash
- 02060100: 0-2719 is when it transfers to run

F Run
10 Run Brake = Stop running
11 Turn
12 Turn Run = Turn from a run
13 Turn Run Brake = Turn and stop running
14 Jump Squat (pre jump)
15 -18 = Jumps
19 and 1A = Double Jumps (most chars)
1B -> 1F = Multijumpers

39 Glide Start = Start Glide
3A Glide Direction = Direction picked and start moving
3B Glide Wing = Moving
3C Glide Attack = Press A
3D Glide End = Press B
3E GlideLanding

43 EscapeN = Sidestep
44 EscapeF = Roll forward
45 EscapeB = Roll Backwards
46 EscapeAir = Air Dodge

70 Catch attack = Grab attack

AE DownEatU = Eating while laying on your back (missed tech)
AF DownStandU = Stand up from laying on back
B0 DownAttackU = Attack from laying on back
B1 DownForwardU = Forward roll from back
B2 DownBackU = Back roll from back

B7 -> BB = Same, but while facing down

BE Passive = Tech in place
BF PassiveStandF = Tech roll forward
C0 PassiveStandB = Tech roll back
C1 PassiveWall = Wall tech
C2 PassiveWallJump = Wall tech jump
C3 PassiveCeil = Ceiling tech

D5 CliffCatch = Ledge grab
D6 CliffWait = Ledge hang

D7 CliffAttackQuick = <100% ledge attack
D8 CliffClimbQuick = <100% Ledge Stand
D9 CliffEscapeQuick = <100% Ledge roll
DA CliffJumpQuick1 = <100% Ledge jump
DB CliffJumpQuick2 = Air part of Ledge jump?

DC -> E0 = Same, but over 100%

E1 SlipDown = Slip while down
E2 Slip = Slip
E3 SlipTurn = Slip while turning
E4 Slipdash = Slip while running
E5 SlipWait = ??
E6 SlipStand = Stand up from slip
E7 Slipattack = Attack from slip
E8 SlipEscapeF = Forward roll from slip
E9 SlipEscapeB = Backward roll from slip

EA AirCatch = Zair

FE -> 120 = Item throws
LightThrow is light
HeavyThrow is tilt
SmashThrow is smash

1BC -> 1C1 = Taunts
- I think its right then left of each

1C2 and 1C3 = Entries

1C4 -> 1C9 = Match winning

1CA = Loser

Specials usually start at 1CE (see below)


For specials:

You have action IDs of 112 -> ?? for each character. Inside the action IDs you will see areas that correspond to an animation ID (1CE or later). Go to that animation ID for the description for an idea of what part of each special move it is. You can also track the change actions from the original 112 -> 115.

If you have specific questions just ask.



Also: SUPER IMPORTANT
When you see a timer in PSA they work as follows:

Synchronous Timers operate after the last action and Asynchronous Timers work from the first frame of the move.

Also, all timers you see will have a number. Add 1 to that number for the correct frame (Frame 1 is actually #0).

So if you see:

Asynchronous Timer: 3
Hitbox
Synchronous Timer: 2
Hitbox

What that means is that the first hitbox hits on frame 4 and has a duration of 3 frames until the next hitbox.
 

EverAlert

Smash Master
Joined
Mar 4, 2008
Messages
3,433
Location
Australia
NNID
EVAL89
3DS FC
2664-2214-3431
Ice Climbers desu!~

Also maybe Marth if nobody wants her.
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
OP should be finished, unless there is something I forgot to include. Don't forget to refer to Cape's post about aerial's landing lag.
 

KayLo!

Smarter than your average wabbit.
Joined
Dec 9, 2008
Messages
15,480
Location
Philadelphia, PA
3DS FC
3497-1590-7447
OP is really really helpful..... thanks PSI.

EDIT: Also, in the spreadsheet, shouldn't there be a column (or two) for invincibility and/or super armor frames?
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
Not all characters have Super Armor / Invinciblity on some moves. If a move has it go ahead and add it to a column.
 

leafgreen386

Dirty camper
Joined
Mar 20, 2006
Messages
3,577
Location
Playing melee and smash ultimate
The order for the smashes is wrong in the OP. It's intuitively pre-charge -> charge -> attack, not pre-charge -> attack -> charge. You'll need to use brawlbox to check the length of the pre-charge animation (using the motionetc file) to find out just how much startup smashes actually have.

For invulnerability, a lot of moves that have it may only have it on specific bones. For this, you'll need to open a character's model file in brawlbox to see which bone is being specified (note the values are in hex).

Also, all timers you see will have a number. Add 1 to that number for the correct frame (Frame 1 is actually #0).

So if you see:

Asynchronous Timer: 3
Hitbox
Synchronous Timer: 2
Hitbox

What that means is that the first hitbox hits on frame 4 and has a duration of 3 frames until the next hitbox.
Just wanted to clarify here the first hitbox would actually have a duration of 2 frames until the second one appeared. A synch timer of 1 frame means the next event happens on the very next frame, and hitboxes become active the frame they're created.
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
In terms of PSA/OSA2 it doesn't go intuitively, it goes precharge>attack>charge:
 

T-block

B2B TST
Joined
Jan 11, 2009
Messages
11,841
Location
Edmonton, AB, Canada
If I can figure it out (lol), I'll do PT.

I'll probably be asking for a ton of help though, with the stamina factor and everything. At the very least I should be able to get non-fatigued values.
 

leafgreen386

Dirty camper
Joined
Mar 20, 2006
Messages
3,577
Location
Playing melee and smash ultimate
Stamina is just a multiplier to the damage the pokemon's attacks do, so it's not gonna be part of the hitbox data. The multiplier itself might be somewhere in the attributes, but... I'm pretty sure colin found that a while ago, anyway, right? For PT's pokemon, gathering the hitbox data should be enough, and if you also want exact values for the fatigued versions of moves, it's just a matter of applying a multiplier to the damages. This reminds me... I need to check the pokemon's pacs for anything related to fatigue or the elemental weaknesses - two of the biggest plagues to editing those characters.
 

leafgreen386

Dirty camper
Joined
Mar 20, 2006
Messages
3,577
Location
Playing melee and smash ultimate
Damage is tied directly to knockback in brawl. Damage the move does, growth, and the opponent's weight value are all part of one term in the knockback formula. This is why staling reduces the knockback of moves. And hitstun, in turn, is directly derived from the knockback a move deals.
 

Luxor

Smash Champion
Joined
Jul 13, 2009
Messages
2,155
Location
Frame data threads o.0
I'm taking Falcon, now that I finally got OSA2 downloaded and set up.

Edit: If anyone wants to help me understand a few points of his frame data, that would be great. I left comments in the Docs file where I was confused.
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
Alright so I'll address them now.

Jab3:HitOn - Yes, the hitboxes replace each other, so simply putting it as 6-9 will work. This is why you should take note of the the hitbox ID, as the hitbox will replace itself based on the ID.
If it is the case where they replace each other, combine the frame data (exp. 5-6, 7-8 to be combined as 5-8) only use multiple data for when it's multi-hit, as it will prove relevant.

RapidJabs:HitOn - Subroutines can be kind of hard to understand sometimes. If you encounter another one, let me know or get help from someone else.

U-air:HitOn - So when you're dealing with two different types of timers you have to remember which each one does. The Asynch shows the true position of where it is at in the move. So if it says
Code:
[B]Asynch Timer - 5 frames[/B]
Hitboxes
[B]Synch Timer - 5 frames[/B]
Hitbox Change (it has the same ID, so it replaces the previous hitboxes)
[B]Asynch Timer - 12 frames[/B]
Terminate collisions
The replacement of the hitboxes occurs five frames after the previous timer, which makes it frame 10, then add the extra frame, then it's frame 11. Then the last timer is asynch, which means it's at 12 frames into the move so the terminate collisions occurs at 12 frames (which is 13 after the extra frame).

One last note is the cool down. If the ending is based on the animation and you haven't checked it go ahead and leave it blank.

Edit: Don't be afraid to double post if you want our attention (this is a secret forum with people that will use for non-trolling purposes), I might have missed that if I hadn't double checked this thread.
 

Veril

Frame Savant
Joined
Jun 20, 2008
Messages
3,062
Location
Kent Lakes, New York
giant excel data packet

Actually everyone should look at this. 1st sheet is hitbox data, including flag data, 2nd and 3rd sheets include frame data and modify bone collision data I've been working on. Works in progress obv but huge beyond anything I've seen as of yet.

You're welcome. Mostly for Cape so he can look at hitbox data for vBrawl more easily. It uses the list manager in excel so you can filter data and isolate values.

Done with finals! :D :D :D :D

This format is better than rocketpsi's for plugging data into formula. I'd prefer if people used mine but honestly at this point it doesn't matter as you probably aren't going to be getting data I don't already have unless its on weight knockback induced hitstun. So I guess do whatever you want ;p
 

Veril

Frame Savant
Joined
Jun 20, 2008
Messages
3,062
Location
Kent Lakes, New York
That's what I do. <3 Missed you at Apex :(

This teal color is ballin!

Just got back from work. Some stuff that's kinda interesting to note:

39 is the most common priority value and occurs on almost all jabs and many aerials. MK's dash attack has this priority as well. There are a range of other values, and I'm working on figuring out what they all mean. Priority IS NOT damage based in brawl. Lucas's up-tilt can clash with Marth tippers. Jab's clash with bowser's neutral-b (at least in B+, I assume in vBrawl as well as the core qualities of those moves are the same). Etc, etc etc.

Many of you already know priority value 22 = transcendent priority of the MK variety. Lucario also has a transcendent priority value incorrectly listed as 10, which is actually 1. Hex there btw.

Knockback damage and angle values have all been converted to decimal from hex. Yeah getting way too good at doing mental arithmetic in hex >.> if people see mistakes let me know, I'm sure there's at least 1 or 2 given the scale of this dump. There are also holes that I have to fill in from my other frame data spreadsheets/documents.

also... and... stuff

SHLD is an interesting value you guys will find on all moves with hitlag multipliers. While it acts as positive or negative shieldstun its important to remember that attacker hitlag frames ARE ALSO HITFRAMES and defender SHL allows for shield SDI. As a result you can actually have moves pseudo shieldpoking by virtue of the low shieldstun if a person drops their shield. The range of punishing options based on spacing is also really altered with SSDI, but this is something which we don't see much of yet because of a lack of awareness and the difficulty associated. Also people seem to thing you can buffer rolls and **** by attempting to SSDI, this isn't true. You can't buffer in hitlag afaik. You can in shieldstun but there is WAAAY more SHL than shieldstun for the vast majority of moves in brawl.

To use that data to calculate SStun:
sstun = dmg/3 round down
SHL = (dmg/2.6 round down)*1.5 IF element#=3 or *1 otherwise
attacker hitlag = (dmg/2.6 round down)*hitlag modifier ie HLM *1.5 if element#=3

simple FAF based block advantage = SHL+sstun+hitframe-hitlag-IASA

basically that's finding the difference between the defender's escape/punish frame in relation to the specific hitbubble and hitframe and the attacker FAF (hitlag+IASA) based on the move and the specific hitbubble of the move that is relevant.


I'm gonna slowly be adding all my other data to this file... most of it at least. I need to have a few tricks up my sleeve ;p
 

KayLo!

Smarter than your average wabbit.
Joined
Dec 9, 2008
Messages
15,480
Location
Philadelphia, PA
3DS FC
3497-1590-7447
Is there a post somewhere with all the formulas for calculating stuff? They're pretty handy, and I copy them when I see them, but it'd be nice to have a comprehensive list (if one already exists).
 

Veril

Frame Savant
Joined
Jun 20, 2008
Messages
3,062
Location
Kent Lakes, New York
probably not

credit goes to Magus for the hitlag formula I believe (<3)
Yeroc told me the sstun formula for vBrawl (even though the math doesn't work with the sstun codes like it should in theory >.< w.e I'll figure that out eventually when I'm really really bored)

bkb induced hitstun = bkb x .4 (credit is mine bwahaha :D)

dmg staling: (Credit to Cape for telling me this, don't know who found it)
1.05 fresh iirc (first use per stock)
1 unstale
.90
.81
.73
.66
.60
.55
.51
.48
.46

yes non-whole number damage exists, truncated to the hundredth's place as per the norm. Hitlag and sstun are always whole number values rounded down.


Now you guys can calculate shield advantage from the data I gave you in the file and account for stale moves. If you couldn't before... Kirk probably could. ;p

you also can account for bkb induced hitstun if you ever decide to do hitstun growth testing "cough cough nudge"

every jab IN THE GAME is in the file I posted for download btw a bunch of tilts and some of the aerials I've moved from my aerial calculations file (even just copy pasta takes some time with this much crap)


Phantom Wings is the ****ing man for making PSA thus making this possible! And whoever made the frame advance code... <3


alternately you could wait for me to post all of the calculated data before disappearing into next semester's micro and organic chemistry **** academic **** schedule. aaaagh oh well 2 weeks is kinda a vacation... ;_;
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
Here's something that will be helpful for you:
Hitlag
-Melee-
Hitlag = floor{(Damage/3 + 3)}
-Brawl-
Hitlag = floor{(Damage/2.6 + 5)}

The hitlag code...
Hitlag Modifier [Phantom Wings, Almas, spunit262] 8 lines
C2771EAC 00000004
2C04VVVV 41800010
1C84XXXX 3884ZZZZ
39C0YYYY 7C8473D6
2C040000 00000000
C2876220 00000004
2C04VVVV 41800010
1C84XXXX 3884ZZZZ
39C0YYYY 7C8473D6
80660064 00000000

(Hitlag*X+Z)/Y

...modifies the hitlag after the floor{}.


Shieldstun
-Melee-
Shieldstun = floor{[(4.45 + Damage) / 2.235]}
-Brawl-
Shieldstun = floor{(Damage / 3)}

The shieldstun code...
Shieldstun [spunit262]
C28753FC 00000005
83810034 8083013C
2C040000 41810014
1F9CXXXX 3B9CZZZZ
3880YYYY 7F9C23D6
60000000 00000000

(Stun*X+Z)/Y = New shieldstun

...modifies the shieldstun after the floor{}, but it also doesn't work like that description says it does. For example:

-Brawl+ 5.0-
X=20
Z=35
Y=10

Somehow this actually results in:
(Stun*2)+5
instead of
(Stun*2)+3.5




I don't know the actual formulas for hitstun since I'd need to know the formulas for launch speed (real launch speed not the fastest pitch/top speed junk which is translation based and includes effects of physics/DI and such).


Oh woops, I gave you the simplified version. It's actually:

Hitlag = floor{(Damage/2.6 + 5)*M*E]}

M: Hitbox's hitlag multiplier parameter. On hit this is used for both players, but on block it's used only for the attacker and is 1.00x for the person shielding. Multipliers that are less than 1.00x can have the attacker be in hitlag for less time than the person blocking (improving adv on block), while greater than 1.00x can have them be in hitlag longer than the defender (reducing adv on block).

E: Electric multiplier (1.50x if it hits and is also electric element, otherwise 1.00x for non-electric or against a shield). In VBrawl the 1.50x applies to both players on hit, while in P:M it was changed to be like Melee where the 1.50x only applies to the person being hit.

compliments of Magus
 

KayLo!

Smarter than your average wabbit.
Joined
Dec 9, 2008
Messages
15,480
Location
Philadelphia, PA
3DS FC
3497-1590-7447
Thanks rPSI. If I keep copying them down as I come across them, I guess I'll have them all eventually lol.
 

Veril

Frame Savant
Joined
Jun 20, 2008
Messages
3,062
Location
Kent Lakes, New York
don't bother copying the formula for the shieldstun code. Its obviously wrong. I hate it and how much of my time was wasted thinking it was even slightly useful.

There are a lot of formula for advantages specific to certain scenarios or move types. Jabs can have many many advantage permutations because of the 4 possible flow points (flow to next jab, alternate flow to next jab, loop to first jab, flow to repeating jab) as well as standard FAF and the rare multihit individual jab (basically only olimar). Autocancels, land frame, ALR, sjr for aerials / aerial specials... etc

You also can choose to go nuts and account for shieldstun ledge canceling, hitstun ledge canceling for any mod with alternate hitstun, stamina, aura, staling, etc.

Just remember to bug me and I'll be posting next week when i'm not catching up with Cape and everyone else I haven't been able to work with / speak to as per finals and **** (mostly Cape, Kirk, juice, and also Indigo Jeans and Kaylo)
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
@Veril - Phantom Wings also made the frame advance code.

@Everyone else - C'mon and gather this "simple" data. I mean, I pretty much outlined how easy it was and so far only me and one other person have started. CMON
 

Thinkaman

Moderator
Moderator
Joined
Aug 26, 2007
Messages
6,535
Location
Madison, WI
NNID
Thinkaman
3DS FC
1504-5749-3616
I'm not sure I understand how this PSA nonsense works, it's all terribly confusing.
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
I sent the PM to basically all the researchers T-block. :p

It was also me saying to start doing it xD
 

rPSIvysaur

[ɑɹsaɪ]
Joined
Jun 7, 2009
Messages
16,415
Olimar's frame data is really hard to do because of how the pikmin work. I suggest leaving that to someone more seasoned in hacking such as Leaf or Veril.
 
Top Bottom