Claim set · data/claims/metroid.yaml

Metroid (nmikstas's disassembly and the US ROM)

Game: Metroid.

Wikidata lists Nintendo Research & Development 1 as the developer of Metroid and Nintendo as its publisher, and dates its release on the Famicom Disk System in Japan 6 August 1986. metroid/release

WikidataWikidata · Q2530723, P178 developer, P123 publisher, and P577 publication date qualified by P291 place and P400 platform — read through the Query Service on 2026-10-20; for the NES in North America it holds two dates, 1 and 15 August 1987+1986-08-06T00:00:00Z … +1987-08-15T00:00:00Z … +1987-08-00T00:00:00Z

Cited by: Invincibility frames, Metroid

nmikstas's disassembly of Metroid, assembled with Ophis, equals the PRG ROM of Metroid (USA) byte for byte. metroid/build

CodeMetroid (USA) · 0x1C010-0x1C029 — bank 7 $C000, RandomNumbers, the first routine of the engine bankmetroid-disassembly: Metroid software disassembly · build_script#L32-L33out00=($(md5sum Output_Files/Bank00.bin)) org00="8890cbea191c4218a754aa926ca61c9a"Checked by claude-agent, 2026-10-20 — assembled Header.asm and Bank00-07.asm with Ophis (michaelcmartin/Ophis); every bank matches the md5 in build_script, and the eight banks together equal the ROM after its 16-byte header (SHA-1 fdbfc7871962f72a1ef57e5a7e456164fb93430b)

The repo's README says the work "started off as a disassembly of the game engine by Kent Hansen many years ago". Much of bank 7's crash detection keeps raw labels such as LF282.

Cited by: Metroid

Samus's health is binary-coded decimal in tenths of a unit; HealthHi holds the full energy tanks in its high nibble and the tens digit in its low nibble, and HealthLo holds the ones digit in its high nibble. metroid/health-format

About: Metroid Health upgrade

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Metroid_Defines.asm#L270-L272.alias HealthLo $0106 ;Lower health digit in upper 4 bits. .alias HealthHi $0107 ;Upper health digit in lower 4 bits ;# of full tanks in upper 4 bits.metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L8211-L8212 ldx #$00 ;Increase HealthHi by 0. ldy #$50 ;Increase HealthLo by 5.Metroid (USA) · 0x1CEA2-0x1CF08 — bank 7 $CE92, SubtractHealth, which subtracts in base 10Checked by claude-agent, 2026-10-20 — read the defines and the base-10 subtract and add routines

$50 in HealthLo is 5 units, so its low nibble is a tenths digit the display leaves out.

Cited by: Health upgrade, Metroid

Samus starts with 30 units of energy and no energy tanks. metroid/start-health

About: Metroid Health upgrade

Value: 30 units

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L1580-L1583 LDA #$00 ; STA HealthLo ;Starting health is LDA #$03 ;set to 30 units. STA HealthHi ;Metroid (USA) · 0x1C8E1-0x1C93A — bank 7 SamusInit, $C8D1Checked by claude-agent, 2026-10-20 — read SamusInit; the probe reads 30.0 when play begins

Cited by: Health upgrade, Metroid

When an enemy touches Samus, the game charges her the base damage of the current area, two bytes in that area's bank at $95CE, whatever the enemy; Brinstar's is 8 units, Norfair's 10, Kraid's hideout's 20, Ridley's hideout's 24, and Tourian's 30. metroid/area-damage

About: Metroid Damage formula

Value
{
 "brinstar": 8,
 "norfair": 10,
 "kraid": 20,
 "ridley": 24,
 "tourian": 30
}
Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L7997-L8000LF306: lda $95CE sta HealthLoChange lda $95CF sta HealthHiChangemetroid-disassembly: Metroid software disassembly · Source_Files/Bank01.asm#L1829-L1830L95CE: .byte $80 ;Base damage caused by area enemies to lower health byte. L95CF: .byte $00 ;Base damage caused by area enemies to upper health byte.metroid-disassembly: Metroid software disassembly · Source_Files/Bank02.asm#L1844-L1845L95CE: .byte $00 ;Base damage caused by area enemies to lower health byte. L95CF: .byte $01 ;Base damage caused by area enemies to upper health byte.metroid-disassembly: Metroid software disassembly · Source_Files/Bank04.asm#L1845-L1846L95CE: .byte $00 ;Base damage caused by area enemies to lower health byte. L95CF: .byte $02 ;Base damage caused by area enemies to upper health byte.metroid-disassembly: Metroid software disassembly · Source_Files/Bank05.asm#L1849-L1850L95CE: .byte $40 ;Base damage caused by area enemies to lower health byte. L95CF: .byte $02 ;Base damage caused by area enemies to upper health byte.metroid-disassembly: Metroid software disassembly · Source_Files/Bank03.asm#L1852-L1853L95CE: .byte $00 ;Base damage caused by area enemies to lower health byte. L95CF: .byte $03 ;Base damage caused by area enemies to upper health byte.metroid-disassembly: Metroid software disassembly · README.md#L18-L22* Bank01 - Brinstar * Bank02 - Norfair * Bank03 - Tourian * Bank04 - Kraid Hideout * Bank05 - Ridley HideoutMetroid (USA) · 0x1F316-0x1F320 — bank 7 $F306, the loadMetroid (USA) · 0x55DE-0x55DF — bank 1 $95CE, Brinstar's bytes; banks 2-5 hold the others at the same addressChecked by claude-agent, 2026-10-20 — read the enemy contact path (LF282 and LF2ED reach LF306) and each area bank's two bytes, decoded by health-format

Two other routines in bank 7 charge a flat 5 units (`lda

Cited by: Metroid

With the Varia suit, SubtractHealth halves every amount it takes from Samus. metroid/varia

About: Metroid Damage formula

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2523-L2531LCEAC: lda SamusGear ; LCEAF: and #gr_VARIA ;Check is Samus has Varia. LCEB1: beq + ; LCEB3: lsr HealthLoChange ;If Samus has Varia, divide damage by 2. LCEB5: lsr HealthHiChange ;Metroid (USA) · 0x1CEA2-0x1CF08 — bank 7 SubtractHealth, $CE92Checked by claude-agent, 2026-10-20 — read SubtractHealth from its entry to the base-10 subtraction

The halving works on decimal digits, so the routine adds $4F back when a bit carries out of HealthHiChange ($01 halves to 5.0 units).

Cited by: Metroid

On each frame of the blink, CheckHealthStatus sets Samus's horizontal speed in the push direction to the blink counter divided by 16, so the push ends when the counter falls below 16; below 48, it skips the push on any frame Samus has horizontal acceleration. metroid/push

About: Metroid Knockback

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2451-L2463 ldx DmgPushDir inx beq +++ jsr Adiv16 ; / 16 cmp #$03 bcs + ldy SamusHorzAccel bne +++ jsr LCF4E * dex bne + jsr TwosCompliment ;($C3D4) …metroid-disassembly: Metroid software disassembly · Source_Files/Metroid_Defines.asm#L165.alias DmgPushDir $72 ;#$00=Push Samus left when hit, #$01=Push right, #$FF=No push. Metroid (USA) · 0x1CE0A-0x1CE93 — bank 7 CheckHealthStatusChecked by claude-agent, 2026-10-20 — read the blink branch; A holds the counter before its decrement, Adiv16 shifts right four times, and LCF4E clears the speed and linear counter before the new speed is stored

The probe reads ObjHorzSpeed as 1 throughout the push, so later movement code limits the stored 3 and 2; how is open. Lava sets DmgPushDir to $FF, no push.

Cited by: Knockback, Metroid

Measured the same way, with the crawler moved off Samus during each blink, the three pushes carried her 37, 45, and 44 px away from it; two lifted her 19 px and one 2 px. metroid/push-measured

About: Metroid Knockback

Value
{
 "probe": {
  "moved": [
   37,
   45,
   44
  ],
  "rise": [
   19,
   2,
   19
  ]
 }
}
VerifiedMetroid (USA) · 0x1CE0A-0x1CE93 — bank 7 CheckHealthStatusmetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2421-L2463 — the hit and blink brancheslda SamusHit and #$08 lsr lsr lsr sta DmgPushDir * lda #$FD sta ObjVertSpeed lda #$38 sta SamusGravityThe atlas reads this differently: #$32 is hex: the blink is set to 50, and CheckHealthStatus counts it down by 1 a frame, so Samus blinks for 50 frames. (metroid/blink-set)Checked by claude-agent, 2026-10-25 — Read the hit and blink branches of CheckHealthStatus (Bank07.asm L2421-2463) at the pinned commit: a hit takes the push direction from bit 3 of SamusHit, sets vertical speed $FD and hit gravity $38; the distances are the probe's measurement in the ROM.Probe: probes/zelda-metroid/metroid.mjs

The second hit's flags were $38 where the others' were $28; why it lifted Samus only 2 px is open.

Cited by: Knockback, Metroid

In lava, Samus's blink is set to 50 on every frame, so enemies can't touch her, while the lava takes 0.7 units twice every 8 frames without a push; the Varia suit cuts that to once, and SubtractHealth halves it to 0.3 units. metroid/lava

About: Metroid Invincibility frames

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L5432-L5450LE27B: sty DmgPushDir ;Don't push Samus from lava damage. LE27D: jsr ClearHealthChange ;($F323)Clear any pending health changes to Samus. LE280: lda #$32 ; LE282: sta SamusBlink ;Make Samus blink. … LE28F: lsr ;This portion of the code causes Samus to be damaged by LE290: and #$03 ;lava twice every 8 frames if she does not have the varia LE292: bne ++ ;but only once every 8 frames if she does. … LE29D:* lda #$07 ; LE29F: sta HealthLoChange ;Samus takes lava damage. LE2A1: jsr SubtractHealth ;($CE92)metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2523-L2527LCEAC: lda SamusGear ; LCEAF: and #gr_VARIA ;Check is Samus has Varia. … LCEB3: lsr HealthLoChange ;If Samus has Varia, divide damage by 2.Metroid (USA) · 0x1E279-0x1E2B8 — bank 7 LavaAndMoveCheck, $E269Checked by claude-agent, 2026-10-20 — read LavaAndMoveCheck and SubtractHealth; $07 in HealthLo is 0.7 units (health-format), and halved it is $03

Cited by: Invincibility frames, Knockback, Metroid

The main loop calls RandomNumbers once per frame, after the frame's work; it adds 5 to RandomNumber1 five times, 25 in all, so the byte steps through all 256 values every 256 frames. metroid/rng

About: Metroid Random number generator

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L34-L47RandomNumbers: … LC002: LDX #$05 ; LC004:* LDA RandomNumber1 ; LC006: CLC ; LC007: ADC #$05 ; LC009: STA RandomNumber1 ;2E is increased by #$19 every frame and … LC012: DEX ; LC013: BNE - ;metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L170-L177WaitNMIEnd: … LC0D3:* JSR RandomNumbers ;($C000)Update pseudo random numbers. LC0D6: JMP MainLoop ;($C0BC)Jump to top of subroutine.Metroid (USA) · 0x1C010-0x1C029 — bank 7 $C000Checked by claude-agent, 2026-10-20 — read RandomNumbers and the main loop; 25 is odd, so the step has period 256

The comment's #$19 is 25. Whether an enemy drops anything therefore depends on the frame it dies.

Cited by: Item drop table, Metroid

When an enemy dies, a RandomNumber1 below 16 drops nothing; otherwise its low 3 bits pick from ItemDropTbl, which holds a missile at 0 and 3, energy at 1, 4, and 6, and $89 at 2, 5, and 7. metroid/drop-roll

About: Metroid Item drop table

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4575-L4581 LDA RandomNumber1 CMP #$10 BCC LDD5B * AND #$07 TAY LDA ItemDropTbl,y STA EnAnimFrame,xmetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4722-L4732;The following table determines what, if any, items an enemy will drop when it is killed. ItemDropTbl: LDE35: .byte $80 ;Missile. LDE36: .byte $81 ;Energy. LDE37: .byte $89 ;No item. LDE38: .byte $80 ;Missile. LDE39: .byte $81 ;Energy. LDE3A: .byte $89 ;No item. LDE3B: .byte $81 ;Energy. LDE3C: .byte $89 ;No item.Metroid (USA) · 0x1DD0C-0x1DD84 — bank 7 $DCFC, the drop codeMetroid (USA) · 0x1DE45-0x1DE4C — bank 7 $DE35, ItemDropTblChecked by claude-agent, 2026-10-20 — read the drop code from LDCFC to LDD5B and the table

Cited by: Item drop table, Metroid, Metroid Fusion

Item $89 drops only for an enemy whose byte in the area's table at $968B has bit 0 set, and Samus collects it as 20 units of energy; the table's comment calls it "No item". metroid/drop-89

About: Metroid Item drop table

Codedisputedmetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4592-L4599* LDY MaxEnergyPickup CPY CrntEnrgyPickups BEQ LDD5B INC CrntEnrgyPickups CMP #$89 BNE -- LSR $00 BCS --metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L8534-L8535LF74B: ldy EnDataIndex,x lda $968B,ymetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L8203-L8216 ldy #$00 ldx #$03 pla bne ++ dex pla cmp #$81 bne + ldx #$00 ;Increase HealthHi by 0. ldy #$50 ;Increase HealthLo by 5. … sty HealthLoChange …metroid-disassembly: Metroid software disassembly · Source_Files/Bank01.asm#L1878L968B: .byte $01, $01, $01, $00, $86, $04, $89, $80, $81, $00, $00, $00, $82, $00, $00, $00 Metroid (USA) · 0x1F493-0x1F4E3 — bank 7 $F483, the pickup codeMetroid (USA) · 0x569B-0x56AA — bank 1 $968B, Brinstar's tableChecked by claude-agent, 2026-10-20 — traced LDCFC (LF74B's byte goes to $00, which LSR tests) and the pickup's stack (frame pushed, data index pushed; a frame other than $81 leaves X=2, Y=0)

Disputed: The table's comment calls `$89` "No item"; it drops nothing only for enemies whose `$968B` byte has bit 0 clear. In Brinstar, data indexes 0, 1, 2, 6, and 8 have it set.

Cited by: Item drop table, Metroid

Each door re-rolls the room's caps from RandomNumber1, 0 to 15 missile drops and 64 to 94 energy drops, and zeroes the counts. A drop that would pass its cap is lost; one that passes the test adds to its count, even a $89 roll that the enemy then can't drop. metroid/drop-caps

About: Metroid Item drop table

Codedisputedmetroid-disassembly: Metroid software disassembly · Source_Files/Bank01.asm#L1381-L1388L8B1B: STA CrntMslePickups ; L8B1D: STA CrntEnrgyPickups ;Reset current missile and energy power-up counters. L8B1F: LDA RandomNumber1 ; L8B21: AND #$0F ;Randomly recalculate max missile pickups(16 max, 0 min). L8B23: STA MaxMissilePickup ; L8B25: ASL ; L8B26: ORA #$40 ;*2 for energy pickups and set bit 6(128 max, 64 min). L8B28: STA MaxEnergyPickup ;metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4584-L4599 LDY MaxMissilePickup CPY CrntMslePickups BEQ LDD5B LDA MaxMissiles BEQ LDD5B INC CrntMslePickups … INC CrntEnrgyPickups CMP #$89 BNE -- LSR $00 BCS --Metroid (USA) · 0x4B2B-0x4B39 — bank 1 $8B1B-$8B29, the reset in SamusEnterDoor; each area bank has its own copyMetroid (USA) · 0x1DD0C-0x1DD84 — bank 7, the drop codeChecked by claude-agent, 2026-10-20 — read SamusEnterDoor's reset and the drop code's two cap tests

Disputed: The comments give "16 max" missile drops and "128 max" energy drops; `AND #$0F` gives at most 15, and `ASL` then `ORA #$40` at most 94. The defines call the counts power-ups "collected by Samus", but the drop code counts each drop that passes its cap, collected or not, and even a `$89` it then withholds.

A missile drop also needs missile capacity (MaxMissiles above 0). A room whose missile cap rolls 0 drops no missiles.

Cited by: Item drop table, Metroid

Until the first door, the caps on missile and energy drops are 39 when the game starts in Brinstar, because SamusInit stores the mirroring value $27 into them, or 47 ($2F) elsewhere. metroid/start-caps

About: Metroid Item drop table

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L1564-L1572 LDY #$27 LDA InArea AND #$0F BEQ + ;Branch if Samus starting in Brinstar. LSR ScrollDir ;If not in Brinstar, change scroll direction from left LDY #$2F ;to down. and set PPU for horizontal mirroring. * STY MirrorCntrl ; STY MaxMissilePickup STY MaxEnergyPickupMetroid (USA) · 0x1C8E1-0x1C93A — bank 7 SamusInit, $C8D1Checked by claude-agent, 2026-10-20 — read SamusInit from LDY #$27 to the stores

Cited by: Metroid

A small energy ball gives Samus 5 units and a $89 ball 20; a missile gives 2 missiles; an enemy whose data index carries the 30-unit flag gives 30 units or 30 missiles instead. metroid/pickup-amounts

About: Metroid Item drop table

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L8203-L8224 ldy #$00 ldx #$03 pla bne ++ … PickupMissile: lda #$02 ldy EnDataIndex,x beq + lda #$1Emetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4566-L4570 JSR LF74B STA $00 JSR $80B0 AND #$20 STA EnDataIndex,xmetroid-disassembly: Metroid software disassembly · Source_Files/Bank01.asm#L89-L91L80B0: LDY EnDataIndex,X L80B3: LDA $977B,Y L80B6: ASL ;*2Metroid (USA) · 0x1F493-0x1F4E3 — bank 7 $F483, the pickup codeChecked by claude-agent, 2026-10-20 — traced the pickup code's three paths (flag set: X=3; frame $81: Y=$50; else X=2) and PickupMissile; the flag is bit 4 of the area's $977B byte, doubled and masked with $20

Missiles stop at the capacity, MaxMissiles. No Brinstar data index has the flag; in Tourian, indexes 0 and 1 do ($50).

Cited by: Item drop table, Metroid

In Tourian, enemies with data index 2 or 4 drop nothing, and any other kill that would drop nothing resets both caps to 1 and both counts to 0 and rolls the same RandomNumber1 again, skipping the test for 16. metroid/tourian-drops

About: Metroid Item drop table

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4555-L4562LDCFC: LDA InArea CMP #$13 BNE + LDA EnDataIndex,x CMP #$04 BEQ +++++ CMP #$02 BEQ +++++metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4601-L4614LDD5B: ldx PageIndex lda InArea cmp #$13 beq ++ * jmp KillObject ;($FA18)Free enemy data slot. * lda RandomNumber1 ldy #$00 sty CrntEnrgyPickups sty CrntMslePickups iny sty MaxMissilePickup …Metroid (USA) · 0x1DD0C-0x1DD84 — bank 7, the drop codeChecked by claude-agent, 2026-10-20 — counted Ophis's anonymous labels: +++++ from line 4560 is the jmp KillObject at 4605, and ----- from 4614 is the AND #$07 at 4578

Each retry shifts the enemy's $968B byte right once more, so a $89 roll that fails one pass can succeed on the next. The atlas hasn't tied Tourian's data indexes to enemies.

Cited by: Item drop table, Metroid

Called in the ROM for all 256 values of RandomNumber1, the drop code gives a Brinstar enemy of data index 0 60 missiles, 90 small energy balls, 90 $89 balls, and 16 nothing; index 3, whose byte in the table LF74B reads ($968B + data index, kept in $00) has bit 0 clear, gives 106 nothing and no $89. metroid/drop-measured

About: Metroid Item drop table

Value
{
 "probe": {
  "index0": {
   "missile": 60,
   "energy": 90,
   "big": 90,
   "none": 16
  },
  "index3": {
   "missile": 60,
   "energy": 90,
   "big": 0,
   "none": 106
  },
  "nomissiles": {
   "missile": 0,
   "energy": 90,
   "big": 90,
   "none": 76
  },
  "capped": {
   "missile": 0,
   "energy": 0,
   "big": 0,
   "none": 256
  }
 }
}
VerifiedMetroid (USA) · 0x1DD0C-0x1DD84 — bank 7 $DCFC, the code the probe calls with Brinstar's bank mappedmetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4555-L4614 — the drop codeJSR LF74B STA $00 … LDA RandomNumber1 CMP #$10 BCC LDD5B * AND #$07 TAY LDA ItemDropTbl,y … CMP #$89 BNE -- …metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L8534-L8536 — LF74B: the byte the drop code keeps in $00ldy EnDataIndex,x lda $968B,y rtsChecked by claude-agent, 2026-10-25 — Read the drop code (Bank07.asm L4555-4614) and LF74B (L8534-8536) at the pinned commit: $00 holds the byte at $968B + EnDataIndex; RandomNumber1 below $10 drops nothing, otherwise its low 3 bits index ItemDropTbl, the missile and energy caps can cancel the drop, and a $89 ball stays only when bit 0 of $00 is set; the counts are the probe's calls of that code in the ROM for all 256 values.Probe: probes/zelda-metroid/metroid.mjs

Without missile capacity, the 60 missile rolls drop nothing; at both caps, nothing drops.

Cited by: Item drop table, Metroid

An energy tank adds a tank, up to 6, and fills Samus's health to her new maximum. metroid/energy-tank

About: Metroid Health upgrade

Value: 6

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4354-L4363LDC00:* LDA TankCount ; LDC03: CMP #$06 ;Has Samus got 6 energy tanks? LDC05: BEQ + ;If so, she can't have any more. LDC07: INC TankCount ;Otherwise give her a new tank. LDC0A:* LDA TankCount ; LDC0D: JSR Amul16 ;Get tank count and shift into upper nibble. LDC10: ORA #$09 ; LDC12: STA HealthHi ;Set new tank count. Upper health digit set to 9. LDC15: LDA #$99 ;Max out low health digit. LDC17: STA HealthLo ;Health is now FULL!Metroid (USA) · 0x1DC07-0x1DC2B — bank 7 $DBF7, the missile and energy tank pickupChecked by claude-agent, 2026-10-20 — read MissileEnergyPickup

Cited by: Health upgrade, Metroid

Samus's health can't exceed 99.9 units above her tanks, 100t+99.9 units for t tanks, which is 699.9 with all six. metroid/max-health

About: Metroid Health upgrade

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2576-L2584LCF14: LDA TankCount ; LCF17: JSR Amul16 ;($C2C5)*16. Move tank count to upper 4 bits. LCF1A: ORA #$0F ;Set lower 4 bits. LCF1C: CMP HealthHi ; LCF1F: BCS + ;Is life less than max? if so, branch. LCF21: AND #$F9 ;Life is more than max amount. LCF23: STA HealthHi ; LCF26: LDA #$99 ;Set life to max amount. LCF28: STA HealthLo ;Metroid (USA) · 0x1CF09-0x1CF3D — bank 7 AddHealth, $CEF9Checked by claude-agent, 2026-10-20 — read AddHealth's cap; $x9 and $99 decode as 99.9 above the tanks (health-format)

The tanks' energy sits in the high nibble of HealthHi, the full tanks, and the display shows the rest as two digits.

Cited by: Health upgrade, Metroid

A missile tank raises Samus's missile capacity by 5. metroid/missile-tank

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L4349-L4351LDBF7:* BEQ + ;Branch if item is an energy tank. LDBF9: LDA #$05 ; LDBFB: JSR AddToMaxMissiles ;($DD97)Increase missile capacity by 5.Metroid (USA) · 0x1DC07-0x1DC2B — bank 7 $DBF7Checked by claude-agent, 2026-10-20 — read MissileEnergyPickup

Cited by: Ammunition, Metroid