;;; General ;;; { Bang. Unused enemy. Absorbs shots and eventually fires back, can move towards Samus Enemy ID: $DB3F Bank: $A3 Enemy projectiles: None Parameter 0: Movement enable flag Parameter 1: Function pointer $BB2B: Electricity $BB4A: Shell $BB66: Core Parameter 2 low: Max speed table index. Range 0..7. Max speed = 2FFh + v * 100h. Unit 0.80h px/frame Parameter 2 high: Acceleration interval timer index ; _____ Acceleration interval timer ; | _ Deceleration interval timer ; | | 0: 3, 1 1: 4, 1 2: 5, 2 3: 6, 2 4: 7, 2 5: 8, 3 6: 9, 3 7: Ah, 4 8: Bh, 4 9: Ch, 5 Ah: Dh, 5 Bh: Eh, 6 Ch: Fh, 6 Properties must have process instructions bit set Electricity, core and shell enemies must be placed together in that order } ;;; Behaviour ;;; { } ;;; WRAM ;;; { $0FAA: Idle palette index $0FB0: Damage $0FB2: Movement function { $BCA5: Movement delay $BCC1: RTS. No movement $BCC5: Target Samus $BD1C: Accelerating $BD2C: Decelerating } $7E:7800: Movement delay timer $7E:7802: Angle. Unit pi/80h radians. 0 = right, positive = clockwise $7E:7804: Angle to Samus $7E:780E: Moving left flag $7E:7810: Moving up flag $7E:7812: Acceleration. Unit 0.80h px/frame² $7E:7814: Speed. Unit 0.80h px/frame $7E:7816: Max speed. Unit 0.80h px/frame $7E:7818: Acceleration interval timer $7E:781A: Acceleration interval timer reset value $7E:781C: Deceleration interval timer reset value $7E:8000: New instruction list index { 0: Growth level 0 - idling 1: Growth level 0 - growing 2: Growth level 1 - idling 3: Growth level 1 - growing 4: Growth level 2 - idling 5: Growth level 2 - growing 6: Growth level 3 - idling 7: Growth level 3 - growing 8: Growth level 4 - idling 9: Growth level 4 - growing } $7E:8002: Instruction list index { 0: Growth level 0 - idling 1: Growth level 0 - growing 2: Growth level 1 - idling 3: Growth level 1 - growing 4: Growth level 2 - idling 5: Growth level 2 - growing 6: Growth level 3 - idling 7: Growth level 3 - growing 8: Growth level 4 - idling 9: Growth level 4 - growing } $7E:8004: Finished growing flag } ;;; Enemy population ;;; { ________________________________________ Enemy ID | __________________________________ X position | | _____________________________ Y position | | | _______________________ Initialisation parameter | | | | _________________ Properties. 2000h = process instructions, 800h = process whilst off-screen | | | | | ____________ Extra properties | | | | | | ______ Parameter 1 | | | | | | | _ Parameter 2 | | | | | | | | ; Debug DB3F, 0100,0100, 0000, 2800,0000, BB2B,0000 DB3F, 0100,0100, 0000, 2800,0000, BB66,0101 DB3F, 0100,0100, 0000, 2800,0000, BB4A,0000 } ;;; Enemy header ;;; { 1000 ; 0: Tile data size B702 ; 2: Palette 000A ; 4: Health 0004 ; 6: Damage 0010 ; 8: Width 0010 ; Ah: Height A3 ; Ch: Bank 00 ; Dh: Hurt AI time 0056 ; Eh: Cry 0000 ; 10h: Boss ID BAB3 ; 12h: Initialisation AI 0003 ; 14h: Number of parts BB25 ; 18h: Main AI 800F ; 1Ah: Grapple AI 804C ; 1Ch: Hurt AI 8041 ; 1Eh: Frozen AI 0000 ; 20h: Time is frozen AI 0004 ; 22h: Death animation 0000 ; 28h: Power bomb reaction 0000 ; 2Ah: Sidehopper variant index 8023 ; 30h: Enemy touch BEFD ; 32h: Enemy shot AF9800 ; 36h: Tile data 05 ; 39h: Layer F380 ; 3Ah: Drop chances ($B4) F010 ; 3Ch: Vulnerabilities ($B4) DDA5 ; 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 02 ; Power 02 ; Wave 02 ; Ice 02 ; Ice + wave 02 ; Spazer 02 ; Spazer + wave 02 ; Spazer + ice 02 ; Spazer + ice + wave 02 ; Plasma 02 ; Plasma + wave 02 ; Plasma + ice 02 ; Plasma + ice + wave 00 ; Missile 00 ; Super missile 00 ; Bomb 00 ; Power bomb 00 ; Speed booster 00 ; Shinespark 00 ; Screw attack 02 ; Charged beam 00 ; Pseudo screw attack 00 ; Unused } ;;; Enemy drop chances ;;; { 2D ; 17.6% Small health 50 ; 31.4% Big health 50 ; 31.4% Missiles 1E ; 11.8% Nothing 0A ; 3.9% Super missiles 0A ; 3.9% Power bombs }