Item sliding is the most powerful glitch currently known in this game, allowing link to gain speed indefinitely at an exponential rate. In Wind Waker HD, Link can move around while aiming with an item in first person mode. If Link is walking in a direction and then tries to walk in the opposite direction with the slightest tilt of the analog stick (otherwise known as ESS position), his speed ends up increasing exponentially in the direction he was first walking. This allows Link to reach speed values that are so high, the game will crash if the speed is released too late or charged for too long.
This is also possible to perform unbuffered. Hold a direction, then quickly switch to slightly in the opposite direction.
After -45 speed you can release analog stick or convert to positive speed and the item slide will autocharge regardless of inputs.
Link will continue charge speed for as long as he is in first person.
The speed that is gained while performing an Item Slide using the above method is considered "negative speed" by the game. Negative speed and positive speed give different properties when it comes to Link clipping through certain surfaces and Link entering the water, along with sending Link in the opposite direction you would expect for the item you use after targetting. Targetting with positive speed using Grapple, Boomerang, or Bow will send link to the right instead of the left. Targeting with positive speed using Hookshot will send link to the left instead of the right.
Switching from negative to positive can be done by performing an itemslide in any direction, building a small amount of speed (roughly 50 units) and then hold the direction link is moving in, this direction should be opposite the ess held and does not need to be ess itself. To convert back to negative simply hold opposite the direction link is moving in. It is important to switch the stick direction by going through the center of the control stick, trying to go around the stick in a rolling motion will change links direction of motion and fail to convert. To convert between positive and negative in 3rd person, hold target and 1) to convert from negative to positive hold the direction link is moving in, 2) to convert from positive to negative, hold the direction opposite to the direction link is moving in.
In first person:
There are numerous actions that can cancel speed while in third person. Here are a few among many:
Sometimes we want to reach a certain speed and then exit first person while keeping our speed. All of the following options will accomplish this:
Entering the water (only if link has negative speed):
Pulling bomb or skull hammer:
After doing so link will keep traveling in the same direction he was while in first person. This is much easier for controlling link than pressing ZL
The angle Link will be facing after pulling out the skull hammer or a bomb out of an item slide is the angle Link was facing when he last targetted or did a spin attack.
An Inverted Item Slide will change the direction that Link is sent after targeting. Whereas with a normal forward Item Slide using the Grapple Hook, Boomerang, or Bow, targetting will send link to the left, an Inverted Item Slide forward using these items will send link to the right. Similarly, a normal forward Item Slide using the Hookshot sends link to the right, where an Inverted Item Slide forward using Hookshot sends link to the left. The speed that is gained while performing an Inverted Item Slide is negative - just like a normal item slide.
To do an inverted item slide:
This can be used to cross certain gaps consistently if you have a shield but no sword. While in third person during an item slide: if you crouch with the shield then Link will go back compared to his facing direction if you have negative speed, and directly towards where he is facing if you have positive speed.
This is useful for crossing the horeshoe platforms with an item slide.
At higher speeds the game has more issues calculating link's position which can lead to sequence breaks by bypassing collision
Clipping through the ground requires a slope and is the most commonly used method for clipping. 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:
Clipping process: All collision is properly checked at all times. Ground clips do not bypass any collision but can be used to go under collision. On the frame that link clips through the ground he will be teleported to a lower Y position while X and Z position will stay the same, thus going under the ground. The distance that link gets teleported downward is directly proportional to the speed value that he clipped at. At very high speeds he will go straight to the water. His horizontal speed will also drop by a fraction. On this frame link is still considered grounded and can perform all actions that he normally could while on the ground even if this new position is in the middle of the air. On the frame after, because link retains his item sliding speed, he will shoot in whatever direction he was traveling in. Several clips put link airborn under the ground, which means he will then travel off of a ledge and keep his speed for one frame before falling or jumping.
Clipping under water: If you have negative speed, this can lead to a superswim. Sometimes he will swim for only a single frame and then sploosh. If you have positive speed, because your speed is capped in the water he will swim for one frame, traveling only 18 units before surfacing.
Explanation for why you clip: This is not fully understood, but the current best hypothesis is that due to the game calculates the next Y value link should have based on the projection of the slope he is on in the direction he is facing if he has positive speed or opposite the direction he is facing if he has negative speed. Thus the higher speed he has, the farther along the projected slope he moves in one frame. For some unknown reason, the height he can get moved up in one frame is capped, thus you can only get displaced about 30 units above the ground, however if link is projected down a slope, you can get displaced to an indefinitel lower Y value based on how much speed you clip at.
Clipping through a corner requires two misaligned walls that create a gap between them. Whether or not you will clip through a corner depends on the following factors:
Clipping process: The game will fail to check the collision of either wall that link is item sliding against. Link will not get teleported down as he does with ground clips. Instead he will go straight through the corner and maintain his height and all normal item sliding properties still apply.
Explanation for why you clip: Link has two different types of collisions: His bigger collision has a 35 unit radius and is turned off whenever he opens up a chest or a door. His smaller collision is pin-point and at the center of his body and is only turned off when opening doors. If a vector is drawn from link's current position to what a theoretical final position would be should he move for one frame, and a wall is in the way, link will travel in that direction and stop at the wall on the next frame. His big collision works differently. His big collision acts more like a spring that takes 1 frame of delay to push link back to 35 units away from the wall he was pressed up against. Therefore, if a small gap exists in a wall, Link can travel through it as long as he has enough speed to pass clean through the gap, never passing within 35 units of the wall. As long as his small collision passes clean through the gap, it will not be stopped by the wall.
For a future TAS, it will be necessary to compute link's exact speed while item sliding. It is possible to use the following equations to calculate what link's speed will be on the next frame given his current speed and stick position. While aiming with a first person item, the speed equations are as follows:
***NOTES: The Next speed is the speed on the next frame. Current speed is the speed value on the current frame. Stick position is the distance of the stick from neutral, calculated as the square root of both X and Y float values squared.
At a speed value of 45 (negative or positive) link's speed will neither increase nor decrease if stick position is not a factor. Under 45 speed holding neutral with negative speed, or having positive speed will cause link's speed to move towards zero. Over 45 speed holding neutral with negative speed or having positive speed will both cause link's speed to indefinitely increase, at least until the game crashes.
The game has a check (assertion) that your potential position is staying smaller than 100000000000000000000000000000000 (1.0*10^32) plus or minus on every axis. If it gets bigger, the game hangs forever voluntarily. On CEMU the function is either not implemented yet or doesn't halt execution, you can build up speed infinitely. The maximum speed possible then is 3.402823466(10^38) (max float size). It simply does not increase any further nor do you overflow/get infinity. If you reach that speed you stay at that level (takes like 8 seconds).
Now the way collisions seem to work is that the game casts a line between your old position and your new position every frame (old pos + speed value = new pos) and checks if there is any collidable wall/object in-between. If there is the game adjusts the new position to stay on the in-bounds side of the collision. So while a certain, not even that high, speed would just take you through the barrier, the check notices the barrier is in-between, and so you only be moved to the barrier. This sort of collision check seems to fail on some edges/stairs and uneven terrain (especially with higher speeds), and so the game doesn't detect any collisions. If you do this on a wall that leads to an OoB area and no further collisions are after it that might get detected, you will be moved the full amount of your speed value.(edited) After only like 3 seconds or so, your speed is so high that you get set to a location that is so far OoB that it simply cannot be rendered anymore. The renderer, at least, crashes in that case and you hardlock (both SD/HD). This also happens if you manually edit your position to such a high value. Since only one island is loaded at a time, locks can easily happen on the ocean if you shoot off one island. Since the terrain is very uneven, you also clip pretty often once you reach a high speed making it look like the speed crashed the game; in that case, however, it is often your position and not the speed that causes the issue.
Error message for too high speed/position on TWW SD (is checked before collision check):
"Failed assertion -1.0e32f < pmpos->x && pmpos->x < 1.0e32f && -1.0e32f < pmpos->y && pmpos->y < 1.0e32f && -1.0e32f < pmpos->z && pmpos->z < 1.0e32f in "dbgs_acch.cpp" on line 541"**