Superswim

Discovered by Klydestorm

Camera Lock & Superswim

Perform Storage, and Camera Lock with the Wind Waker. Get into a body of water, and hold Up on the analog stick. Link will begin to spin around rapidly, gaining speed with each turn. However, by holding the analog stick at a precise angle (this angle changes from superswim to superswim, but will always lie within the upper 180 degrees of the stick's range) rather than directly Up, Link's motion will become strictly back-and-forth rather than circular, allowing better control of the superswim.

Note: It is a common misconception that allowing Link to turn constantly builds up less speed than turning strictly back-and-forth. This is not true, however, because Link will build up the same amount of speed no matter how much he turns while charging.

Though the angle varies between superswims, there are a number of ways to determine it. Perhaps the most common method is by using your mini-map and altering the angle of the analog stick until you see the yellow arrow move back-and-forth. This method is somewhat limited, however, because once you leave the quadrant that you started the superswim in the yellow arrow will disappear.

This is where the second method for determining the angle of the analog stick comes into play. This method involves looking at features of the landscape around you to determine whether or not you are moving back-and-forth. Here's how it works: when holding strictly Up on the analog stick you will notice that a feature such as an island will appear on the screen in intervals. However, when you are moving back-and-forth, the island will instead appear to stay in one spot (seemingly behind you), indicating that you have found the proper angle.

Once you're satisfied with your speed, release the analog stick with Link's back pointing where you want to go, and Link will rocket backwards with the speed you attained. You can better judge where you're aiming by opening up your map.

Superswim Without Camera Lock

Pressing alternate directions on every other frame while swimming will also cause Link's speed to increase linearly. This can be pause buffered or done unbuffered, although unbuffered without blackwind isn't RTA-viable.

It is possible to emulate such an affect by resetting the neutral position of the analog stick using Black Wind. If the correct analog stick angle is acquired (ess right or left), you can then mash between up and down on the analog stick to build up speed. Because this makes you pass through ess instead of neutral, this avoids the speed loss from hitting neutral.

Storage will gives you this same effect due to the way the camera works while the glitch is active.

One of the advantages of a storage-less superswim is that you do not need to worry about getting double-storage to prevent your game from soft-locking when you enter a cutscene since the camera is not locked.

Superswim Speed

Although the general trend while charging is a major increase in speed over time, Link's speed while charging does not constantly increase. Link's swimming animation occurs in a cycle, and which frame he is at in the cycle will determine what speed he will get. As a result, Link's speed will drastically fluctuate depending on which frame in the swimming animation's cycle he is currently in.

There are several ways to make superswims speed and distance more consistent in a speedrun. After releasing a superswim, you will lose two units of speed every frame. If you release too early, you will not have enough speed and will not travel far enough. If you charge for too long, you will not have enough air and will drown too soon. With this in mind, the optimal time to release a superswim for maximum distance is about two-thirds of the total charging time. However, even if releasing at around two-thirds of the total charging time, you can still get bad speed and not travel far enough. Because of this, you should start to map buffer when you see the second red flash on the air meter and look at Link's head or arms (or any other indicators of his animation cycle) in order to ensure that you will release on a frame with good speed.

The following table illustrates common frames in Link's swimming animation and the relative speed attained if pausing on these frames when beginning to buffer at the second red flash:

Note: These frames only apply when buffering at around the second red flash on the air meter. If you accidentally miss a buffer or charge for too long, you should begin to look for opposite frames where Link's head is tilted down instead.

Data collected by CryZe and wooferzfg1
Image of FrameFrame 1 Frame 2 Frame 3 Frame 4 Frame 5
Speed Rank1st2nd3rd4th5th

The following graph illustrates the correlation of frames and overall velocity for one air gauge worth of time:

Graph courtesy of Abahbob

Superswim Graph

The only limit to the speed you can gain is your air meter, and the positioning of the land, including things you can climb up on out of water. You can continuously refresh your air meter if you happen to swim close to the shore of an island without going on land. If you Superswim up on land, your speed is retained, and Link will run backwards. If you go off an edge or back into the water while on land, your speed will reset back to 0. With enough speed, it is possible to reach an island before it loads. Using this allows to be loaded underneath an island, similar to a Wind Waker dive.

Superswimming can be used to cross vast amounts of overworld extremely quickly (much faster than sailing).

ESS Superswims

Holding L and ESS position during a superswim greatly increases speed retention, as the speed loss per frame rises the further out the stick is held from ESS. This method lessens the need of buffering for speed, as avoiding neutral removes the massive speed loss of doing so. This allows for eventually travelling longer distances over time, and increased maneuverability since the use of ESS turning no longer requires going in and out of neutral when wanting to make angle adjustments.

A possible confusion could arise in the following video. For simplicity, all variants were shown in the same no refill scenario. It shows that buffered neutral goes farther which seems to go against what was stated earlier. While this is true in this case, it is specifically due to the lack of air not allowing for the speed loss to take effect. Note that at the end the buffered one, speed is in the low -100’s while the ESS remains near -1000. Should they had both left at full air, ESS would travel longer over time eventually. Buffering just gives higher initial speed/distance potential.

Superswim Graph2 Superswim Graph3

Swimming Animations and Speed Equations

Figured out by TrogWW

These are the swimming animation and swimming speed equations:

Pic1

When you hold a stick direction, animation affects speed (this is not the case when you hold neutral). Animation position can be float values between 0 and 23 (of course modulus is unnecessary because of the cosine's frequency). The animation starts at 0 when link is low and his arms are close. Then he bobs up at 23/2 and his arms go out. Then he bobs back down and his arms go back in at 23.

Here is link's swimming animation frames:

discord thingy

In the graph, the horizontal axis represents the animation position, and the vertical axis represents the value the speed would get scaled by due to animation.

equation 1

(only applies when holding a stick direction)

pic 3

The animation position can be determined by adding the animation increment to the animation position of the previous frame. At normal swimming speeds the animation increment is small (<2). However, this is no longer the case at high speeds. The animation increment equation can be represented as a plane in R3. Animation increment is the red axis. Speed is the green axis. Air is the blue axis.

animation increment

equation 2

pic 2

Note: When Link changes from the stick direction swimming animation to the neutral swimming animation, since neutral animation does not scale speed, in order to have continuous speed values, the scaled speed from the directional animation becomes the new true speed value. TLDR you loose speed from hitting neutral Whenever you are in the water, Link's air meter also scales Link's speed. Air starts at 900 and decreases by 1 each frame until it reaches 0 (when you drown). The next graph is an approximation where the horizontal axis is the air, and the vertical axis is the value the speed would get scaled by due to air.

equation 3

pic 4

Finally, the speed loss mechanics: After you finish charging speed link lose will lose speed at various rates depending on the inputs on the analog stick.

  1. Holding all the way in a direction on the analog stick (Not ESS) will lead to a loss of 3 units of negative speed per frame.
  2. Holding ESS will lead to a decrease in the rate of speedloss depending on how good the ESS position is. With perfect ESS position the speed loss is 0.11 units of negative speed per frame.
  3. Holding neutral on the analog stick will lead to a fractional speed loss on the first frame of holding neutral followed by 2 units of negative speed per frame on all later frames of holding ESS. The amount of speed loss is determined by where link is in his swimming animation and ranges from half of his current speed value to no additional speed loss other than the 2 units of negative speed per frame.
  4. If you while holding target you hold on the analog stick in the direction link is traveling in it will set link's speed to zero in one frame.

Drowning Crash

If you drown with Storage while in the backwards or sideways swimming animation, the game will crash. Be extra careful to avoid this for tricks that involve drowning with double storage, like for example Greatfish Cutscene Skip !

Slope Clipping (Weirdshots)

When reaching high speeds, the game has issues calculating Link's position when he interacts with slopes. This can lead to clipping. This was discovered in the Wind Waker HD due to the item sliding glitch and is related to a glitch known as Weirdshots there, but the same mechanics apply to the original game when working with superswim speeds.

Every slope in the entire game leads to a ground clip at SOME speed. This clip requires charging either positive speed while facing down the slope, or negative speed facing up the slope. The speed value you clip at depends on the following factors:

  • The facing angle
  • The speed angle
  • The slope steepness

This is how clipping through slopes work :

Ground (weirdshot) clips can only be done in the normal walking and targeting scooting animations. Other animations do not work. To properly understand how ground clips work it is crucial to understand how Link’s horizontal and vertical displacement work (in the specified animations). Link’s horizontal displacement is determined by 2 values stored in the game’s RAM: speed angle and actual speed.

Link’s horizontal displacement can get stopped by collision that gets in its way. Collision is determined to be in Link’s way if, along Link’s path, Link would need to deviate more than 30 units up to go over an obstacle. (Note: Link’s Y value is not changing yet.) Link’s horizontal displacement can also be stopped from above. If there is an obstacle that is less than 140 units above Link’s feet, then Link will be unable to go under it. (Note: at this point, we are only dealing with Link's small pinpoint collision, not his cylinder big collision which does not matter for this glitch). Once Link’s horizontal displacement is calculated, Link’s vertical displacement starts to be determined. The game checks to see if, at the new horizontal position, there is a spot to stand either 30 units up or 30 units down from the previous vertical position. If there is, Link will go to the highest valid Y value and stay in the grounded state. If there is no spot to stand, Link will enter the falling state.

If link remains in a grounded state and is in specifically one of the previously mentioned animations, a second vertical displacement occurs. In other animations the vertical displacement would be done being calculated for the frame. We do not know why this second displacement occurs, but it is responsible for the glitch. Here is what happens :

The second vertical displacement uses a different horizontal position known as the projected position. Essentially this is what Link's body follows, which will cause Link to visually stretch and detach from his foot anchor. The projected position is the horizontal displacement added again but to the vertical displacement. (Note: Link does not move here just that the vertical displacement uses this position). Like the first vertical displacement, the second vertical displacement looks for standable collision but this time at the projected position. The game checks to see if there is a spot to stand up to 30 units from the previous vertical position and Link will stand on the highest collision it can find. If it cannot find any collision in the range, you will not displace at all. Either way you stay in the grounded state. (Note: the previous vertical position is the position after the first vertical displacement.) As for how far down the game checks it is bit more complicated.

The maximum displacement downwards can have no practical limit or be as little as 0. The main factors that determine this are the relative slope to Link’s facing angle and the sign and magnitude of the actual speed. As mentioned above Link is 140 units tall. So, if you want to clip under the floor, you need to clip at least 140 units down. After you clip you are in the grounded state so you will continue with speed. You still can get stopped by walls and everything. If you clip between 140 and 30 units and are against a wall, Link will pop back up and lose his speed. If you clip 30 units or less against a wall you will stay grounded and keep your speed. This causes a weirdshot (Link sinks through the ground but his leg stays grounded). If you repeatedly clip 30 units, this is known as a mega weirdshot.

There are a few methods to do a weirdshot clip, depending on the collision around you. For all methods you need a slope, and you need some lower, further-away collision (projected collision).

  • If the projected collision is in the direction of up the slope (the slope needs to raise Link 30 units), you can clip going up the slope
  • If the slope meets with a wall and the projected collision is behind the wall, you can clip charging against the wall
  • You can also clip without being stopped by walls/slopes. This requires having enough space to move in a straight line the distance of the slope to the projected collision

The entire overworld has an ocean floor. This enables slope clip island hops.

Here is pseudocode by user Amphytrion explaining the logic behind clipping through slopes :

pseudocode

Oddshots

Last updated 10/05/2024 – azer67