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

Submission #4350: bobmario511's GBC The Legend of Zelda: Link's Awakening DX "warp glitch" in 05:39.06

Console: Game Boy Color
Game name: The Legend of Zelda: Link's Awakening DX
Game version: USA v1.0
ROM filename: Legend of Zelda, The - Link's Awakening DX (U) (V1.0) [C][!].gbc
Branch: warp glitch
Emulator: VBA-RR v23.6 svn480
Movie length: 05:39.06
FrameCount: 20251
Re-record count: 28746
Author's real name: Scott W.
Author's nickname: bobmario511
Submitter: bobmario511
Submitted at: 2014-06-27 01:14:16
Text last edited at: 2014-07-01 22:47:03
Text last edited by: Guga
Download: Download (2388 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:

(Link to video)

This run is an 21 frame improvement over the published run due to a completely new route. This run was at first created to test if this new route would even be faster as it was impossible to tell without greatly optimizing it.

Tricks used

Up/down + A or B combos

This allows link to do a variety of glitchy things with items such as the sword, shield, shovel, etc… Using up/down/b allows the owl text near the sword to be skipped and helps with killing enemies.

Corner Boosts

When you walk past a corner you can move into it slightly to push Link a maximum of 2 pixels forward. Often you can only save 1 pixel due to the sideways walking mechanics.

Screen Transition Boosts

This trick only works when Link is traveling vertically between screens. By clipping as close as you can into a wall that leads to the next screen and pressing the direction you’re headed plus the direction of the wall (for 1 or 4 frames depending on diagonal movement mechanics), Link gets a “boost” when he can first start moving on the next screen. This saved around 2-3 pixels. Ideally, you want to just press the direction for 1 frame, because you usually loose a frame if more are held, but it can’t be avoided in some cases.

Fire bat stun

This is done by playing the ocarina on a certain frame right before a fire bat flies towards you. The fire bat then remains on the screen.

Dethl skip

With a fire bat stuck on the screen, the game glitches out in a similar way to the GB LA run and the fire bat changes into a Dethl and explodes. The game then considers it dead which triggers the stairs despite one still being on the screen.

Enemy manipulation

From what I’ve seen there are two stages of manipulating what an enemy does when you enter the screen it’s on. First is the frame that the enemy starts moving on. This can be manipulated by delaying input and entering the screen with the desired enemy some frames later. The other way this can be manipulated is by using items such as your sword or shield. In the case of this run, the shield is the only optimal way to go; By shielding on screens before you get to the desired enemy, you can also manipulate when it starts moving. The second stage of manipulation is what direction the enemy heads in. On the frame right before they move this can be manipulated with different input including a/b and directional input. Additionally sometimes shielding randomly before the enemy moves can help manipulate it. Methods for manipulating the first stage work here as well.

Useful memory addresses

  0000FF9A – x speed (in subpixels)
  0000FF9B – y speed (in subpixels)
  0000FF98 – x coordinate (in pixels)
  0000FF99 – y coordinate (in pixels)
  0000DBB5 – number of enemies killed.
  0000C200 - x coordinate of boss
  0000c210 - y coordinate of boss

Stage by stage comments

Obtaining the Sword

-The entire start of the TAS up to getting the sword was unchanged and the same as the published run.

Setting up the doghouse glitch to get the ocarina

After getting the sword is when the route first changes. In order to prefer a later glitch, we need the ocarina. One way this can be obtained is by using the doghouse glitch with 8 enemies killed and opening a certain chest. Killing 8 enemies on the way back from getting the sword proved to be a challenge to manipulate. One thing to note on the screen where I kill enemies 5 and 6 is that a little time is killed waiting for one of the enemies to fully die, as it doesn't count if you enter the next screen too early. The next screen also proved to be a challenge to manipulate. I had to make the octorok walk a certain way so that when I finished climbing the stairs, it would be in an ideal place to damage boost of off. This required hours of trial and error to get the desired behavior. The screen with enemies 7 and 8 is also worth noting. Initially I had to swing my sword twice with a short delay between swings so it would connect with the first enemy, but I found a way around this. By pressing <^vAB, I was able to hit both enemies at the same time with one swing. Sadly this didn't cut the grass but I was able to cut it on the next frame where link could attack. A heart drop was manipulated for one later damage boost and for health during the end of the run. From there it was just walking back to the doghouse in a similar way as the published run does.

First time in the underground

In the underground there is a lack of music, so I did what I could with the shield to try to make some beats. The screens I entered all had the shortest amount of loading time, corner boosts were used where I could find them, and a damage boost was applied to save a little time. After opening the chest the game is immediately reset.

Setting up the doghouse glitch again

After resetting you will always appear in Taron's house. I used a <^vAB attack on Bow-Wow to get a quick double sword boost. I ended up 2 pixels below my desired location, but didn't lose any frames walking diagonally up those 2 pixels. From here I used the shield at a bunch of random times to manipulate when one of the octoroks started moving and after a while got very desirable results. From there it was just getting back to the doghouse again.

Getting to the boss

Like the start of this run I hex edited in my input from the published run because I feel it was solid.

The boss battle

At the start of the boss fight I lost one frame (which happened to be the frame I didn't know how I saved in the last one). I messed around and realized it was highly dependent on when you entered the boss room. Depending on when you entered, the first form could always jump on a certain frame. It proved impossible to save this frame by delaying time, or by switching out the ocarina there, so I just had to go with it. Once the Ganon fight began, I needed to stun a fire bat at some point by playing the ocarina. I found that if you play your ocarina right after doing a spin attack, it will cancel the animation allowing you to swing your sword once the ocarina text is finished. The best cancel I was able to get was 4 frames after damaging Ganon. I took damage before climbing the stairs in order to stay alive while on them.

Overall, a total of 21 frames were saved with this new route.

Two other things I wanted to add are that I used VBA 23.6 since all my prior work for LA and LADX has been done on VBA and I felt most comfortable with it for this project. Also, I included the "best ending" as a goal since the prior run is incorrectly tagged with this (dying to the shopkeeper in that run gets you the normal ending). The Marin ending (her face isn't viable in my encode since it flickers on screen every other frame) and a thanks from the developers is given in this run.

Nach: Nice improved, good response, accepting as improvement to existing run.

Guga: Processing...

Similar submissions (by title and categories where applicable):