Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

The Legend of Zelda/RAM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a RAM map for The Legend of Zelda.


The corresponding ROM Map.

Zero Page Function Details
0x0000 Multiple Functions: X-coords of sprite, ...
0x0001 Multiple Functions: Y-coords of sprite, ...
0x0002 Multiple Functions: Tile # for sprite (left half), ...
0x0003 Multiple Functions: Tile # for sprite (right half), ...
0x0004 Multiple Functions: Attributes for sprite (left half), ...
0x0005 Multiple Functions: Attributes for sprite (right half), ...
0x0006 ?
0x0007 ?
0x0008 ?
0x0009 ?
0x000A ?
0x000B ?
0x000C ?
0x000D ?
0x000E ?
0x000F ?
0x0010 Current Level Index
0x0011 ?
0x0012 Game Mode 0 = Title/transitory; 1 = Selection Screen;
5=Normal; 6=Preparing Scroll; 7=Scrolling; 4=Finishing Scroll;
E = Registration; F = Elimination
0x0013 ?
0x0014 ?
0x0015 ?
0x0016 Current save slot $00=first, $01=second, $02=third; On selection/registration/elimination screens: $03=fourth option, $04=fifth option
0x0017 ?
0x0018 ?
0x0019 ?
0x001A ?
0x001B ?
0x001C ?
0x001D ?
0x001E ?
0x001F ?
0x0020 ?
0x0021 ?
0x0022 ?
0x0023 ?
0x0024 ?
0x0025 ?
0x0026 ?
0x0027 ?
0x0028 ?
0x0029 ?
0x002A ?
0x002B ?
0x002C ?
0x002D ?
0x002E ?
0x002F ?
0x0030 ?
0x0031 ?
0x0032 ?
0x0033 ?
0x0034 ?
0x0035 ?
0x0036 ?
0x0037 ?
0x0038 ?
0x0039 ?
0x003A ?
0x003B ?
0x003C ?
0x003D ?
0x003E ?
0x003F ?
0x0040 ?
0x0041 ?
0x0042 ?
0x0043 ?
0x0044 ?
0x0045 ?
0x0046 ?
0x0047 ?
0x0048 ?
0x0049 ?
0x004A ?
0x004B ?
0x004C Countdown until Link can use his sword again after touching a White Bubble
0x004D ?
0x004E ?
0x004F ?
0x0050 ?
0x0051 ?
0x0052 ?
0x0053 ?
0x0054 ?
0x0055 ?
0x0056 ?
0x0057 ?
0x0058 ?
0x0059 ?
0x005A ?
0x005B ?
0x005C ?
0x005D ?
0x005E ?
0x005F ?
0x0060 ?
0x0061 ?
0x0062 ?
0x0063 ?
0x0064 ?
0x0065 ?
0x0066 ROM Offset for start of current Song Data (low byte)
0x0067 ROM Offset for start of current Song Data (high byte)
0x0068 ?
0x0069 ?
0x006A Pulse-2 Channel Frequency Offset
0x006B Pulse-1 Channel Frequency Offset
0x006C Offset related to Music Pointers
0x006D ?
0x006E ?
0x006F ?
0x0070 Link's X-position on the screen
0x0071 Enemy #1's X-position Also used for dropped enemy item
0x0072 Enemy #2's X-position Also used for dropped enemy item?
0x0073 Enemy #3's X-position Also used for dropped enemy item?
0x0074 Enemy #4's X-position Also used for dropped enemy item
0x0075 Enemy #5's X-position Also used for dropped enemy item?
0x0076 Enemy #6's X-position Also used for dropped enemy item?
0x0077 Enemy #7's X-position Also used for dropped enemy item?
0x0078 Enemy #8's X-position Also used for dropped enemy item?
0x0079 Projectile X-position
0x007A Projectile X-position
0x007B Projectile #1's X-position
0x007C ?
0x007D ?
0x007E Link's Sword X-position
0x007F Boomerang/Bait X-position
0x0080 ?
0x0081 ?
0x0082 Link's Arrow X-position
0x0083 ?
0x0084 Link's Y-position on the screen
0x0085 Enemy #1's Y-position Also used for dropped enemy item?
0x0086 Enemy #2's Y-position Also used for dropped enemy item?
0x0087 Enemy #3's Y-position Also used for dropped enemy item?
0x0088 Enemy #4's Y-position Also used for dropped enemy item
0x0089 Enemy #5's Y-position Also used for dropped enemy item?
0x008A Enemy #6's Y-position Also used for dropped enemy item?
0x008B Enemy #7's Y-position Also used for dropped enemy item?
0x008C Enemy #8's Y-position Also used for dropped enemy item?
0x008D Projectile Y-position
0x008E Projectile Y-position
0x008F Projectile #1's Y-position
0x0090 ?
0x0091 ?
0x0092 Link's Sword Y-position
0x0093 Boomerang/Bait Y Position
0x0094 ?
0x0095 ?
0x0096 Link's Arrow Y-position
0x0097 Dungeon Floor Item
0x0098 The direction Link is facing $08=North, $04=South, $01=East, $02=West
0x0099 ?
0x009A ?
0x009B ?
0x009C ?
0x009D ?
0x009E ?
0x009F ?
0x00A0 ?
0x00A1 ?
0x00A2 ?
0x00A3 ?
0x00A4 ?
0x00A5 ?
0x00A6 ?
0x00A7 ?
0x00A8 ?
0x00A9 ?
0x00AA ?
0x00AB Type of item in screen The value indicates item type (bomb, heart, rupee, etc)
0x00AC ?
0x00AD Type of dropped enemy item #1
0x00AE Type of dropped enemy item #2?
0x00AF Type of dropped enemy item #3
0x00B0 Type of dropped enemy item #4
0x00B1 Type of dropped enemy item #5?
0x00B2 Type of dropped enemy item #6?
0x00B3 Type of dropped enemy item #7?
0x00B4 Type of dropped enemy item #8?
0x00B5 Projectile Onscreen?
0x00B6 Projectile Onscreen?
0x00B7 Projectile Onscreen?
0x00B8 ?
0x00B9 ?
0x00BA ?
0x00BB ?
0x00BC ?
0x00BD ?
0x00BE ?
0x00BF ?
0x00C0 ?
0x00C1 ?
0x00C2 Dropped Enemy Item
0x00C3 Dropped Enemy Item
0x00C4 ?
0x00C5 ?
0x00C6 ?
0x00C7 ?
0x00C8 ?
0x00C9 ?
0x00CA ?
0x00CB ?
0x00CC ?
0x00CD ?
0x00CE ?
0x00CF ?
0x00D0 ?
0x00D1 ?
0x00D2 ?
0x00D3 ?
0x00D4 ?
0x00D5 ?
0x00D6 ?
0x00D7 ?
0x00D8 ?
0x00D9 ?
0x00DA ?
0x00DB ?
0x00DC ?
0x00DD ?
0x00DE ?
0x00DF ?
0x00E0 Game Paused? $=No, $01=Yes
0x00E1 ?
0x00E2 ?
0x00E3 ?
0x00E4 ?
0x00E5 ?
0x00E6 ?
0x00E7 ?
0x00E8 Screen Scrolling? $00=No, $08=Northbound, $04=Southbound, $01=Eastbound, $02=Westbound
0x00E9 ?
0x00EA ?
0x00EB Current map location Value equals map x location + 0x10 * map y location
0x00EC ?
0x00ED ?
0x00EE ?
0x00EF ?
0x00F0 ?
0x00F1 ?
0x00F2 ?
0x00F3 ?
0x00F4 ?
0x00F5 ?
0x00F6 ?
0x00F7 ?
0x00F8 Player 1 Buttons (Last Frame) R = 1, L = 2, D = 4, U = 8, Start = 10, Select = 20, B = 40, A = 80
0x00F9 Player 2 Buttons (Last Frame) (See above)
0x00FA Player 1 Buttons Pressed $00=No, $08=Up, $04=Down, $01=Right, $02=Left $80=A, $40=B, $20=Select, $10=Start (these can be combined)
0x00FB Player 2 Buttons Pressed (See above)
0x00FC Subscreen Y-scroll position Used for storyboard text and subscreen position
0x00FD Subscreen X-scroll position This is always zero when not scrolling.
0x00FE ?
0x00FF ?


RAM Function Details
0x04CD The entry from ROM:0x18680 for the current room Overworld: stair placement, quest secrets, Link's V placement, monster entry
0x0513 Whether Link has used the candle on the current screen $00=No, $01=Yes
0x0526 Overworld room to return to when exiting the underworld
0x052E Red Bubble Sword Disable switch $01 if Link's use of his sword has been disabled by a red bubble, $00 otherwise.
0x052F Maze counter used for rooms 0x61 (forest maze) and 0x1B (mountain room south of level 5)
0x05F0 Related to current frequency being played by Triangle channel
0x05F1 Reverb on/off status for Triangle on current song
0x05F4 Rhythm table pointer for current song
0x0605 Related to incidental music?
0x0606 Sound Effects
0x0607 Incidental Music
0x0609 Songtype currently active $80=Title, $40=Dungeon, $20=Level 9, $10=Ending, $08=Item, $04=Triforce, $02=Ganon, $01=Overworld
0x060A Current position within Pulse 2 part (with respect to overall music program)
0x060B Current position within Pulse 1 part (with respect to overall music program)
0x060C Current position within Triangle part (with respect to overall music program)
0x060D Current position within Noise part (with respect to overall music program)
0x060E ?
0x060F Current cycle duration for notes played on Pulse 1 channel Uses value from rhythm lookup table
0x0610 Current cycle duration for notes played on Pulse 2 channel Uses value from rhythm lookup table
0x0611 Countdown from Pulse 2's current rhythm offset Uses value from rhythm lookup table
0x0612 Pulse 2 countdown; volume fade
0x0613 Countdown from Pulse 1's current rhythm offset Uses value from rhythm lookup table
0x0614 Pulse 1 countdown; volume fade
0x0615 Current cycle duration for notes played on Triangle channel Uses value from rhythm lookup table
0x0616 Countdown from value in $615 until next note is to be played
0x0617 ?
0x0618 Related to incidental music
0x0619 Reverb on/off status for BOTH Pulse channels on current song $80=on, $01=off
0x061A ?
0x061B Countup to Pulse 2 rhythm offset
0x061C Countup to Pulse 1 rhythm offset
0x061D ??? (seems to count upward as $616 counts down) Value is always [$615] - [$616] + 1.
0x061E Number of repeats remaining if in Triangle repeat cycle
0x061F Position within song program of current Triangle repeat coda (return point)
0x0620 Screen history write index Contains the index of the next screen history slot to write to (see below)
0x0621 Screen history 1 One of five recently visited map locations
0x0622 Screen history 2 One of five recently visited map locations
0x0623 Screen history 3 One of five recently visited map locations
0x0624 Screen history 4 One of five recently visited map locations
0x0625 Screen history 5 One of five recently visited map locations
0x0626 ?
0x0627 Killed enemy count Number of killed enemies in current screen
0x0628 Unused
0x0629 Unused
0x062A Unused
0x062B Unused
0x062C Unused
0x062D Current quest for first save slot $00=First, $01=Second
0x062E Current quest for second save slot $00=First, $01=Second
0x062F Current quest for third save slot $00=First, $01=Second
0x0630 Number of deaths for first save slot
0x0631 Number of deaths for second save slot
0x0632 Number of deaths for third save slot
0x0656 Cursor position for selecting Link's B item
0x0657 Current sword $00=None, $01=Sword, $02=White Sword, $03=Magical Sword
0x0658 Number of Bombs
0x0659 Arrow status $00=None, $01=Arrow, $02=Silver Arrow
0x065A Bow in Inventory $00=False, $01=True
0x065B Status of candle 00=None, $01=Blue Candle, $02=Red Candle
0x065C Whistle in Inventory $00=False, $01=True
0x065D Food in Inventory $00=False, $01=True
0x065E Potion in Inventory $00=None/Letter, $01=Life Potion, $02=2nd Potion
0x065F Magical Rod in Inventory $00=False, $01=True
0x0660 Raft in Inventory $00=False, $01=True
0x0661 Magic Book in Inventory $00=False, $01=True
0x0662 Ring in Inventory $00-None, $01-Blue Ring, $02-Red Ring. Note: Changing this value will not change Link's color.
0x0663 Step Ladder in Inventory $00=False, $01=True
0x0664 Magical Key in Inventory $00=False, $01=True
0x0665 Power Bracelet in Invenotry $00=False, $01=True
0x0666 Letter in Inventory $00=False, $01=True, Link can buy potions from the old woman if $02.
0x0667 Compass status for Levels 1 through 8 When value is converted to binary, a $01 represents having the Compass and a $00 represents not having it.
0x0668 Map status for Levels 1 through 8 When value is converted to binary, a $01 represents having the Map and a $00 represents not having it.
0x0669 Level 9 Compass possessed $00=False, $01=True
0x066A Level 9 Map possessed $00=False, $01=True
0x066C Clock possessed $00=False, $01=True
0x066D Number of Rupees
0x066E Number of Keys
0x066F Heart Containers Low Nibble = how many hearts are filled. High Nybble = Number of heart containers - 1
Ex: $10 = 2 Heart Containers with none filled
0x0670 The heart following the last filled heart $00 = empty, $01 to $7F = half full, $80 to $FF = full.
0x0671 Triforce pieces When value is converted to binary, a $01 represents having the piece and a $00 represents not having it.

See this image for a visualization.

0x0674 Boomerang in Inventory $00=False, $01=True. Note: 0x0675 overrides this variable.
0x0675 Magical Boomerang in Inventory $00=False, $01=True.
0x0676 Magic Shield in Inventory $00=False, $01=True.
0x067C Maximum number of bombs Starts out as $08.
0x067D Number of rupees to add
0x067E Number of rupees to subtract
0x6804 Link's tunic color $29 = green, $32 = blue, $16 = red
0x6B92 Link's tunic color. Overwritten with 0x6804 when Link exits a cave or enters or exits a level
0xA014 Name table drawing macro offset Pointer to a macro that writes name table data to PPU memory