This run is 531 frames (about 8.8 seconds) faster than the first (oh, and that was no WIP run). The difference is
mainly due to some new tricks and better application of known tricks. Also lag optimization shaved some frames.
Speed physics:
The game keeps internal speed, which is related to visible speed by a lookup table having 160 entries.
How high the game allows the speed to rise depends on conditions (downhill, flat ground without boots, flat ground with
boots, uphill).
If maximum speed is exceeded, Speedy just won't accelerate more, the speed does not decrease.
Overshoot into hill
Sometimes it is better to overshoot a turn in order to land further on slope, giving higher final speed.
Undershoot into hill
Sometimes it is better to undershoot trampoline jumps so you land on start of hill, giving greater final speed.
Speed locking
The table values in speed table are not monotonous. Some higher internal speeds are really slower than lower ones.
If you don't have speed boots and are in downslope, by hitting jump or attack two frames before visible speed flashes
to higher value, it is possible to keep that value.
This is only useful if it allows you to keep higher speed than what fully running the hill down would.
Speed table overflow
The code that increases speed in downslope is special. It just checks if the speed is 150, incrementing the speed by 1
if not. However, if Speedy already has 151 speed, the speed increments without bound (by 2 every frame).
However, when speed reaches 161, the code attempts to read outside the speed table, reading garbage. It loads 15 from
there, causing speed to increase to 15px per frame, which is over twice what is normally possible.
But the speed will still increase. However, next up it increases to 163. Now the loaded value is 75, giving speed of
75px/frame. The speed is so great that Speedy is forcibly ripped off the slope and shoots forwards at great speed.
Briefly tapping the opposite direction drops speedy off this hyperspeed.
Currently the only known way to get 151 speed is via pneumatic pipes in Galatical Galaxies. Those things spit you at
that speed.
Running on moving platforms
The speed of Speedy is relative to surface, so if surface is moving (moving platforms/conveyors, the speed of surface
is added/subtracted.
For this reason, if platforms moves the wrong way, it should be jumped off as soon as possible, but if it is moving the
right way, it should be run on as long as possible.
Lag elimination via attack
One may be able to remove lag frames by attacking (just make sure the attack won't hit anything!) at suitable times.
Attack as jump
Attack also can double as very short jump. This is useful in some close quaters (again, don't hit anything).
Also, attack is often less laggy than jump.
Modifying hitbox via attack
Also, attack can subtly modify Speedy's hitbox. This is usually useless, but if there is very narrow margin between
success and failure, it might just make the difference between success and failure.
Vertical zipping
Certain types of edges zip you upwards if you hit slightly below the top. This also has effect of resetting or at least
greatly reducing Speedy's vertical speed (which is useful).
Horizontal zipping
If you can get inside a wall, autofiring left+right causes you to zip at 5px per frame. There is only one place where
this is known possible (Galatical Galaxies Part 1, where the magnet picks the platform) and there are better ways
to do that part anyway.
Taking damage
There is no damage knockback, so taking damage has no pretty much no speed penalty (except finding best spots to take
damage).
However, there is attack knockback if enemy doesn't die (and lesser one even if it dies).
HP mechanics
- Each level entry (world transitions don't matter) resets your HP to 3.
- Each time Speedy dies, both HP and MaxHP are reset to 3.
- Small heart increases HP by 1 if below MaxHP.
- Large heart increases HP by 1 if HP is below MaxHP or MaxHP is below 5 and increases MaxHP if MaxHP is below 5.
Speed reset via wall
Slamming into a wall resets your horizontal momentum but not vertical momentum. This is useful if you need to turn
quickly after jump to ledge.
This is also useful if you need to turn and there is wall just behind.