;;; $8000..85E1: Animate Samus ;;;
    ;;; $8000: Animate Samus ;;;
    ;;; $8077: RTS ;;;
    ;;; $8078: Animate Samus - FX = none ;;;
    ;;; $80B8: Animate Samus - FX = water ;;;
    ;;; $80E6: Spawn water splash and air bubbles ;;;
    ;;; $813E: Spawn air bubbles ;;;
    ;;; $81A4: Water splash type table ;;;
    ;;; $81C0: Animate Samus - FX = lava ;;;
    ;;; $8219: Animate Samus - FX = acid ;;;
    ;;; $824C: Animate Samus - Samus is submerged in lava/acid ;;;
    ;;; $82DC: Handle Samus animation delay ;;;
    ;;; $8344: Clear carry. Animation delay instruction 0..5 ;;;
    ;;; $8346: Animation delay instruction 6 - go to beginning if [Samus health] >= 30 ;;;
    ;;; $8360: Animation delay instruction 7 - set drained Samus movement handler ;;;
    ;;; $8370: Animation delay instruction 8 - enable auto-jump hack and transition to pose if not jumping ;;;
    ;;; $839A: Animation delay instruction 9 - transition to pose depending on item equipped and Y speed ;;;
    ;;; $83F6: Unused. Animation delay instruction Ah - transition to pose depending on Y speed ;;;
    ;;; $841D: Animation delay instruction Bh - select animation delay sequence for wall-jump ;;;
    ;;; $848B: Unused. Animation delay instruction Ch - transition to pose depending on item equipped ;;;
    ;;; $84B6: Animation delay instruction Dh - transition to pose ;;;
    ;;; $84C7: Animation delay instruction Eh - go to [Y] - [[$00] + [Y] + 1] ;;;
    ;;; $84DB: Animation delay instruction Fh - go to beginning ;;;
    ;;; $84E3: Handle normal animation delay ;;;
    ;;; $852C: Handle speed booster animation delay ;;;
;;; $85E2..8A4B: Draw Samus ;;;
    ;;; $85E2: Draw Samus (not including arm cannon nor speed echoes) ;;;
    ;;; $864E: Function pointer table - check if Samus bottom half drawn ;;;
    ;;; $8686: Flag that Samus bottom half is drawn ;;;
    ;;; $8688: Flag that Samus bottom half is not drawn ;;;
    ;;; $868D: Determine if Samus bottom half is drawn - standing ;;;
    ;;; $86C6: Determine if Samus bottom half is drawn - spin jumping ;;;
    ;;; $86EE: Determine if Samus bottom half is drawn - knockback / crystal flash ending ;;;
    ;;; $870C: Determine if Samus bottom half is drawn - crouching/standing/morphing/unmorphing transition ;;;
    ;;; $874C: Determine if Samus bottom half is drawn - unused movement type Dh ;;;
    ;;; $8768: Determine if Samus bottom half is drawn - wall jumping ;;;
    ;;; $877C: Determine if Samus bottom half is drawn - damage boost ;;;
    ;;; $8790: Determine if Samus bottom half is drawn - shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
    ;;; $87BD: Draw Samus echoes ;;;
    ;;; $8855: Draw Samus echo ;;;
    ;;; $88BA: Draw shinespark crash echo circle ;;;
    ;;; $8953: Draw shinespark crash echo projectiles ;;;
    ;;; $8976: Draw Samus starting death animation ;;;
    ;;; $8998: Draw Samus during death animation ;;;
    ;;; $8A00: Draw inanimate Samus ;;;
;;; $8A4C..8C1E: Handle atmospheric effects ;;;
    ;;; $8A4C: Handle atmospheric effects ;;;
    ;;; $8AC5: Handle atmospheric effects - [atmospheric graphic type] = 1/2 (footstep splashes) ;;;
    ;;; $8B16: Handle atmospheric effects - [atmospheric graphic type] = 3 (diving splash) ;;;
    ;;; $8B2E: Handle atmospheric effects - [atmospheric graphic type] = 4 (lava surface damage) ;;;
    ;;; $8B57: Handle atmospheric effects - [atmospheric graphic type] = 6/7 (dust) ;;;
    ;;; $8B64: Handle atmospheric effects - [atmospheric graphic type] = 5 (bubbles) ;;;
    ;;; $8B74: Add atmospheric spritemap to OAM ;;;
    ;;; $8B93: Atmospheric graphics animation timers ;;;
    ;;; $8BEF: Number of atmospheric graphics animation frames ;;;
    ;;; $8BFF: Atmospheric graphics sprite tile number and attributes ;;;
;;; $8C1F..8E0E: Calculate Samus spritemap position ;;;
    ;;; $8C1F: Calculate Samus spritemap position ;;;
    ;;; $8C94: Calculate usual Samus spritemap position ;;;
    ;;; $8CC3: Calculate Samus spritemap position - standing ;;;
    ;;; $8D38: Go to calculate usual Samus spritemap position ;;;
    ;;; $8D3C: Calculate Samus spritemap position - crouching/standing/morphing/unmorphing transition ;;;
    ;;; $8D98: Calculate Samus spritemap position - shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
;;; $8E0F..63: Set liquid physics type ;;;
    ;;; $8E0F: Set liquid physics type ;;;
    ;;; $8E36: Set liquid physics type - air ;;;
    ;;; $8E3A: Set liquid physics type - lava/acid ;;;
    ;;; $8E4A: Set liquid physics type - water ;;;
;;; $8E64..94EB: Samus movement ;;;
    ;;; $8E64: Samus X movement ;;;
    ;;; $8E75: Unused ;;;
    ;;; $8EA9: Move Samus horizontally ;;;
    ;;; $8EDF: Move Samus horizontally - knockback or bomb jump ;;;
    ;;; $8F1B: Handle end of bomb jump ;;;
    ;;; $8F5F: Move Samus horizontally - pushed by Ceres Ridley ;;;
    ;;; $8F86: Move Samus vertically - pushed by Ceres Ridley ;;;
    ;;; $8FB3: Samus jumping movement ;;;
    ;;; $9040: Samus spin jumping movement ;;;
    ;;; $90C4: Check if Samus has started falling ;;;
    ;;; $90E2: Samus Y movement - with speed calculations ;;;
    ;;; $9168: Samus falling movement ;;;
    ;;; $919F: Samus morphed falling movement ;;;
    ;;; $91D1: Samus morphed bouncing movement ;;;
    ;;; $923F: Samus Y movement - no speed calculations ;;;
    ;;; $9288: Move Samus by extra Samus Y displacement ;;;
    ;;; $92B8: Simple Samus Y movement ;;;
    ;;; $92C7: Simple Samus Y movement ;;;
    ;;; $92D6: Unused ;;;
    ;;; $92E9: RTS ;;;
    ;;; $9348: Move Samus horizontally with zero base X speed ;;;
    ;;; $9350: Move Samus left by [$12].[$14] ;;;
    ;;; $93B1: Move Samus right by [$12].[$14] ;;;
    ;;; $93EC: Move Samus up by [$12].[$14] ;;;
    ;;; $9440: Move Samus down by [$12].[$14] ;;;
    ;;; $946E: Samus movement handler - released from grapple swing ;;;
    ;;; $94CB: Samus movement handler - Samus drained - falling ;;;
;;; $94EC..973D: Scrolling ;;;
    ;;; $94EC: Main scrolling routine ;;;
    ;;; $9589: Scrolling finished hook - Spore Spawn fight ;;;
    ;;; $9595: Unused. Camera X speed = 0.0 ;;;
    ;;; $95A0: Handle horizontal scrolling ;;;
    ;;; $964F: Handle vertical scrolling ;;;
    ;;; $96C0: Calculate camera X speed ;;;
    ;;; $96FF: Calculate the vertical distance Samus has moved last frame + 1 ;;;
;;; $973E..A7E1: Samus movement ;;;
    ;;; $973E: Handle Samus X extra run speed ;;;
    ;;; $9826: Move Samus right by [$12].[$14], no collision detection ;;;
    ;;; $9842: Move Samus left by [$12].[$14], no collision detection ;;;
    ;;; $9871: Move Samus down by [$12].[$14], no collision detection ;;;
    ;;; $988D: Move Samus up by [$12].[$14], no collision detection ;;;
    ;;; $98BC: Make Samus jump ;;;
    ;;; $9949: Make Samus wall-jump ;;;
    ;;; $99D6: Set Samus Y speed for knockback ;;;
    ;;; $9A2C: Make Samus bomb jump ;;;
    ;;; $9A7E: Calculate Samus X base speed - deceleration allowed ;;;
    ;;; $9B1F: Calculate Samus X base speed - deceleration disallowed ;;;
    ;;; $9BD1: Determine Samus X speed table entry pointer ;;;
    ;;; $9C21: Determine grapple swing Samus X speed table entry pointer ;;;
    ;;; $9C5B: Determine Samus Y acceleration ;;;
    ;;; $9CAC: Grapple wall jump check ;;;
    ;;; $9D35: Wall jump check ;;;
    ;;; $9E8B: Samus physics constants ;;;
    ;;; $9F55: Samus X speed table - normal ;;;
    ;;; $A08D: Samus X speed table - in water ;;;
    ;;; $A1DD: Samus X speed table - in lava/acid ;;;
    ;;; $A32D: Samus movement - movement type 7 (unused) ;;;
    ;;; $A335: Unused ;;;
    ;;; $A337: Samus movement handler - normal ;;;
    ;;; $A383: Samus movement - standing ;;;
    ;;; $A3E5: Samus movement - running ;;;
    ;;; $A42E: Samus movement - normal jumping ;;;
    ;;; $A436: Samus movement - spin jumping ;;;
    ;;; $A521: Samus movement - morph ball - on ground ;;;
    ;;; $A573: Samus movement - crouching ;;;
    ;;; $A58D: Samus movement - falling ;;;
    ;;; $A5CA: Samus movement - morph ball - falling ;;;
    ;;; $A5FB: RTS. Samus movement - movement type 9 (unused) ;;;
    ;;; $A5FC: Samus movement - knockback / crystal flash ending ;;;
    ;;; $A607: Samus movement - movement type Bh (unused) ;;;
    ;;; $A60F: Samus movement - movement type Ch (unused) ;;;
    ;;; $A617: RTS. Samus movement - movement type Dh (unused) ;;;
    ;;; $A61C: Samus movement - crouching/standing/morphing/unmorphing transition ;;;
    ;;; $A671: RTS ;;;
    ;;; $A672: Enable horizontal slope detection ;;;
    ;;; $A67C: Samus movement - turning around - on ground ;;;
    ;;; $A694: Samus movement - moonwalking ;;;
    ;;; $A69F: Samus movement - spring ball - on ground ;;;
    ;;; $A6F1: Samus movement - spring ball - in air ;;;
    ;;; $A703: Samus movement - spring ball - falling ;;;
    ;;; $A734: Samus movement - wall jumping ;;;
    ;;; $A75F: Samus movement - ran into a wall ;;;
    ;;; $A780: Samus movement - grappling ;;;
    ;;; $A790: Samus movement - turning around - jumping ;;;
    ;;; $A7AD: Samus movement - turning around - falling ;;;
    ;;; $A7CA: Samus movement - damage boost ;;;
    ;;; $A7D2: Samus movement - grabbed by Draygon ;;;
    ;;; $A7DA: Samus movement - shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
;;; $A7E2..AC1B: Mini-map ;;;
    ;;; $A7E2: Disable mini-map and mark boss room map tiles as explored ;;;
    ;;; $A8A6: Mark map tile as explored ;;;
    ;;; $A8EF: Initialise mini-map (broken) ;;;
    ;;; $A91B: Update mini-map ;;;
    ;;; $AA43: Update HUD mini-map tilemap ;;;
    ;;; $AB5F: Mark map tile above Samus as explored ;;;
    ;;; $AB75: Adjust map bits for map page spill ;;;
    ;;; $AC04: 1-bit bitmasks ;;;
    ;;; $AC0C: 6-bit bitmasks ;;;
;;; $AC1C..CFF9: Projectiles ;;;
    ;;; $AC1C: Handle Samus cooldown ;;;
    ;;; $AC39: Check if Samus can fire beam ;;;
    ;;; $AC5A: Check if Samus can fire (super) missile ;;;
    ;;; $AC8D..AD21: Update beam tiles and palette ;;;
        ;;; $AC8D: Update beam tiles and palette ;;;
        ;;; $ACC2: Load beam palette (external) ;;;
        ;;; $ACCD: Load beam palette ;;;
        ;;; $ACF0: Load beam palette (external) ;;;
        ;;; $ACFC: Load beam palette ;;;
    ;;; $AD22: Reset projectile data ;;;
    ;;; $ADB7: Clear projectile ;;;
    ;;; $AE06..CD: Kill projectile ;;;
        ;;; $AE06: Kill projectile ;;;
        ;;; $AE4E: Kill beam - up ;;;
        ;;; $AE59: Kill beam - up-right ;;;
        ;;; $AE6E: Kill beam - right ;;;
        ;;; $AE79: Kill beam - down-right ;;;
        ;;; $AE8E: Kill beam - down ;;;
        ;;; $AE99: Kill beam - down-left ;;;
        ;;; $AEAE: Kill beam - left ;;;
        ;;; $AEB9: Kill beam - up-left ;;;
    ;;; $AECE: Handle projectiles ;;;
    ;;; $AEF3..AF67: Beam - no wave beam ;;;
        ;;; $AEF3: Projectile pre-instruction - beam - no wave beam ;;;
        ;;; $AF4A: Beam block collision - no wave beam - vertical ;;;
        ;;; $AF52: Beam block collision - no wave beam - diagonal ;;;
        ;;; $AF60: Beam block collision - no wave beam - horizontal ;;;
    ;;; $AF68..E4: Missile ;;;
        ;;; $AF68: Projectile pre-instruction - missile ;;;
        ;;; $AFC7: Missile block collision - vertical ;;;
        ;;; $AFCF: Missile block collision - diagonal ;;;
        ;;; $AFDD: Missile block collision - horizontal ;;;
    ;;; $AFE5..B098: Super missile ;;;
        ;;; $AFE5: Projectile pre-instruction - super missile ;;;
        ;;; $B047: Super missile block collision - vertical ;;;
        ;;; $B052: Super missile block collision - diagonal ;;;
        ;;; $B06A: Super missile block collision - horizontal ;;;
        ;;; $B075: Projectile pre-instruction - super missile link ;;;
    ;;; $B099: Projectile pre-instruction - bomb ;;;
    ;;; $B0AE: Projectile pre-instruction - power bomb ;;;
    ;;; $B0C3..B158: Wave beam ;;;
        ;;; $B0C3: Projectile pre-instruction - beam - wave + plasma/spazer / charged (ice) wave ;;;
        ;;; $B0E4: Projectile pre-instruction - beam - uncharged (ice) wave ;;;
        ;;; $B103: Wave beam shared pre-instruction ;;;
        ;;; $B13B: Wave beam block collision - vertical ;;;
        ;;; $B143: Wave beam block collision - diagonal ;;;
        ;;; $B151: Wave beam block collision - horizontal ;;;
    ;;; $B159: Projectile pre-instruction - hyper beam ;;;
    ;;; $B16A: Delete projectile if too far off-screen ;;;
    ;;; $B197..B2F5: Initialise projectile velocities ;;;
        ;;; $B197: Initialise beam velocities ;;;
        ;;; $B1DD: Initialise (super) missile velocities ;;;
        ;;; $B1F3: Initialise projectile velocities ;;;
        ;;; $B218: Initialise projectile velocities - up ;;;
        ;;; $B23D: Initialise projectile velocities - up-right ;;;
        ;;; $B268: Initialise projectile velocities - right ;;;
        ;;; $B277: Initialise projectile velocities - down-right ;;;
        ;;; $B28C: Initialise projectile velocities - down ;;;
        ;;; $B29B: Initialise projectile velocities - down-left ;;;
        ;;; $B2B4: Initialise projectile velocities - left ;;;
        ;;; $B2C7: Initialise projectile velocities - up-left ;;;
    ;;; $B2F6: Accelerate (super) missile ;;;
    ;;; $B366..B4C8: Super missile link ;;;
        ;;; $B366: Super missile link vertical block collision detection ;;;
        ;;; $B406: Super missile link horizontal block collision detection ;;;
        ;;; $B4A6: Unused. Clear linked super missile if super missile explosion ;;;
    ;;; $B4C9..B80C: Projectile trail ;;;
        ;;; $B4C9: Instruction list - beam trail - empty ;;;
        ;;; $B4CB: Instruction list - left beam trail - ice beams / charged power beam ;;;
        ;;; $B525: Instruction - move left projectile trail down one pixel ;;;
        ;;; $B52D: Instruction list - right beam trail - some ice beams ;;;
        ;;; $B587: Instruction - move right projectile trail down one pixel ;;;
        ;;; $B58F: Instruction list - beam trail - wave beam ;;;
        ;;; $B5A1: Instruction list - beam trail - (super) missile ;;;
        ;;; $B5B3: Instruction - move left projectile trail up one pixel ;;;
        ;;; $B5BB: Projectile trail instruction list pointers - left ;;;
        ;;; $B609: Projectile trail instruction list pointers - right ;;;
        ;;; $B657: Spawn projectile trail ;;;
        ;;; $B6A9: Handle projectile trails ;;;
    ;;; $B80D: HUD selection handler - nothing / power bombs ;;;
    ;;; $B887: Fire uncharged beam ;;;
    ;;; $B986: Fire charged beam ;;;
    ;;; $BA56: Initialise projectile position / direction ;;;
    ;;; $BAFC: Handle charging beam graphics / audio ;;;
    ;;; $BBE1: Draw flare animation component ;;;
    ;;; $BCBE: Clear flare animation state ;;;
    ;;; $BCD1: Fire hyper beam ;;;
    ;;; $BD64..BDFF: Initial beam block collision ;;;
        ;;; $BD64: Initial beam block collision - no wave beam ;;;
        ;;; $BD86: Initial beam block collision - no wave beam - vertical ;;;
        ;;; $BD8E: Initial beam block collision - no wave beam - diagonal ;;;
        ;;; $BD9C: Initial beam block collision - no wave beam - right ;;;
        ;;; $BDA4: Initial beam block collision - no wave beam - left ;;;
        ;;; $BDB2: Initial wave beam block collision ;;;
        ;;; $BDD4: Initial wave beam block collision - vertical ;;;
        ;;; $BDDC: Initial wave beam block collision - diagonal ;;;
        ;;; $BDEA: Initial wave beam block collision - right ;;;
        ;;; $BDF2: Initial wave beam block collision - left ;;;
    ;;; $BE00: Projectile reflection ;;;
    ;;; $BE62: HUD selection handler - missiles / super missiles ;;;
    ;;; $BF46: Spawn super missile link ;;;
    ;;; $BF9B: Bomb timer reset value ;;;
    ;;; $BF9D: HUD selection handler - morph ball ;;;
    ;;; $C0AB: Fire bomb or bomb spread ;;;
    ;;; $C0E7: Fire (power) bomb ;;;
    ;;; $C128: Handle bomb ;;;
    ;;; $C157: Handle power bomb ;;;
    ;;; $C1A8: Projectile origin offsets by direction ;;;
    ;;; $C254: Projectile cooldowns ;;;
    ;;; $C283: Beam auto-fire cooldowns ;;;
    ;;; $C28F: Projectile sound effects ;;;
    ;;; $C2D1: Beam speeds ;;;
    ;;; $C301: (Super) missile initialised bitset ;;;
    ;;; $C303: Missile accelerations ;;;
    ;;; $C32B: Super missile accelerations ;;;
    ;;; $C353: Projectile accelerations ;;;
    ;;; $C37B: Proto weapon constants ;;;
    ;;; $C3B1: Beam tiles pointers ;;;
    ;;; $C3C9: Beam palette pointers ;;;
    ;;; $C3E1: Beam palettes ;;;
    ;;; $C481: Flare animation delays ;;;
    ;;; $C4B5: Handle switching HUD selection ;;;
    ;;; $C545: Switched to HUD item handler - nothing ;;;
    ;;; $C551: Switched to HUD item handler - missiles ;;;
    ;;; $C564: Switched to HUD item handler - super missiles ;;;
    ;;; $C577: Switched to HUD item handler - power bombs ;;;
    ;;; $C58A: Switched to HUD item handler - grapple ;;;
    ;;; $C5AE: Switched to HUD item handler - x-ray ;;;
    ;;; $C5C4: Handle arm cannon open state ;;;
    ;;; $C5EB: Update arm cannon is open flag ;;;
    ;;; $C627: Advance arm cannon frame ;;;
    ;;; $C663: Draw arm cannon ;;;
    ;;; $C7D9: Arm cannon open flags ;;;
    ;;; $C7DF: Arm cannon drawing data ;;;
    ;;; $CC21: Cost of SBAs in power bombs ;;;
    ;;; $CC39: ($14, $16) = ([A] * sin([Y] * pi / 80h), [A] * -cos([Y] * pi / 80h)) ;;;
    ;;; $CC8A: A = [$18] * sin([X] / 2 * pi / 80h) ;;;
    ;;; $CCC0: Fire SBA ;;;
    ;;; $CD08: Ice/plasma SBA projectile origin angles ;;;
    ;;; $CD18: Clear carry. Disabled SBA beam combinations ;;;
    ;;; $CD1A: Fire wave SBA ;;;
    ;;; $CD9B: Fire ice SBA ;;;
    ;;; $CE14: Fire spazer SBA ;;;
    ;;; $CE98: Fire plasma SBA ;;;
    ;;; $CF09: Projectile pre-instruction - ice SBA - main ;;;
    ;;; $CF7A: Projectile pre-instruction - ice SBA - end ;;;
;;; $CFFA..D524: Shinespark ;;;
    ;;; $CFFA: Trigger shinespark windup ;;;
    ;;; $D068: Samus movement handler - shinespark windup ;;;
    ;;; $D0AB: Samus movement handler - vertical shinespark ;;;
    ;;; $D0D7: Samus movement handler - diagonal shinespark ;;;
    ;;; $D106: Samus movement handler - horizontal shinespark ;;;
    ;;; $D132: Shinespark horizontal movement ;;;
    ;;; $D1FF: Shinespark vertical movement ;;;
    ;;; $D2BA: End shinespark if collision detected or low health ;;;
    ;;; $D346: Samus movement handler - shinespark crash - echoes circle Samus ;;;
    ;;; $D383: Samus movement handler - shinespark crash - echoes circle Samus - phase 0 ;;;
    ;;; $D396: Samus movement handler - shinespark crash - echoes circle Samus - phase 1 ;;;
    ;;; $D3CC: Samus movement handler - shinespark crash - echoes circle Samus - phase 2 ;;;
    ;;; $D3F3: Samus movement handler - shinespark crash - echoes finished circling Samus ;;;
    ;;; $D40D: Samus movement handler - shinespark crash - finish ;;;
    ;;; $D4D2: Projectile pre-instruction - speed echo ;;;
;;; $D525: Unused ;;;
;;; $D5A2..D792: Crystal flash ;;;
    ;;; $D5A2: Crystal flash ;;;
    ;;; $D678: Samus movement handler - crystal flash - start (raise Samus and generate bubble) ;;;
    ;;; $D6CE: Samus movement handler - crystal flash - main (decrement ammo) ;;;
    ;;; $D6E3: Crystal flash - decrement missiles ;;;
    ;;; $D706: Crystal flash - decrement super missiles ;;;
    ;;; $D729: Crystal flash - decrement power bombs ;;;
    ;;; $D75B: Samus movement handler - crystal flash - finish ;;;
;;; $D793..DDE8: Projectiles ;;;
    ;;; $D793: Projectile pre-instruction - plasma SBA ;;;
    ;;; $D7E1: Plasma SBA - phase 0: expanding ;;;
    ;;; $D7FA: Plasma SBA - phase 1: contracting ;;;
    ;;; $D813: Plasma SBA - phase 2: dispersing ;;;
    ;;; $D849: Bomb spread ;;;
    ;;; $D8CF: Bomb spread data ;;;
    ;;; $D8F7: Projectile pre-instruction - spread bomb ;;;
    ;;; $DA08: Projectile pre-instruction - wave SBA ;;;
    ;;; $DB06: Projectile pre-instruction - spazer SBA ;;;
    ;;; $DB57: Clear spazer SBA projectile pair - [X] = 0 ;;;
    ;;; $DB66: Clear spazer SBA projectile pair - [X] = 2 ;;;
    ;;; $DB75: Clear spazer SBA projectile pair - [X] = 4 ;;;
    ;;; $DB84: Clear spazer SBA projectile pair - [X] = 6 ;;;
    ;;; $DB93: Spazer SBA - phase 0: circling ;;;
    ;;; $DBCF: Spazer SBA - phase 2: flying up towards point ;;;
    ;;; $DC30: Spazer SBA - phase 4: flying up away from point ;;;
    ;;; $DC67: Fire end of spazer SBA ;;;
    ;;; $DC9C: Projectile pre-instruction - end of spazer SBA ;;;
    ;;; $DCDD: Handle HUD specific behaviour and projectiles ;;;
    ;;; $DD3D: Standard HUD selection handler ;;;
    ;;; $DD6F: HUD selection handler - grappling ;;;
    ;;; $DD74: HUD selection handler - turning around ;;;
    ;;; $DD8C: HUD selection handler - crouching/standing/morphing/unmorphing transition ;;;
    ;;; $DDB6: HUD selection handler - spin jumping / wall jumping / knockback / damage boosting / shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
    ;;; $DDC8: HUD selection handler - x-ray ;;;
    ;;; $DDD8: HUD selection handler - grabbed by Draygon ;;;
;;; $DDE9..DF98: Knockback ;;;
    ;;; $DDE9: Samus is hit interruption ;;;
    ;;; $DEBA: Knockback transition - set Samus drained hurt animation or ignore ;;;
    ;;; $DEDD: Knockback transition - ignore ;;;
    ;;; $DEE2: Knockback transition - ignore ;;;
    ;;; $DEEA: Knockback transition - normal ;;;
    ;;; $DEFA: Knockback transition - normal ;;;
    ;;; $DF15: Knockback transition - morphed ;;;
    ;;; $DF1D: Knockback transition - movement type 7 ;;;
    ;;; $DF38: Samus movement handler - knockback ;;;
    ;;; $DF50: Crash ;;;
    ;;; $DF53: Knockback movement - up ;;;
    ;;; $DF5D: Knockback movement - straight up (unused) ;;;
    ;;; $DF64: Knockback movement - down ;;;
    ;;; $DF6E: Handle knockback vertical collision ;;;
;;; $DF99..E094: Bomb jump ;;;
    ;;; $DF99: Set up bomb jump ;;;
    ;;; $DFED: Set up bomb jump - standing / crouching ;;;
    ;;; $DFF7: Set up bomb jump - running / falling / moonwalking / wall jumping / ran into a wall / grappling ;;;
    ;;; $E012: Set up bomb jump - morphed / knockback / crystal flash ending ;;;
    ;;; $E01A: Set up bomb jump - jumping / turning around / damage boost / crouching/standing/morphing/unmorphing transition ;;;
    ;;; $E020: Set up bomb jump - grabbed by Draygon / shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
    ;;; $E025: Samus movement handler - bomb jump - start ;;;
    ;;; $E032: Samus movement handler - bomb jump - main ;;;
    ;;; $E04C: Samus movement handler - bomb jump - main - horizontal ;;;
    ;;; $E066: Samus movement handler - bomb jump - main - straight ;;;
    ;;; $E07D: End bomb jump ;;;
;;; $E095: Draygon-escape button counter target ;;;
;;; $E097..E463: Timer / Samus hack handler ;;;
    ;;; $E097: Timer / Samus hack handler ;;;
    ;;; $E09A: RTS ;;;
    ;;; $E09B: Timer / Samus hack handler - handle letting Samus up from being drained ;;;
    ;;; $E0C5: Timer / Samus hack handler - handle letting Samus fail to stand up from being drained ;;;
    ;;; $E0E6: Timer / Samus hack handler - handle timer ;;;
    ;;; $E114: Timer / Samus hack handler - draw timer ;;;
    ;;; $E119: Set Samus to be pushed out of Ceres Ridley's way ;;;
    ;;; $E12E: Timer / Samus hack handler - push Samus out of Ceres Ridley's way ;;;
    ;;; $E1C8: Timer / Samus hack handler - pushing Samus out of Ceres Ridley's way ;;;
    ;;; $E1FD: Pushing Samus out of Ceres Ridley's way - leftwards ;;;
    ;;; $E21C: Pushing Samus out of Ceres Ridley's way - rightwards ;;;
    ;;; $E23B: Set Samus into the grabbed by Draygon pose ;;;
    ;;; $E2A1: Timer / Samus hack handler - grabbed by Draygon ;;;
    ;;; $E2D4: Release Samus from Draygon (external) ;;;
    ;;; $E2DE: Release Samus from Draygon ;;;
    ;;; $E35A: Unused ;;;
    ;;; $E37E: RTS ;;;
    ;;; $E37F: Unused. Push morph ball Samus out of Ceres Ridley's way ;;;
    ;;; $E3A3: Unused. Timer / Samus hack handler - pushing morph ball Samus out of Ceres Ridley's way ;;;
    ;;; $E3CF: Unused. Set Samus special falling ;;;
    ;;; $E400: Unused. Clear Samus special falling ;;;
    ;;; $E41B: Unused. Timer / Samus hack handler - special falling ;;;
;;; $E464..E691: Samus movement ;;;
    ;;; $E464: Calculate Samus X displacement for moving left ;;;
    ;;; $E4AD: Calculate Samus X displacement for moving right ;;;
    ;;; $E4E6: Calculate Samus X speed ;;;
    ;;; $E500: Calculate Samus X speed - [Samus X speed divisor] = 0 ;;;
    ;;; $E516: Calculate Samus X speed - [Samus X speed divisor] = 1 ;;;
    ;;; $E541: Calculate Samus X speed - [Samus X speed divisor] = 2 ;;;
    ;;; $E56E: Calculate Samus X speed - [Samus X speed divisor] = 3 ;;;
    ;;; $E59D: Calculate Samus X speed - [Samus X speed divisor] = 4 ;;;
    ;;; $E5CE: Kill Samus X speed if collision detected ;;;
    ;;; $E606: Set Samus solid vertical collision result - upwards movement ;;;
    ;;; $E61B: Set Samus solid vertical collision result - downwards movement ;;;
;;; $E692..E721: Samus current state handler ($0A42) ;;;
    ;;; $E692: Samus current state handler ;;;
    ;;; $E695: Samus current state handler - normal ;;;
    ;;; $E6C9: Samus current state handler - demo ;;;
    ;;; $E713: Samus current state handler - Samus is locked ;;;
;;; $E722..E90D: Samus new state handler ($0A44) ;;;
    ;;; $E722: Samus new state handler ;;;
    ;;; $E725: Samus new state handler - normal ;;;
    ;;; $E786: Handle Samus placement mode toggles ;;;
    ;;; $E7D2: Samus new state handler - debug ;;;
    ;;; $E7F5: Samus new state handler - title demo ;;;
    ;;; $E833: Samus new state handler - intro demo ;;;
    ;;; $E86A: Samus new state handler - Samus appearance ;;;
    ;;; $E8AA: Samus new state handler - Ceres ;;;
    ;;; $E8CD: RTL ;;;
    ;;; $E8D6: RTL. Samus new state handler - Samus is locked into station ;;;
    ;;; $E8D9: RTL. Samus new state handler - Samus is being drained ;;;
    ;;; $E8DC: Samus new state handler - Samus is locked ;;;
    ;;; $E8EC: Samus new state handler - riding elevator ;;;
    ;;; $E902: Samus new state handler - entering/exiting gunship ;;;
;;; $E90E: RTS ;;;
;;; $E90F..4A: Samus pose input handler ($0A60) ;;;
    ;;; $E90F: Samus pose input handler ;;;
    ;;; $E912: RTS ;;;
    ;;; $E913: Samus pose input handler - normal ;;;
    ;;; $E918: Samus pose input handler - x-ray ;;;
    ;;; $E91D: Samus pose input handler - demo ;;;
    ;;; $E926: Samus pose input handler - auto-jump hack ;;;
;;; $E94B: Execute Samus movement handler ;;;
;;; $E94E: RTS ;;;
;;; $E94F: Samus movement handler - x-ray ;;;
;;; $E9CE: Handle periodic damage to Samus ;;;
;;; $EA45: Pause check ;;;
;;; $EA7F: Low health check ;;;
;;; $EAAB: Low health check (external) ;;;
;;; $EAB3: Handle auto-jump timer and Samus hurt flash counter, update previous input and Samus health ;;;
;;; $EB02: Reset movement and pose change variables ;;;
;;; $EB35..EC21: Draw Samus ;;;
    ;;; $EB35: Draw Samus and projectiles ;;;
    ;;; $EB4B: Draw Samus sprites ;;;
    ;;; $EB51: RTS ;;;
    ;;; $EB52: Samus drawing handler - default ;;;
    ;;; $EB55: Draw Samus - no charge / grapple beam ;;;
    ;;; $EB86: Samus drawing handler - firing grapple beam ;;;
    ;;; $EBF2: RTS. Samus display handler ;;;
    ;;; $EBF3: Samus display handler - shinespark crash echo circle ;;;
    ;;; $EC03: Unused ;;;
    ;;; $EC13: RTS ;;;
    ;;; $EC14: Samus display handler - using elevator ;;;
    ;;; $EC1D: Samus display handler - inanimate Samus ;;;
;;; $EC22: Set Samus radius ;;;
;;; $EC3E: $12 = Samus bottom boundary ;;;
;;; $EC58: $12 / $14 = Samus bottom / top boundary ;;;
;;; $EC7E: Align Samus bottom position with previous pose ;;;
;;; $ECB6: Determine Samus suit palette index ;;;
;;; $ECD5: Demo recorder - move Samus with control pad ;;;
;;; $ED1E: RTS ;;;
;;; $ED1F: Unused. Waste time ;;;
;;; $ED26: Demo recorder - display Samus position as ammo if morphed ;;;
;;; $ED6C: Unused. Display in-game time as ammo ;;;
;;; $ED88..EEE6: Footstep graphics ;;;
    ;;; $ED88: Footstep graphics ;;;
    ;;; $EDA1: Footstep graphics - Crateria ;;;
    ;;; $EDEC: Footstep graphics - Maridia ;;;
    ;;; $EE64: Footstep graphics - common ;;;
;;; $EEE7: Update speed echo position ;;;
;;; $EF1C: Unused ;;;
;;; $EF20: Unknown ;;;
;;; $EF22: Post grapple collision detection ;;;
;;; $EF5E..F083: Unused. Unknown projectile 27h ;;;
    ;;; $EF5E: Unused. Fire unknown projectile 27h ;;;
    ;;; $EFD3: Projectile pre-instruction - unknown projectile 27h ;;;
    ;;; $F04B: Samus movement handler - unused ;;;
    ;;; $F072: Samus movement handler - unused ;;;
;;; $F084..F506: Samus commands ;;;
    ;;; $F084: Run Samus command ;;;
    ;;; $F0EE: Update Samus previous pose ;;;
    ;;; $F107: Clear carry ;;;
    ;;; $F109: Samus command 0: lock Samus ;;;
    ;;; $F117: Samus command 1: unlock Samus ;;;
    ;;; $F125: Samus command 2: Samus reached Ceres elevator ;;;
    ;;; $F152: Samus command 3: unspin Samus ;;;
    ;;; $F19B: Samus command 4: end charge beam ;;;
    ;;; $F19E: End charge beam ;;;
    ;;; $F1AA: Samus command 6: lock Samus into recharge station ;;;
    ;;; $F1C8: Samus command 7: set up Samus for elevator ;;;
    ;;; $F1E9: Samus command 8: set up Samus for Ceres start ;;;
    ;;; $F23C: Samus command 9: set up Samus for Zebes start ;;;
    ;;; $F28D: Samus command Ah: stop drawing Samus ;;;
    ;;; $F295: Samus command Bh: unlock Samus from facing forward ;;;
    ;;; $F29E: Samus command Ch: update Samus due to unpause ;;;
    ;;; $F2B8: Samus command Dh: check if grapple beam is active ;;;
    ;;; $F2CA: Samus command Eh: unlock Samus from Ceres elevator ;;;
    ;;; $F2D8: Samus command Fh: enable timer handling ;;;
    ;;; $F2E0: Samus command 10h: unlock Samus from reserve tank ;;;
    ;;; $F2F8: Samus command 11h: set up Samus for death sequence ;;;
    ;;; $F2FC: Lock Samus and set inanimate Samus drawing handler ;;;
    ;;; $F310: Samus command 15h: lock Samus into suit pickup ;;;
    ;;; $F320: Samus command 12h: enable Samus blue flashing ;;;
    ;;; $F328: Samus command 13h: disable Samus blue flashing ;;;
    ;;; $F331: Samus command 14h: queue low health and grapple sound effects ;;;
    ;;; $F38E: Samus command 5: set up Samus for being drained - able to stand ;;;
    ;;; $F394: Set up Samus for being drained ;;;
    ;;; $F3C0: Samus command 18h: set up Samus for being drained - unable to stand ;;;
    ;;; $F3C9: Samus command 16h: enable rainbow Samus ;;;
    ;;; $F3DD: Samus command 17h: disable rainbow Samus and stand her up ;;;
    ;;; $F3FB: Samus command 19h: freeze drained Samus animation ;;;
    ;;; $F409: Samus command 1Ah: Samus enters gunship ;;;
    ;;; $F411: Samus command 1Bh: lock Samus for reserve tank ;;;
    ;;; $F41E: Samus command 1Ch: play spin jump sound if spin jumping ;;;
    ;;; $F471: Samus command 1Dh: clear sounds when going through door ;;;
    ;;; $F4A2: Samus command 1Eh: resume sounds after power bomb explosion ;;;
    ;;; $F4D0: Samus command 1Fh: kill grapple beam ;;;
;;; $F507: Unused ;;;
;;; $F52F..F575: Debug commands ;;;
    ;;; $F52F: Debug command handler ;;;
    ;;; $F533: RTS ;;;
    ;;; $F534: RTS ;;;
    ;;; $F535: Debug command handler - give Samus a shinespark if Y is newly pressed ;;;
    ;;; $F54C: Debug command handler - disable rainbow Samus and stand her up if controller 2 Y is newly pressed ;;;
    ;;; $F561: Debug command handler - release Samus from drained pose if Y newly pressed ;;;
;;; $F576: Handle unspin sound effects, cancelling echo sound and setting time up game state ;;;
;;; $F63A: Free space ;;;