Vertical Speed
Introduction
There are two memory addresses for vertical speed. The first can either have a value of 1 or 2, where 1 is for rising and 2 is for falling. The second is for the vertical speed, and is always used regardless of the first's value.
Rising speed starts with a value which decreases by 7168 subpixels per frame. After the value goes under zero, the first address will switch from 1 to 2, and Samus will start to fall.
The values can be read as "pixels.subpixels."
The maximum amount of subpixels is 65536. You simply divide the decimal (subpixel) amount by 65536 to find the fraction of pixels involved.
"Ramp" means the amount of frames the source takes to reach the amount listed in the column.
"HGBFS" stands for "height gained before falling starts."
Crouching before jumping will cause Samus to begin her jump eight pixels higher than if she did not crouch.
Moonfall is a glitch that underflows the fall speed, allowing you to continuously gain speed without hitting the cap. When doing a moonfall, the address used for direction has a value of 0.
The below give values in the various mediums of (air, water, lava/acid). For water and lava/acid, it should be assumed Samus does not have Gravity Suit equipped: With Gravity Suit, these mediums behave as air (for purposes of vertical speed).
Speed Values
Acceleration
In the various mediums of (air, water, lava/acid), Samus experiences a different acceleration. This changes Samus' speed downwards by this same amount every frame. There are a couple exceptions, for example if she is at her fall speed cap (see next section) or when changing directions (where her speed is first zeroed).
Region | Medium | Acceleration |
---|---|---|
NTSC | Air | 0.07168 |
NTSC | Water | 0.02048 |
NTSC | Lava/acid | 0.02304 |
PAL | Air | 0.10240 |
PAL | Water | 0.02457 |
PAL | Lava/acid | 0.02764 |
Falling
When falling, there is a maximum fall speed allowed for the pixel value. If Samus' fall speed hits this pixel value, falling further will not increase speed. The fall speed cap ignores subpixel. Since Samus' speed is usually zeroed upon hitting the peak, there is a "usual" value for the subpixel at the fall speed cap. This can be different, though: For example, if Samus falls from air into water, the subpixel will most likely be different.
On NTSC, the fall speed cap is 5 pixels. On PAL, the fall speed cap is 6 pixels.
Since there is a "usual" subpixel value for the fall speed cap, these are recorded below. These are, in essence, when falling from zero speed while fully immersed in the medium.
Region | Medium | Usual Fall Speed Cap | Ramp |
---|---|---|---|
NTSC | Air | 5.02048 | 46 |
NTSC | Water | 5.00000 | 160 |
NTSC | Lava/acid | 5.01792 | 143 |
PAL | Air | 6.06144 | 39 |
PAL | Water | 6.02361 | 161 |
PAL | Lava/acid | 6.02036 | 143 |
Rising
For jumping, Space Jump and Spring Ball behave as if jumping from the ground (even if performing a mid-air spring ball jump). A walljump, though, is slightly different.
Note with Speed Booster equipped, jumping with a non-zero dash speed changes the initial velocity. The relationship is somewhat complicated, see the next section.
Region | Medium | Jump type | Velocity | Ramp | HGBFS |
---|---|---|---|---|---|
NTSC | Air | Normal | 4.57344 | 46 | 111.06144 |
NTSC | Air | Hi-Jump | 6.00000 | 56 | 167.37888 |
NTSC | Air | Walljump | 4.40960 | 44 | 100.07168 |
NTSC | Air | Walljump with Hi-Jump | 5.32768 | 52 | 141.03072 |
NTSC | Air | Bomb Jump | 2.49152 | 27 | 35.62464 |
NTSC | Water | Normal | 1.49152 | 56 | 49.57344 |
NTSC | Water | Hi-Jump | 2.32768 | 80 | 101.16384 |
NTSC | Water | Walljump | 0.16384 | 8 | 1.08192 |
NTSC | Water | Walljump with Hi-Jump | 0.32768 | 16 | 4.16384 |
NTSC | Water | Bomb Jump | 0.04096 | 2 | 0.06144 |
NTSC | Lava/acid | Normal | 2.49152 | 80 | 108.61184 |
NTSC | Lava/acid | Hi-Jump | 3.32768 | 101 | 175.64000 |
NTSC | Lava/acid | Walljump | 2.40960 | 76 | 99.20736 |
NTSC | Lava/acid | Walljump with Hi-Jump | 3.32768 | 101 | 175.64000 |
NTSC | Lava/acid | Bomb Jump | 0.04096 | 3 | 0.05888 |
PAL | Air | Normal | 5.55552 | 39 | 112.24064 |
PAL | Air | Hi-Jump | 7.13056 | 48 | 169.29952 |
PAL | Air | Walljump | 5.25600 | 36 | 101.16384 |
PAL | Air | Walljump with Hi-Jump | 6.28928 | 43 | 142.39680 |
PAL | Air | Bomb Jump | 3.19456 | 23 | 36.28672 |
PAL | Water | Normal | 2.06400 | 57 | 59.48028 |
PAL | Water | Hi-Jump | 3.00000 | 82 | 121.34712 |
PAL | Water | Walljump | 0.19456 | 9 | 1.21316 |
PAL | Water | Walljump with Hi-Jump | 0.39168 | 17 | 5.04168 |
PAL | Water | Bomb Jump | 0.04864 | 3 | 0.07271 |
PAL | Lava/acid | Normal | 3.19456 | 80 | 130.33492 |
PAL | Lava/acid | Hi-Jump | 4.13056 | 101 | 211.10104 |
PAL | Lava/acid | Walljump | 3.06964 | 75 | 119.06316 |
PAL | Lava/acid | Walljump with Hi-Jump | 4.13056 | 100 | 211.10104 |
PAL | Lava/acid | Bomb Jump | 0.04864 | 3 | 0.06964 |
Any | Any | Shinespark | 14.xxxxx | 2 | N/A |
Note shinesparks have a cap on the pixel value of 14 (in both NTSC and PAL, in any medium). The subpixel value continues to change, following some pattern that I forgot and could not quickly find.
Compared with Run Speed
Writeup from FreyasSpirit on why this chart is non-linear