Claim set · data/claims/zelda2.yaml

Zelda II: The Adventure of Link (Trax's disassembly and the USA ROM)

Game: Zelda II: The Adventure of Link.

A new game starts with four heart containers and four magic containers. Picking up a container adds one, and a full meter holds 32 units per container less one, so four containers fill to 127. zelda2/containers

About: Zelda II: The Adventure of Link Health upgrade

Value
{
 "start": 4,
 "unitsPerContainer": 32
}
Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg5.asm#L7062-L706417AFF - Number of Magic Containers to begin game … 17B00 - Number of Heart Containers to begin gamez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L6158-L6165Item is Magic (0E) or Heart (0F) Container … INC $0775,x ; 0x1e7dd $E7CD FE 75 07 ; 0E = Magic Containers, 0F = Heart Containersz2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L1815-L1831Units Left = Number of Containers * 20 - 1 … LDA $0783,x ; 0x1cb28 $CB18 BD 83 07 ; Current number of Magic/Heart ContainersChecked by claude-agent, 2026-10-21 — read the new-game defaults in bank 5, the container pickup at $E7BB, and the fill routine at $CB18 (five ASLs, then SBC #$01)

The comment's "20" is hexadecimal. A byte meter can't hold more than eight containers' worth (8 × 32 − 1 = 255).

Cited by: Health upgrade, Magic meter, Zelda II: The Adventure of Link

A monster's damage code (0–7) and Link's life level (1–8) pick the life a hit takes from an 8 × 8 table, halved while the Shield spell is on. Code 0 takes 16 units at life level 1 and 4 at level 8; code 6 takes 224 and 80; code 7 takes 255 at every level. zelda2/damage-table

About: Zelda II: The Adventure of Link Damage formula

Value
{
 "code0": [
  16,
  12,
  12,
  12,
  8,
  4,
  4,
  4
 ],
 "code3": [
  96,
  72,
  56,
  48,
  40,
  32,
  28,
  24
 ],
 "code6": [
  224,
  192,
  160,
  144,
  128,
  112,
  96,
  80
 ],
 "code7": 255
}
Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5401-L5410.byt $10,$0C,$0C,$0C,$08,$04,$04,$04; … ;Damage Code 0 … .byt $E0,$C0,$A0,$90,$80,$70,$60,$50; … ;Damage Code 6 … .byt $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; … ;Damage Code 7z2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5436-L5451LDA $0C ; 0x1e32d … ADC $0779 ; 0x1e332 $E322 6D 79 07 ; Add Life Power (1-8) … LSR ; 0x1e33e $E32E 4A ; Divide by 2 (if Shield is cast) … SBC $0C ; 0x1e345Checked by claude-agent, 2026-10-21 — read bank7_Link_Hit_Routine: the code times 8 plus the life level indexes LE2AE, one byte before the table, so level 1 reads column 0

The damage code is the low nibble of the monster's vulnerability byte (L5426-L5427). Life levels are bought with experience, so this is the game's defense stat.

Cited by: Zelda II: The Adventure of Link

A sword hit takes 2, 3, 4, 6, 9, 12, 18, or 24 hit points from a monster for attack levels 1 to 8, and the Thunder spell's entry is 50. zelda2/attack-power

About: Zelda II: The Adventure of Link Damage formula

Value
[
 2,
 3,
 4,
 6,
 9,
 12,
 18,
 24
]
Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5953-L5955.byt $02,$03,$04,$06,$09,$0C,$12,$18; 0x1e67d $E66D 02 03 04 06 09 0C 12 18 ;Attack Power for 8 Levels (8 bytes) … ;Attack Power for Thunder spellz2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L6060-L6070LDY $0777 ; 0x1e733 $E723 AC 77 07 ; Attack Power … SBC LE66C,y ; 0x1e742 $E732 F9 6C E6 ; refer to table at $1E66C (+1) … BEQ LE74C ; 0x1e747 $E737 F0 13 ; if (HP == 0)Checked by claude-agent, 2026-10-21 — read the sword-hit branch at $E723; LE66C is defined as the JMP's address plus 2 ($E66C), so attack level 1 reads $E66D

Cited by: Zelda II: The Adventure of Link

A hit sets Link's immunity timer to 4 and his injured timer to 32. The game counts the injured timer down every frame but the immunity timer only once every 21 frames, so the immunity lasts 64 to 84 frames, depending on where in the cycle the hit lands. zelda2/hurt-timers

About: Zelda II: The Adventure of Link Invincibility frames

Value
{
 "immunity": 4,
 "tickFrames": 21,
 "injured": 32
}
Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5460-L5463LDA #$20 ; 0x1e35c … STA $050C ; 0x1e35e $E34E 8D 0C 05 ; Timer for Link being in injured state … LDA #$04 ; 0x1e361 … STA $0518 ; 0x1e363 $E353 8D 18 05 ; Timer for Link being immune (0 = vulnerable)z2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5412-L5416LDA $0518 ; 0x1e301 $E2F1 AD 18 05 ; Timer for Link immunity (0 = vulnerable) … BNE LE308z2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L388-L401LDX #$0C … DEC $0500 … LDA #$14 … LDX #$18 … DEC $0501,x ; 0x1c18c $C17C DE 01 05 ; decrease all 5xx timers (if > 0)Zelda II - The Adventure of Link (USA) · 0x1C179-0x1C191 — bank 7 $C169-$C181, the timer loop; the source's `BPL :-` assembles to the wrong target, and the ROM's F5 branches back to $C177Checked by claude-agent, 2026-10-21 — read the hit routine's timer stores and the frame loop at $C169: X = $0C covers $0501-$050D every frame; when $0500 drops below 0 it reloads 20 and X = $18 reaches $0519, so $0518 ticks every 21st frame

The hit routine returns without damage while $0518 is above 0 (L5430-L5431). The loop doesn't run during dialogs.

Cited by: Zelda II: The Adventure of Link

A monster's body hit sets Link's horizontal speed from a table, $0D or $F3 (−13) by the comments for facing left or right, and his vertical speed to $FE (−2), a hop away. zelda2/recoil

About: Zelda II: The Adventure of Link Knockback

Value
{
 "x": 13,
 "y": -2
}
Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5491-L54970D = X Velocity when Link is hit - Facing left … F3 = X Velocity when Link is hit - Facing right … This applies to being hit by the enemy itself, but not its weaponz2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5525-L5545bank7_Set_Links_Recoil: … LDA LE36C,y ; 0x1e3c3 $E3B3 B9 6C E3 ; … STA $70 ; 0x1e3c6 $E3B6 85 70 ; Link's X Velocityz2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L5469-L5470LDA #$FE ; 0x1e371 $E361 A9 FE ; A = FE … STA $057D ; 0x1e373 $E363 8D 7D 05 ; Link's Y Velocity when hitChecked by claude-agent, 2026-10-21 — read bank7_Set_Links_Recoil and the end of the hit routine; the index into LE36C comes from the monster's side relative to Link

Which side maps to which sign is the comments' reading; the code picks the entry from bank7_Determine_Enemy_Facing_Direction_relative_to_Link, not read here. The units of $70 aren't established.

Cited by: Zelda II: The Adventure of Link

A spell's cost comes from an 8 × 8 table by spell and magic level, in meter units (32 per container). Shield costs 64 at magic level 1 and 32 from level 4; Life costs 140 at level 1 and 100 from level 5; Thunder costs 240 until level 7. Casting fails when the meter can't cover the cost. zelda2/spell-costs

About: Zelda II: The Adventure of Link Magic meter

Value
{
 "shield": [
  64,
  48,
  48,
  32,
  32,
  32,
  32,
  32
 ],
 "life": [
  140,
  140,
  120,
  120,
  100,
  100,
  100,
  100
 ],
 "thunder": [
  240,
  240,
  240,
  240,
  240,
  240,
  200,
  128
 ]
}
Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg0.asm#L2161-L2177Table_for_Magic_Needed_for_Spells: … 40 30 30 20 20 20 20 20 Shield … 8C 8C 78 78 64 64 64 64 Life … F0 F0 F0 F0 F0 F0 C8 80 Thunderz2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg0.asm#L2196-L2205ADC $0778 ; 0xdf8 $8DE8 6D 78 07 ; Add Magic Level to get magic usage (index) … BCC L8E3B ; 0xe03 $8DF3 90 46 ; if Carry Clear (not enough magic) goto $0E3BChecked by claude-agent, 2026-10-21 — read Spell_Casting_Routine: the selector times 8 plus the magic level indexes L8D7A, one byte before the table

Cited by: Magic meter, Zelda II: The Adventure of Link

Zelda II's sword beam fires only when the life meter is exactly full, containers × 32 − 1; The Legend of Zelda fired it with up to half a heart missing. zelda2/full-life-beam

About: Zelda II: The Adventure of Link Sword beam

Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg0.asm#L3824-L3834Check_if_Life_is_Full: … LDA $0784 ; 0x185e $984E AD 84 07 ; Current number of Heart Containers … SBC #$01 … CMP $0774 ; 0x1869 $9859 CD 74 07 ; Current Life left in meter … BNE L9878 ; 0x186c $985C D0 1A ; if Life not Full, goto $1878zelda1-disassembly: A complete disassembly of The Legend of Zelda · src/Z_07.asm#L4632-L4648; If full hearts <> (heart containers - 1), return. … ; If partial heart is less than half full, return. LDA HeartPartial CMP #$80 BCC L1F854_ExitLegend of Zelda, The (USA) (Rev 1) · 0x1F86A-0x1F88C — bank 7 MakeSwordShot in Rev 1, from the slot check to the half-heart testChecked by claude-agent, 2026-10-21 — read Check_if_Life_is_Full (five ASLs, SBC #$01, CMP, BNE) and Zelda 1's MakeSwordShot

With the Fire spell on, the routine skips the beam check (Check_for_Fire_Spell, L3820-L3823).

Cited by: Sword beam, Zelda II: The Adventure of Link

Zelda II keeps The Legend of Zelda's locked-door rule. The Magic Key opens a door for free; otherwise a key is spent, and with no keys the door stays shut. zelda2/magic-key

About: Zelda II: The Adventure of Link Keys and locked doors

Codez2disassembly: Disassembly of Zelda II: The Adventure of Link for NES · src/prg7.asm#L4031-L4035LDA $078C ; 0x1d9ea $D9DA AD 8C 07 ; Have Magic Key … LDA $0793 ; 0x1d9ef $D9DF AD 93 07 ; Current number of keys … DEC $0793zelda1-disassembly: A complete disassembly of The Legend of Zelda · src/Z_05.asm#L3981-L3989; If we don't have the magic key nor any normal keys, ; go block movement. LDA InvMagicKey BNE @TriggerDoor LDA InvKeys BEQ BlockAtWall ; If we don't have the magic key, decrease the key count. DEC InvKeysLegend of Zelda, The (USA) (Rev 1) · 0x15285-0x152A2 — TouchDoorKey in Rev 1, which moved bank 5's room code (zelda/rev1)Checked by claude-agent, 2026-10-21 — read the door branch at $D9DA (Magic Key → skip the DEC; zero keys → $D9FD, an RTS) and Zelda 1's TouchDoorKey, found in Rev 1 by its bytes

Cited by: Keys and locked doors, Zelda II: The Adventure of Link