Claim set · data/claims/ladx.yaml

The Legend of Zelda: Link's Awakening (the zladx disassembly of DX, and the 1993 Game Boy ROM)

Game: The Legend of Zelda: Link's Awakening.

A monster's touch costs Link the damage its health group lists, in eighths of a heart, mostly 4 or 8. In Link's Awakening DX the Blue Tunic halves it; the Guardian Acorn halves it too, and cancels a half-heart touch outright. ladx/contact-damage

About: The Legend of Zelda: Link's Awakening Damage formula

Value
{
 "halfHeart": 4,
 "heart": 8,
 "perHeart": 8
}
CodeLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L5313-L5341 ld hl, wEntitiesHealthGroup ;; 03:6D89 $21 $D0 $C4 add hl, bc ;; 03:6D8C $09 ld d, b ;; 03:6D8D $50 ld e, [hl] ;; 03:6D8E $5E ld hl, EntityDamagesForGroup ;; 03:6D8F $21 $F1 $47 add hl, de ;; 03:6D92 $19 ld e, [hl] ;; 03:6D93 $5E … ld a, [wTunicType] ;; 03:6D94 $FA $0F $DC cp TUNIC_BLUE ;; 03:6D97 $FE $02 jr z, .takeHalfDamages ;; 03:6D99 $28 $0E …LADX-Disassembly: Disassembly of Link's Awakening DX · src/data/entities/damages.asm#L4-L9EntityDamagesForGroup:: ._00 db $04 ._01 db $04 ._02 db $08 ._03 db $08 ._04 db $18LADX-Disassembly: Disassembly of Link's Awakening DX · src/code/bank2.asm#L5305-L5319 — full health is wMaxHearts × 8, so a heart is 8 units of wHealth ld a, [wMaxHearts] ;; 02:6358 $FA $5B $DB … sla a ;; 02:6361 $CB $27 sla a ;; 02:6363 $CB $27 sla a ;; 02:6365 $CB $27 ld e, a ;; 02:6367 $5F … ld a, [wHealth] ;; 02:6368 $FA $5A $DB cp e ;; 02:636B $BB jr nz, .incrementHealth ;; 02:636C $20 $06Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xC84E-0xC87D — the 1993 release's damage table, bank 3; its first 48 groups match DX's byte for byteChecked by claude, 2026-10-25 — read the hit branch at 03:6D89-6DA9: the health group indexes EntityDamagesForGroup; with the acorn a 4 becomes 0 and then falls into the halving, any other value is halved. Read the health refill at 02:6358-636C, which treats wMaxHearts × 8 as full health

The damage goes to wSubtractHealthBuffer, which drains into wHealth over the following frames. The table has groups worth 0, 12, 16, and 24 as well. The comment at bank3.asm L5327 says an active Guardian Acorn means "take no damages"; the code zeroes only a damage of 4 and halves the rest.

Cited by: The Legend of Zelda: Link's Awakening

A monster's touch does nothing while Link's invincibility counter is above 0; a hit sets it to $50, and the main loop counts it down every frame, so the protection lasts 80 frames. ladx/hurt-iframes

About: The Legend of Zelda: Link's Awakening Invincibility frames

Value: 80 frames

CodeLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L5300-L5307ld a, [wInvincibilityCounter] … jp nz, setCarryAndReturnLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L5347-L5348ld a, $50 ;; 03:6DB2 $3E $50 ld [wInvincibilityCounter], aLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/bank0.asm#L1500-L1505; If wInvincibilityCounter > 0, decrement it … dec [hl]Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xB9A-0xBA1 — the same decrement in the 1993 release, bank 0 (ld hl,$DBC7; ld a,[hl]; and a; jr z; dec [hl])Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xED8F-0xEDCB — the 1993 release's hit code, from the counter test to the `$50` store (game-boy-hit)Checked by claude-agent, 2026-10-21 — read the hit branch's guard and store, and the decrement in the main gameplay handler's normal flow, then found both byte sequences in the Game Boy ROM

Cited by: The Legend of Zelda: Link's Awakening

A monster's touch starts a 16-frame countdown and picks a speed of $14 ($18 for Moldorm), in both releases. In DX the speed goes along the line from the monster to Link, and while the countdown runs a routine at the top of Link's movement moves him by that speed and skips the rest, so the player can't steer. ladx/knockback

About: The Legend of Zelda: Link's Awakening Knockback

Value
{
 "speed": 20,
 "moldorm": 24,
 "frames": 16
}
CodeLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L5376-L5398ld a, $10 … ld [wIgnoreLinkCollisionsCountdown], a … cp ENTITY_MOLDORM … ld a, $14 … ld a, $18 … call func_003_7565LADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L6809-L6814func_003_7565:: call GetVectorTowardsLink … ldh [hLinkSpeedY], a … ldh [hLinkSpeedX], aLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/bank2.asm#L588-L614func_002_44C2:: ld a, [wIgnoreLinkCollisionsCountdown] … ret z … dec a … call UpdateFinalLinkPosition … pop af … jp ApplyLinkMotionStateLegend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xEDF7-0xEE16 — the 1993 release's knockback setup, bank 3, byte for byte DX's from the `$10` store to the Moldorm speed but for one jump addressChecked by claude-agent, 2026-10-21 — read the knockback tail of the hit branch, func_003_7565, and func_002_44C2, which pops its caller's return address after moving Link; GetVectorTowardsLink's header gives the length as an infinity norm

A wall in the way zeroes the blocked axis (L597-L610). The Game Boy ROM's countdown routine is laid out differently (jr z for ret z) and wasn't read. The countdown's comment in wram.asm says it also makes Link ignore collisions. The speed units weren't read.

Cited by: The Legend of Zelda: Link's Awakening

Link's Awakening keeps A Link to the Past's four Pieces of Heart per container. The fourth piece clears the count, adds a heart to Link's maximum, and queues $40 of health, eight hearts' worth. ladx/heart-pieces

About: The Legend of Zelda: Link's Awakening Health upgrade

Value
{
 "pieces": 4,
 "refill": 64
}
CodeLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L2922-L2937; If found 4 heart pieces… ld a, [wHeartPiecesCount] … cp $04 … ; Clear heart pieces count … ld [hl], $40 … ; Increase the maximum number of hearts ld hl, wMaxHearts … inc [hl]usdasm: A Link to the Past US Disassembly · bank_05.asm#L20390-L20402|05F08A| LDA.l $7EF36B |05F08E| INC A |05F08F| AND.b #$03 |05F091| STA.l $7EF36B |05F095| BNE .not_full_set … |05F09C| LDY.b #$26 ; ITEMGET 26Legend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xDB1E-0xDB32 — the same count test, reset, `$40` of health, and `inc` of the maximum in the 1993 Game Boy release, bank 3Checked by claude-agent, 2026-10-21 — read the Piece of Heart's state 6 handler in DX, A Link to the Past's Piece of Heart contact branch, and found DX's byte sequence (cp $04, jr nz, the jingle, xor a, ld [wHeartPiecesCount], ld [hl],$40, inc [hl]) in the Game Boy ROM

Cited by: Health upgrade, The Legend of Zelda: Link's Awakening

A heart container left by a boss adds a heart to Link's maximum and queues $FF of health, a full refill. ladx/heart-container

About: The Legend of Zelda: Link's Awakening Health upgrade

CodeLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L2766-L2772ld a, MUSIC_AFTER_BOSS … ; Increase max health, and fully restore health ld hl, wMaxHearts … inc [hl] … ld hl, wAddHealthBuffer … ld [hl], $FFLegend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xDA4D-0xDA55 — the same `inc` of the maximum and `$FF` of health in the 1993 release, bank 3Checked by claude-agent, 2026-10-21 — read the heart container's pickup state in DX and found its bytes (ld hl,$DB5B; inc [hl]; ld hl,$DB93; ld [hl],$FF) in the Game Boy ROM

Cited by: Health upgrade, The Legend of Zelda: Link's Awakening

The 1993 Game Boy release has the same hit code as DX without the tunic check. It reads the damage from its health-group table, applies the Guardian Acorn's rule, and stores the same $50 in the invincibility counter. ladx/game-boy-hit

About: The Legend of Zelda: Link's Awakening Damage formula

CodeLegend of Zelda, The - Link's Awakening (USA, Europe) (Rev 2) · 0xED8F-0xEDCB — bank 3; from the counter test to the `$50` store, DX's bytes less the 7-byte tunic testLADX-Disassembly: Disassembly of Link's Awakening DX · src/code/entities/bank3.asm#L5323-L5325 ld a, [wTunicType] ;; 03:6D94 $FA $0F $DC cp TUNIC_BLUE ;; 03:6D97 $FE $02 jr z, .takeHalfDamages ;; 03:6D99 $28 $0EChecked by claude, 2026-10-25 — compared the Game Boy ROM's bytes at 0xED8F-0xEDCB with DX's (USA, Europe Rev 2 at 0xED68): identical but for the tunic test's FA 0F DC FE 02 28 0E and the addresses of the jump target and damage table

The tunics arrived with DX; the Game Boy ROM has no read of $DC0F in this routine.

Cited by: The Legend of Zelda: Link's Awakening