; i would love it if we could standardize on "pogo", "hover", "swoop", and "lunge" for the main AI paths ;;; CGRAM ;;; { BG palette 7: Room background. Norfair only Sprite palette 2: Sprite palette 3: Sprite palette 7: Ridley } ;;; WRAM ;;; { Slot ID Enemy Enemy RAM Ceres: 0 $E13F Ceres Ridley $0F78..0FB7 Norfair: 0 $E17F Ridley $0F78..0FB7 1..Ch $E1BF Ridley explosion $0FB8..12B7 $0FA8: Function $0FAA: X velocity. Unit 1/100h px/frame $0FAC: Y velocity. Unit 1/100h px/frame $0FAE: $0FB0: $0FB2: Life timer for Ridley explosion $0FB4: Unused. Fireball angle parameter for unused enemy projectile $9634 in $E828 $10A8: Flag for Ridley's room shaking in $8F:E950 $7E:2000: $7E:2002: $7E:2004: Tail fling flag $7E:200A: Tail spin counter $7E:200C: Pogo downwards Y acceleration $7E:200E: Pogo upwards Y acceleration $7E:2010: $7E:2012: Tail extension speed. Unit 1/100h px/frame $7E:2014: Tail angle delta $7E:2016: Tail minimum clockwise angle $7E:2018: Tail maximum anticlockwise angle $7E:201A: $7E:201C: $7E:201E: Tail ideal inter-segment angle. Target value for tail segment stagger angle $7E:2020..AB: Tail segments. 14h byte slots. 7 tail segments, 0 = base, 6 = tip. "Previous segment" of segment 0 is Ridley { $7E:2020: Active flag. 8000h = active $7E:2022: Stagger angle. FFFFh = movement enabled. Accumulates angle delta since this segment was activated until ideal inter-segment angle is reached. Used to stagger segment rotation $7E:2024: Movement direction. 0 = anticlockwise, 8000h = clockwise $7E:2026: Distance from previous segment $7E:2028: Target distance. Not used for segment 0 $7E:202A: Angle from previous segment $7E:202C: X position $7E:202E: Y position $7E:2030: X offset from previous segment $7E:2032: Y offset from previous segment } $7E:7832: Fireball X velocity. Unit 1/100h px/frame $7E:7834: Fireball Y velocity. Unit 1/100h px/frame } ;;; Execution flow ;;; { } ;;; Enemy headers ;;; { _________________ Ceres Ridley | __________ Ridley | | ___ Ridley explosion | | | 2000 2000 8400 ; 0: Tile data size E14F E14F E1AF ; 2: Palette 7FFF 4650 4650 ; 4: Health 0005 00A0 00A0 ; 6: Damage 0008 0008 0008 ; 8: Width 0008 0008 0008 ; Ah: Height A6 A6 A6 ; Ch: Bank 08 08 00 ; Dh: Hurt AI time 0000 0000 0000 ; Eh: Cry 0001 0005 0000 ; 10h: Boss ID A0F5 A0F5 C696 ; 12h: Initialisation AI 0001 0001 0001 ; 14h: Number of parts A288 B227 C8D4 ; 18h: Main AI 800F 800F 800F ; 1Ah: Grapple AI A2D3 B297 804C ; 1Ch: Hurt AI 8041 8041 804C ; 1Eh: Frozen AI 0000 B28A 0000 ; 20h: Time is frozen AI 0000 0000 0000 ; 22h: Death animation DFB2 DFB2 804C ; 28h: Power bomb reaction 0000 0000 0000 ; 2Ah: Sidehopper variant index 8023 8023 804C ; 30h: Enemy touch DF8A DF8A 804C ; 32h: Enemy shot B09400 B09400 B0B400 ; 36h: Tile data 05 02 05 ; 39h: Layer F44C F44C 0000 ; 3Ah: Drop chances ($B4) F1B2 F1B2 EEC6 ; 3Ch: Vulnerabilities ($B4) 0000 0000 0000 ; 3Eh: Enemy name ($B4) } ;;; Enemy vulnerabilities ;;; { ; Vulnerability format: ; v = fddddddd ; If v = FFh: ; Freeze, no damage ; Else: ; d: Damage multiplier * 2 ; f: Does not freeze Ridley explosion: indestructible (Ceres) Ridley: 80 ; Power 80 ; Wave 80 ; Ice 80 ; Ice + wave 80 ; Spazer 80 ; Spazer + wave 80 ; Spazer + ice 80 ; Spazer + ice + wave 80 ; Plasma 80 ; Plasma + wave 80 ; Plasma + ice 80 ; Plasma + ice + wave 82 ; Missile 84 ; Super missile 80 ; Bomb 82 ; Power bomb 80 ; Speed booster 80 ; Shinespark 80 ; Screw attack 82 ; Charged beam 80 ; Pseudo screw attack 80 ; Unused } ;;; Enemy drop chances ;;; { 32 ; 19.6% Small health 32 ; 19.6% Big health 32 ; 19.6% Missiles 00 ; Nothing 32 ; 19.6% Super missiles 37 ; 21.6% Power bombs } ;;; Enemy population ;;; { ________________________________________ Enemy ID | __________________________________ X position | | _____________________________ Y position | | | _______________________ Initialisation parameter | | | | _________________ Properties. 2000h = process instructions, 800h = process whilst off-screen, 400h = intangible | | | | | ____________ Extra properties | | | | | | ______ Parameter 1 | | | | | | | _ Parameter 2 | | | | | | | | ; Room $B32E. Ridley E17F, 0030,FFF0, 0000, 2800,0000, 0000,0000 ; Ridley ; Room $E0B5, state $E0C7. Ceres Ridley - default E13F, 00BA,00AB, 0000, 2800,0000, 0000,0000 ; Ceres Ridley ; $A6:C932: Spawn Ridley explosion enemies E1BF, 0000,0000, 0000, 2C00,0000, 0000,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0002,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0004,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0006,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0008,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 000A,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 000C,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 000E,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0010,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0012,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0014,0000 ; Ridley explosion E1BF, 0000,0000, 0000, 2C00,0000, 0016,0000 ; Ridley explosion }