A Clever Way to Make The Legend of Zelda Beat Itself

By Bryan Menegus on at

Arbitrary code injection is fascinating stuff. Intrepid gamers have discovered hidden glitch worlds, turned Mario into Flappy Bird, or performed a standard action so many times it crashes the game. The original Legend of Zelda is susceptible too—as glitch hunter Sockfolder found out—and executing the following instructions skips past the vast majority of the game’s quest.

In vastly simplified terms, step one is to input specific player names into all three save slots which will later be executed as assembly code. The goal here is to make the game seek information from the portion of the memory where those player names are stored. One way to do that is to take advantage of Zelda’s sprite table, which holds the values for whatever monsters or objects are on screen at any given time.

The sprite table in The Legend of Zelda isn’t stupid: it only allows 11 things on screen at once, after which point new sprites won’t spawn. However, the whistle item lacks the necessary check that would keep it from appearing. Activating the whistle with all 11 sprite slots filled causes an overflow, forcing the game to look for the next available empty slot, which just so happens to be outside the sprite table. A chunk of memory is incorrectly rewritten. The screen goes dark. Then you’re warped to the room with Zelda in it on account of those player names from earlier.

Of course, the minutia of the warp is vastly more complicated in explanation and execution, and MagicScrumpy’s walkthrough is incredibly detailed in both regards. If you’d like a more technical understanding, you’re fully encouraged to watch his video below. Keep in mind, this exploit only works on version 1.1 of the Famicom release, so don’t go wasting time trying it out on the NES release.