;;; $8000..8686: Common to all enemy banks ;;;
;;; $8687..8B08: Boulder ;;;
    ;;; $8687: Palette - enemy $DFBF (boulder) ;;;
    ;;; $86A7: Instruction list - facing left ;;;
    ;;; $86CB: Instruction list - facing right ;;;
    ;;; $86EF: Bounce speed table indices ;;;
    ;;; $86F5: Initialisation AI - enemy $DFBF (boulder) ;;;
    ;;; $8793: Main AI - enemy $DFBF (boulder) ;;;
    ;;; $879A: Boulder function - wait for Samus to get near ;;;
    ;;; $87ED: Boulder function - falling ;;;
    ;;; $8832: Boulder function - bounce - rising ;;;
    ;;; $888B: Boulder function - bounce - falling ;;;
    ;;; $8942: Boulder function - rolling ;;;
    ;;; $89FC: RTS ;;;
    ;;; $8A00: Move boulder horizontally ;;;
    ;;; $8A1D: Unused. Move boulder horizontally with linear speed table ;;;
    ;;; $8A3A: Move boulder vertically ;;;
    ;;; $8A57: RTL ;;;
    ;;; $8A58: RTL ;;;
    ;;; $8A59: Boulder spritemaps ;;;
;;; $8B09..8CFA: Spike platform ;;;
    ;;; $8B09: Palette - enemy $DFFF/$E03F (spike platform) ;;;
    ;;; $8B29: Instruction list - spike platform ;;;
    ;;; $8B2F: Initialisation AI - enemy $DFFF (spike platform top) ;;;
    ;;; $8B85: Initialisation AI - enemy $E03F (spike platform bottom) ;;;
    ;;; $8B99: Main AI - enemy $E03F (spike platform bottom) ;;;
    ;;; $8BAD: Main AI - enemy $DFFF (spike platform top) ;;;
    ;;; $8BB4: Spike platform function - waiting to fall ;;;
    ;;; $8BDC: Spike platform function - falling ;;;
    ;;; $8C4A: Spike platform function - waiting to rise ;;;
    ;;; $8C5D: Spike platform function - rising ;;;
    ;;; $8CA1: Check if spike platform is touching Samus from below ;;;
    ;;; $8CE3: RTL ;;;
    ;;; $8CE4: RTL ;;;
    ;;; $8CE5: Spike platform spritemap ;;;
;;; $8CFB..946F: Fire pillar ;;;
    ;;; $8CFB: Palette - enemy $E07F (fire pillar) ;;;
    ;;; $8D1B: Instruction list - graphics part ;;;
    ;;; $8DA9: Instruction list - hitbox part ;;;
    ;;; $8DAF: Instruction - queue fire pillar sound effect ;;;
    ;;; $8DBB: Y offsets ;;;
    ;;; $8DE7: Y radii ;;;
    ;;; $8E13..8FFB: Fire pillar instructions ;;;
        ;;; $8E13: Instruction - activity frame 0 ;;;
        ;;; $8E2D: Instruction - activity frame 1 ;;;
        ;;; $8E41: Instruction - activity frame 2 ;;;
        ;;; $8E55: Instruction - activity frame 3 ;;;
        ;;; $8E69: Instruction - activity frame 4 ;;;
        ;;; $8E7D: Instruction - activity frame 5 ;;;
        ;;; $8E91: Instruction - activity frame 6 ;;;
        ;;; $8EA5: Instruction - activity frame 7 ;;;
        ;;; $8EB9: Instruction - activity frame 8 ;;;
        ;;; $8ECD: Instruction - activity frame 9 ;;;
        ;;; $8EE1: Instruction - activity frame Ah ;;;
        ;;; $8EF5: Instruction - activity frame Bh ;;;
        ;;; $8F09: Instruction - activity frame Ch ;;;
        ;;; $8F1D: Instruction - activity frame Dh ;;;
        ;;; $8F31: Instruction - activity frame Eh ;;;
        ;;; $8F45: Instruction - activity frame Fh ;;;
        ;;; $8F59: Instruction - activity frame 10h ;;;
        ;;; $8F6D: Instruction - activity frame 11h ;;;
        ;;; $8F81: Instruction - activity frame 12h ;;;
        ;;; $8F95: Instruction - activity frame 13h ;;;
        ;;; $8FA9: Instruction - activity frame 14h ;;;
        ;;; $8FBD: Instruction - activity frame 15h ;;;
        ;;; $8FD1: Instruction - finish activity ;;;
    ;;; $8FFC: Initialisation AI - enemy $E07F (fire pillar) ;;;
    ;;; $9023: Main AI - enemy $E07F (fire pillar) ;;;
    ;;; $902F: Fire pillar function - inactive ;;;
    ;;; $9062: Fire pillar function - active ;;;
    ;;; $9080: RTL ;;;
    ;;; $9081: RTL ;;;
    ;;; $9082: Fire pillar spritemaps ;;;
;;; $9470..998B: Fire arc ;;;
    ;;; $9470: Palette - enemy $E0BF (fire arc) ;;;
    ;;; $9490: Instruction list ;;;
    ;;; $94C4: Initialisation AI - enemy $E0BF (fire arc) ;;;
    ;;; $960E: Main AI - enemy $E0BF (fire arc) ;;;
    ;;; $9615: Fire arc function - inactive ;;;
    ;;; $9682: Fire arc function - active ;;;
    ;;; $9721: Handle fire arc enemy projectiles ;;;
    ;;; $97E9: Handle fire arc sprite objects ;;;
    ;;; $98AD: Clamp angle and check inactivity condition ;;;
    ;;; $98E7: Check explosion condition ;;;
    ;;; $993F: Play fire arc explosion sound effect ;;;
    ;;; $9952: RTL ;;;
    ;;; $9953: RTL ;;;
    ;;; $9954: Fire arc spritemaps ;;;
;;; $998C..A0F4: Fake Kraid ;;;
    ;;; $998C: Palette - enemy $E0FF (fake Kraid) ;;;
    ;;; $99AC..9A47: Instruction lists - fake Kraid ;;;
        ;;; $99AC: Instruction list - choose action ;;;
        ;;; $99AE: Instruction list - step forwards - facing left ;;;
        ;;; $99C4: Instruction list - choose action ;;;
        ;;; $99C6: Instruction list - step backwards - facing left ;;;
        ;;; $99DC: Instruction list - fire spit - facing left ;;;
        ;;; $99F4: Unused. Instruction list - standing - facing left ;;;
        ;;; $99FA: Instruction list - choose action ;;;
        ;;; $99FC: Instruction list - step forwards - facing right ;;;
        ;;; $9A12: Instruction list - choose action ;;;
        ;;; $9A14: Instruction list - step backwards - facing right ;;;
        ;;; $9A2A: Instruction list - fire spit - facing right ;;;
        ;;; $9A42: Unused. Instruction list - standing - facing right ;;;
    ;;; $9A48: Fake Kraid spit velocity table ;;;
    ;;; $9A58: Initialisation AI - enemy $E0FF (fake Kraid) ;;;
    ;;; $9AC2: Main AI - enemy $E0FF (fake Kraid) ;;;
    ;;; $9ADC: Handle fake Kraid spike ;;;
    ;;; $9B26..9C0A: Instructions ;;;
        ;;; $9B26: Instruction - move ;;;
        ;;; $9B74: Instruction - choose action ;;;
        ;;; $9BB2: Instruction - play fake Kraid cry ;;;
        ;;; $9BC4: Instruction - fire spit left ;;;
        ;;; $9BCB: Fire fake Kraid spit ;;;
        ;;; $9C02: Instruction - fire spit right ;;;
    ;;; $9C0B: Unused. Fake Kraid power bomb reaction ;;;
    ;;; $9C22: Enemy touch - enemy $E0FF (fake Kraid) ;;;
    ;;; $9C39: Power bomb reaction / enemy shot - enemy $E0FF (fake Kraid) ;;;
    ;;; $9C50: Fake Kraid reaction ;;;
    ;;; $9C64: Fake Kraid spritemaps ;;;
;;; $A0F5..EFB0: Ridley ;;;
    ;;; $A0F5: Initialisation AI - enemy $E13F/$E17F (Ridley) ;;;
    ;;; $A288: Main AI - enemy $E13F (Ceres Ridley) ;;;
    ;;; $A2BD: Randomly update Ridley tail curliness ;;;
    ;;; $A2D3: Hurt AI - enemy $E13F (Ceres Ridley) ;;;
    ;;; $A2DC: Handle baby metroid ;;;
    ;;; $A2F2: Enemy graphics drawn hook - Ceres Ridley - draw baby metroid and door ;;;
    ;;; $A321: Ceres Ridley door X offsets during earthquake ;;;
    ;;; $A329: Spritemap - Ceres Ridley door ;;;
    ;;; $A353: RTL ;;;
    ;;; $A354..A6AE: Common Ridley functions ;;;
        ;;; $A354: Ridley function - transition to flying ;;;
        ;;; $A35B: Ridley function - initial ;;;
        ;;; $A377: Ridley function - wait to fade in ;;;
        ;;; $A389: Ridley function - fade in eye ;;;
        ;;; $A3DF: Ridley function - fade in body ;;;
        ;;; $A455: Ridley function - wait to roar ;;;
        ;;; $A478: Ridley function - roar before fly ;;;
        ;;; $A4D6: Fade in Ridley room background ;;;
    ;;; $A6AF..AAAE: Ceres Ridley functions ;;;
        ;;; $A6AF: Ridley function - liftoff - accelerating ;;;
        ;;; $A6C8: Ridley function - liftoff - decelerating ;;;
        ;;; $A6E8: Ridley function - hovering ;;;
        ;;; $A763: Ceres Ridley hovering movement ;;;
        ;;; $A782: Ridley function - shoot fireballs - move to position ;;;
        ;;; $A7F9: Ridley function - shoot fireballs - shooting ;;;
        ;;; $A83C: Ridley function - lunge - setup ;;;
        ;;; $A84E: Ridley function - lunge - main ;;;
        ;;; $A88D: Ridley function - swoop - setup ;;;
        ;;; $A8A4: Ridley function - swoop - move to position ;;;
        ;;; $A8D4: Ridley function - swoop - descending - aiming down ;;;
        ;;; $A8F8: Ridley function - swoop - descending - aiming left ;;;
        ;;; $A923: Ridley function - swoop - ascending - aiming up ;;;
        ;;; $A947: Ridley function - swoop - ascending - aiming up faster ;;;
        ;;; $A971: Ridley function - real retreat - rising ;;;
        ;;; $A9A0: Ridley function - real retreat - write palettes and spawn walls ;;;
        ;;; $AA11: Ridley function - real retreat - set up getaway cutscene ;;;
        ;;; $AA20: Spawn walls during Ceres Ridley getaway cutscene ;;;
        ;;; $AA4F: RTS ;;;
        ;;; $AA50: Ridley function - real retreat - activated self destruct sequence ;;;
        ;;; $AA54: Set up Ceres Ridley mode 7 ;;;
    ;;; $AAAF..B226: Ceres Ridley getaway cutscene ;;;
        ;;; $AAAF: Handle Ceres Ridley getaway cutscene if active ;;;
        ;;; $AABD: Handle Ceres Ridley getaway cutscene ;;;
        ;;; $AB5F: Set Ceres Ridley mode 7 rotation matrix ;;;
        ;;; $AC0E: 8-bit sine multiplication ;;;
        ;;; $AC1E: 8-bit cosine multiplication ;;;
        ;;; $AC30: 8-bit sine multiplication ;;;
        ;;; $AC58: 16-bit unsigned multiplication ;;;
        ;;; $ACBC: Animate Ceres Ridley mode 7 baby metroid ;;;
        ;;; $AD27: Animate Ceres Ridley mode 7 wings ;;;
        ;;; $AE4D: Ceres Ridley getaway zoom level table ;;;
        ;;; $AF2F: Ceres Ridley getaway Y velocity table ;;;
        ;;; $B00F: Ceres Ridley getaway X velocity table ;;;
        ;;; $B0EF: Set Ceres Ridley palette according to zoom level ;;;
    ;;; $B227: Main AI - enemy $E17F (Ridley) ;;;
    ;;; $B26F: Unused. Grab Samus if grabbable ;;;
    ;;; $B288: Ridley grabbed Samus movement hurt AI lag time ;;;
    ;;; $B28A: Time is frozen AI - enemy $E17F (Ridley) ;;;
    ;;; $B297: Hurt AI - enemy $E17F (Ridley) ;;;
    ;;; $B2F3..BD99: Norfair Ridley ;;;
        ;;; $B2F3: Ridley function - liftoff ;;;
        ;;; $B321: Ridley function - decide action ;;;
        ;;; $B335: Get fight action choices ;;;
        ;;; $B3EC..B42D: Lunge missed ;;;
            ;;; $B3EC: Ridley function - lunge missed - setup ;;;
            ;;; $B3F8: Ridley function - lunge missed - move to position ;;;
        ;;; $B42E: Y = [$B439 + [Ridley acceleration index] * 2] ;;;
        ;;; $B441..B5BD: Swoop ;;;
            ;;; $B441: Ridley action - swoop ;;;
            ;;; $B455: Ridley function - swoop - move to position ;;;
            ;;; $B493: Ridley function - swoop - descending - aiming down ;;;
            ;;; $B4D1: Ridley function - swoop - descending - aiming left ;;;
            ;;; $B516: Ridley function - swoop - ascending - aiming up ;;;
            ;;; $B554: Ridley function - swoop - ascending - aiming up faster ;;;
            ;;; $B594: Ridley function - swoop - ascending - decelerate ;;;
        ;;; $B5BE: Unused ;;;
        ;;; $B5C4..B6A6: Hover ;;;
            ;;; $B5C4: Ridley action - hover ;;;
            ;;; $B5E5: Ridley function - hover - move to wall behind Ridley ;;;
            ;;; $B613: Ridley function - hover - move to wall in front of Ridley ;;;
            ;;; $B641: Ridley hover movement ;;;
            ;;; $B68B: Set up Ridley pogo from hover ;;;
        ;;; $B6A7..B9D4: Pogo ;;;
            ;;; $B6A7: Ridley action / function - pogo - fly to position ;;;
            ;;; $B6DD: Ridley function - pogo - wait at position ;;;
            ;;; $B70E: Ridley function - pogo - descending ;;;
            ;;; $B7B9: Ridley function - pogo - ascending ;;;
            ;;; $B7E7: Check for tail collision with floor ;;;
            ;;; $B84D: Set neutral Ridley tail ;;;
            ;;; $B859: Check if Samus is grabbable ;;;
            ;;; $B865: Check for Samus collision with Ridley feet ;;;
            ;;; $B889: Ridley grabs Samus from pogo ;;;
            ;;; $B8A9: Set Ridley pogo X movement direction ;;;
            ;;; $B90F: Set Ridley pogo speeds ;;;
        ;;; $B9D5: Ridley feet X/Y offsets ;;;
        ;;; $B9E1: Move Samus with Ridley's feet ;;;
        ;;; $BA54: Set grabbed Samus X/Y offset ;;;
        ;;; $BA85: Ridley lunge missed Samus ;;;
        ;;; $BAB7: Ridley action / function - lunge ;;;
        ;;; $BB8F..BC67: Grabbed Samus ;;;
            ;;; $BB8F: Ridley function - grabbed Samus - setup ;;;
            ;;; $BBC4: Ridley function - grabbed Samus - rising to up to 40h px ;;;
            ;;; $BBEB: Ridley lunge target X position ;;;
            ;;; $BBF1: Ridley function - grabbed Samus - rising to room middle ;;;
            ;;; $BC2E: Ridley function - grabbed Samus - release Samus ;;;
        ;;; $BC68: Grab Samus ;;;
        ;;; $BC84: Release Samus ;;;
        ;;; $BCB4: Set Ridley tangibility ;;;
        ;;; $BCF1: Check if Samus is morphed or spin jumping / damage boosting ;;;
        ;;; $BD20: Check if Samus is in pogo zone ;;;
        ;;; $BD2C: Lunge if power bomb active and not holding Samus ;;;
        ;;; $BD4E: Ridley function - dodging power bomb ;;;
    ;;; $BD9A..BE92: Ceres Ridley fake retreat ;;;
        ;;; $BD9A: Ridley function - fake retreat - move to position ;;;
        ;;; $BDBC: Ridley function - fake retreat - rising ;;;
        ;;; $BDF2: Ridley function - fake retreat - drop baby metroid ;;;
        ;;; $BE03: Ridley function - fake retreat - retrieve baby metroid ;;;
        ;;; $BE61: Check for baby metroid collision with rectangle ;;;
    ;;; $BE93..C04D: Baby metroid ;;;
        ;;; $BE93: Execute baby metroid function ;;;
        ;;; $BE9C: Baby metroid function - held by Ridley ;;;
        ;;; $BEB3: Baby metroid function - held by Ridley's feet ;;;
        ;;; $BECA: Baby metroid function - start falling ;;;
        ;;; $BEDC: Baby metroid function - falling ;;;
        ;;; $BF1A: Draw baby metroid ;;;
        ;;; $BF31: Baby metroid instruction list ;;;
        ;;; $BFC9: Baby metroid instruction - go to [[X]] with 50% chance if not moving ;;;
        ;;; $BFDE: X += 2 ;;;
        ;;; $BFE1: Baby metroid instruction - load palette data [[X]] ;;;
        ;;; $BFF2: Baby metroid instruction - go to [[X]] if moving ;;;
        ;;; $BFF8: Baby metroid instruction - go to [[X]] ;;;
        ;;; $BFFD: Baby metroid spritemaps ;;;
    ;;; $C04E..C537: Ceres escape sequence ;;;
        ;;; $C04E: Ridley function - real retreat - activating self destruct sequence ;;;
        ;;; $C062: Self destruct sequence function index 0 - load text colours ;;;
        ;;; $C08E: Self destruct sequence function index 2 - loading escape timer sprite tiles ;;;
        ;;; $C09F: Self destruct sequence function index 4 - loading Ceres escape timer BG1/2 tiles ;;;
        ;;; $C0BB: Self destruct sequence function index 6 - "emergency" text appears ;;;
        ;;; $C0F5: Self destruct sequence function index 8 - Japanese text appears ;;;
        ;;; $C104: Self destruct sequence function index Ah - typing "self destruct sequence" text ;;;
        ;;; $C117: Self destruct sequence function index Ch - start escape sequence ;;;
        ;;; $C136: Draw "emergency" text ;;;
        ;;; $C176: Unused. Red background glow ;;;
        ;;; $C19C: Ceres escape sequence "emergency" text glow ;;;
        ;;; $C23F: Set up Zebes escape typewriter ;;;
        ;;; $C26E: Process escape timer tile transfers ;;;
        ;;; $C2A7: Handle typewriter text (external) ;;;
        ;;; $C2B1: Handle typewriter text ;;;
        ;;; $C383: Draw Japanese "self destruct sequence" text ;;;
        ;;; $C3B8: Japanese "self destruct sequence" text tilemap transfer entries ;;;
        ;;; $C3F4: Japanese "self destruct sequence" text tilemaps ;;;
        ;;; $C450: Typewriter text - Ceres escape timer ;;;
        ;;; $C49C: Typewriter text - Zebes escape timer ;;;
        ;;; $C4CB: Escape timer sprite tile transfer entries ;;;
        ;;; $C4FE: Ceres escape timer BG1/2 tile transfer entries ;;;
    ;;; $C538..C695: Norfair Ridley death sequence ;;;
        ;;; $C538: Ridley function - dying - grabbed Samus ;;;
        ;;; $C53E: Ridley function - death sequence - death roar ;;;
        ;;; $C551: Ridley function - death sequence - move to death spot ;;;
        ;;; $C588: Ridley function - death sequence - lowering acid and release Samus ;;;
        ;;; $C5A8: Ridley function - death sequence - start falling apart ;;;
        ;;; $C5C8: Ridley function - death sequence - falling apart ;;;
        ;;; $C5DA: Ridley function - death sequence - still falling apart ;;;
        ;;; $C601: Move Ridley to death spot ;;;
        ;;; $C623: Spawn small explosion near Ridley ;;;
    ;;; $C696..CAF4: Ridley explosion ;;;
        ;;; $C696: Initialisation AI - enemy $E1BF (Ridley explosion) ;;;
        ;;; $C6FE: Ridley explosion initialisation - index = 0 (tail segment 0) ;;;
        ;;; $C716: Ridley explosion initialisation - index = 2 (tail segment 1) ;;;
        ;;; $C72E: Ridley explosion initialisation - index = 4 (tail segment 2) ;;;
        ;;; $C746: Ridley explosion initialisation - index = 6 (tail segment 3) ;;;
        ;;; $C75E: Ridley explosion initialisation - index = 8 (tail segment 4) ;;;
        ;;; $C776: Ridley explosion initialisation - index = Ah (tail segment 5) ;;;
        ;;; $C78E: Ridley explosion initialisation - index = Ch (tail tip) ;;;
        ;;; $C7DA: Ridley explosion initialisation - index = Eh (wings) ;;;
        ;;; $C80C: Ridley explosion initialisation - index = 10h (legs) ;;;
        ;;; $C83E: Ridley explosion initialisation - index = 12h (mouth) ;;;
        ;;; $C870: Ridley explosion initialisation - index = 14h (torso) ;;;
        ;;; $C8A2: Ridley explosion initialisation - index = 16h (hand) ;;;
        ;;; $C8D4: Main AI - enemy $E1BF (Ridley explosion) ;;;
        ;;; $C913: Handle flickering ;;;
        ;;; $C932: Spawn Ridley explosion enemies ;;;
        ;;; $CA47..CAF4: Instruction lists ;;;
            ;;; $CA47: Instruction list - Ridley explosion - index = 0/2 (tail segment 0/1) ;;;
            ;;; $CA4D: Instruction list - Ridley explosion - index = 4/6 (tail segment 2/3) ;;;
            ;;; $CA53: Instruction list - Ridley explosion - index = 8/Ah (tail segment 4/5) ;;;
            ;;; $CA59: Instruction list - Ridley explosion - index = Eh (wings) - facing left ;;;
            ;;; $CA5F: Instruction list - Ridley explosion - index = Eh (wings) - facing right ;;;
            ;;; $CA65: Instruction list - Ridley explosion - index = 10h (legs) - facing left ;;;
            ;;; $CA6B: Instruction list - Ridley explosion - index = 10h (legs) - facing right ;;;
            ;;; $CA71: Instruction list - Ridley explosion - index = 12h (mouth) - facing left ;;;
            ;;; $CA77: Instruction list - Ridley explosion - index = 12h (mouth) - facing right ;;;
            ;;; $CA7D: Instruction list - Ridley explosion - index = 14h (torso) - facing left ;;;
            ;;; $CA83: Instruction list - Ridley explosion - index = 14h (torso) - facing right ;;;
            ;;; $CA89: Instruction list - Ridley explosion - index = 16h (hand) - facing left ;;;
            ;;; $CA8F: Instruction list - Ridley explosion - index = 16h (hand) - facing right ;;;
            ;;; $CA95: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = -8..7 ;;;
            ;;; $CA9B: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 8..17h ;;;
            ;;; $CAA1: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 18h..27h ;;;
            ;;; $CAA7: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 28h..37h ;;;
            ;;; $CAAD: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 38h..47h ;;;
            ;;; $CAB3: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 48h..57h ;;;
            ;;; $CAB9: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 58h..67h ;;;
            ;;; $CABF: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 68h..77h ;;;
            ;;; $CAC5: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 78h..87h ;;;
            ;;; $CACB: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 88h..97h ;;;
            ;;; $CAD1: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = 98h..A7h ;;;
            ;;; $CAD7: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = A8h..B7h ;;;
            ;;; $CADD: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = B8h..C7h ;;;
            ;;; $CAE3: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = C8h..D7h ;;;
            ;;; $CAE9: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = D8h..E7h ;;;
            ;;; $CAEF: Instruction list - Ridley explosion - index = Ch (tail tip) - angle = E8h..F7h ;;;
    ;;; $CAF5..D452: Ridley tail ;;;
        ;;; $CAF5: Handle Ridley tail ;;;
        ;;; $CB33: Set up Ridley pogo tail ;;;
        ;;; $CB45: Ridley tail function index 3 - pogo - point tail down ;;;
        ;;; $CB4E: Ridley tail function index 6 - pogo - descending - stab ;;;
        ;;; $CB60: Ridley tail function index 7 - unused - pogo descending - stab ;;;
        ;;; $CB72: Ridley pogo tail movement with tail pointed down ;;;
        ;;; $CBC0: Ridley tail function index 1 - neutral (natural tail movement + tail whips) ;;;
        ;;; $CBC7: Ridley pogo tail movement / Ridley tail function index 4 - pogo - normal ;;;
        ;;; $CBCE: Ridley tail function index 5 - pogo - descending - stab setup ;;;
        ;;; $CBD5: Ridley tail function index 8 - unused - neutral with spinny tail whips ;;;
        ;;; $CBDC: Update Ridley tail segment angles ;;;
        ;;; $CBFE: Set Ridley tail angle extrema ;;;
        ;;; $CC1E: Check if all Ridley tail segments are active ;;;
        ;;; $CC39: Handle Ridley tail whip ;;;
        ;;; $CC7D: Configure Ridley tail whip ;;;
        ;;; $CCBD: Unused. Handle Ridley tail whip with extra spinning ;;;
        ;;; $CD0C: Unused. Configure Ridley tail whip with extra spinning ;;;
        ;;; $CD24: Handle normal Ridley pogo tail ;;;
        ;;; $CDAA: Handle Ridley pogo tail stab ;;;
        ;;; $CE65: Set tail angle high bytes to 40h ;;;
        ;;; $CEBA: Calculate Ridley tail segment positions ;;;
        ;;; $CF5A: Update Ridley tail segment distances ;;;
        ;;; $D09F: Update Ridley tail segment angle ;;;
        ;;; $D19D: Set Ridley tail whip target ;;;
        ;;; $D242: Detect (super) missile near Ridley tail ;;;
        ;;; $D2AA: Handle Ridley tail whip sound effect ;;;
        ;;; $D2D6: Initialise Ridley tail RAM ;;;
        ;;; $D36E: Ridley tail data ;;;
        ;;; $D3B4: Set Ridley tail segments variable from list ;;;
        ;;; $D3D4: Unused. Ridley tail segment active flags = 0 ;;;
        ;;; $D3D9: Ridley tail segment active flags = 8000h ;;;
        ;;; $D3DC: Ridley tail segment active flags = [A] ;;;
        ;;; $D3F9: Flip Ridley tail ;;;
        ;;; $D431: Check if all Ridley tail segments are active ;;;
    ;;; $D453: Deal suit-adjusted enemy damage to Samus ;;;
    ;;; $D467: Set Ridley instruction list ;;;
    ;;; $D474..F8: Ridley palette handling ;;;
        ;;; $D474: Norfair Ridley health-based palette handling ;;;
        ;;; $D495: Load Ridley health-based palette ;;;
        ;;; $D4B5: Ceres Ridley health-based palette handling ;;;
        ;;; $D4DA: Ridley hurt flash handling ;;;
    ;;; $D4F9..D97C: Ridley movement ;;;
        ;;; $D4F9: Check for collision with non-air block ;;;
        ;;; $D523: Ridley acceleration ;;;
        ;;; $D526: Ridley death spot acceleration ;;;
        ;;; $D5A9: Ridley X acceleration ;;;
        ;;; $D61F: Ridley inertia table ;;;
        ;;; $D62F: Ceres Ridley acceleration ;;;
        ;;; $D6A6: Ceres Ridley X acceleration ;;;
        ;;; $D712: Ceres Ridley inertia table ;;;
        ;;; $D722: Unused. Simple Ridley acceleration ;;;
        ;;; $D734: Unused. Simple Ridley Y acceleration ;;;
        ;;; $D798: Unused. Simple Ridley X acceleration ;;;
        ;;; $D800: Calculate swoop velocities ;;;
        ;;; $D86B: Move Ridley ;;;
        ;;; $D914: Trigger Ceres Ridley earthquake if moving fast enough ;;;
        ;;; $D955: Turn Ridley around if not facing room middle ;;;
    ;;; $D97D..DE79: Ridley part animations ;;;
        ;;; $D97D: Update Ridley wings animation ;;;
        ;;; $D9A8: Calculate Ridley wings animation timer ;;;
        ;;; $D9FD: Initialise Ridley ribs animation ;;;
        ;;; $DA0C: Handle Ridley ribs animation ;;;
        ;;; $DA71: Ridley ribs animation table ;;;
        ;;; $DA8B: Draw Ridley's feet ;;;
        ;;; $DAD8: Draw Ridley wings ;;;
        ;;; $DB2A: Draw Ridley tail ;;;
        ;;; $DBC2: Add Ridley spritemap to OAM ;;;
        ;;; $DBCB: Y = baby metroid spritemap pointer ;;;
        ;;; $DC13: Add spritemap to OAM ;;;
        ;;; $DC90: Ridley tail spritemaps ;;;
        ;;; $DCBA: Ridley tail tip spritemap pointers ;;;
        ;;; $DCDA: Ridley tail tip spritemaps ;;;
        ;;; $DD4A: Ridley wings spritemaps ;;;
    ;;; $DE7A..E14E: Ridley collision handling ;;;
        ;;; $DE7A: Check if Ridley is on screen ;;;
        ;;; $DEA6: Check for projectile collision with rectangle ;;;
        ;;; $DF08: Unused. Determine reflected projectile direction ;;;
        ;;; $DF29: Check for Samus collision with rectangle ;;;
        ;;; $DF59: Enemy touch - Ridley ;;;
        ;;; $DF60: Unused. Hurt Samus (external) ;;;
        ;;; $DF66: Unused. Hurt Samus ;;;
        ;;; $DF8A: Enemy shot - enemy $E13F/$E17F (Ridley) ;;;
        ;;; $DFB2: Power bomb reaction - enemy $E13F/$E17F (Ridley) ;;;
        ;;; $DFB6: RTL. Ridley reaction ;;;
        ;;; $DFB7: Start Norfair Ridley death sequence ;;;
        ;;; $DFD9: Ridley tail / Samus collision handling ;;;
        ;;; $E01B: Unused. Slow down Ridley based on projectile damage ;;;
        ;;; $E088: Ridley tail / projectile collision handling ;;;
    ;;; $E14F..E4BD: Palettes ;;;
        ;;; $E14F: Palette - enemy $E13F/$E17F (Ridley) ;;;
        ;;; $E16F: Initial additional palettes - Ceres Ridley ;;;
        ;;; $E1AF: Palette - enemy $E1BF (Ridley explosion) ;;;
        ;;; $E1CF: Initial additional palettes - Norfair Ridley ;;;
        ;;; $E20F: Baby metroid animation palettes ;;;
        ;;; $E269: Ridley eye fade-in index table ;;;
        ;;; $E2AA: Ridley eye fade-in colours ;;;
        ;;; $E30A: Ridley body fade-in colours ;;;
        ;;; $E46A: Ridley health-based palettes ;;;
    ;;; $E4BE..E537: Instructions ;;;
        ;;; $E4BE: Instruction - roar ;;;
        ;;; $E4CA: Instruction - clear roaring flag ;;;
        ;;; $E4D2: Instruction - go to [[Y]] if not Norfair and Samus has low health ;;;
        ;;; $E4E9: Instruction - go to [[Y]] ;;;
        ;;; $E4EE: Unused. Instruction - go to [[Y]] if holding Samus, else go to [[Y] + 2] ;;;
        ;;; $E4F8: Unused. Instruction - go to [[Y]] if not holding Samus ;;;
        ;;; $E501: Instruction - Ridley feet distance index = [[Y]] ;;;
        ;;; $E514: Y += 2 ;;;
        ;;; $E517: Instruction - go to [[Y]] if not facing left ;;;
        ;;; $E51F: Instruction - move Ridley ([[Y]], [[Y] + 2]) pixels ;;;
    ;;; $E538..E71B: Instruction lists ;;;
        ;;; $E538: Instruction list - initial ;;;
        ;;; $E548: Instruction list - Ceres Ridley lunge ;;;
        ;;; $E5A0: Unused. Instruction list - lower feet ;;;
        ;;; $E658: Instruction list - retrieve baby metroid ;;;
        ;;; $E690: Instruction list - fight intro roar ;;;
        ;;; $E6C8: Instruction list - death roar ;;;
        ;;; $E6F0: Instruction list - turn to face right ;;;
        ;;; $E706: Instruction list - turn to face left ;;;
    ;;; $E71C: Instruction - flip Ridley left ;;;
    ;;; $E727: Instruction - face Ridley forward ;;;
    ;;; $E72F: Instruction - flip Ridley right ;;;
    ;;; $E73A..E91C: Shooting fireballs ;;;
        ;;; $E73A: Instruction list - shoot fireballs ;;;
        ;;; $E828: Unused. Spawn unused enemy projectiles ;;;
        ;;; $E840: Unused. Spawn unused enemy projectile ;;;
        ;;; $E84D: Instruction - calculate fireball X/Y velocities ;;;
        ;;; $E904: Instruction - spawn Ridley's fireball enemy projectile - with afterburn ;;;
        ;;; $E909: Instruction - spawn Ridley's fireball enemy projectile - without afterburn ;;;
        ;;; $E90C: Spawn Ridley's fireball enemy projectile ;;;
    ;;; $E91D: Instruction list - transition to flying ;;;
    ;;; $E969: Instruction - start liftoff - Ceres Ridley ;;;
    ;;; $E976: Instruction - start liftoff - Norfair Ridley ;;;
    ;;; $E983: Ridley extended spritemaps ;;;
    ;;; $EAE1: Ridley hitboxes ;;;
    ;;; $EC5B: Ridley spritemaps ;;;
;;; $EFB1..F4EB: Steam ;;;
    ;;; $EFB1: Initialisation AI - enemy $E1FF (steam) ;;;
    ;;; $F00D: Main AI - enemy $E1FF (steam) ;;;
    ;;; $F019: Steam function - calculate graphical offset in rotating elevator room ;;;
    ;;; $F03F: Enemy touch - enemy $E1FF (steam) ;;;
    ;;; $F04D: Instruction list - steam - up ;;;
    ;;; $F081: Instruction list - steam - left ;;;
    ;;; $F0B5: Instruction list - steam - down ;;;
    ;;; $F0E9: Instruction list - steam - right ;;;
    ;;; $F11D: Instruction - hide enemy ;;;
    ;;; $F127: Instruction - decrement activation timer and go to [[Y]] if non-zero, otherwise show enemy and go to [[Y] + 2] ;;;
    ;;; $F135: Instruction - show enemy ;;;
    ;;; $F142: Steam extended spritemaps ;;;
    ;;; $F25A: Steam hitboxes ;;;
    ;;; $F374: Steam spritemaps ;;;
;;; $F4EC..FB71: Ceres door ;;;
    ;;; $F4EC: Ceres door palettes ;;;
    ;;; $F52C: Ceres door instruction list pointers ;;;
    ;;; $F53A..F63D: Instruction lists - Ceres door ;;;
        ;;; $F53A: Instruction list - parameter 1 = 3 (Ridley's room facing right) ;;;
        ;;; $F56C: Instruction list - parameter 1 = 0 (normal facing right) ;;;
        ;;; $F578: Instruction list - Ceres door facing right - open ;;;
        ;;; $F598: Instruction list - Ceres door facing right - closed ;;;
        ;;; $F5BE: Instruction list - parameter 1 = 1 (normal facing left) ;;;
        ;;; $F610: Instruction list - parameter 1 = 2 (rotating elevator room pre-explosion door overlay) ;;;
        ;;; $F61A: Instruction list - parameter 1 = 4 (rotating elevator room invisible wall) ;;;
        ;;; $F62A: Instruction list - parameter 1 = 5 (Ridley escape mode 7 left wall) ;;;
        ;;; $F634: Instruction list - parameter 1 = 6 (Ridley escape mode 7 right wall) ;;;
    ;;; $F63E..C4: Instructions ;;;
        ;;; $F63E: Instruction - go to [[Y]] if Samus is not within 30h pixels ;;;
        ;;; $F66A: Instruction - go to [[Y]] if area boss is alive ;;;
        ;;; $F678: Instruction - go to [[Y]] if Ceres Ridley has not escaped ;;;
        ;;; $F67F: Set Ceres elevator room to rotate if Ridley has escaped ;;;
        ;;; $F68B: Instruction - set enemy as intangible ;;;
        ;;; $F695: Instruction - set enemy as tangible ;;;
        ;;; $F69F: Instruction - set drawn by Ridley flag ;;;
        ;;; $F6A6: Instruction - set enemy as invisible ;;;
        ;;; $F6B0: Instruction - set enemy as visible, clear drawn by Ridley flag ;;;
        ;;; $F6B3: Instruction - set enemy as visible ;;;
        ;;; $F6BD: Instruction - queue Ceres door opening sound effect ;;;
    ;;; $F6C5: Initialisation AI - enemy $E23F (Ceres door) ;;;
    ;;; $F739: Load rotating elevator room pre-explosion door overlay tiles if needed ;;;
    ;;; $F765: Main AI - enemy $E23F (Ceres door) ;;;
    ;;; $F76B: Ceres door function - handle earthquake during escape ;;;
    ;;; $F770: Ceres door function - handle earthquake during escape in Ridley's room ;;;
    ;;; $F773: Handle Ceres door earthquake during escape ;;;
    ;;; $F7A5: Ceres door function - Ridley escape mode 7 wall ;;;
    ;;; $F7BD: Ceres door function - rotating elevator room - default ;;;
    ;;; $F7DC: Ceres door function - rotating elevator room - rumbling and explosions ;;;
    ;;; $F850: Ceres door function - rotating elevator room - handle Ceres elevator animations ;;;
    ;;; $F8F1: Animate Ceres elevator platform ;;;
    ;;; $F920: RTL. Enemy touch / enemy shot - enemy $E23F (Ceres door) ;;;
    ;;; $F921: Ceres door spritemaps ;;;
;;; $FB72..FEBB: Zebetites ;;;
    ;;; $FB72: Initialisation AI - enemy $E27F (zebetites) ;;;
    ;;; $FC33: Main AI - enemy $E27F (zebetites) ;;;
    ;;; $FC41: Zebetites function - spawn bottom zebetite if needed ;;;
    ;;; $FC5B: Zebetites function - wait for door transition to finish ;;;
    ;;; $FC67: Zebetites function - active ;;;
    ;;; $FCAA: Mark zebetite destroyed event ;;;
    ;;; $FCCB: Mark/unmark zebetite destroyed counter event ;;;
    ;;; $FCD9: Spawn top zebetite ;;;
    ;;; $FCF1: Spawn bottom zebetite ;;;
    ;;; $FD09: Set zebetite instruction list ;;;
    ;;; $FD5E: Handle zebetites palette animation ;;;
    ;;; $FDA7: Enemy touch - enemy $E27F (zebetites) ;;;
    ;;; $FDAC: Enemy shot - enemy $E27F (zebetites) ;;;
    ;;; $FDCC..FE07: Instruction lists - zebetites ;;;
        ;;; $FDCC: Instruction list - big zebetite - HP >= 800 ;;;
        ;;; $FDD2: Instruction list - big zebetite - HP < 800 ;;;
        ;;; $FDD8: Instruction list - big zebetite - HP < 600 ;;;
        ;;; $FDDE: Instruction list - big zebetite - HP < 400 ;;;
        ;;; $FDE4: Instruction list - big zebetite - HP < 200 ;;;
        ;;; $FDEA: Instruction list - small zebetite pair - HP >= 800 ;;;
        ;;; $FDF0: Instruction list - small zebetite pair - HP < 800 ;;;
        ;;; $FDF6: Instruction list - small zebetite pair - HP < 600 ;;;
        ;;; $FDFC: Instruction list - small zebetite pair - HP < 400 ;;;
        ;;; $FE02: Instruction list - small zebetite pair - HP < 200 ;;;
    ;;; $FE08: Spritemaps - zebetites ;;;
;;; $FEBC: Free space ;;;