A practice romhack of The Legend of Zelda: A Link to the Past (JP 1.0)


We are currently on version 12.1.1
Emulator, Everdrive, SNES Classic Custom HUD
Vanilla HUD
Vanilla HUD
Debug Unstable
Pick the correct ROM for your system. SD2SNES ROMs will not work on other carts or emulators.

SD2SNES is the only SNES system that supports 256kb SRAM. This makes it possible to have in-game save states, so that feature is only turned on for the SD2SNES variants. These will not work on emulators, Everdrive etc.

VanillaHUD variants use the HUD from the original game. Counters are turned off by default, but can be turned on if you wish. They will be drawn over some of the hearts, though.

The Debug version is the most recently compiled version of the practice hack while I code new features/fixes. It may not even reflect the version of the code live on Github. There is no guarantee that this version will even run properly, but it is available for people to poke around with uncoming stuff. This version is custom HUD without SD2SNES features. Please do not report bugs that are specific to the debug version.



  • Using the third filename slot will grant you full equipment when starting a new game.
  • Counters show intermediate values sometimes, like when opening a chest or when text appears.
  • If something weird happens, just reset your console, start a new game and use a preset to get back to where you were.
  • Holding Start and Select during power on will reset all configurations to default.
  • Check out ALttP Room Time Leaderboards for optimal room times.

Notes about lag (link)

  • Lag is not exactly the same as original cart, but it tries to compensate for that.
  • Timers are not real time. Especially during transitions between the underworld↔overworld, it is possible, though rare, for frames, including lag frames, to go completely unaccounted for. Keep this in mind when comparing to emulator frame/lag counts and/or vanilla runs.

Known issues (link)

  • Super bomb and digging game timers overlap HUD counters and don't disappear properly.
  • The lit rooms toggle may hide BG1 when switched indoors.
  • Lag from mosaics can be very inaccurate.
  • The HUD may require an extra nudge to update after toggling practice features.
  • Thieves' Town Hellway and the Agahnim fights may cause issues with transparency and palettes.
Built in savestates for various categories
Modify Y-item loadout
Modify A-items, combat items, health, and keys
Game state
Modify game progress, status, and mode
Link state
Modify player character attributes
Feature toggles related to gameplay
RNG control
Fix specific RNG calls to specific values
Modify shortcuts for quick feature access
HUD extras
Toggle features that appear on the HUD
Configuration toggles related to meta-operation

Menu controls

Button When Action
R+Start Game play Open practice menu
Start In practice menu Close practice menu
A Submenu option Open submenu
Toggle option Toggle item
List option Next selection
Command option Activate command
B Main menu Move to top
Submenu Return to previous menu
< > Toggle option Toggle item
List option Previous/Next selection
^ v Practice menu Move cursor

Menu legend

Icon Meaning
Opens a submenu
Runs an immediate command
Toggles an option between YES and NO
Sets from a selection of choices
Sets a numerical value
Loads a preset
Full list here
Full list here
Full list here
Full list here
  1. None
  2. Normal
  3. Silver
  1. None
  2. Blue
  3. Red
  1. 0
  2. 5
  3. 10
  4. 15
  5. 20
  6. 25
  7. 30
  1. None
  2. Mushroom
  3. Powder
Fire rod
Ice rod
  1. None
  2. Shovel
  3. Inactive flute
  4. Active flute
For each bottle (1–4):
  1. None
  2. Unobtainable shroooom
  3. Empty
  4. Red potion
  5. Green potion
  6. Blue potion
  7. Fairy
  8. Bee
  9. Good bee
Fill magic
Tops off the magic meter
Fill HP
Fully replenishes health
Fill rupees
Grants 999 rupees
  1. None
  2. Fighter's sword
  3. Master sword
  4. Tempered sword
  5. Butter sword
  1. None
  2. Fighter's shield
  3. Red shield
  4. Mirror shield
  1. Green jerkin
  2. Blue mail
  3. Red mail
  1. None
  2. Power glove
  3. Titan's mitts
Moon pearl
Half magic
Max HP
  1. 0
  2. 5
  3. 10
  4. 15
  5. 20
  6. 25
  7. 30
  1. 0
  2. 5
  3. 10
  4. 15
  5. 20
  6. 25
  7. 30
Big keys
Toggle big keys for each dungeon.
Skip text
Skips the current text box
Remove sprites
Removes all sprites, overlords, and ancillae from the screen.
Reset current room
Resets the following data of the current room:
  • Quadrants visited
  • Keys collected
  • Chests opened
  • Doors opened
  • Moving walls
  • Water level
  • Boss defeated
  • Heart collected
  • Rupee tiles collected
NOTE: This only affects the data pertaining to that specific room, but not data pertaining to the dungeon as a whole. For example, even though key collection is reset, the key count for that dungeon is left unaltered.
Reset dungeons
Resets every room associated with a specific dungeon (including all non-dungeon rooms as a single group) with the same caveats and restrictions as Reset current room.
Toggle bosses defeated
Modifies the boss defeated room flag for the specific boss's room.
Pendants and crystals
Toggle collection status of each dungeon prize.
Game flags
Toggles miscellaneous SRAM flags:
Uncle dead
Talking to uncle in the secret passage
Sanc priest
Talking to the priest after mastersword
Returning Zelda to sanctuary
Uncle left
Uncle leaving the house
Aginah discussing book
Fortune cycle
Fortune teller hint selector
Switch between Light World and Dark World. Intended for experimenting with fake worlds.
Game mode selector:
No progress. Game will not save. Always respawned in bed.
Sword and shield obtained from uncle. Spawn is somewhere in escape (or Sanctuary with old man rescue).
Zelda has been rescued. Spawn is standard selection, or mountain with old man follower.
Agahnim has been defeated. Spawn is standard selection in Light World, Pyramid in Dark World, or mountain with old man follower. Fake Light World from dungeon death no longer possible.
Map indicator
World map marker:
Zelda rescue mission
Go speak to villagers to learn about the Elders
Go speak to Sahasrahla to learn about the Master Sword
Light World dungeons
Go collect the master sword
Go fight Agahnim
First Dark World dungeon
Remaining Dark World dungeons
Go fight Ganon
Switch color
Toggle status of pegs and switches in dungeons.
Control the falling-in-pit address
0; Link's default state
1; armed as if waterwalk were set up by dashing from a pit
Armed (2)
2; difficult (if not impossible) to obtain intermediate state
3; falling state obtained after a death hole in the underworld
Activate superbunny
Sets Link's general state handler to default ($00). For safety, this will only run when Link's handler is currently set to bunny ($17). If successful, you should hear a poof; otherwise, you will hear a beep.
Activate lonk

Sets Link's general state handler to bunny ($17). For safety, this will only run when Link's handler is at its default value ($00). If successful, you should hear OOF; otherwise, you will hear a beep.

Despite the labels, the Superbunny and Lonk menu options can be used to return to normal Link and normal bunny, respectively.

Finish mirrordoor
Sets the mirror door wait timer to finish after 11 frames. For safety reasons, this will only run when the Triforce door submodule is in effect. If successful, you should hear a VOOMP; otherwise, you will hear a beep.
Statue drag
Toggles the fake statue address.
Armed EG
Toggle status of armed EG.
Strong EG
  • EG 0
  • Strong
  • Weak
NOTE: this toggle cannot overpower the strength of the current room.
Skip Triforce
Transitioning north from Ganon's Room will behave like a normal screen transition, allowing consistent and reliable room times for the fight.
Sanc heart
Presets will have more health, as if the Sanctuary heart were collected earlier in the run
Disable beams
The Master Sword and its upgrades will no longer fire sword beams at full health
Fast walls
Speeds up the moving wall cutscenes.
Lit rooms
Dark rooms will be at full brightness and visibility. This option will remove the darkness in the current room as well.
Visible probes
Search probes used by guards, beamos, etc. will display a graphic.
See bonk items
Shows bonk items on the overworld as stationary sprites.
Disable BG1
Disables SNES background 1 via PPU registers. Has no effect on lag.
Disable BG2
Disables SNES background 2 via PPU registers. Has no effect on lag.
OoB Mode
Turns on the debug OoB mode, which has the following features:
  • Link ignores all collision, and can walk everywhere.
  • The mirror works to go from Light World to Dark World.
Prize packs
Modifies drop percentages. This option only affects prize packs, not other guaranteed drops such as the stun drop or keys. It will, however, affect the 100% prize packs.
Drops behave normally. 50% for most prize packs, and fairy luck works.
All enemies drop their prize packs when possible.
No enemy drops prize packs, ever.
WARNING: toggling this option will reset existing fairy luck.
Random, fixed RNG for every combination of UD/LR for each pokey
  1. Random
  2. Yellow
  3. Blue
  1. Random
  2. No fireball
  3. Fireball
Ganon warps
  1. Random
  2. No warp
  3. Warp
Ganon warp location
  1. Random
  2. Far left
  3. Bottom left
  4. Bottom right
  5. Far right
Eyegore walk
  1. Random
  2. Short
  3. Medium
  4. Long
Arrghus walk
  1. Random
  2. Shortest
  3. Short
  4. Medium
  5. Long
  6. Longest
Turtles walk
Random, 32 fixed RNGs
Random, 32 fixed RNGs
Random, 32 fixed RNGs
Lanmola exit
Random, fixed {X,Y} for 0≤X≤7; 0≤Y≤7
Conveyor belt
  1. Random
  2. Right
  3. Left
  4. Up
  5. Down
LTTPHack menu
R+Start - Opens the practice hack menu. NOTE: this shortcut cannot be changed.
Load last preset
Loads the last preset used from the preset menu.
Save preset
Save state (SD2SNES only)
Saves current state of the game, similar to emulator savestates. Both custom presets and states operate the same, but the SD2SNES version is implemented differently and is more powerful.
Load saved preset
Load state (SD2SNES only)
Loads custom savestate/preset, similar to emulator savestates. Both custom presets and states operate the same, but the SD2SNES version is implemented differently and is more powerful.
Reset seg timer
Resets the segment timer, which is not automatic like room timer.
Toggle OoB
Turns on out-of-bounds mode.
Skip text
Skips the current text box.
Remove sprites
Removes all sprites, overlords, and ancillae from the screen.
Fill everything
Maxes out equipment, rupees, items, and health.
VRAM repair
Attempts to fix important graphics registers and VRAM data that have been corrupted by door glitches.WARNING: If this shortcut is triggered during a text box, the text box will disappear, but the game will remain in text mode.WARNING: this feature only repairs registers and VRAM; other areas of RAM may result in vanilla game crashes unrelated to this feature, but which are never normally encountered in vanilla.
Show somaria pits
Modifies the upper layer tilemap to mark pits.NOTE: this feature is intended for finding pits created by door glitches, but it will mark all standard pit tiles the same way.
Input display
Visual indication of every button registered each frame.
Room time
Time spent on the current screen, starting from the beginning of the last transition.
Lag counter
Count of lag frames on the current screen, starting from the beginning of the last transition.
Idle frames
Count of frames with no relevant input, starting from the beginning of the last transition.
Segment time
Time spent since the beginning of the last segment timer reset.
Absolute position of Link (X,Y)
12-bit precision
Not as good as HEX.WARNING: decimal display can be laggy.
Displays current subpixel remainder (Hexadecimal)
Displays current subpixel speed (Hexadecimal)
QW indicator
Displays an icon on the HUD when the current camera will produce a quickwarp.
Lanmola cycs
Displays a counter for the cycle count of the three Lanmolas individually.
Shows a rough calculation of the amount of lag a frame has. The more the bar is filled, the closer a frame was to producing a lag frame. Lag from one frame does not affect the next, but trends in the lagometer can be used to gauge how laggy an area is.
Enemy HP
Shows the exact health of a single enemy. Attempts to find the most relevant enemy as you play. WARNING: this feature can be laggy.
Misslots RAM
Ancillae RAM watch geared towards misslotting (see diagram)
DG watch
RAM watch geared towards door glitches (see this page).
When using built-in savestates and presets, this will run the RNG function to create a new value on each load.
Sets the volume of every track in every song to 0. The size of the SPC transfers remains the same, so this feature does not affect lag.
Death reload
Reloads the last preset upon death.
Preset cat
Changes the selection of presets.
HUD font
Change the font used by HUD extras. This will not change the font for the vanilla HUD or for the HP, max HP, and enemy HP displays. Hover over options for larger preview.
  • Classic
  • Normal
  • Italic
  • Mario World
  • DKC (Donkey Kong Country)
  • ZAMN (Zombies Ate My Neighbors)
  • SMT (Shin Megami Tensei)
  • Earthbound
  • FF6 (Final Fantasy VI)
  • Lufia 2
  • Goonies 2
  • Emerald (Pokémon Emerald)
  • Klonoa
  • TI-83
  • Pac-Man (Pac-Man Arrangement)
  • DOOM (GBA version)


v12.1.1 6 Nov 2019

  • Moved counters 1 tile to the left for CRTs. This update was for BluntBunny. Only BluntBunny may use this update.

v12.1 26 Oct 2019

  • Updated the Emerald font.
  • Menu improvements
    • Added icons to menu items indicating what they do.
    • You can now use X to clear menu options.
    • Documented all these features on the site.
  • Bug fixes
    • Fixed issue with certain toggles not working at all.
    • Fixed issue with game crashes from menu commands.

v12 24 Oct 2019

  • Gameplay
    • Fast moving walls - thanks Pinkus
  • Link state - New menu
    • Waterwalk
    • Activate superbunny
    • Activate Lonk
    • Finish mirror door
    • Statue drag
    • Armed EG*
    • EG strength*
    • * Will these options ever catch a break? They keep moving around!
  • HUD extras
    • DG watch - fully explained here
  • Configuration
    • HUD font - I probably won't add more than 16
  • Added sound effects to the practice menu to help indicate responsiveness.
  • Updated the Practice menu font a little.
  • Removed the Japanese text for "Pendants" and "Crystals", mostly to make room for new graphics.
  • Removed the red gloves and put boots back.
  • Lag changes:
    • Heart lag compensation has been lowered and may be slightly too little, giving 1 less lag frame than vanilla on occasion. Please help calibrate lag by reporting numbers in places.
    • Crystal cutscenes should no longer be extremely slow, thanks to Pinkus.
    • Slightly optimized input display. Hopefully lag when mashing text is a little closer to vanilla.
    • The floor number indicator on the HUD has had its cycles added back in, matching vanilla perfectly without writing to BG3.
  • Fixed some HUD bugs:
    • Lanmolas cycle toggle no longer messes with graphics.
    • Removed heart refill animation without affecting lag.

v11 12 Oct 2019

  • Under new management. General maintaining of the practice hack has been outsourced to the Americas.
  • A handful of menu items were moved around to keep similar options together.
  • Presets
    • All Dungeons preset (thanks to JoshRTA)
  • Game state
    • Full dungeon room resets
    • World state toggle
    • Crystal switch toggle
    • EG strength - renamed and added EG 0
  • Gameplay
    • Skip Triforce
    • Sanc heart*
    • Disable beams
    • Visible probes
    • Lit rooms* - also improved to work on current room
    • See bonk items
    • Disable BG1
    • Disable BG2
    • OoB Mode
    • * Moved from another menu
  • RNG control
    • Prize packs
  • Shortcuts
    • LTTPHack menu is now set in stone
    • VRAM repair
    • Somaria pits
  • HUD extras - renamed from "Counters"
    • Input display
    • Room time
    • Lag counter
    • Idle frames
    • Segment time
    • Lanmolas cycles
    • Lagometer
    • Enemy HP
    • Misslots RAM watch
    • Option already existed, but was renamed
    • Moved from "Features" menu
  • Renamed "Features" menu to "Configuration"
  • Holding START+SELECT on boot will now reset the practice hack configuration as intended.
  • Various features are now disabled during map screens.
  • Fixed a bug that somehow only prevented the GT Wizzrobes 2 preset from loading.
  • Replaced broken graphics in the item menu with placeholder tiles.
  • General refactoring. Practice hack control should be smoother now.


This version was lost in a time paradox.

v9 - 08.02.2018

  • Presets
    • Added "Bosses" menu at the bottom.
    • Added "Ganon (full magic)" preset.
    • Fixed crystal state for Pokey 1.
    • Misspellings.
  • Item/Equipment
    • Better control over each bottle and its contents.
    • Set which big keys you have.
  • Game state
    • Skip text
    • Remove sprites
    • Boss defeated
    • Pendants and crystals
    • Game flags, Progress, Map indicator
    • Toggle armed/strong EG
  • RNG control
  • Configurable controller shortcuts
  • Features
    • Music
    • Idle frames
    • Lagometer
    • Made it possible to toggle on/off any of the counters.
    • Disabled the "Show enemy HP" by default.
  • Persist some things through console power-off/on, resets or load state.
  • Comes in VanillaHUD and NoSaveState versions.
  • Fixed bug that set game phase to "Agahnim killed" when upgrading sword manually
  • Fixed bug that didn't update frame counters on mirror or underworld warps.
  • Set the SNES header ROM size to 2mb. This fixes an issue where the ROM would not load properly on some platforms (everdrive).
  • Show version in lttphack menu.
  • Instant lttphack menu (no waiting for menu to go up/down).
  • Improved transition detection (triggers on mirror/warp, reset counters when you start a new file)

v8 - 24.10.2016

  • Complete rewrite.
  • Presets.
  • I don't even remember anymore. This is the same version that's been around for a while, I just arbitrarily decided to remove "beta2" from the version.

v7 - 15.12.2015

  • Made save/load state code more robust. Screen should not get messed up anymore by loading during mirror warp.
    Big thanks to total for this fix.
  • Added a toggle for "always lit rooms".

v6 - 09.12.2015

  • Fixed a bug that made the game crash when resetting segment counter.

v5 - 08.12.2015

  • Made Link get full equipment when using 3rd filename slot before starting a game.
  • Added controller inputs for:
    • Upgrading sword, armor and shield.
    • Filling HP, magic, rupees and stuff.
    • Pause game and frame advance.
    • Displaying Link's coordinates.

v4 - 05.12.2015

  • Fixed a bug where saving or loading would add a frame to your attempts in a room.
  • Added a "Full HP indicator".

v3 - 02.12.2015

  • Removed a bunch of lag. Should be less laggy than original ROM now.
  • Added "Quick Warp Indicator".
  • Better enemy detection.
  • Removed per-room Game Time counter.
  • Better B. Thanks, Audity.

v2 - 30.11.2015

  • Fixed issue where parts of segment timer was erased.
  • Fixed issue where counters didn't run during maiden crystal sequence.
  • Added better transition detection for boss victory → overworld.

v1 - 29.11.2015

  • Initial release

Special thanks:

  • MathOnNapkins for making the ALTTP disassembly.
  • Acmlm for the save/load technique on SD2SNES. He is #1.
  • Pinkus for the original practice hack
  • Lui for creating poverty savestates.
  • Myramong for the music muting.