;;; $8000..834D: Normal Samus pose input handler ;;;
    ;;; $8000: Normal Samus pose input handler ;;;
    ;;; $804C: RTS ;;;
    ;;; $804D: Normal Samus pose input handler - [Samus movement type] = standing ;;;
    ;;; $8066: Normal Samus pose input handler - [Samus movement type] = running ;;;
    ;;; $806E: Normal Samus pose input handler - [Samus movement type] = normal jumping ;;;
    ;;; $8076: Normal Samus pose input handler - [Samus movement type] = spin jumping ;;;
    ;;; $807E: Normal Samus pose input handler - [Samus movement type] = morph ball - on ground ;;;
    ;;; $8086: RTS. Normal Samus pose input handler - [Samus movement type] = 7 ;;;
    ;;; $8087: Normal Samus pose input handler - [Samus movement type] = crouching ;;;
    ;;; $80B6: Normal Samus pose input handler - [Samus movement type] = falling ;;;
    ;;; $80BE: Unused ;;;
    ;;; $810A: Normal Samus pose input handler - [Samus movement type] = morph ball - falling ;;;
    ;;; $8112: RTS. Normal Samus pose input handler - [Samus movement type] = 9 ;;;
    ;;; $8113: Normal Samus pose input handler - [Samus movement type] = knockback / crystal flash ending ;;;
    ;;; $812D: RTS. Normal Samus pose input handler - [Samus movement type] = Bh ;;;
    ;;; $8132: Normal Samus pose input handler - [Samus movement type] = Ch ;;;
    ;;; $813A: Normal Samus pose input handler - [Samus movement type] = Dh ;;;
    ;;; $8142: Normal Samus pose input handler - [Samus movement type] = turning around - on ground ;;;
    ;;; $8146: RTS. Normal Samus pose input handler - [Samus movement type] = crouching/standing/morphing/unmorphing transition ;;;
    ;;; $8147: Normal Samus pose input handler - [Samus movement type] = moonwalking ;;;
    ;;; $814F: Normal Samus pose input handler - [Samus movement type] = spring ball - on ground ;;;
    ;;; $8157: Normal Samus pose input handler - [Samus movement type] = spring ball - in air ;;;
    ;;; $815F: Normal Samus pose input handler - [Samus movement type] = spring ball - falling ;;;
    ;;; $8167: Normal Samus pose input handler - [Samus movement type] = wall jumping ;;;
    ;;; $816F: Normal Samus pose input handler - [Samus movement type] = ran into a wall ;;;
    ;;; $8181: Normal Samus pose input handler - [Samus movement type] = grappling ;;;
    ;;; $8189: Normal Samus pose input handler - [Samus movement type] = turning around - jumping ;;;
    ;;; $818D: Normal Samus pose input handler - [Samus movement type] = turning around - falling ;;;
    ;;; $8191: Normal Samus pose input handler - [Samus movement type] = damage boost ;;;
    ;;; $8199: Normal Samus pose input handler - [Samus movement type] = grabbed by Draygon ;;;
    ;;; $81A1: Normal Samus pose input handler - [Samus movement type] = shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
    ;;; $81A9: Determine prospective pose from transition table ;;;
    ;;; $81F4: Translate custom controller bindings to default bindings ;;;
    ;;; $82D9: Handle transition table lookup failure ;;;
    ;;; $8304: Set prospective pose change command ;;;
;;; $834E..9EE1: Demo ;;;
    ;;; $834E: Enable demo input ;;;
    ;;; $835F: Disable demo input ;;;
    ;;; $8370: Clear demo input RAM ;;;
    ;;; $8395: Load demo input object ;;;
    ;;; $83BF: RTS ;;;
    ;;; $83C0: Demo input object handler ;;;
    ;;; $83F2: Process demo input object ;;;
    ;;; $8427: Instruction - delete ;;;
    ;;; $8434: Instruction - pre-instruction = [[Y]] ;;;
    ;;; $843F: Instruction - clear pre-instruction ;;;
    ;;; $8448: Instruction - go to [[Y]] ;;;
    ;;; $844F: Instruction - decrement timer and go to [[Y]] if non-zero ;;;
    ;;; $8459: Instruction - timer = [[Y]] ;;;
    ;;; $8464: Record demo input frame ;;;
    ;;; $84D5: Pause/terminate/reset demo recorder ;;;
    ;;; $852F: Draw recorded demo duration ;;;
    ;;; $85CE: Instruction list - demo input - demo input object $8778 ;;;
    ;;; $85FC: Instruction - end demo input and give control back to player ;;;
    ;;; $860D: Instruction list - demo input - baby metroid discovery - running left ;;;
    ;;; $8623: Instruction list - demo input - baby metroid discovery - stop and look ;;;
    ;;; $864B: Instruction list - demo input - baby metroid discovery - end ;;;
    ;;; $864F: Pre-instruction - demo input - baby metroid discovery - running left ;;;
    ;;; $866A: Pre-instruction - demo input - baby metroid discovery - stop and look ;;;
    ;;; $8682: Instruction - end demo input ;;;
    ;;; $8694: Instruction list - demo input - old Mother Brain fight ;;;
    ;;; $86B8: Instruction list - demo input - demo input object $878A ;;;
    ;;; $86FE: Unused. End demo input with Samus facing left ;;;
    ;;; $8739: Instruction - end demo input with Samus facing left ;;;
    ;;; $8774: Unused. Instruction list - demo input - delete ;;;
    ;;; $8776: Instruction list - demo input - delete ;;;
    ;;; $8778: Demo input objects - intro ;;;
    ;;; $8790: Load demo data ;;;
    ;;; $8885: Demo data ;;;
    ;;; $89FD: Demo Samus setup function pointers ;;;
    ;;; $8A33: Demo Samus setup - landing site ;;;
    ;;; $8A3E: Demo Samus setup - morph ball moving left ;;;
    ;;; $8A43: Demo Samus setup - standing facing left - low health ;;;
    ;;; $8A49: Demo Samus setup - standing facing left ;;;
    ;;; $8A4E: Demo Samus setup - falling facing left ;;;
    ;;; $8A53: Demo Samus setup - standing facing right ;;;
    ;;; $8A56: Initialise Samus with pose = [A] ;;;
    ;;; $8A68: Demo Samus setup - shinespark ;;;
    ;;; $8A81: Demo Samus setup - gauntlet entrance ;;;
    ;;; $8A9A: RTS ;;;
    ;;; $8A9B: Pre-instruction - demo input - normal ;;;
    ;;; $8AB0: Pre-instruction - demo input - shinespark ;;;
    ;;; $8ACE..9E51: Demo input instruction lists ;;;
        ;;; $8ACE: Instruction list - demo input - landing site ;;;
        ;;; $8C3E: Instruction list - demo input - pseudo screw attack ;;;
        ;;; $8DF0: Instruction list - demo input - speed booster ;;;
        ;;; $8E64: Instruction list - demo input - dachora ;;;
        ;;; $8EB4: Instruction list - demo input - Red Brinstar -> Crateria elevator ;;;
        ;;; $8F3A: Instruction list - demo input - pre Phantoon hall ;;;
        ;;; $8FE4: Instruction list - demo input - Lower Norfair entrance ;;;
        ;;; $9154: Instruction list - demo input - eye door ;;;
        ;;; $933C: Instruction list - demo input - shinespark ;;;
        ;;; $9346: Instruction list - demo input - shinespark - unseen section ;;;
        ;;; $93CC: Instruction list - demo input - missile door ;;;
        ;;; $9464: Instruction list - demo input - Kraid ;;;
        ;;; $946C: Instruction list - demo input - fireflea room ;;;
        ;;; $950A: Instruction list - demo input - screw attack ;;;
        ;;; $9560: Instruction list - demo input - Brinstar diagonal room ;;;
        ;;; $95BC: Instruction list - demo input - unused ;;;
        ;;; $965A: Instruction list - demo input - pre Spore Spawn hall ;;;
        ;;; $973A: Instruction list - demo input - grapple beam ;;;
        ;;; $989E: Instruction list - demo input - ice beam ;;;
        ;;; $99AE: Instruction list - demo input - gauntlet entrance ;;;
        ;;; $99C8: Instruction list - demo input - advanced grapple beam ;;;
        ;;; $9AF0: Instruction list - demo input - IBJ ;;;
        ;;; $9CD8: Instruction list - demo input - SBA ;;;
        ;;; $9DA6: Instruction list - demo input - Tourian entrance ;;;
        ;;; $9DAE: Instruction list - demo input - crystal flash ;;;
    ;;; $9E52: Demo input objects - title ;;;
;;; $9EE2..B00F: Transition table ;;;
    ;;; $A0DC: Transition table - entry 2F/30/35/36/37/38/39/3A/3B/3C/3F/40/43/44/5D/5E/5F/60/61/62/87/88/8F/90/91/92/93/94/95/96/97/98/99/9A/9C/9D/9E/9F/A0/A1/A2/A3/A8/A9/AA/AB/AC/AD/AE/AF/B0/B1/B2/B3/B4/B5/B6/B7/B8/B9/C5/C6/C9/CA/CB/CC/CD/CE/D3/D4/D5/D6/D7/D8/D9/DA/DB/DC/DD/DE/E8/E9/EA/EB/F1/F2/F3/F4/F5/F6/F7/F8/F9/FA/FB/FC ;;;
    ;;; $A0DE: Transition table - entry 00/9B ;;;
    ;;; $A0EC: Transition table - entry 01/03/05/07/A4/A6/E0/E2/E4/E6 ;;;
    ;;; $A172: Transition table - entry 02/04/06/08/A5/A7/E1/E3/E5/E7 ;;;
    ;;; $A1F8: Transition table - entry 09/0D/0F/11 ;;;
    ;;; $A242: Transition table - entry 0A/0E/10/12 ;;;
    ;;; $A28C: Transition table - entry 4B/55/57/59 ;;;
    ;;; $A2BE: Transition table - entry 4C/56/58/5A ;;;
    ;;; $A2F6: Transition table - entry 15/4D/51/69/6B ;;;
    ;;; $A376: Transition table - entry 16/4E/52/6A/6C ;;;
    ;;; $A3F6: Transition table - entry 4F ;;;
    ;;; $A40A: Transition table - entry 50 ;;;
    ;;; $A41E: Transition table - entry 19 ;;;
    ;;; $A46E: Transition table - entry 1A ;;;
    ;;; $A4BE: Transition table - entry 1B ;;;
    ;;; $A50E: Transition table - entry 1C ;;;
    ;;; $A55E: Transition table - entry 81 ;;;
    ;;; $A5AE: Transition table - entry 82 ;;;
    ;;; $A5FE: Transition table - entry 1D ;;;
    ;;; $A618: Transition table - entry 1E ;;;
    ;;; $A632: Transition table - entry 1F ;;;
    ;;; $A64C: Transition table - entry 41 ;;;
    ;;; $A666: Transition table - entry 20/21/22/24 ;;;
    ;;; $A668: Transition table - entry 23 ;;;
    ;;; $A66A: Transition table - entry 42 ;;;
    ;;; $A66C: Transition table - entry 27/71/73/85 ;;;
    ;;; $A6BC: Transition table - entry 28/72/74/86 ;;;
    ;;; $A70C: Transition table - entry 29/2B/6D/6F ;;;
    ;;; $A750: Transition table - entry 2A/2C/6E/70 ;;;
    ;;; $A794: Transition table - entry 31 ;;;
    ;;; $A7AE: Transition table - entry 32 ;;;
    ;;; $A7C8: Transition table - entry 33 ;;;
    ;;; $A7CA: Transition table - entry 34 ;;;
    ;;; $A7CC: Transition table - entry 45 ;;;
    ;;; $A7E0: Transition table - entry 46 ;;;
    ;;; $A7F4: Transition table - entry 47 ;;;
    ;;; $A7F6: Unused ;;;
    ;;; $A834: Transition table - entry 48 ;;;
    ;;; $A836: Unused ;;;
    ;;; $A874: Transition table - entry 49/75/77 ;;;
    ;;; $A8AC: Transition table - entry 4A/76/78 ;;;
    ;;; $A8E4: Transition table - entry 53 ;;;
    ;;; $A8EC: Transition table - entry 54 ;;;
    ;;; $A8F4: Unused ;;;
    ;;; $A8FC: Transition table - entry 5B ;;;
    ;;; $A904: Transition table - entry 5C ;;;
    ;;; $A90C: Transition table - entry 79/7B ;;;
    ;;; $A926: Transition table - entry 7A/7C ;;;
    ;;; $A940: Transition table - entry 7D ;;;
    ;;; $A954: Transition table - entry 7E ;;;
    ;;; $A968: Transition table - entry 7F ;;;
    ;;; $A97C: Transition table - entry 80 ;;;
    ;;; $A990: Transition table - entry 63 ;;;
    ;;; $A998: Transition table - entry 64 ;;;
    ;;; $A9A0: Transition table - entry 65 ;;;
    ;;; $A9C6: Transition table - entry 66 ;;;
    ;;; $A9EC: Transition table - entry 83 ;;;
    ;;; $AA12: Transition table - entry 84 ;;;
    ;;; $AA38: Transition table - entry 89/CF/D1 ;;;
    ;;; $AA7C: Transition table - entry 8A/D0/D2 ;;;
    ;;; $AAC0: Transition table - entry 13 ;;;
    ;;; $AB3A: Transition table - entry 14 ;;;
    ;;; $ABB4: Transition table - entry 17 ;;;
    ;;; $AC40: Transition table - entry 18 ;;;
    ;;; $ACCC: Transition table - entry 3D ;;;
    ;;; $ACE0: Transition table - entry 3E ;;;
    ;;; $ACF4: Transition table - entry 25 ;;;
    ;;; $AD08: Transition table - entry 26 ;;;
    ;;; $AD1C: Transition table - entry 8B ;;;
    ;;; $AD30: Transition table - entry 8C ;;;
    ;;; $AD44: Transition table - entry 8D ;;;
    ;;; $AD58: Transition table - entry 8E ;;;
    ;;; $AD6C: Transition table - entry C7 ;;;
    ;;; $AD80: Transition table - entry C8 ;;;
    ;;; $AD94: Transition table - entry 2D ;;;
    ;;; $ADD2: Transition table - entry 2E ;;;
    ;;; $AE10: Transition table - entry DF ;;;
    ;;; $AE18: Transition table - entry BA/BB/BC/BD/BE ;;;
    ;;; $AE56: Transition table - entry EC/ED/EE/EF/F0 ;;;
    ;;; $AE94: Transition table - entry 0B ;;;
    ;;; $AEDE: Transition table - entry 0C ;;;
    ;;; $AF28: Transition table - entry 67 ;;;
    ;;; $AF60: Transition table - entry 68 ;;;
    ;;; $AF98: Transition table - entry BF ;;;
    ;;; $AFAC: Transition table - entry C0 ;;;
    ;;; $AFC0: Transition table - entry C1 ;;;
    ;;; $AFD4: Transition table - entry C2 ;;;
    ;;; $AFE8: Transition table - entry C3 ;;;
    ;;; $AFFC: Transition table - entry C4 ;;;
;;; $B010: Animation delay table ;;;
;;; $B571: Unused animation delay table ;;;
;;; $B5D1: Animation delay table - running - speed booster not equipped ;;;
;;; $B5DE: Animation delay table - running - speed booster equipped ;;;
;;; $B61F: Speed boost timer reset values ;;;
;;; $B629: Pose definitions ;;;
;;; $BE11..C9D3: Calculate x-ray / morph ball eye beam HDMA data table ;;;
    ;;; $BE11: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen ;;;
    ;;; $BEC2: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed right ;;;
    ;;; $BF72: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed left ;;;
    ;;; $C022: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed upwards ;;;
    ;;; $C069: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed upwards - beam is aimed up-right ;;;
    ;;; $C123: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed upwards - beam is aimed up ;;;
    ;;; $C1CA: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed upwards - beam is aimed up-left ;;;
    ;;; $C27F: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed downwards ;;;
    ;;; $C2BD: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed downwards - beam is aimed down-right ;;;
    ;;; $C381: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed downwards - beam is aimed down ;;;
    ;;; $C446: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is aimed downwards - beam is aimed down-left ;;;
    ;;; $C505: Calculate x-ray / morph ball eye beam HDMA data table - origin is off screen - beam is horizontal line ;;;
    ;;; $C54B: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen ;;;
    ;;; $C5FF: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed right ;;;
    ;;; $C660: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed left ;;;
    ;;; $C6C1: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed upwards ;;;
    ;;; $C71C: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed upwards - beam is aimed up-right ;;;
    ;;; $C77F: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed upwards - beam is aimed up ;;;
    ;;; $C7CB: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed upwards - beam is aimed up-left ;;;
    ;;; $C822: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed downwards ;;;
    ;;; $C87A: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed downwards - beam is aimed down-right ;;;
    ;;; $C8E8: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed downwards - beam is aimed down ;;;
    ;;; $C939: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is aimed downwards - beam is aimed down-left ;;;
    ;;; $C998: Calculate x-ray / morph ball eye beam HDMA data table - origin is on screen - beam is horizontal line ;;;
;;; $C9D4: Absolute tangent table ;;;
;;; $CAD6..D4D9: X-ray ;;;
    ;;; $CAD6: X-ray handler ;;;
    ;;; $CAF9: X-ray setup stage 1 - freeze time and backup BG2 registers ;;;
    ;;; $CB1C: X-ray setup stage 2 - read BG1 tilemap - 2nd screen ;;;
    ;;; $CB57: X-ray setup stage 3 - read BG1 tilemap - 1st screen ;;;
    ;;; $CB8E: X-ray setup stage 4 - build x-ray BG2 tilemap, read BG2 tilemap - 1st screen ;;;
    ;;; $CCF1: Copy last BG1 block of row to x-ray BG2 tilemap ;;;
    ;;; $CD42: Load right half of revealed 2xN block ;;;
    ;;; $CDBE: Load revealed block ;;;
    ;;; $CDCB: Load revealed block - done ;;;
    ;;; $CDD6: Load revealed block command ;;;
    ;;; $CE2C: Calculate block co-ordinates ;;;
    ;;; $CE51: Get block type and BTS ;;;
    ;;; $CE79: Revealed block command - vertical extension ;;;
    ;;; $CE8E: Revealed block extension loop - vertical ;;;
    ;;; $CEBB: Revealed block command - horizontal extension ;;;
    ;;; $CED0: Revealed block extension loop - horizontal ;;;
    ;;; $CEFD: Copy 1x1 block to x-ray BG2 tilemap if scroll PLM trigger ;;;
    ;;; $CF36: Revealed block command - copy 1x1 block to x-ray BG2 tilemap ;;;
    ;;; $CF3E: Revealed block command - copy 1x1 block to x-ray BG2 tilemap if in Brinstar ;;;
    ;;; $CF4E: Revealed block command - copy 2x1 block to x-ray BG2 tilemap ;;;
    ;;; $CF62: Revealed block command - copy 1x2 block to x-ray BG2 tilemap ;;;
    ;;; $CF6F: Revealed block command - copy 2x2 block to x-ray BG2 tilemap ;;;
    ;;; $CFBF: Copy revealed block command argument to x-ray BG2 tilemap ;;;
    ;;; $CFC1: Copy block to x-ray BG2 tilemap ;;;
    ;;; $CFEE: Copy revealed block command argument to x-ray BG2 tilemap one block right ;;;
    ;;; $D01D: Copy revealed block command argument to x-ray BG2 tilemap one block down ;;;
    ;;; $D04C: Load block to x-ray BG2 tilemap ;;;
    ;;; $D0A6: Copy Y flipped block to x-ray BG2 tilemap ;;;
    ;;; $D0D3: X-ray setup stage 5 - read BG2 tilemap - 2nd screen ;;;
    ;;; $D141: REP #$30 ;;;
    ;;; $D143: Check if x-ray should show any blocks ;;;
    ;;; $D173: X-ray setup stage 6 - transfer x-ray tilemap - 1st screen ;;;
    ;;; $D1A0: X-ray setup stage 7 - initialise x-ray beam, transfer x-ray tilemap - 2nd screen ;;;
    ;;; $D223: HDMA object instruction list - x-ray ;;;
    ;;; $D27F: HDMA object pre-instruction - x-ray setup ;;;
    ;;; $D2BC: X-ray setup stage 8 - backdrop colour = (3, 3, 3) ;;;
    ;;; $D2D1: RTS ;;;
    ;;; $D2D6..D4D9: Revealed block data ;;;
        ;;; $D2D6: Revealed block table pointers ;;;
        ;;; $D2FC: Revealed block table - air ;;;
        ;;; $D306: Revealed block table - special air ;;;
        ;;; $D310: Revealed block table - horizontal extension ;;;
        ;;; $D318: Revealed block table - spike block ;;;
        ;;; $D322: Revealed block table - special block ;;;
        ;;; $D3CC: Revealed block table - shootable block ;;;
        ;;; $D462: Revealed block table - vertical extension ;;;
        ;;; $D46A: Revealed block table - grapple block ;;;
        ;;; $D484: Revealed block table - bombable block ;;;
;;; $D4DA: Game state 1Ch (unused) ;;;
;;; $D4E0: PLP : RTL ;;;
;;; $D4E2: PLP : RTL ;;;
;;; $D4E4: Varia suit pick up ;;;
;;; $D5A2: HDMA object instruction list - window 1 position - varia suit pickup ;;;
;;; $D5BA: Gravity suit pick up ;;;
;;; $D67A: HDMA object instruction list - window 1 position - gravity suit pickup ;;;
;;; $D692: Initialise suit pickup HDMA ;;;
;;; $D6F7..DE52: Samus palette handling ;;;
    ;;; $D6F7: Handle Samus palette ;;;
    ;;; $D743: Handle beam charge palettes ;;;
    ;;; $D83F: Handle visor palette ;;;
    ;;; $D8A5: Handle misc. Samus palette ;;;
    ;;; $D9B2: Handle screw attacking / speed boosting palette ;;;
    ;;; $DAC7: Handle speed booster shine palette ;;;
    ;;; $DB3A: Handle shinesparking palette ;;;
    ;;; $DB93: Handle crystal flash palette  ;;;
    ;;; $DC34: Set crystal flash Samus colours ;;;
    ;;; $DC82: Set crystal flash bubble colours ;;;
    ;;; $DCB4: Handle x-ray palette ;;;
    ;;; $DD31: RTS ;;;
    ;;; $DD32:  ;;;
    ;;; $DD4C: Unused. Set Samus palette to $9B:9500 ;;;
    ;;; $DD5B: Samus palette = 20h bytes from $9B:[X] ;;;
    ;;; $DDD7: Target Samus palette = 20h bytes from $9B:[X] ;;;
;;; $DE53: Cancel speed boosting ;;;
;;; $DEBA: Load Samus suit palette ;;;
;;; $DEE6: Load Samus suit target palette ;;;
;;; $DF12: Restore [A] health to Samus ;;;
;;; $DF51: Deal [A] damage to Samus ;;;
;;; $DF80: Restore [A] missiles to Samus ;;;
;;; $DFD3: Restore [A] super missiles to Samus ;;;
;;; $DFF0: Restore [A] power bombs to Samus ;;;
;;; $E00D: Initialise Samus ;;;
;;; $E16D: X-ray setup ;;;
;;; $E2AD: Set non x-ray Samus pose ;;;
;;; $E355: Debug. Handle debug mode select + L + B ;;;
;;; $E3F6: Make Samus face forward ;;;
;;; $E4AD..E632: Drained Samus controller ;;;
    ;;; $E4AD: Drained Samus controller ;;;
    ;;; $E4F8: Drained Samus controller - 0: let drained Samus fall ;;;
    ;;; $E571: Drained Samus controller - 1: put Samus into standing drained pose ;;;
    ;;; $E59B: Drained Samus controller - 2: release Samus from drained pose ;;;
    ;;; $E5F0: Drained Samus controller - 3: enable hyper beam ;;;
    ;;; $E60C: Drained Samus controller - 4: put Samus into crouching/falling drained pose ;;;
;;; $E633: Update Samus pose due to change of equipment ;;;
;;; $E719: Update Samus previous pose ;;;
;;; $E732: RTS ;;;
;;; $E733..E8B5: Update Samus pose due to change of equipment ;;;
    ;;; $E733: Update Samus pose due to change of equipment - standing ;;;
    ;;; $E776: Update Samus pose due to change of equipment - spin jumping ;;;
    ;;; $E83A: Update Samus pose due to change of equipment - morph ball ;;;
    ;;; $E867: Update Samus pose due to change of equipment - spring ball ;;;
    ;;; $E894: Update Samus pose due to change of equipment - wall jumping ;;;
;;; $E8B6..EADD: Set prospective Samus pose according to solid vertical collision result ;;;
    ;;; $E8B6: Set prospective Samus pose according to solid vertical collision result ;;;
    ;;; $E8D8: Set prospective Samus pose according to solid vertical collision result - unused ;;;
    ;;; $E8E5: Set prospective Samus pose according to solid vertical collision result - hit ceiling ;;;
    ;;; $E8F2: Set prospective Samus pose according to solid vertical collision result - falling ;;;
    ;;; $E931: Set prospective Samus pose according to solid vertical collision result - landed ;;;
    ;;; $E95D: Set prospective Samus pose according to solid vertical collision result - landed - grounded ;;;
    ;;; $EA07: Set prospective Samus pose according to solid vertical collision result - landed - morph ball grounded ;;;
    ;;; $EA15: Set prospective Samus pose according to solid vertical collision result - landed - morph ball grounded - not bouncing ;;;
    ;;; $EA25: Set prospective Samus pose according to solid vertical collision result - landed - morph ball grounded - first bounce ;;;
    ;;; $EA2D: Set prospective Samus pose according to solid vertical collision result - landed - morph ball grounded - second bounce ;;;
    ;;; $EA48: Set prospective Samus pose according to solid vertical collision result - landed - unused ;;;
    ;;; $EA63: Set prospective Samus pose according to solid vertical collision result - landed - spring ball grounded ;;;
    ;;; $EA83: Set prospective Samus pose according to solid vertical collision result - landed - spring ball grounded - not bouncing ;;;
    ;;; $EA93: Set prospective Samus pose according to solid vertical collision result - landed - spring ball grounded - first bounce ;;;
    ;;; $EA9B: Set prospective Samus pose according to solid vertical collision result - landed - spring ball grounded - second bounce ;;;
    ;;; $EAB6: Set prospective Samus pose according to solid vertical collision result - landed - [$0DC7] = 5 ;;;
    ;;; $EABE: Set prospective Samus pose according to solid vertical collision result - wall jump triggered ;;;
;;; $EADE: Check if prospective pose runs into a wall ;;;
;;; $EB88: Update Samus pose ;;;
;;; $EC50..ED4D: Prospective pose change commands ;;;
    ;;; $EC50: Prospective pose change command 1 - decelerate ;;;
    ;;; $EC85: Prospective pose change command 6 - kill X speed ;;;
    ;;; $EC8E: Prospective pose change command 8 - kill run speed ;;;
    ;;; $EC9D: Unused ;;;
    ;;; $ECD0: Prospective pose change command 2 - stop ;;;
    ;;; $ECD8: RTS. Prospective pose change command 3 - unused ;;;
    ;;; $ECD9: RTS. Prospective pose change command 4 - unused ;;;
    ;;; $ECDA: Prospective pose change command 7 - start transition animation ;;;
;;; $ED4E..EFC2: Special prospective pose change commands ;;;
    ;;; $ED4E: Special prospective pose change command 1 - start knockback ;;;
    ;;; $EDA2: Clear carry ;;;
    ;;; $EDA4: Clear carry ;;;
    ;;; $EDA6: Determine knockback direction - falling ;;;
    ;;; $EDB0: Determine knockback direction - normal ;;;
    ;;; $EE27: Determine knockback direction - morphed ;;;
    ;;; $EE48: Determine knockback direction - movement type 7 ;;;
    ;;; $EE69: Special prospective pose change command 2 - unused ;;;
    ;;; $EE80: Special prospective pose change command 3 - start bomb jump ;;;
    ;;; $EEA1: Special prospective pose change command 4 - unused ;;;
    ;;; $EEA6: Special prospective pose change command 5 - x-ray ;;;
    ;;; $EF39: RTS. Special prospective pose change command 6 - unused ;;;
    ;;; $EF3A: RTS. Special prospective pose change command 7 - unused ;;;
    ;;; $EF3B: Special prospective pose change command 8 - unused ;;;
    ;;; $EF4F: Special prospective pose change command 9 - connecting grapple - swinging ;;;
    ;;; $EF53: Connecting grapple - kill speed and clamp scrolling speed ;;;
    ;;; $EFBC: Special prospective pose change command Ah - connecting grapple - stuck in place ;;;
;;; $EFC3: RTS ;;;
;;; $EFC4..F31C: Solid vertical collision ;;;
    ;;; $EFC4: Prospective pose change command 5 - solid vertical collision ;;;
    ;;; $EFDE: RTS. Solid vertical collision - [Samus solid vertical collision result] = 3 ;;;
    ;;; $EFDF: Solid vertical collision - [Samus solid vertical collision result] = hit ceiling ;;;
    ;;; $EFEF: Solid vertical collision - [Samus solid vertical collision result] = falling ;;;
    ;;; $F010..F2D2: Landing ;;;
        ;;; $F010: Solid vertical collision - [Samus solid vertical collision result] = landed ;;;
        ;;; $F046: Handle landing sound effects and graphics ;;;
        ;;; $F0A5: Handle landing graphics ;;;
        ;;; $F0BE: Delete landing atmospheric graphics ;;;
        ;;; $F0C5: Handle landing graphics - Crateria ;;;
        ;;; $F116: Handle landing graphics - Maridia / handle landing footstep splashes ;;;
        ;;; $F166: Handle landing graphics - Norfair / Wrecked Ship / handle landing dust ;;;
        ;;; $F1B2: Handle landing graphics - Brinstar ;;;
        ;;; $F1BA: Handle landing graphics - Tourian ;;;
        ;;; $F1D3: Solid vertical collision - landed - set Samus as not bouncing ;;;
        ;;; $F1EC: Solid vertical collision - landed - [Samus downwards movement solid collision result] = grounded ;;;
        ;;; $F1FC: Solid vertical collision - landed - [Samus downwards movement solid collision result] = morph ball grounded ;;;
        ;;; $F20A: Morph ball bounce - morph ball - not bouncing ;;;
        ;;; $F22B: Morph ball bounce - morph ball - first bounce ;;;
        ;;; $F245: Morph ball bounce - morph ball - second bounce ;;;
        ;;; $F253: Solid vertical collision - landed - [Samus downwards movement solid collision result] = 2 ;;;
        ;;; $F25E: Solid vertical collision - landed - [Samus downwards movement solid collision result] = spring ball grounded ;;;
        ;;; $F27F: Morph ball bounce - spring ball - not bouncing ;;;
        ;;; $F2A3: Morph ball bounce - spring ball - first bounce ;;;
        ;;; $F2C0: Morph ball bounce - spring ball - second bounce ;;;
        ;;; $F2CE: Solid vertical collision - landed - [Samus downwards movement solid collision result] = 5 ;;;
    ;;; $F2D3: Solid vertical collision - [Samus solid vertical collision result] = wall jump triggered ;;;
    ;;; $F2F0: Solid vertical collision - [Samus solid vertical collision result] = 6 ;;;
;;; $F31D..F403: Super special prospective pose change commands ;;;
    ;;; $F31D: Super special prospective pose change command 1 - knockback finished ;;;
    ;;; $F34E: Super special prospective pose change command 2 - shinespark finished ;;;
    ;;; $F36E: Super special prospective pose change command 3 - transition animation finished ;;;
    ;;; $F37C: Super special prospective pose change command 4 ;;;
    ;;; $F397: Super special prospective pose change command 5 ;;;
    ;;; $F3A5: Super special prospective pose change command 6 - start grapple wall-jump ;;;
    ;;; $F3AA: Super special prospective pose change command 7 - start release from grapple swing ;;;
    ;;; $F3FD: Super special prospective pose change command 8 - knockback and transition animation both finished ;;;
;;; $F404: Handle Samus pose change ;;;
;;; $F433..FB07: Initialise Samus pose ;;;
    ;;; $F433: Initialise Samus pose (1/2) ;;;
    ;;; $F468: Initialise Samus pose (2/2) ;;;
    ;;; $F4DA: Clear carry ;;;
    ;;; $F4DC: Initialise Samus pose - standing ;;;
    ;;; $F50C: Initialise Samus pose - running ;;;
    ;;; $F543: Initialise Samus pose - normal jumping ;;;
    ;;; $F5EB: Initialise Samus pose - crouching ;;;
    ;;; $F60D: Initialise Samus pose - falling ;;;
    ;;; $F624: Initialise Samus pose - spin jumping ;;;
    ;;; $F758: Initialise Samus pose - crouching/standing/morphing/unmorphing transition ;;;
    ;;; $F7B0: Initialise Samus pose - crouching transition ;;;
    ;;; $F7CC: Clear carry ;;;
    ;;; $F7CE: Initialise Samus pose - morphing transition ;;;
    ;;; $F7F4: Initialise Samus pose - unused pose 39h ;;;
    ;;; $F840: Initialise Samus pose - unused pose 3Ah ;;;
    ;;; $F88C: Initialise Samus pose - moonwalking ;;;
    ;;; $F8AE: Initialise Samus pose - damage boost ;;;
    ;;; $F8D3: Initialise Samus pose - turning around - on ground ;;;
    ;;; $F952: Initialise Samus pose - turning around - jumping ;;;
    ;;; $F98A: Initialise Samus pose - turning around - falling ;;;
    ;;; $F9C2: Turning Samus poses ;;;
    ;;; $F9F4: Initialise Samus pose - morph ball ;;;
    ;;; $FA0F: Apply momentum if turning in morph ball ;;;
    ;;; $FA56: Initialise Samus pose - spring ball ;;;
    ;;; $FA76: Initialise Samus pose - wall jumping ;;;
    ;;; $FACA: Initialise Samus pose - shinespark / crystal flash / drained by metroid / damaged by MB's attacks ;;;
;;; $FB08: Set Samus animation frame if pose changed ;;;
;;; $FB8E:  ;;;
;;; $FBBB..FCAE: Handle jump transition ;;;
    ;;; $FBBB: Handle jump transition ;;;
    ;;; $FC07: RTS ;;;
    ;;; $FC08: Handle jump transition - wall jumping ;;;
    ;;; $FC18: Handle jump transition - spring ball - in air ;;;
    ;;; $FC42: Handle jump transition - Samus movement type Dh (unused) ;;;
    ;;; $FC66: Handle jump transition - normal jumping ;;;
    ;;; $FC99: Handle jump transition - spin jumping ;;;
    ;;; $FCAE: RTS ;;;
;;; $FCAF: X-ray Samus pose input handler ;;;
;;; $FDAE..FFED: Handle collision due to change of pose ;;;
    ;;; $FDAE: Handle collision due to change of pose ;;;
    ;;; $FE9A: Clear carry. Handle solid enemy collision due to pose change - no collision ;;;
    ;;; $FE9C: Clear carry. Handle solid enemy collision due to pose change - collision from both sides ;;;
    ;;; $FE9E: Handle solid enemy collision due to pose change - collision from above ;;;
    ;;; $FEDF: Handle solid enemy collision due to pose change - collision from below ;;;
    ;;; $FF20: Handle block collision due to pose change - collision from above ;;;
    ;;; $FF49: Handle block collision due to pose change - collision from below ;;;
    ;;; $FF76: Handle block collision due to pose change - no collision ;;;
    ;;; $FF87: Clear carry. Handle block collision to pose change - no collision - no solid enemy collision ;;;
    ;;; $FF89: Handle block collision to pose change - no collision - solid enemy collision from above ;;;
    ;;; $FF98: Handle block collision to pose change - no collision - solid enemy collision from below ;;;
    ;;; $FFA7: Handle collision from both sides due to pose change ;;;
;;; $FFEE: Free space ;;;