TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #6154: fmp & Yuzuhara_3's SNES The Legend of Zelda: A Link to the Past "full inventory" in 52:52.44

Console: Super NES
Game name: The Legend of Zelda: A Link to the Past
Game version: JPN v1.0
ROM filename: Zelda no Densetsu - Kamigami no Triforce (Japan).sfc
Branch: full inventory
Emulator: Bizhawk 2.3
Movie length: 52:52.44
FrameCount: 190660
Re-record count: 211959
Author's real name:
Author's nickname: fmp & Yuzuhara_3
Submitter: fmp
Submitted at: 2018-11-17 12:30:54
Text last edited at: 2018-12-28 13:03:34
Text last edited by: fsvgm777
Download: Download (36356 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
The Legend of Zelda: A Link to the Past is the third game of its series. It began development in 1988 as a NES title but was ultimately moved to the SNES, being released in Japan on 21 November 1991, exactly 1 year after the console. It set new standards for the system and was among the first games to use 1MB of memory. The game is widely regarded as one of the best video games, both of its era and of all time. A Link to the Past spawned two official manga, a Satellaview spinoff, a GBA port, a 3DS remake, a popular randomizer, and rereleases on the SNES Classic and Wii Virtual Console. Nearly 30 years later, it remains one of the most popular speedrun games.


(Link to video)

I had been playing this game for well over a year, becoming heavily involved in glitch hunting and (meme) category routing. I was well aware of the existing TAS, but I was inspired by Tompa's showcase with commentary to give TASing a shot for myself. After doing a few poorly optimized projects, I decided I enjoyed this enough to expend effort into a properly optimized run. Ultimately, I decided on glitched 100%, and began my first draft using the RTA route as a base without even visiting the forums. A week later, that draft was done, with a TAS time of 1:01:23.35. I promptly made my account and posted the WIP, then started reading the forum backwards to see if there was anything interesting discussed. The second draft was a massive improvement, clocking in at 58:17.49. But that wasn't enough. Starting with draft 3, I got Tompa and Yuzuhara to help squeeze out every possible frame, so that if there were to be a next draft, it would be easier to get a head start. From there, our appetites for destruction ran hog-wild, and triple-digit improvements were being punched out of previously "perfect" segments.

For this run, we follow the same definition of 100% as RTA:

Categories

Rules

  • No heart piece/heart container duping
  • All glitches allowed

One of the things we skip are arrow and bomb capacity upgrades. For those unfamiliar: arrows and bombs have a starting cap of 30 and 10, with a maximum of 70 and 50, respectively. To increase these caps, you must visit the great fairy at the Pond of Happiness on the island at the center of Lake Hylia. Once there, you offer her rupees to slowly upgrade what you can carry. Each munition has 7 upgrades (6 that are +5 and a final one that is +10). An upgrade is offered every 100 rupees, coming out to a steep 1400 total, more than you can carry at once. The first 100 rupees need to be thrown in 20 at a time, but the rest can be thrown in 50 at a time. That's 31 tosses. Each toss takes like 800 frames, with a 256 frame cooldown for tossing again, and a couple hundred frames each time the fairy pops up. Some quick math gives us (800 * 31) + (256 * 30) + (14 * 200) = 24,800 + 7,680 + 2,800 = 35,280. That's 588 seconds, or 9.8 minutes. 9.8 minutes of the same thing over and over again. In a game that already has 10 minutes of text. For a sub-1 hour run. That doesn't even take into account the time we'd need to spend getting rupees or routing in a second trip.

For items and equipment, "final upgrade" is the criterion, because there is no actual upgrade system. The gold sword and bow+silvers are the only items which specifically require the version below. The flute and powder only require use of the item that precedes it because the action to obtain them is exclusive to said item. Everything else is obtained just by collecting it. This allows us to skip the blue boomerang, blue tunic, power glove, fire shield, and the master sword (😱).

The main stipulation we take on is not duplicating heart pieces or heart containers (although we do not implement a strict source requirement). The reason for this is that it trivializes the bulk of what separates this category from a regular full game completion. You will see very early on how simple it is to duplicate hearts. While this may seem arbitrary, duplicating also means that there will still be more heart pieces or containers to be collected. But beyond this, anything goes, so long as everything mentioned gets completed. We even get to see something that looks like heart piece duplication (but it provably isn't!). I discussed this issue with a couple people on the ALTTP discord, and the consensus was that if a heart piece is to count, it must be obtained while its room data is loaded (more on this later).

Even though this game is a masterpiece, it's also pretty bad. It's littered with glitches, many of them incredibly easy to perform in real time. Once you look at it from a TASer's perspective, it just gets worse (or better, as it were). And fast. The ALTTP community is blessed with a number of talented ROM hackers, including a full disassembly and RAM log by MathOnNapkins. The code has been described (by multiple people) as looking like the product of "two guys who hated each other and avoided talking". With those existing resources and our knowledge, the game is our bitch. We abuse it mercilessly to collect everything that matters in under an hour.

Emulator used: Bizhawk 2.3, bsnes core. The Japanese 1.0 version is used because some of the more useful glitches are fixed in all later revisions, most notably super speed and item dashing. Just as well, pretty much all glitch knowledge is based on this version. While there's almost a certainty that most of this route would work the same on other versions, the game is being destroyed to an extent that I'm more comfortable sticking to what I know will definitely work.

Glitches and tricks used throughout the run

This run is heavily glitched, both for routing and optimization. Even though we have full access to all the powerful glitches this game has to offer, we don't get to use many of them to their maximum potential (ask me about west somarias). In such an open game, there are so many possibilities for traversing the overworld and underworld alike. This means there's a lot to explain just to understand the complex beauty of the run. Outside of this main glossary, there are glitches only used once that will need explaining when we get to them. There are also hundreds of individual pieces of tech that won't be covered, just because they won't add to the viewing experience.

This section covers glitches and tech used more than once or twice. Explanations of single-use glitches are given when relevant.

Wobbling and pumping

Link's movement speed is governed by subpixels (though, more correctly, they're part of his velocity), giving him an extra pixel every time these values roll over. When moving up or left, these pixels are gained early. Moving down or right, the pattern is reversed, gaining them later. Any change in D-pad input will generally be considered a change of direction and reset the subpixel pattern. By alternating < and <> or ^ and ^v, a constant optimal speed can be maintained. This is called wobbling. It isn't possible to wobble down or right.

When against a wall, pressing a diagonal into it will give us the same subpixel reset with no change in the direction of our velocity. This is called pumping. Conversely, doing these inputs when going right or down will prevent us from gaining our subpixel boost, slowing Link down. This is called anti-pumping. This latter technique is used sporadically to avoid overshooting a target or to manipulate RNG.

Teleports, Pixelports, Snapping, and Zips

These are all subspecies of the same mechanic: the game trying to kick Link from an invalid position to a valid one. Teleports are the most powerful, moving Link up about 100 pixels or down about 45. These teleports are used mostly to get out of bounds, but they are also time saves in several places. Some upwards teleports are slightly weaker, only kicking Link 27 pixels. These are used less often, and only as a frame saver.

Pixelporting is a different fiend, being more similar to a zip. Various combinations of directionals can kick Link 0-6 pixels (7 when going down or right) in an attempt to line him up with the 8x8 grid. This can be done when Link is squished into a tight 16-pixel-wide space (sometimes requiring him to be facing the wall). Most commonly, these inputs are ^> then <v> or v> then <^>. Pixelports going horizontally can only be done near the edge of the gap, using ^ then ^v> going left or ^ then <^v going right. Pixelporting generally gives an average of 4px/f, being slower on staircases in some cases (2-3px/f).

When clipped into a tile and at least 2 pixels away from a multiple of 8, pressing the direction into the tile will snap Link in the opposite direction to the next multiple of 8 coordinate. Sometimes it gets Link stuck, but sometimes it can be repeated to gain 4px/f average movement. This also happens in doorways when carrying an object. Being completely squished by a wall can sometimes lead to larger boosts, upwards of at least 15.

Zips work by holding <v or <^ while inside walls at certain heights, moving Link 8 pixels to the right every frame.

General movement stuff

Conflicting directionals give rise to moonwalking. When moving left, <^ or <v on a frame after <> will face Link north or south without losing speed. The same applies to ^> or v> when turning around. This saves time pixelporting and opening chests.

Moving diagonally is optimal 99% of the time. Some cases exist where more complicated movement is better. When going up and left, diagonal movement is exactly as optimal as combined cardinals with wobbling/pumping.

If Link is 1-3 pixels off of being aligned with a wall or block, using a perpendicular direction will align him properly and advance his subpixel, giving him a pixel boost that potentially speeds up south and east movement.

Pressing < near the end of a manual staircase will get you out of the slower stair speed a few frames earlier, known as "stair lag". This also applies to spiral stairs between rooms, unless we use invisistairs.

If entered with a diagonal, <v> going south on tight manual stairs will be a constant 1px/f.

Damage boosting

Damage boosting is only faster when it sends you in a diagonal direction or provides useful iframes. It is more useful in the beginning of the run, before the boots. Another factor that rules out damage boosting is the heart refill animation after defeating a boss. A damage boost will never save 10 frames of raw movement, but 1 heart takes 10 frames to animate on the refill. This includes quarter-heart damage, despite it visually being a full heart on the HUD.

Pendant/Crystal catching

Pendants should be caught from the bottom to catch them as soon as possible. Crystals are a bit trickier, requiring specific positioning based on the camera. A good crystal catch minimaxes the time at which Link catches the crystal and the time the crystal spends rising into the air. When the camera is broken, it is possible to prevent the maiden from showing up, which reduces lag. For some reason, there are positions on a couple crystals that are magically 10 or so frames faster than the next best catches.

Keydashing

If Link lands exactly on the pixel in front of a door during a dash, he won't bonk, continuing through the door. This can't be done going south.

Quickhopping

By pressing A on the same frame Link is trying to jump a ledge, he will jump immediately, saving 19 frames. This only works once Link has the pegasus boots and won't work if pressing A will attempt a grab. There are a few spots where quickhops are just not possible.

Quickwarp

If the X position of the game camera when masked with 0x6 is equal to 0x6, the overworld mirror animation ends early, saving around 30 frames. Some locations cost too much time to get the quickwarp or would interfere with the next actions.

Itemdashing (JP1.0 exclusive)

Pressing Y and A on the same frame allows an item to be used while charging a dash.

Spinspeed/Super speed (JP1.0 exclusive)

By releasing a spin attack and pressing A on the first frame after B is released or by itemdashing with the hookshot, Link will enter a state of stored dashed speed. This removes the use of his sword but arms the super speed state. By touching a set of manual stairs to obtain speed state 2, this stored speed will be given to his actual speed upon exit of that state, giving him 4px/f movement cardinally and a 3-3-2-3-2-3-2 pattern diagonally. This happens because you are allowed to dash up these stairs, albeit with slowed movement. So when exiting, the game tries to restore whatever it thought your original speed was. Super speed also greatly speeds up stair climbing to 4px/f by increasing the potency of stair pixelporting. While in this state, it becomes slightly easier to clip into diagonal walls. Another side effect is that all ledge jumps become quick hops. Taking damage or lifting an item will remove the speed, but leave the state armed. Jumping a ledge, transitioning, using the boots, or obtaining an item will both remove the speed and disarm the state.

As long as we don't want to stay on our current item, switching to the hookshot for a single super speed will often be faster than charging and releasing a spin attack. If we can fit movement in during the spin charge, the sword spin can gain an advantage. If we have places to use the hookshot before or after the super speed, hookspeed can take that advantage back.

Dash buffering

Link can move on the same frame he starts a dash charge, giving him a small boost. This name is from RTA, where it has applications in buffering movement, but in a TAS, it mostly serves as a minor frame save on most dashes. Dash buffering can be used to move into slopes on the overworld when Link is facing north or south, but whether this is faster depends on a number of factors.

Hovering

While charging a dash, Link cannot fall into a pit. When not charging, he has 1 frame of idle/slipping state before he falls. This allows Link to just walk over holes by dash buffering every movement.

Rail clipping/Pit clipping

Just in general, rails have bad collision. When near a pit, they can also be clipped at the corners. Larger tiles can be partially clipped near pits as well.

Ancilla tossing

When Link picks up a bomb or somaria block, he can't throw it until 12 frames after he's able to move again. This timer still counts down when the menu is opened, making this a valuable time to switch items. This trick was discovered during the run, thankfully, on its first possible application.

Screenwraps

Bypassing a screen transition can be used to reach locations faster, albeit with a broken camera. Indoors, this can be done with pixeports. Outdoors, it requires either a teleport or a ledge hop.

Slope jumps

I don't think these have a name, but clipping into a 1-tile-thick diagonal wall far enough can make it behave like a ledge, allowing Link to jump out of bounds.

Funny auto-walk thing (FAWT)

When transitioning south on the overworld 17 pixels below the actual transition line, Link enters an autowalk state that continues for a couple dozen tiles longer than a normal transition. This wonderful name comes from the great superskuj.

Using items in doors

Normally, the only items Link can use in a doorway are bottles. By snapping or moving perpendicular to the door, Link will no longer be considered to be in a door, allowing him to use items and his sword. Moving parallel to the door will flag him as being in a door again.

Door juking

Door juking is a large category of techniques that encompass all methods of bypassing or manually corrupting a door transition. This is most commonly done with pixelports and moonwalking, but a few places use an item snap. Door juking is mostly used to get us to rooms we weren't supposed to be in, but it serves its purpose as a frame saver as well, being able to skip screen transitions entirely.

By using the inputs v, <^v>, v, <^v>, v, ^>, we can break the camera to scroll with us, allowing interaction with sprites and changing the behavior of transitions.

Door clipping

After using conflicting directionals to wiggle or pixelport into a door, Link will be in a weird position that allows him to move left or right into the wall. This can be used to skip entrance transitions from the side and trigger a screen transition instead. This can also be used to completely change how a transition works. One such effect is getting a north/south transition in the center of a supertile (largest chunk of underworld map) to behave like an east/west transition. Or vice versa.

Data spoofing and overwriting

Whenever the room ID changes ($A0), new data is loaded into room memory ($400-$403), and old data is written to mirrored SRAM. By interrupting a transition, we can keep some of this temporary data, write it to the old room, load new room data, and change our room ID, all while staying put. This is mostly done with somaria jukes in this run. It can be used to affect the location of the next supertile transition and to load different items into chests without visiting the actual room.

Somaria juke

Somaria jukes are a data-spoofing door glitch (well, all but 1, which we don't see) performed by pushing a somaria block into a door transition. Weird things are done to change the game submodule ($11); it increments the value. By pushing a block into a transition, we sort of delay the effect of a submodule and increment it twice. All the somaria jukes we'll see in this run bring the game submodule to 03, either by doing 2+1 or 1+2 (order matters, and this depends on the door behavior). Somaria jukes will break the camera on the axis they were performed on. In addition to spoofing room data, they also directly corrupt memory beginning on a buffer and its control bytes at $1100. Unfortunately, this corruption is mostly useless, with only 1 effect that you probably wouldn't notice if it weren't pointed out later in the submission text. Once a somaria juke has desynced sprites, we will be stuck in a slow movement state when performing one. To fix our speed, we can charge a dash for 1 frame.

Exploration glitch (EG)

Despite its vague name, exploration glitch is a specific type of out-of-bounds that refers to Link standing on the wrong layer. This can be done directly in various ways (most commonly skipping staircases) or armed and used later. The method for arming EG used in this run is jumping into a pit from a ledge. Once armed, EG can be used to land on the lower layer by taking a hit from an enemy or bonking against an object. For rooms without a lower layer, this just puts Link under the floor, allowing him to roam freely. This can only be done when the stored EG strength is "strong", which is the variable $44A, used to describe the behavior of layers in a room. It will be set to the value of the last room with an explicit value. Most rooms have none, but some rooms are strong and some are weak. Weak EG does not give any useful effect, and entering a weak EG room can sometimes get you stuck.

Link can get back in bounds by hopping a ledge (which always send him to the lower layer when he's in a room with strong eg or "real layers") or using automatic stairs. Stairs that go upwards from south to north (dubbed north stairs) explicitly set Link's layer. Stairs going the other way (dubbed south stairs) just swap Link's layer, regardless of where they were meant to take him. Stairs in rooms with fake layers (rooms that set weak EG) do not affect Link's layer at all.

Camera mechanics

In general, the camera will follow Link around and only stop when it hits the boundaries of the room or screen. When the camera is not locked, it can seem broken. This usually happens by entering a room from EG at a weird coordinate. In those cases, the camera will easily snap back and behave as normal. When the camera is properly broken, it will ignore screen and/or room boundaries on one or both axes. The camera being broken can completely change the behavior of door transitions. It can also be used to manipulate the status of sprites or ancillae.

Cave state

Every dungeon has an ID, including places that aren't dungeons (which all share the same ID). When entering the underworld via an entrance that doesn't lead to a dungeon, the game sets the current key count to -1, which means "don't show keys on HUD". As an unsigned byte, that's 255. There's nothing in the code that prevents you from using keys when your count is this value. As such, we can open doors in a dungeon by entering through a cave, allowing us to skip grabbing keys. This value is set explicitly every time you enter a cave/house, so it is effectively infinite keys. In addition to 255 small keys, big chests and big key doors check for one of several dungeons' big keys, one of which is Hyrule Castle's.

Fake worlds

When you enter the underworld from the Light World and end up exiting to the Dark World or vice versa, you'll have the world ID of the overworld you entered from. Enemies will behave as if they are in that world, and the next screen transition will correct your world. In fake dark world, this can be corrected by using the mirror, which simply inverts your world ID; i.e., in this case, change it from LW to DW.

Wrong warping

Every room has a pit destination, even rooms where pits deal damage or rooms without pits normally. Using a data spoof, pits can be tricked into behaving differently, sending Link to another room instead of dealing damage. If pits can be reached or created where they normally shouldn't be reached/exist, they will also transition to the room's "destination".

Stair skipping/Diagonal stairs

Holding <^> going up or <v> down automatic stairs will ignore the tile collision that puts Link into an autowalk. This can be used to get Link into or out of EG, or to just skip the longer animation in rooms with fake layers. With his sword primed or with a specific subpixel, you can get Link to move diagonally north-east or south-east, which is faster still. Stairs can be climbed in any diagonal direction by hitting the collision diagonally off center from EG.

Invisistairs

Pressing <^> on spiral staircases that lead to another room will put Link in a different position after climbing. This is only useful on some staircases, where it will place Link a couple tiles lower. Another consequence is turning Link invisible until his next room transition. This trick's name was made up on the spot.

Frame rules

Hitbox detection generally only happens once every 4 frames. Some enemies have different periods. This mechanic can be manipulated to phase through enemies or get hit at a later point. It also appears that certain transitions have small frame rules that can nullify small saves.

Chest turning

Pressing a direction and A on the same frame in front a chest will move/turn Link on the same frame the chest is opened. This has potential to save a single frame, but more importantly, it adds swag to the run.

RNG manipulation

RNG in this game is pretty dumb. It's somewhat unpredictable in the short term but is prone to patterns in a long-term analysis. The algorithm is just frame counter + horizontal pixel counter + previous value. The biggest problem with this is that pretty much all results from RNG are subsequently given a bit mask to determine their result, making results frustratingly predictable in certain segments.

The easiest way to manipulate the RNG without losing frames is to just move differently, like wobbling in the opposite pattern or mixing diagonals into movement earlier or later. A reliable way to cycle it when nothing else is running is to spawn ancillae that call the PRNG (which we do with sword charge sparkles). In the early segments of the run, pressing the A button will usually provide just enough extra work for the CPU to delay the RNG functions and effect a different value. Later in the run when we have obtained the boots, the fact that this will stall Link for 1 frame means it is no longer a reliable form of manipulation in most situations.

Prize packs

All enemies are part of some prize pack (although one such prize pack is filled with nothing). Enemies that are part of a non-empty prize pack have a 50% chance of dropping an item (except prize pack 4, which is 100%). If they do drop an item, it will be the next item in the prize pack. This makes the content of drops predictable and easily manipulated. Unfortunately, this counter, unlike similar gameplay addresses, is reset with a save and quit.

Lag reduction

Lag is unavoidable in this game. Literally everything causes lag. Having more health causes lag. Having more rupees causes lag. Watching this TAS causes lag. But most of the lag comes from screen transitions or text loading, with a fair amount in rooms overloaded with enemies and boss explosions. In all cases, it's (obviously) best to lower the workload of the CPU. The biggest impact you'll see from this is decreased use of diagonal movement, which is much more expensive processor-wise than cardinal movement. Grabbing the wall during crystal drops and crystal cutscenes can save lag by hiding the shield.

The underworld

Understanding why all the door glitches and teleports work requires knowing that the underworld is a gigantic quilt of rooms. There are maps of 256 and 40 of what we call "supertiles", each composed of 4 "quadrants" or "subtiles". Inter-supertile transitions are known as "supertile transitions", and intra-supertile transitions are known as "subtile transitions". The underworld is composed of 2 maps. The bigger map holds all multi-entrance rooms. It's known by several names, including "primary", "main", "multi-entrance", "EG1" or just "the EG map". Multi-entrance means that if we use an entrance to this map and then use a different exit, that exit will lead to an associated point on the overworld. The other map doesn't do that. When entering the "secondary" or "single-entrance" map, the game remembers the exact coordinates of Link and the camera (including how messed up it is) and restores them as such upon exiting. This means that even if you go to a different room, you'll return where you originally were. The one exception to this is Link's house, which behaves as a multi-exit room and always exits to the same spot on the overworld. The other main difference is that going out-of-bounds on the primary map will wrap around, taking you to the other side; on the secondary map, this results in a crash.

Tools used

Many memory addresses made it in and out of my RAM watch, but a few dozen stayed there the whole time. Some of these addresses (namely "Enemy 1 HP") were merely bookmarks so that larger chunks of data could be viewed in the hex editor via the context menu.

In addition to memory watch, I used a couple scripts to make my life easier. The script I made the most use of was a collection of keystroke-activated routines used to mash text and wait out/for periods of no input. I also made decent use of this hitbox script that allowed me to see where invisible guard search beams were and where Link was when he wasn't visible (sometimes; it didn't work with an out-of-sync camera).

Memory watch

Addresss Size Format Notes
7E0010 Word Hex Can do things
7E001A Byte Unsigned Frame count
7E0020 Word Hex Y coord
7E0022 Word Hex X coord
7E002A Byte Hex Y subpixel
7E002B Byte Hex X subpixel
7E0030 Byte Signed Y speed
7E0031 Byte Signed X speed
7E0046 Byte Unsigned Link stun timer
7E005B Byte Unsigned Waterwalk
7E005D Byte Hex State
7E005E Byte Unsigned Speed
7E006C Byte Unsigned In door
7E0079 Byte Unsigned Spin counter (48)
7E00A0 Byte Hex Room ID
7E00E2 Byte Binary Quickwarp x11x
7E02E3 Byte Unsigned Sword cooldown
7E02E4 Byte Unsigned Can't move
7E02EC Byte Binary Item collision
7E02FA Byte Unsigned Statue drag
7E032A Byte Unsigned Swimming
7E0371 Byte Unsigned Pushing
7E0374 Byte Unsigned Dash countdown
7E0375 Byte Unsigned Hop countdown
7E0401 Byte Binary Room data doors
7E0403 Byte Binary Room data HKcCCCCC
7E0618 Word Hex Vertical camera
7E061C Word Hex Horizontal camera
7E0C08 Byte Hex Duck
7E0E50 Byte Unsigned Enemy 1 HP
7E0FA1 Byte Hex RNG
7E1CE9 Byte Unsigned Text countdown
7EF360 Word Unsigned Rupees
7EF36D Byte Unsigned Health
7EF36E Byte Hex Magic
7EF377 Byte Unsigned Arrows
7FFE01 Byte Unsigned Digs

Route

Escape

96 frames are sacrificed to enter a special file name, and a small handful of frames will be lost throughout the run by having more characters, but a meaningful file name was more important overall. あ has had enough adventures; it's ユロロ's time to shine.

There's nothing that special about the first minute. It's just optimized movement with a few pixelports and snaps to reach the secret passage. At Link's uncle, a double door juke lets us skip the transition and safely exit. One damage boost is taken in the courtyard, and no more are needed or possible in this segment.

Clipping the entrance to hit a screen transition lands us fairly deep in the dungeon. Layers are weird in this game, so we end up on the upper layer of the room even though we appeared to be on the bottom layer at the entrance. Hitting the auto stairs from the opposite side swaps us to the bottom layer to use spiral staircase. In the prison, 2 pots takes care of the ball-n-chain guard. He drops a big key whose importance has nothing to do with Zelda. We also rescue Zelda. And we get the lamp. With the princess in hand, we go back upstairs. We use invisistairs again, so the princess will be invisible until her rescue cutscene starts. Actually, you still won’t see her unless you disable BG2. We're only invisible for one room. Although, during the first room, we enter EG, so you won't see Link anyways until he's briefly back in bounds (unless, again, BG2). The room we want to reach is the horizontal hallway that connects to the greenie hallway. This is a room is unique, because it is the only room in the game where doorways connect to non-adjacent rooms. It also happens to be right next to the sanctuary. Only an intended door transition will get us there from where we are, so we exit EG right at the door and use it normally. After moonwalking the door, we need to manipulate the camera so that we're back in sync with sprites; otherwise, the game would hardlock when we enter the sanctuary, because it can't find Zelda.

Eastern Palace

There's a deathwarp coming up, so we take a few damage boosts to whittle down Link's health. On the Eastern Palace overworld, a trick known as Eastern clip is used to wrap around to the top of the screen, avoiding the mazey layout of the area. Once inside, a couple door jukes bring us to the northern bridge of the cannonball room. We go back to the cannonball room and juke west to land in the middle of the room. Skipping the north transition once allows us to be back in sync with sprites.

The 10 arrows we grabbed under the pots will be all we need for the entire run. The deathwarp is necessary to get back to the front of the dungeon with a fresh camera. This time, the door in the big key room is used to reach Armos. We spare 5 of the knights, killing just 1. Because the other 5 are off screen, they're considered dead, so the one guy we did kill is considered the last and drops a heart. The camera is scrolled down to prevent the pendant from getting stuck in the wall.

Some collection

The first thing we do after killing 1/6 of the first dungeon's boss is turn in the green pendant for a pair of boots. We take our final visit to the sanctuary to grab its heart container then head straight to the Lost Woods for the mushroom and our first heart piece. Using an upwards teleport to enter EG, we head to Misery Mire in cave state. With the castle big key, we can grab the cane of somaria, which is perhaps the most broken item in the game. As such, it's something we want early. Moonwalking the door in the map chest leads to the east side of the supertile, where the cane of somaria is. The pit brings us back to our original position safely with a convenient heart of damage. Upper-layer EG is used to reach the north-east door and a door juke gets it to behave like a subtile door. Without changing the behavior, this door would have been a transition after 2 somaria jukes. The camera is corrected so that Link is visible, otherwise somaria blocks would despawn instantly. 5 somaria jukes change the room ID from C2 to 72.

More camera correction ensures a proper transition to exit north, leading to room 62. Juking this door switches its behavior for somaria jukes. 4 east somaria jukes bring the room ID to 66. 2 more north bring it to 46. A juked transition leads to 36, the big chest of Swamp Palace. This is one of the saddest improvements of the run, because it obsoleted some clever memory manipulation much later in the run. But frames are important, and now we have the hookshot. This is mine and Yuzu's favorite item. It was underutilized in the previous draft, but its early collection in this new route gives us the opportunity to use it throughout the run for tons of time saves. An east somaria changes the room ID to 37, and a transition north to 27, the big chest of Tower of Hera, where we grab the moon pearl. On the bottom floor, we see our first instance of super speed. Well, we only see half of it, thanks to the broken camera. A downward teleport brings us below the wall so we can jump back in bounds to the exit.

The 2nd jump after the Spectacle Rock heart piece is right near a boundary line for overworld quadrants, so it seems to make us jump up; we actually jump down pretty far, but without the animation or camera scroll. One more jump lands us on the door frame to old man cave. The old man talks a lot and forces incredibly slow movement. Walking is the same speed as dashing, so it's literally just a waste of 31 frames (30 charge + 1 stop). Moonwalking the door in the 2nd room, cuts out 2 of his soliloquies and a lot of his walking, saving well over 800 frames. Once we exit the cave, we need to start taking hits for something that isn't quite a deathwarp. Knockback speed is always the same, and it happens to be faster than walking with the old man. Segment heart beeps: 80

Palace of Darkness

After the heart piece inside Spectacle Rock, we do a clip known as Kiki skip. Kiki is a money-loving monkey who can open the entrance to Palace of Darkness for 100 rupees. We ignore that bargain and use a downwards teleport to enter the dungeon. Spectacle Rock is on the bottom of the underworld map; Palace of Darkness is on the top. This transition wraps all the way around the underworld, putting sprites 65,536 pixel away. To finish the dungeon, we need to reload it by re-entering from the overworld "properly". Even though Kiki hasn't stepped on the button, the dungeon's entrace transition still exists.

Palace of Darkness supplies about half of the bomb route. We perform a door juke and entrance clip to transition north and break the camera in a specific way. After the big key, we perform a glitch known as death hole (JP1.0 exclusive). By dying on the same frame as we transition via falling, we spoof our room ID from 3A to 0A (the room we would have landed in) without a transition. We also end up 169 pixels higher, on the edge of the tile such that pressing ^ transitions down. Because our room was spoofed, this goes to the room below (1A), the big chest room, 2 tiles north of where we were. As a fun piece of trivia: if this were the first time we died, our screen would be all black, but because of the death in Eastern Palace, our visibility isn't obscured. As a consequence of death hole, our falling state ($5B) is stuck at 03. This gives us faster movement speed but gets cleared when we move horizontally in the underworld. After a hover to the big chest, we mirror out, resetting everything. A series of jukes modifies the behavior of door transitions and puts our camera in a specific position to allow a south transition straight to the boss.

Helmasaur was an annoying boss in terms of how we had to approach optimizing it. We have to take damage at the start to get past the spikes at the top of the room. The hit taken near the end of phase 1 is a valuable time saver. Not only does it cancel the hammer animation, it's done at the correct time such that Link is stunned for 8 frames (the value when recoiling off of Helmasaur's mask) instead of the usual 19 for taking damage. The lost hearts don't matter for the refill as we're low on magic. Nothing could save the lag frames from the boss explosion or heart, but 2 frames of lag were saved by grabbing the spike while the crystal fell and around 10 were saved by hiding the maiden.

Gargoyle's Domain

We have to mirror twice because we entered Palace of Darkness from the Light World, putting us in fake Dark World. We can't move much, but luckily, the dungeon exit places us on a quickwarp. We head back into Eastern Palace for 2 things. Since we already have the big key, it was a few hundred frames faster to get the fire rod from here as a detour. 7 somaria jukes brings the room ID from C9 to 59, and a center door west juke puts us at the Skull Woods big chest. Yuzu discovered this door tech a little ways into the 3rd draft, though we had no application for it yet. This is also the first possible application of the ancillae cooldown timer skip, which was discovered here.

Back at the start, we do 4 more somaria jukes: 2 east, 2 south. This brings our room ID to EB, the upper level of bumper cave. Spoofed data applies to all inter-room transitions, including exits, so this will lead us to bumper ledge. This part had to be redone, because it originally did 2 south then 2 east, which would respawn the Spectacle Rock heart piece with data overwrite. I went back to fix this, and thankfully it didn't desync. I also accidentally saved a frame, forcing me to wait for 1 frame before exiting. This 1 frame bothered me until I went back to see what happened if I let it get saved. It ended up lost to a transition. Once again, we are in fake dark world; however, we only mirror once this time, as we'll be staying for a bit. We need 30 rupees soon, and there is literally no better place up to this point to get that money. On the bright side, it just so happens that we will be walking by exactly 4 enemies in the rupees prize pack, which begins with blue, green, blue, red. So by some miracle, we can obtain those 30 rupees without going too far out of the way. Thankfully, these are the only rupees we need to worry about, as the rest of the money is going to be easily obtained.

The dash to Thieves' Town is fairly plain, but it was interestingly faster to overshoot the entrance from above to get super speed. Once inside, we hop the ledge from the wrong side to enter EG for the big key. The lag in the third room is unavoidable. There are 14 sprites loaded on entry and half of them are taxing on the CPU. Before transitioning into the next room, we go above the transition to break our camera. In the hallway, this broken camera allows the small key to spawn when we wrap around the room. The next few rooms are fairly simple, but I had to redo them for nearly 2 hours to get the desired RNG. Who knew it was so difficult to make a cricket face up? We need to kill this guy for the red rupee though, and he's the only way to get it. Something we did made this cricket stuck on a 64 frame walk timer (they can walk randomly between 64 and 191 pixels), but I couldn't figure out what. After the switch, we moonwalk straight to the bombable floor room. The transition back takes us all the way to the stairs room.

A downward teleport takes us through Desert Palace, which is situated right below the attic. The funny thing about Thieves' Town is the attic and basement are pretty close together, but the rest of the dungeon is halfway across the map. We do a couple transitions and jukes to fix our camera and grab the small key on the torch. An interesting approach keeps our camera and sprites synced for the basement. First, a south somaria juke is used, setting the room ID to 84, then 3 north bring us to 54. From there, we can exit north to the big chest for the mitts.

We need magic, so we get a drop from a blue zazak. In the brazier room, juking the northern door then moonwalking the transition gives a short transition that lands right on top of the stairs in the room above. This broken camera also makes the next 2 rooms easier, because we can't interact with sprites. In the second room, we need to correct our camera a tiny bit. For some reason, our current camera coordinates will effect some VRAM corruption that loses well over 100 frames to lag. These 3 somaria jukes changed our room ID from BB to 8B, a room in Ganon's Tower. The transition east leads to the big chest where we obtain the red mail. The movement here seems a little wonky, but that's because those jukes also messed with some of the tile collision. There are now some random holes in this room to avoid while maximizing our time on the conveyor belts.

Back at the entrance, we do a somaria juke east to speed up the travel to the boss a little. We can do it here because we'll only be travelling north, so the broken camera and transitions have no ill effect. Going right after the juke is 8 frames slower than going left for this room, but that extra bit of camera scroll we get from going left also gives the sprites in the next room a much better opportunity to destroy us with lag. With that accounted for, going left ends up losing the 8 frames it saved along with another 10 by the end of the next room.

Blind is as easy of a boss as it gets. As chaotic as it seems, there is not any RNG to the fight at all, with everything running on a script that plays out the same way every time. No matter what you hit him with, Blind takes 9 hits, 3 for each phase. The last hit has to be delayed so that the heart container drops far enough left to grab it such that the crystal is reachable.

Collectapalooza

Outside, we immediately head to the chest game. In this version, there is only one way to obtain the heart piece on the first chest. The code for the chest game has a conditional that prevents you from getting the same prize twice in a row (unless the prize is rupees). The index of the item you got on the first chest is stored in address $C8. That's probably the wrong address. It's definitely the address the game checks against, but Pinkus thinks the devs made a mistake. He believes that the unused $2C8 was the intended address. $C7[2] is a word that's used for a lot of things. Of particular note, textboxes ultimately set the value to 7, which just so happens to be the index of the heart piece in the chest game's prize array. The only way we know for obtaining the heart piece from the first chest is to die and be revived by a fairy, which sets a different value. Of course, none of this fun trivia is relevant, as we want to grab 2 chests anyways: 100 rupees and the heart piece. The chest game is another great instance of the PRNG's terribleness. While I was able to obtain 100 rupees on the first chest without any delay, the 2nd chest is more or less up to the frame counter. If you were to frame advance the 2nd chest for different grabs, you'd notice that the RNG seed is just incrementing with the frame counter, because nothing else is running that calls the RNG and we can't seem to do enough to affect the hcount. We are absolutely forced to wait for our prize, but at least it's only 1 frame.

The next item to collect is the flute, which requires the shovel. The movement here is fairly uninteresting, just a few dashes and some frames saved with the hookshot. When grabbing the flute, we need to go under it a bit to get the quickwarp back. An upwards teleport gets us onto the ledge to mirror into the race game. By moving up a few pixels and then pressing Y<v, we get boosted 8 pixels to the right but with our portal on our original position. This lets us immediately grab the heart piece then be kicked back 8 pixels to the left. Then the collision detection kicks forcing a mirror bonk, cutting out the waiting time for reusing a mirror portal. Unfortunately, neither of these mirror transitions could be quickwarps. We're still at the same height, so we can continue zipping up until the stump.

You can talk to the digging game host surprisingly low, which is good, because the dude takes forever to move. Activating spinspeed and walking are about even here, but walking had better RNG management, making it more efficient overall. The digging game is our second-to-last opportunity to gain rupees, but it's not a top priority. We only need to have 170 when leaving, which is easy enough to do. So, obviously, we go overboard and get double that. We can spend up to 5 frames to obtain a red rupee (both grabbing and manipulating) before it's not optimal. I'll get into this calculation later. The sword is held out at the start to keep us facing left, as well as some RNG manipulation. We'll be getting plenty of money, because the digging game is hardcoded to not spawn the heart piece until you've done 25 digs. The dig count is incremented before the prize is decided, so it can be obtained on dig 25. The chance to get a chance at the heart piece is 1/8, followed by a 1/4 roll to actually get it. With nothing to strongly influence the RNG, this one was a massive pain to manipulate. So how rare is this dig game? If you want to calculate the red rupees luck, you can plug n=24, k=19, p=0.125 into a binomial calculator, and you'll get 0.0000000000000015127261524308915%. Then multiply that by 1/32 for the heart piece: 0.000000000000000047272692263465359375%. This was a whopping 33 frames more efficient than anything else we could come up with.

After the digging game we grab the frogsmith and mirror to the library to steal the book. On the way there, please note that Link performs the prayer animation for exactly 1 frame. Please check it out. Frame 68908. The hammer pegs puzzle is one of the most important item dashes, because it saves you from banging down every peg one at a time. The smith requires 2 transitions for your sword upgrade: 1 to reload the room and 1 overworld transition to trigger the tempering. We can reload the room right away, but we take a small detour into Kakariko for the tempering. There are a lot of items here. Get a bottle from the bar. Show the sick kid that bottle for the net. Activate the flute. Buy a bottle from the merchant. Go to Kakariko well for its heart piece. Go to Blind's hut for—for the ice rod? There were a number of ways to route Kakariko, but this path that optimized hookspeed usage ended up king. 1 frame is sacrificed at the bottle merchant to show a cute graphical glitch with the hookshot.

We return to the Dark World briefly to obtain the purple chest. The reason we used the lamp in Kakariko was because we wanted our magic drained for a glitch called "fake powder". Without enough magic to create a somaria block, we're alerted with a text box. After that text box, the game is still looking for something to do. If we menu to the mushroom, it will decide to perform the magic powder routine. This also comes with a couple side effects: We can move during the animation, and our subpixel will be reset every frame without wobbling. You need to wait some time after fluting to turn in the mushroom, so we can use a swordspin for super speed fairly losslessly. When claiming the powder, we also buy a green potion for a little something something later. The purple chest sucks, because if we try to dash, the chest will stop following us. There are a couple glitches that let you dash without dropping it, but they're too slow to set up.

We reach bombos tablet with a downward teleport. After bombos, there's an upwards teleport that just requires entering the screen at the correct Y-coordinate. That's followed by another teleport to get into the cave a couple frames faster. This heart piece is followed by checkerboard cave, which has some neat push-block clipping. The last item for this segment is the heart piece in Aginah's cave.

Tower of Hera

This short segment starts with a save-and-quit to the mountain cave, because I had determined there was at least a 70% chance that Tower of Hera was up here. We clip into a wall and slope jump to wrap around the screen and lend right on top of what is likely the Tower of Hera. Once inside, we use the entrance as an east/west transition to end up behind the wall on the east side of the supertile. From there, we can jump back in bounds into the fairy room brazier. We use invisistairs to reach the top floor, which is sort of a shame, because what we do next is pretty awesome. Rather than jump down to enter the fight, we hit an upwards teleport that lands us over the pit and then hover to the boss. A slash and a spin attack defeat Moldorm easily.

Skull Woods

We continue The Adventures of Invisible Link Doing Cool Things You Wish You Could See with an upwards teleport in super speed to clip into the clouds. A double splash lands us onto floating island for the heart piece. Still invisible, we open the portal to Turtle Rock and enter it, then clip into the wall on the east to wrap the entire overworld map. This lands us in Skull Woods with a danger situation: if anything we do makes us move right, we'll hardlock. Our only option is entering the middle segment of the dungeon to reset the overworld camera. After resetting the camera, we just enter the last segment of the dungeon normally and then use stairs to get into EG.

I

Hate

Mothula.

OK, but, actually... The fight wasn't that bad. Mothula's room is weird. Despite looking like 1 layer, it's really 2, but they're sort of merged. As soon as we enter her supertile, we're kicked out of EG, and we can fight Mothula normally. This fight is the same strat Tompa used. Hit Mothula into the spikes such that the damage isn't cancelled but the immunity timer is. As far as we're aware, this fight cannot be done faster. Our camera isn't broken, but it's still not snapped horizontally. We keep it this way so that we can spawn the crystal near a wall, letting us save a few frames of lag.

Plaid World

This is one of the coolest segments of the run. That fire rod shot is intentional and important. We need not full magic. Before the really cool stuff, we get the butter sword and the silver arrows. By wrapping the screen on Death Mountain, the high byte of our Y-coordinate still changes even though we haven't transitioned screens. The mirror creates a portal at our true coordinates but leaves us on the mountain. Using the flute fixes our camera so that we can interact with our portal to return to Dark World, right on top of the fat fairy's entrance.

We return to Hyrule Castle and clip the entrance again to reach the basement. Remember earlier how I said we were on the upper layer? That's extra important now. We want to use that door here, but we need a key, so we get one from the blue guard. Keeping our camera unsnapped is also pretty vital to what we're doing here. Once the key door is open, we pixelport past the transition and then hit from above, drinking a green potion on the same frame. This is my co-author's most famous trick: Yuzuhara's Bottle Adventure. Named after the Ocarina of Time bottle glitches, this door glitch works in the same vein as somaria jukes. Potions change both the main module ($10) and the submodule ($11). We can increment the game's submode by an extra amount with a transition. Supertile door transitions increment the submode by 02. In this case, we're getting main module 0E and submodules 08+02. This value (0E0A) just so happens to be the flute menu.

So what happens when you use the flute in the underworld? Well... the game does what you expect, and lets you use the flute, but it doesn't really know where to draw data from. Things look normal, but they're not, because now, our collision is based entirely on the game's RAM. It just so happens that where we land on Death Mountain has 2 important collision tiles. The first is a rupee tile. We can run back and forth on this to get 5 rupees every time we hit its trigger, which is every frame when moving up and every other frame when moving down. I'm not sure why it takes longer going down, but this is where the efficiency figure for the digging game came from. We can gain 30 rupees every 8 frames, which averages to 3.75/f. With the digging game, we can spend 5 frames for a red rupee because 20/5=4, and 4 has been mathematically proven by the Peano axiom of addition to be greater than 3, thus making it more efficient. Q.E.D.

The other important collision nearby is a water tile. The game still doesn't know where we are. If we transitioned now, we could see sprites, but we couldn't do anything with them. But if we splash into water, the game tries to kick us back to where we were from our last transition. And this is why it was important that we stayed on the upper layer when clipping the entrance. That was our last transition, and the game is now trying to bring us back there. You can reference the EG map to see that we're in the middle rows on the far left. Death Mountain is at the top of the overworld map, so it's a pretty long scroll. This process is known as "syncing". Once the scroll is over, we'll be in Plaid World. All collision for us is based on the game's RAM. The graphical layout and NPC collision is still based on the proper stuff though. The tileset remains as the overworld's.

The YBA we did also spoofed our room ID to the room below us, and it just so happens we want to be 2 tiles south, so we get a free transition. Then we go west and we're in Vitreous' room. Yes, this is actually Vitreous' room, and it will set all the room flags for his room properly. Vitty goes down so fast we have to wait a while for his 2nd phase. We'll be grabbing each boss's heart to set the room flag for boss kill, but we'll worry about the crystals/pendants later. An important detail to understand about Plaid World is that it can be pretty easy to desync our coordinates. The most annoying way this happens is by transitioning north or south where there's a room that's 2 quadrants tall. Even with that, we're only affected by how we travel around; our path is still optimal.

After Vitreous, we head over to Trinexx, who's just 1 tile south and 4 tiles east. We can't use the mirror inside a boss room after we've killed the boss, so we have to transition south after getting Trinexx's heart container. We then make our way to Lanmolas. The room before Lanmo is much like Mothula's room. The moving wall creates this 2-in-1 layer effect that kicks us out of EG, letting us transition north and be on the correct layer. After Lanmo's heart piece, we also get the ether medallion. That dropped because grabbing the heart triggered the game to drop the dungeon's prize. Well, we're in Hyrule Castle which doesn't have a prize; it's 0. That just so happens to be ether.

After Lanmo, we mirror again and make our way to Agahnim. Originally, we had Lanmolas and Agahnim as part of plaid world. Yuzuhara then mentioned a possible route that mirrors back to the castle and does those 2 bosses outside of plaid. It seemed reasonably good, so we plotted out a route that ended up reaching Agahnim on almost the exact same frame. That gave the advantage to removing them from plaid, for 2 reasons. First, the collision in Lanmola's room is unnavigable from the bombos animation, meaning we needed a soft reset to clean up the memory. That costs about 240 frames over a normal save-and-quit. Second, our camera could be broken, allowing us to skip a lot of Agahnim's animations by having him off screen for a single frame. We couldn't do that in a plaid route because Agahnim's room's collision is messy, even after a reset. When I realized the reset had to be removed, I was a bit annoyed about redoing 30,000 frames. Luckily, it took less than a day. I managed to get the RNG needed very quickly, the Mothula fight only took 1 try, and everything else spliced in pretty cleanly, other than Lanmolas. But seeing how I was grinding him just the day before, I wasn't too bothered. That's what the sword slash is for, by the way. It may look like our camera is already broken, but it's just not snapped. By using a door juke with our sword out, we can keep the camera focused on Link during the Agahnim fight.

Collection part 3

Now that Agahnim is dead, we're going to continue collecting items before our next real dungeon. First thing is the heart piece on the pyramid, which is in an unfortunate spot that doesn't allow for a quick warp. Even though it was faster previously, we can no longer save-and-quit in the Dark World to reach Death Mountain. With Agahnim dead, we've unlocked the Pyramid of Power spawn point, which will always be where we go when continuing from within the Dark World. We only visit Death Mountain to jump off of it immediately, landing on the graveyard ledge. This is a pretty nice cave because we get a quick refill on bombs along with our required item. Craving more of the mountain, we save-and-quit back there to FAWT to bonk rocks. With Agahnim defeated, the lumberjacks got bored of their tree, so we can get the heart piece here.

Ya know what, I'm bored. Let's do some heavier glitching. Using more tech that Yuzu discovered while this run was in progress, we perform 6 somaria jukes north and 1 east. Unfortunately, there was no real way to do this cleanly with the heart piece. If we had done the east juke first, we would have marked a different room's flag for the heart piece, which isn't allowed by the rule set. The tile we spoofed to is 83, the west wing of Desert Palace. We use the exit here to end up at that room's overworld entrance. After collecting the heart piece on the desert ledge, we enter the dungeon.

Clipping the entrance here brings us into the basement of Misery Mire. In the bridge room we jump into a pit to arm EG then travel 2 tiles west and 1 north to reach Vitty's supertile. Vitreous is dead, and we don't have the dungeon prize for our current dungeon ID (Desert). Well, the game thinks that should be fixed, so it grants the blue pendant. Our dungeon exit takes us to the Mire area, because, even in its confusion about dungeons, the game knew what room we were in... or under. We're in fake Dark World, since we entered from the Light World. We absolutely have to mirror here to avoid what is known as a pendant conflict. Some dungeons are sort of connected in their data. In this case, Misery Mire is connected to Tower of Hera. If the game thinks we're in the Light World while we're in Misery Mire, it's going to verify the dungeon prize by looking at Hera. Since we already have that pendant, no prize would spawn.

Clipping the entrance of Mire leads to Eastern Palace, where we use the stairs to enter EG. 4 transitions west bring us to Trinexx's room. He's dead, so we get a crystal for the dungeon ID we're in (Mire) and then get sent to the entrance of Turtle Rock. This entrance transition still exists even when the head is there, so we go back inside. By releasing a spin during the somaria juke, we get one extra spoof, bringing us 3 super tiles north, to the room where you land when you fail the Moldorm 2 hover. We bonk against the wall to activate our armed EG then continue 2 tiles west to reach Trinexx's room again. He's still dead, and we don't have this dungeon's crystal, so we get to rescue Zelda again.

Unfortunately, we had no way to clip off of the turtle head, so we're forced to mirror and use the portal to navigate this screen. Fortunately, we already opened the portal in an earlier segment. We use a FAWT to reach catfish for the quake medallion. Mirroring takes us outside Zora's Domain, where we purchase the flippers and obtain a heart piece. I'm not sure why the skipping works, but it's awesome and saves 23 frames. The bomb tech is salvaged from an old collection of SMVs Yuzu had made. It saves about 60 frames. Holding the sword out before the FAWT to Lake Hylia allows us to quickhop where we otherwise couldn't.

Ice Palace

Let me just say that swimming in this game is the worst. I figured out the mechanics mostly from memory watching, but still felt like I was missing something. After spending a couple hours analyzing the disassembly line by line, all I discovered was that swimming is still dumb. I already knew that. Basically, pressing A, B, or Y sets Link's acceleration into gear. Every 32 frames, that accelerations starts to decrease, so you should press A, B, or Y again.

Ice Palace has some cool tech. Hitting the bari in the bombable floor room gives us i-frames to prevent knockback from the bomb. The stalfos knight room is one of my favorite rooms in any run. Stalfos knights will collapse after taking a hit, after which they are only vulnerable to ancilla. Bombs, doing 64 damage, are the fastest way to kill them. There's a small quirk in their code: stalfos knights being instakilled by bombs is tracked with a single flag. We can ignore the first stalfos and only hit the second one, making them both vulnerable to the instakill.

The conveyor room is another awesome room, but also one that really sucks. When the belt is moving eastward, we can press ^ to pixelport left. With the pixelport, we can also get halfway into a spike without taking damage. From there, we can keep moving for a bit and then start pixelporting again. At the same time, we're also charging a spin attack for what's known as the quadrant glitch. If we release a spin attack and get moved across the boundary of 2 quadrants on the same frame, the game gets confused as to where we are and how the camera should behave. This is due to some code in the spin attack routine that updates Link's position, updating his position and the camera's behavior twice. Since the spin attack takes 48 frames to charge but we can reach the quadrant boundary sooner than that, pixelports are avoided at certain points to avoid several lag frames. Even then, we get there earlier than we need to. After using a sword beam to kill the bari, we press ^v into the wall twice to ignore the velocity of the conveyor belt while charging a dash. Just by happy coincidence, no more lag was created from pixelporting, so this normally laggy room only has 5 frames of lag.

In the bomb jump room, the effects of the quadrant glitch on our camera are immediately apparent. When we reach the door, it's off-center, resulting in a broken transition. Instead of leading to the north-east quadrant of this supertile, it leads to the north-east quadrant of the next. This is the fairy room accessed by a brazier from the room behind the big key door. This room has the only ice tiles we encounter, but they suck. Ice is second only to swimming for awful LTTP movement mechanics. Grabbing the wall constantly helps build our acceleration on ice. When we use the door upstairs to transition east, it is also corrupted as a result of the quadrant glitch. Instead of taking us to the south-west quadrant of the next supertile, it brings us to the south-west quadrant of this supertile. After the 2nd push block, we travel backwards a bit to manipulate the freezor onto a nicer y-coordinate. In the door, we use a bomb to bypass the transition then delay both the bomb toss and our dash to run past the freezor without taking a hit. There's a pseudo-framerule with tossing the bomb that determines when you are able to walk again, so there are several possible frames to throw that all have the same result. The end of the dash is slowed to walking speed movement because of the airborne bomb.

Kholdstare is a joke with the gold sword. A glitch with sword beams allows them to inherit the damage of the fire rod, destroying the shell quicker and saving magic.

Swamp Palace

A quick swim north and a teleport bring us to the area under the bridge for our last bottle from a hobo. This is where swimming really shows how dumb it is. We start off by swimming much slower than we can swim for a short period to build up our speed. Once we hit a subpixel that gives us 2 pixels per frame, we can wobble and pump to obtain ludicrous movement speed. Acceleration doesn't decrease when we're doing this, our subpixel just alternates between 2 values. This is seen just for a little bit on the hobo screen as well, but only in a single direction.

Swamp is our final crystal, and in proper TAS fashion, we completely destroy the dungeon. Clipping the entrance skips both having to drain the dam and the first swimming segment. In the third room, we do 2 door jukes in the center door to break our camera vertically and then use the door as an east/west transition to end up on the other side of the room, skipping the 2nd swimming segment. Due to how water rooms work in dungeons, there aren't real layers in this room, so even though we took a staircase, we end up on the same layer. To enter the big chest room, we use a bomb juke. Some slight camera correction takes us to the west side of the room, making the door to the south easier to reach. A couple more jukes and some camera correction allow us to use somaria jukes to change our room ID from 36 to 16. After the jukes, we use one more somaria block as a buffer to prevent us from moving so we can clip back into the wall.

Arrghus is probably the most insulted boss in the run. By moving just a couple frames into the room and stopping, Arrghus becomes active but with no puffs on screen. This makes him think all of his puffs are dead, starting phase 2 immediately. After he lands, a single silver arrow to the face takes him out. Not only does the broken camera make this fight a complete joke, it lets us get the best possible crystal catch: almost no rise time, no visible maiden, and a wall grab.

Dam%

Now that my favorite squid has been slain, we mirror back to the Light World for a huge burst of collection. By just pushing a bunch of blocks, 5 items are obtained from the same chest. What's going on here? Is it duping? Nope. This is the raw strength of data spoofing. As explained in the glitches section, we can change our room ID with the cane of somaria and load new room data. Some of that room data is information on which chest contains what item. What we're doing is loading 5 different rooms for 5 different items from the same chest. While 3 of the items are all heart pieces, they are provably distinct, each coming from a different room. While the order of items obtained seems arbitrary, it was very deliberate to prevent these items from being respawned. The room data for the chest in the dam's room ID (010B) is left untouched, which is why we can use it over and over again. This state of being untouched is written to every room we pass over with our somaria jukes. If we, say, did the mire shed before the cane of byrna, then when we passed over that room, the shed's chest would be shut again, and we could go there the normal way to obtain another heart piece. In my opinion, that violates the "No heart duping" rule of this run. Theoretically, we could close all the chests we want by opening the chest in the dam and then doing more somaria jukes after all the items are grabbed. We don't have enough magic for that, but that's also an invalid strategy. Instead, we go through the items in an order that will not spoof a room ID whose item has been obtained, thus staying in line with the "no heart duping" restriction:
  • 12 east (+1 x12) for 0117 - cane of byrna
  • 8 east (+1 x8) for 0113 - magic cape
  • 1 east, 1 south, 1 east (+1, +16, +1) for 011E - Blind's hut heart piece
  • 2 east (+1, +1) for 010E - Mire shed heart piece
  • 1 east (+1) for 010D - Mimic cave heart piece

When doing Blind's hut, we also pull the switch to drain the water, allowing us to obtain the heart piece outside, and grab the red boomerang. The red boomerang wrong warp comes from glitchy hole collision as a result of the somaria jukes. This wrong warp is not only the fastest way to get this item, it is also required to exit the underworld without another juke. Entrance behavior is part of room data, but Blind's hut's basement has no entrance, unlike the other 4 caves we visit. The wrong warp sets our room ID to that of the bombable hut in Village of Outcasts properly, so we can use it to exit safely. And because this is the single entrance underworld, we end up back in front of the dam. The weird juke path we take for the Blind's hut heart piece is intentional. We can't do 2 east jukes at once, or else sprites would despawn and we'd not have a convenient time to drain the water. We can't do the south juke first, because the supertile below the dam contains a 2 heart pieces we already grabbed, and we want to avoid respawning them. This awkward pathing also requires us to use mirror-block erase. By attempting to use the mirror where it can't be used while a block is being pushed, the block just disappears. During the switch pull, we can release then repress A to charge a dash during the animation.

Since the Movie Rules are explicit about using memory corruption to obtain items, I feel this segment warrants clarification. First and foremost, the items themselves are not being placed in the inventory via memory corruption. The memory corruption going on here is categorically different from the type of corruption that's banned for completion categories. Here, as explained in the somaria juke notes, the room ID is being incremented by confusion with the game submode. We're loading and changing data with instructions operating as intended, but we're exiting routines when we're not expected to. This is the basis of these glitches, and it's why we can change the destination of transitions or the contents of chests. In essence, we are taking an item from one room and moving it to our current room. The method of directly obtaining the item is entirely done via intended gameplay; i.e. we are opening a chest, and it is the opening of that chest which grants us the item.

There is the more "arbitrary" corruption going on, but it's off in a different area of memory. This is the only place in the run where that "buffer" corruption has a tangible effect. The keen eye will notice that we no longer have a mirror portal, despite not doing anything that would normally get rid of it. The memory corruption from the jukes in this room affect addresses $1100 to $1C71. That's a lot of memory, so why is the game so stable? Well, most of that is just a buffer for VRAM transfer. The first 4 bytes are instructions on how to handle the transfer. From there to (seemingly) $197F is the data to actually transfer. So that explains a lot of this, but what about the other nearly 0x300 bytes? A lot of it just happens to be inconsequential. It's stuff that gets fixed pretty much the next frame, like the position of your follower or textbox controls. The interesting addresses are $1ABF, $1ACF, $1ADF, and $1AEF, which hold the low and high bytes of the X- then Y- coordinates for the mirror portal, respectively. These coordinates end up being 3C, 08, 3C, 3C. If you were to open the map, it would look like the portal is right on top of the Tower of Hera, but the high byte of its Y-coordinate wraps it around the world map. Once out of bounds, the display gets messed up. Its true coordinates are on the cliff south of Link's house, but wrapped around the world 3 times.

Agahnim 2

We have one final item to obtain: the mirror shield. Unfortunately, it's in an awkward spot. We've been to this area multiple times, but the layout of the dungeon and overworld make it impossible to route in nicely. Fortunately, this is the best place to reach the second-to-last boss. The Death Mountain movement is fairly standard, but a teleport after the stairs saves a significant amount of time. Using the hookshot is 2 frames slower than our best spinspeed on the overworld, but it saves a more later on. In the Dark World, an upwards teleport brings us up to where we can reach a fast screen transition, then we can slope jump across to the other side of the map. From there, we dash west to reach a downward teleport that lets us hop onto the balcony of the middle segment of Turtle Rock, where we zip to the big chest entrance.

Inside, we use a somaria juke to change our room ID from 24 to 14. This loads the chest data for the big key, which we grab from the big chest. Even though the tiles we're opening are a big chest graphic, the data says we're opening a small chest. So we don't require the big key, and the graphics that replace the tile are incorrect. Clipping the entrance sends us back down to room 24 in the lower quadrant, where we obtain the mirror shield, our final upgrade. Using the door to transition north sends us back to room 14, in the upper quadrant. The background here is actually a ton of pit collision, so we can use wrong warp to the value used for pit destination, which in this room is 0D, Agahnim 2's room. We have to hover a little so that after the fall, we can wiggle our way into an area that allows movement.

Like Agahnim 1, this fight takes 6 hits; however, there is no lightning cycle, and the clones can only fire yellow energy balls. Just like before, we're scrolling Agahnim off screen to cancel his animations, most importantly, the super long Ganon transformation.

Ganon

Even the final boss becomes a breeze when your equipment is completely maxed out. Ganon has 255 hp, but he operates in phases. The first phase take 6 hits with the gold sword also operating on basically a timer. We can cancel the teleport early by manipulating the trident to touch the side of his hitbox. The second phase takes 6 hits as well, and we're entirely at the mercy of the timer. The third phase takes 4 hits, no matter how much damage. This phase is timed as well; only hits on the floor smashes matter. For the final phase, one hit from the sword stuns Ganon, allowing us to lob 4 silver arrows into him, causing him to explode. To finish off the run, three triangles babble on forever.

The save file is first selected on frame 563. The screen darkens on frame 187527. This gives the run an RTA timing of 186,964 frames, or 51:56.04.

Closing

This is going to be my first submitted TAS, although I've enjoyed watching TASes for nearly a decade. I hope the submission text was enjoyable and informative. I've seen submissions be all sorts of lengths, but I'm the type of guy to put as much information into something as he can. I think that's especially important for a run like this, where we break the game so hard that there will be problems with the next virtual console release.

Possible improvements

A maximum of 12 frames could be saved in Eastern Palace by skipping the stairs in the cannonball room instead of climbing them. This was simply noticed too late into the TAS and is probably our most embarrassing blunder.

A maximum of 3 frames could be saved by improving a suboptimal menu after obtaining the shovel. An extra move is used from mirror to shovel. When I attempted to implement this, the frame improvement on subsequent screens was between 1 and 3. 1 menu move is only 2 frames, so I'm not sure where that 3 comes from. This was also noticed too late into the run to fix.

The digging game is really good. It's 30+ frames more efficient than our second best attempt at it. That's the main reason the aforementioned improvements were not implemented. Overall, we'd probably end up losing 20+ frames unless we matched this incredibly rare RNG. Even with how good that RNG was, it is technically improvable. At least 2 more red rupees could be gained losslessly, saving about 9 frames. This would be ridiculously impractical, so I don't consider it a mistake.

A maximum of 5 frames could be saved with a slightly better Vitreous fight that Tompa found. I attempted to implement this, but 2 of those frames were lost to lag. The other 3 left us susceptible to a frame rule and ended up losing an additional 3 in the Trinexx fight. With other improvements, it's possible all 5 of these frames could be saved.

20 or 30 something frames are lost over the entire run after some minor tech was discovered with somaria blocks. Pressing ^> for center door east somarias works to keep your normal speed, eliminating dash buffers. This was discovered during Dam%, where it saved somewhere near 60 frames.

Frame rules and lag are everywhere. I estimate 140,000 frames could be saved with better frame rules and another 90,000 from better lag reduction.

Yuzuhara's comments

I'm a guy who wanted to see the new glitched tas since crazy glitches found. Finally I'm glad for we can see the glitched category run. This category run is most crazy since all glitches allowed. Maybe you can see the new spectacle, I hope so.

The project was really beautiful time. I learned many things from guys. fmp gives me the opportunity which working together, thank you so much for your kindness. And thanks guys for supporting our working.

I hope you enjoy the new alttp tas!!

Special thanks

My coauthor Yuzuhara_3 gets the first shoutout. Many of his strategies in his All Bosses No EG TAS were optimal for this category as well. He's an extremely talented TASer for this game, with several tricks named after him. He's advanced both the TAS and RTA scenes, and his discoveries are why categories like this are even possible. Yuzu didn't have any major direct contributions to the first 2 drafts, but starting with draft 3, his destruction of the route began spiraling out of control. He has a mind for this game like no one else, so it was an awesome opportunity working with him.

Huge thanks to Tompa for sitting down with me and commentating over my WIPs to find improvements. Most of his comments were about things that would save frames throughout the entire run, so they added up nicely. He was otherwise impressed with my progress at the time, which (coming from him) gave me a huge boost in confidence to finish the project and grind it even harder. He continued giving me feedback as I worked on draft 3, and even started TASing things I couldn't get myself. Despite Tompa's glitch knowledge of this game being out of date, his frame-whoring remains unrivaled. We often found ourselves finishing a segment then saying, "That's really good, but let's see what Tompa thinks."

One of the biggest and most useful resources we have in the glitch hunt community is a massive annotated map of the underworld that I created. But I would not have been able to create it without tools made by Zarby89. While Zarby isn't much of a glitch hunter, he is one of the best ASM hackers for this game. A lot of his knowledge has found some sort of use in why things happen the way they do.

A number of people in the RTA community did some sort of something while I was making this TAS, and of course there's the half-dozen people who routed this for RTA: Tojso, Pinkus, Josh, Blank, and Sean Cass. I can't really name everyone, but I think they know who they are. Everyone who was excited to see this TAS finished was an encouragement; to those of you in that group: Hello.

Suggested screenshot frames:


feos: Judging...

feos: Exchanging with Memory.

Memory: Taking over from feos as part of exchange. Judging.

Memory: From what I can tell, optimization seems good, although it can be hard to tell exactly how optimal the routing is due to how open the game becomes with the glitches.

The current label of the run is 100%. What is collected in this run is determined by what is displayed in the HUD and the inventory screen. In this run one must fully upgrade each unique item that can show up in inventory (as defined prior) regardless of the player's current location.

This definition means that several items that one might consider to be important are not collected. Each will be explained in detail.

Arrow and Bomb capacity upgrades are not collected. There are several reasons for this. One is that you do not have a way to know your current capacity except by simply being at full. The other reason is much simpler. Collecting them would be incredibly boring and tedious. It would require the TAS to repeatedly throw money into a wishing well and go through a bunch of slow cutscenes. Collecting them adds no extra challenge as obtaining the money needed to obtain them is trivial as is the act of collecting them. It would be incredibly boring to a viewer and become unsatisfying.

Dungeon items such as keys, big keys, maps and compasses are not collected. These items can only be checked while you are in that specific dungeon. Maps and compasses are particularly not useful to a player outside of a first playthrough as they merely provide information on a layout of a static dungeon. Keys and big keys are only useful for navigating the specific dungeon you collect them in. None of these items are truly unique however, the game actually only marks flags that you collected these items for whatever dungeon ID you are currently in. If you collect the wrong dungeon's map, it will count as the map for whatever dungeon you are currently in, if you are even in one at all. This makes the dungeon items feel fairly arbitrary collectibles as they are not unique.

Lower levels of upgrades are not required to be collected. In this TAS, the Master Sword (Level 2 Sword), the Fire Shield (Level 2 Shield), the Blue Boomerang (Level 1 Boomerang) and the Blue Mail (Level 2 Mail) are all skipped. All of those but the Level 2 sword are able to be skipped without any glitches. Sword level 3 is able to be skipped without glitches even though level 2 is not. There is nothing indicating on the menus that you ever got the middle upgrades and you can collect them after they are already obsolete and don't do anything. Personally I find skipping level 2 sword kinda cool and the rest of the audience didn't really have a problem with it either.

Some questions were raised in regards to this submission's goal but in the end almost everyone was satisfied by the definition this submission used and that the RTA runners used for 14 years. In theory it should be possible for one to consider making a run that completes more than what is completed here but nothing else can be tracked as easily nor does the game indicates as evidently part of a full completion.

There was one other questionable part of the run and that was a glitch that allowed obtaining mismatched chest contents. If done incorrectly, this could also result in open chests being closed, allowing for the potential of duplicating items. As far as I can tell, no duplicating was performed and only unique items were collected through this. I manually checked the chests that were claimed to be opened and they were in fact open. They are not placed directly into inventory through any means of memory corruption. This method of abusing this glitch appears to be fine for this run, but if it were to result in any form of duplication, it would be unacceptable.

This run uses "major glitches" that are not allowed in the current trunk of the game. These glitches include "Exploration Glitch", "Out of Bounds" and "Yuzuhara's Bottle Adventure". These glitches can make it a bit difficult to tell what is going on at times and reception was initially mixed due to this. However, upon the creation of an encode that included a map, reception tended to fare a bit better. The poll is extremely in favor of support as well. I personally enjoyed the movie and seeing how the game could be torn apart in various ways.

Accepting to Moons as a new branch.

feos: Since this goal is maxing out the inventory upgrades, which means your inventory won't accept any more upgrades, we can say the inventory is full. This is a simple definition originating fully from the game, therefore it's unambiguous and at the same time accurate. Setting the branch to "full inventory".

fsvgm777: Processing.

fsvgm777: Dropping it, until I can somehow get a full dump with the map script without BizHawk crashing at random. This is open for anyone.

fsvgm777: The issue has been resolved. Processing.


Similar submissions (by title and categories where applicable):