What frame does the game look for your joystick position to determine whether you get a backwards or forwards sh/hf (I'm guessing last frame of jump squat)?
This depends on your point of view as this is philosophical question. […]
I’ve been thinking about this often, and it’s all very complicated. Although it seems less correct – and probably is – I’m in favor of the [01][12] counting instead of [00][11], the former twin digit being the frame of input and the latter twin digit being the calculated and displayed frame. (First twin digit →00←latter twin digit.)
With [01][12], you would say of a Fox who stands idle (0) and suddenly dashes forward that he pressed forward
on frame 0, and
at the next frame (1) he starts moving. Whatever he inputs on frame 1 will take effect on frame 2 etc.
When we keep in mind that the controller input is actually the first thing Melee polls for when it starts calculating a frame, this way to look at it seems very wrong and [00][11] seems more exact, where we would say that Fox pressed forward on frame 1 and his dash also started at frame 1.
But if we imagine the inter-frame interval being 3 seconds instead of 17 ms – an extreme slow-mo mode – [01][12] feels more natural.
In this mode, we would see frame 0 for 3 seconds, more than enough time for us to react to what is displayed at frame 0.
During these 3 seconds, we would decide that we wanted to dash forward, so we would start holding forward, knowing that the input will be polled between the end of frame 0 and the beginning of frame 1.
Then, frame 1 would start being displayed and we would see Fox in the first frame of his dash animation. We would separate these time periods by the time points where we first perceive a new frame. Thus, frame 1 would start to us when it is being displayed, and after the inputs for it have been polled. We will hold the input that takes effect on frame 1 for most of frame 0, so we would group these together as 01, 12, 23 etc., which I denoted as [01][12] earlier.
Because you, tauKhan, mentioned SDI input, that’s another thing that makes more sense to view from the [01][12] perspective to me.
When a new frame is calculated, the game will assign every character to his new animation and position, according to the current controller input. Only after doing so, the hitbubbles are generated (if applicable). Therefore, if you stand just within the range of an enemy attack and would get hit by it at frame 1, by the logic of [00][11], it would not be possible to SDI
on frame 1 of the hitlag. If you would hold away from the opponent
on frame 1 (again, [00][11] thinking), your input would cause you to turn / dash away, out of the enemy’s range, or attempt to do so and still get hit if you are too close to the opponent.
This problem is very important to me because it frequently affects my creation of content. For example, I want to write an input display Avisynth script soon, but I’m not sure whether I should display the inputs
on the frame they are held at, or
at the frame they take effect. As you’ve probably guessed, I’m more inclined towards the former, which is in line with the [01][12] logic, but I am aware that this could be rightfully perceived as inaccurate by some people. I’m also considering delaying the input display by half a frame, at least for video scenes slower than 30 in-game frames per second.
To come back to d z’s question about
FJump and
BJump control stick polling: This happens
at the last frame of the jumpsquat
(Kneebend) animation. Only one frame is queried, so if we take Bowser as an example (8 frames jumpsquat), it doesn’t matter what you do with the control stick during the first 7 frames.
On frame 7 ([01][12] logic), you hold the direction you want to jump in, and it’s processed
at frame 8. What you press
on frame 8 ([01][12] logic) /
at frame 9 ([00][11] logic) doesn’t influence your horizontal momentum at all, although you can input all kinds of aerial moves.
You are airborne at frame 9.
Edit: I use the word
on to express that I refer to the frame currently visible, and
at to refer to the frame that’s currently being calculated.