Claim set · data/claims/super-metroid.yaml

Super Metroid (InsaneFirebat's sm_disassembly, from P.JBoy's bank logs)

Game: Super Metroid.

InsaneFirebat's sm_disassembly, assembled with asar for NTSC, equals Super Metroid (Japan, USA) (En,Ja) byte for byte. super-metroid/build

CodeSuper Metroid (Japan, USA) (En,Ja) · 0x81E8B-0x81F54 — bank $90 $9E8B, SamusPhysicsConstants, the table most claims below readsm_disassembly: a relocatable disassembly of Super Metroid · test_build.bat#L19echo Success! This ROM matches vanilla Super Metroidsm_disassembly: a relocatable disassembly of Super Metroid · src/main.asm#L34-L36print "NTSC VERSION" !FPS = 1 !SPF = 1Checked by claude, 2026-10-21 — ran create_data.sh and build_rom.sh with the bundled asar on Linux; cmp finds SM.sfc identical to the ROM (SHA-1 da957f0d63d14cb441d215462904c4fa8519c613). The default build is NTSC (!PAL = 0)

Cited by: Super Metroid

Make_Samus_Jump picks the take-off speed from a table by medium and the Hi-Jump Boots: 4.875 px/frame up in air, 1.75 in water, 2.75 in lava or acid, and 6, 2.5, and 3.5 with the boots. With the Speed Booster equipped, it adds Samus's extra run speed, the whole part halved. super-metroid/jump-speed

About: Super Metroid Jump

Value
[
 4.875,
 6
]
Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4198-L4227.merge: LDA.W EquippedItems BIT.W #$0100 BNE .hiJumpEquipped LDA.W SamusPhysicsConstants_InitialYSubSpeeds_Jumping,X … .hiJumpEquipped: … BIT.W #$2000 BEQ + LDA.W SamusXExtraRunSpeed LSR …sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4184-L4196.normalGravity: LDX.W #$0000 … .submergedInWater: … LDX.W #$0002 … .submergedInAcidLava: LDX.W #$0004sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L3995-L3998.running: LDA.W EquippedItems BIT.W #$2000 BEQ .noSpeedBoostersm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5124-L5134.InitialYSpeeds_Jumping: dw $04E0*!SPF/$100,$01C0*!SPF/$100,$02C0*!SPF/$100 … .InitialYSubSpeeds_Jumping: dw $04E0*!SPF*$100,$01C0*!SPF*$100,$02C0*!SPF*$100 … .InitialYSpeeds_HiJumpJumping: dw $0600*!SPF/$100,$0280*!SPF/$100,$0380*!SPF/$100Checked by claude, 2026-10-21 — read Make_Samus_Jump; each pair stores a whole word (value/$100) and a subpixel word (value*$100, truncated to 16 bits), so $04E0 is 4 + $E000/$10000 = 4.875 px/frame. Bit $0100 guards the branch labeled for the Hi-Jump Boots; bit $2000 is the Speed Booster bit that Handle_Samus_XExtraRunSpeed tests

Cited by: Super Metroid

Gravity is one constant in air, $1C00 subpixels (0.109375 px/frame²) every frame of a jump or fall, held button or not; water uses $0800 and lava or acid $0900. A fall stops gaining speed at 5 px/frame. super-metroid/gravity

About: Super Metroid Gravity

Value: 0.109375 px/frame²

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5076-L5082.YSubAccelerationInAir: ; Samus Y subacceleration in air dw regional($1C00, $2800) … ; Samus Y subacceleration in water dw $0800*!SPFsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4719-L4720.notSubmerged: LDA.W SamusPhysicsConstants_YSubAccelerationInAirsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L2972-L2994LDA.W SamusYDirection CMP.W #$0002 BEQ .down LDA.W SamusYSubSpeed SEC SBC.W SamusYSubAcceleration … .down: LDA.W SamusYSpeed CMP.W #$0005*!SPF BEQ + LDA.W SamusYSubSpeed …Checked by claude, 2026-10-21 — read Determine_Samus_YAcceleration and Samus_Y_Movement_WithSpeedCalculations, which subtracts the acceleration while rising and adds it while falling with no input test; the YAcceleration words are 0, so the subpixel word is the whole gravity. Acid/lava's $0900 is at L5084-L5086

Cited by: Super Metroid

In a normal or spin jump, letting go of jump while Samus rises sets her vertical speed to 0 and starts the fall at once; held, the rise lasts until gravity brings the speed to 0. super-metroid/release-cap

About: Super Metroid Variable jump height

Value: 0 px/frame after release

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L2785-L2798.jumping: LDA.W SamusYDirection CMP.W #$0001 BNE .setFallingEnd LDA.B DP_Controller1Input AND.W JumpBinding BEQ + LDA.W SamusYSpeed BPL .setFallingEnd + STZ.W SamusYSubSpeed STZ.W SamusYSpeed LDA.W #$0002 …sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L2846-L2857LDA.B DP_Controller1Input AND.W JumpBinding BEQ + … + STZ.W SamusYSubSpeed STZ.W SamusYSpeedChecked by claude, 2026-10-21 — read Samus_Jumping_Movement and Samus_SpinJumping_Movement; Y direction 1 is up and 2 down, as Samus_Y_Movement_WithSpeedCalculations's .down branch shows

Cited by: Super Metroid

Running accelerates Samus at 0.1875 px/frame² to 2.75 px/frame and slows her at 0.5 px/frame² once she lets go. Holding dash while running builds a separate extra run speed at 0.0625 px/frame², up to 2 px/frame, or 7 with the Speed Booster. super-metroid/run-speeds

About: Super Metroid Running

Value
[
 2.75,
 2,
 7
]
Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5192-L5200SamusXSpeedTable_Normal: ; Used for Samus X base speed (due to general movement) … dd wordSwap($0030*!SPF*$100),wordSwap($02C0*!SPF*$100), wordSwap($0080*!SPF*$100) ; 1: Runningsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L3982-L3998.gravityContinued: LDA.W MovementType AND.W #$00FF CMP.W #$0001 BEQ .checkDash … .checkDash: LDA.B DP_Controller1Input AND.W DashBinding … BIT.W #$2000 BEQ .noSpeedBoostersm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4040-L4047.accelerating: LDA.W SamusXExtraRunSubSpeed CLC ADC.W SamusPhysicsConstants_XSubAccelerations_DashHeld,Xsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5163-L5173.XSubAccelerations_DashHeld: dw regional($1000, $1400),$0400*!SPF,$0400*!SPF .MaxXExtraRunSpeeds_SpeedBooster: dw $0007*!SPF,$0004*!SPF,$0004*!SPF … .MaxXExtraRunSpeeds_NoSpeedBooster: dw $0200*!SPF/$100,$0100*!SPF/$100,$0000*!SPF/$100Checked by claude, 2026-10-21 — read the speed table (a 32-bit whole.subpixel per column, $0030*$100 = 0.1875 px), and Handle_Samus_XExtraRunSpeed, which runs only for movement type 1 (running) with dash held and caps the extra speed at the booster or no-booster maximum

Movement type 1 is the table's "Running" row.

Cited by: Super Metroid

In a normal jump with no acceleration mode set, holding neither left nor right sets Samus's base horizontal speed to 0 that frame; held, the speed table's jumping row accelerates her at 0.75 px/frame² to 1.25 px/frame. super-metroid/air-control

About: Super Metroid Air control

Value: 1.25 px/frame

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L2807-L2819LDA.W SamusXAccelerationMode BNE .XMovement LDA.B DP_Controller1Input BIT.W #$0100 BNE .XMovement BIT.W #$0200 BNE .XMovement STZ.B DP_Temp12 STZ.B DP_Temp14 STZ.W SamusXBaseSpeed STZ.W SamusXBaseSubSpeedsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5195-L5201; ________________________________________________________________ X acceleration … dd wordSwap($00C0*!SPF*$100),wordSwap($0140*!SPF*$100), wordSwap($0080*!SPF*$100) ; 2: Normal jumpingChecked by claude, 2026-10-21 — read Samus_Jumping_Movement; $0100 and $0200 are the d-pad's right and left bits in the SNES joypad word. The spin-jump version zeroes the speed unless the direction she faces is held (L2859-L2886)

An enemy's touch sets SamusInvincibilityTimer to $60 (96), and Samus's contact check returns early while it is above 0. DecrementSamusHurtTimers_ClearActiveEnemyIndicesLists takes 1 from it, which the gameplay routine calls once per frame. super-metroid/i-frames

About: Super Metroid Invincibility frames

Value: 96 frames

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L4915-L4919LDA.L EnemyHeaders_damage,X JSL.L Suit_Damage_Division JSL.L Deal_A_Damage_to_Samus LDA.W #$0060 STA.W SamusInvincibilityTimersm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L3392-L3394.normalContact: LDA.W SamusInvincibilityTimer BNE .returnUppersm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L2093-L2096DecrementSamusHurtTimers_ClearActiveEnemyIndicesLists: LDA.W SamusInvincibilityTimer BEQ + DEC.W SamusInvincibilityTimersm_disassembly: a relocatable disassembly of Super Metroid · src/bank_82.asm#L1566JSL.L DecrementSamusHurtTimers_ClearActiveEnemyIndicesListsChecked by claude, 2026-10-21 — read the normal enemy touch routine, the Samus/enemy contact check, and the end of the main gameplay routine in bank $82

An enemy projectile sets the same $60 (bank_A0.asm L3072-L3073).

Cited by: Super Metroid

An enemy's touch sets a 5-frame SamusKnockbackTimer and a knockback direction from Samus's position against the enemy's. The knockback launches her at 5 px/frame up, or 2 in water, lava, or acid, and the upward knockback then moves her with the usual Y-speed code, gravity included. super-metroid/knockback

About: Super Metroid Knockback

Value: 5 px/frame up

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L4920-L4931LDA.W #$0005 STA.W SamusKnockbackTimer LDY.W #$0000 LDX.W EnemyIndex LDA.W SamusXPosition SEC SBC.W Enemy.XPosition,X … STY.W KnockbackXDirectionsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4352-L4356.merge: LDA.W SamusPhysicsConstants_InitialYSubSpeeds_Knockback,X STA.W SamusYSubSpeed LDA.W SamusPhysicsConstants_InitialYSpeeds_Knockback,X STA.W SamusYSpeedsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5148-L5149.InitialYSpeeds_Knockback: dw $0500*!SPF/$100,$0200*!SPF/$100,$0200*!SPF/$100sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L14262-L14264KnockbackMoement_Up: JSR.W MoveSamus_Horizontally_KnockbackBombJump JSR.W Samus_Y_Movement_WithSpeedCalculationsChecked by claude, 2026-10-21 — read the touch routine's end, SetSamusYSpeedForKnockback (index 0 unless submerged), and the knockback movement handler

Cited by: Super Metroid

A new save file starts Samus with 99 energy and no missiles. super-metroid/start-energy

About: Super Metroid Health upgrade

Value: 99 energy

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_81.asm#L6230-L6236NewSaveFile: REP #$30 LDA.W #$0063 STA.W MaxEnergy STA.W Energy LDA.W #$0000 STA.W MaxMissilesChecked by claude, 2026-10-21 — read NewSaveFile

Cited by: Health upgrade

An energy tank adds its argument, 100, to Samus's maximum energy and sets her energy to the new maximum. super-metroid/energy-tank

About: Super Metroid Health upgrade

Value: 100 energy

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L1452-L1461Instruction_PLM_CollectHealth_EnergyTank: … LDA.W MaxEnergy CLC ADC.W $0000,Y STA.W MaxEnergy STA.W Energysm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L15449dw Instruction_PLM_CollectHealth_EnergyTank,$0064Checked by claude, 2026-10-21 — read the collect instruction and the energy tank's instruction list

Cited by: Health upgrade

Missiles, super missiles, and power bombs are three separate pools, each with its own tank; each tank instruction adds its argument, 5, to that pool's maximum and its count. super-metroid/ammo-tanks

About: Super Metroid Ammunition

Value: 5 per tank

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L1496-L1508Instruction_PLM_CollectAmmo_MissileTank: … LDA.W MaxMissiles CLC ADC.W $0000,Y STA.W MaxMissiles LDA.W Missiles CLC ADC.W $0000,Y STA.W Missilessm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L1520-L1528Instruction_PLM_CollectAmmo_SuperMissileTank: … LDA.W MaxSuperMissilessm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L1544-L1552Instruction_PLM_CollectAmmo_PowerBombTank: … LDA.W MaxPowerBombssm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L15474dw Instruction_PLM_CollectAmmo_MissileTank,$0005sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L15499dw Instruction_PLM_CollectAmmo_SuperMissileTank,$0005sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_84.asm#L15524dw Instruction_PLM_CollectAmmo_PowerBombTank,$0005Checked by claude, 2026-10-21 — read the three collect instructions, which add to separate maximum and current counts, and the visible tanks' instruction lists

Cited by: Ammunition

The morphing transition reverts Samus's pose unless the Morph Ball is equipped. On the ground the ball's row of the speed table tops out at 3.25 px/frame, above running's 2.75. super-metroid/morph-ball

About: Super Metroid Morph ball

Value: 3.25 px/frame

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_91.asm#L15801-L15822InitializeSamusPose_MorphingTransition: … LDA.W EquippedItems BIT.W #$0004 BEQ .noMorphBall … .noMorphBall: LDA.W PreviousPose STA.W Posesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5200-L5203dd wordSwap($0030*!SPF*$100),wordSwap($02C0*!SPF*$100), wordSwap($0080*!SPF*$100) ; 1: Running … dd wordSwap($00C0*!SPF*$100),wordSwap($0340*!SPF*$100), wordSwap($0080*!SPF*$100) ; 4: Morph ball - on groundChecked by claude, 2026-10-21 — read the morphing transition's pose initializer and the normal speed table

Cited by: Morph ball

In a spin jump in air with the Space Jump, a new jump press makes a fresh jump only while Samus falls at 2.5 px/frame or faster and below 5. super-metroid/space-jump

About: Super Metroid Space Jump

Value
[
 2.5,
 5
]
Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5467-L5540SamusMovement_SpinJumping: ; Handles space jump … LDA.W EquippedItems BIT.W #$0200 BNE .spaceJumpEligible … .spaceJumpEligible: LDA.W SamusYDirection CMP.W #$0002 … .airPhysics: …sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5056-L5062.SpaceJumpMinimumYVelocityInAir: ; Space jump minimum Y velocity in air * 100h dw $0280*!SPF … ; Space jump maximum Y velocity in air * 100h dw $0500*!SPFChecked by claude, 2026-10-21 — read SamusMovement_SpinJumping; the comment's "* 100h" makes $0280 2.5 px/frame. In water the window is $0080 to $0500

Cited by: Space Jump, Spin jump, Super Metroid

A normal enemy's touch routine takes another path when ContactDamageIndex is nonzero: it damages the enemy and returns without hurting Samus. Its comment places the Screw Attack's damage at $A4C2, 2000 ($07D0) for index 3, before the enemy's vulnerability scales it. super-metroid/screw-attack

About: Super Metroid Screw Attack

Value: 2000 damage (base)

Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L4812-L4835NormalEnemyTouchAI_NoDeathCheck: ; Damage values: ; Speed boosting: $A4AF ; Shinesparking: $A4BA ; Screw attack: $A4C2 ; Pseudo screw attack: $A4CC LDA.W ContactDamageIndex BNE .notNormal JMP.W .normalSamus … LDY.W #$07D0 CMP.W #$0003 …sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L4860-L4901LDA.L EnemyVulnerabilities_power,X … LDA.W Enemy.health,X SEC SBC.B DP_Temp12Checked by claude, 2026-10-21 — read NormalEnemyTouchAI_NoDeathCheck; the .notNormal path ends in RTS before .normalSamus, the only branch that calls Deal_A_Damage_to_Samus

Cited by: Screw Attack

A wall jump starts only from a spin jump or another wall jump. Once the spin animation reaches its wall-jump frames, with a direction held away from a wall or solid enemy within 8 px, a new jump press jumps off at 4.625 px/frame up, or 5.5 with the Hi-Jump Boots. super-metroid/wall-jump

About: Super Metroid Wall jump

Value
[
 4.625,
 5.5
]
Codesm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4838-L4861WallJump_Check: … LDA.W LastDifferentPoseMovementType AND.W #$00FF CMP.W #$0003 BEQ .spinJumping CMP.W #$0014 BNE .carryClearReturn … LDA.W SamusAnimationFrame CMP.W #$000B BMI .spinningAnimation …sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4941-L4951.wallJumpEligiblePressingLeft: LDA.W #$0001 STA.W CollisionMovementDirection JSL.L Samus_vs_SolidEnemy_CollisionDetection … JSL.L WallJumpBlockCollisionDetection BCC .gotoReturnCarryClear LDA.B DP_Controller1New BIT.W JumpBindingsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4960-L4986.wallJumpEligiblePressingRight: STZ.W CollisionMovementDirection JSL.L Samus_vs_SolidEnemy_CollisionDetection TAX BNE .leftCollisionDetectedsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L2897-L2900LDA.W SamusPhysicsConstants_MaximumDistanceFromWallForWallJump STA.B DP_Temp12 STZ.B DP_Temp14 JSR.W WallJump_Checksm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5072-L5074.MaximumDistanceFromWallForWallJump: ; Maximum distance from wall for wall-jump dw $0008sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5136-L5143.InitialYSpeeds_WallJumping: dw $04A0*!SPF/$100,$0040*!SPF/$100,$02A0*!SPF/$100 … .InitialYSpeeds_HiJumpWallJumping: dw $0580*!SPF/$100,$0080*!SPF/$100,$0380*!SPF/$100Checked by claude, 2026-10-21 — read WallJump_Check (movement type 3 is spin jumping and $14 wall jumping, per the speed table's rows), Samus_SpinJumping_Movement's call with the 8 px distance, and Make_Samus_WallJump, which reads the wall-jump speeds as Make_Samus_Jump reads its own. Pressing right tests the left side, per the .leftCollisionDetected label

Cited by: Spin jump, Super Metroid, Wall jump

The three games build the high jump three ways. Metroid's High Jump Boots lower the jump's gravity from $18 to $12 and keep the take-off speed. Metroid II's Hi-Jump starts the held rise at a lower counter and adds 1 px/frame to it, 3 px/frame for up to 31 frames against 2 for up to 15. Super Metroid's Hi-Jump Boots raise the take-off speed from 4.875 to 6 px/frame, with gravity unchanged. super-metroid/high-jump-line

About: Super Metroid Jump

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2672-L2698SetSamusJump: … LDA #$FC STA ObjVertSpeed … LCFF3: LDY #$18 ; gravity (high value -> low jump) LDA SamusGear AND #gr_HIGHJUMP BEQ + ; branch if Samus doesn't have High Jump LDY #$12 ; lower gravity value -> high jump! * STY SamusGravityM2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L3328-L3339; High jump parameters ld a, samus_jumpArrayBaseOffset - $1F ;$21 … ; Normal jump parameters ld a, samus_jumpArrayBaseOffset - $0F ;$31M2RoS: Return of Samus Disassembly · SRC/constants.asm#L26def samus_jumpArrayBaseOffset = $40M2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L3884-L3887; Check if in linear portion of ascent ld a, [samus_jumpArcCounter] cp samus_jumpArrayBaseOffset jr nc, .endIf_AM2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L3937-L3940; Increment jump counter ld a, [samus_jumpArcCounter] inc a ld [samus_jumpArcCounter], aM2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L3892-L3898; Set speed, subtracting an extra 1 from it if we have high jump ld a, [samusItems] and itemMask_hiJump srl a ld b, a ld a, -2 ; $FE sub bsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5124-L5131.InitialYSpeeds_Jumping: dw $04E0*!SPF/$100,$01C0*!SPF/$100,$02C0*!SPF/$100 … .InitialYSpeeds_HiJumpJumping: dw $0600*!SPF/$100,$0280*!SPF/$100,$0380*!SPF/$100sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L4702-L4720Determine_Samus_YAcceleration: LDA.W EquippedItems BIT.W #$0020 BNE .notSubmerged … .notSubmerged: LDA.W SamusPhysicsConstants_YSubAccelerationInAirChecked by claude, 2026-10-21 — read each game's jump start: Metroid's SetSamusJump, Metroid II's ground jump and poseFunc_jump (itemMask_hiJump is bit 1, so srl gives 1), and Super Metroid's Make_Samus_Jump and Determine_Samus_YAcceleration, which tests only bit $0020 (not the Hi-Jump's $0100) and the medium

Cited by: Super Metroid

The timer a hit sets starts at 50 in Metroid (SamusBlink, $32), 51 in Metroid II (samusInvulnerableTimer, $33), and 96 in Super Metroid (SamusInvincibilityTimer, $60). super-metroid/i-frames-line

About: Super Metroid Invincibility frames

Value
[
 50,
 51,
 96
]
Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2421-L2426lda #$32 ; sta SamusBlink ;Samus has been hit. Set blink for 32 frames.The 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)M2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L7810-L7812; Give Samus i-frames ld a, $33 ld [samusInvulnerableTimer], asm_disassembly: a relocatable disassembly of Super Metroid · src/bank_A0.asm#L4918-L4919LDA.W #$0060 STA.W SamusInvincibilityTimerChecked by claude, 2026-10-21 — read the hit code in each; Metroid's comment reads the hex $32 as 32, but the counter starts at 50 (metroid/blink-set)

Cited by: Super Metroid

Super Metroid's running acceleration is Metroid's, $30/256 (0.1875) px/frame² in both, but its top speed rises from Metroid's 1.5 px/frame to 2.75. Metroid II, between them, has no acceleration and walks at 1.5 px/frame. super-metroid/run-accel-kept

About: Super Metroid Running

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2245-L2246RunAccelerationTbl: LCCC0: .byte $30 ;Accelerate right.metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L5592-L5593LE37F: lda #$18 ; LE381: sta SamusHorzSpdMax ;Set Samus maximum running speed.metroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L5648-L5660HorzAccelerate: LE3E5: lda SamusHorzSpdMax jsr Amul16 ; * 16 … jsr Adiv16 ; / 16 … lda HorzCntrLinear clc adc SamusHorzAccelM2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L4609-L4618; Normal walking speed (1.5 px/f) ldh a, [frameCounter] and $01 add $01 ld b, a … ldh a, [hSamusXPixel] add bsm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L5200dd wordSwap($0030*!SPF*$100),wordSwap($02C0*!SPF*$100), wordSwap($0080*!SPF*$100) ; 1: RunningChecked by claude, 2026-10-21 — Metroid adds SamusHorzAccel ($30) to an 8-bit fraction (HorzAccelerate), and Super Metroid's $0030*$100 is $3000 in a 16-bit subpixel word: both 0.1875. Metroid's maximum $18 is $01.$80 after HorzAccelerate's *16 and /16 (metroid-samus/run)

Cited by: Super Metroid

Super Metroid keeps Metroid's release cut, a release during the rise setting the vertical speed to 0, but drops Metroid's 32 px minimum rise. Metroid II, between them, holds a fixed rise for as long as A is held, up to a frame limit. super-metroid/release-cap-line

About: Super Metroid Variable jump height

Codemetroid-disassembly: Metroid software disassembly · Source_Files/Bank07.asm#L2705-L2709CMP #$20 BCC + ; branch if jumped less than 32 pixels upwards BIT Joy1Status BMI + ; branch if JUMP button still pressed JSR StopVertMovement ;($D147)Stop jump (start falling).M2RoS: Return of Samus Disassembly · SRC/bank_000.asm#L3884-L3903; Check if in linear portion of ascent ld a, [samus_jumpArcCounter] cp samus_jumpArrayBaseOffset jr nc, .endIf_A ; If so, check if A is pressed ldh a, [hInputPressed] bit PADB_A, a jr z, .endIf_B … .endIf_B: ; If A is not pressed, start falling portion of arc ld a, samus_jumpArrayBaseOffset + $16 ;56 …sm_disassembly: a relocatable disassembly of Super Metroid · src/bank_90.asm#L2786-L2796LDA.W SamusYDirection CMP.W #$0001 BNE .setFallingEnd LDA.B DP_Controller1Input AND.W JumpBinding BEQ + LDA.W SamusYSpeed BPL .setFallingEnd + STZ.W SamusYSubSpeed STZ.W SamusYSpeedChecked by claude, 2026-10-25 — read the release test in each; Super Metroid's tests only the Y direction and the button, with no distance (metroid-samus/release-cap, metroid-ii/jump-ascent, super-metroid/release-cap); Metroid II's poseFunc_jump (L3883-L3903) keeps the linear rise while A is held and starts the fall when it isn't

Cited by: Super Metroid