;;; General ;;; { Growing shutter. 10h px shutter that grows to 40h px Shootable shutter. Moves up and down, supports being triggered by shot Horizontal shutter. Same as shootable shutter, but moves left and right Destroyable shutter. Same as shootable shutter, but can be destroyed by beam Up/down mover platform. Same as shootable shutter, but shorter and looks like a platform Enemy ID: $D4FF: Growing shutter $D53F: Shootable shutter $D57F: Horizontal shutter $D5BF: Destroyable shutter $D5FF: Up/down mover platform Bank: $A2 Enemy projectiles: None ; Growing shutter Extra properties: Direction 0: Downwards 1: Upwards Parameter 0: Trigger mode 0: Timer 1: X proximity Parameter 1: Trigger parameter. Unit frames for timer, unit px for X proximity Parameter 2: Y speed factor. Range 0..17h. Y speed = 0.1000h px/frame + v * 0.1000h px/frame ; Shootable shutter / destroyable shutter / up/down mover platform Extra properties low: Moved up rest time. Unit 10h frames Extra properties high: Moved down rest time. Unit 10h frames Parameter 0 low: Speed table index. Range 0..40h. Speed = v * 0.1000h px/frame Parameter 0 high: Primary direction 0: Upwards 1: Downwards Parameter 1 low: Trigger mode 0: Timer 1: Proximity 2: Immediate 3: Once shootable 4: Always shootable Parameter 1 high: Y distance. Unit px Parameter 2: Trigger parameter. Unit frames for timer, unit px for X proximity ; Horizontal shutter Extra properties low: Moved left rest time. Unit 10h frames Extra properties high: Moved right rest time. Unit 10h frames Parameter 0 low: Speed table index. Range 0..40h. Speed = v * 0.1000h px/frame Parameter 0 high: Primary direction 0: Leftwards 1: Rightwards Parameter 1 low: Trigger mode 0: Timer 1: Proximity 2: Immediate 3: Once shootable 4: Always shootable Parameter 1 high: X distance. Unit px Parameter 2: Trigger parameter. Unit frames for timer, unit px for Y proximity Properties must have process instructions bit set } ;;; Behaviour ;;; { } ;;; WRAM ;;; { ; Growing shutter { $0FA8: Function { $EABD: Initial - upwards - wait for timer $EAD1: Initial - upwards - wait for Samus to get near $EAE7: Initial - downwards - wait for Samus to get near $EAFD: Initial - downwards - wait for timer $EB11: Closing - downwards $EC13: Closing - upwards } $0FAA: Growth level 0 Y position $0FAC: Growth level 1 Y position $0FAE: Growth level 2 Y position $0FB0: Growth level 3 Y position $0FB2: Growth level $7E:7800: Y speed $7E:7802: Y subspeed $7E:8800: Previous Y position } ; Shootable shutter / destroyable shutter / up/down mover platform { $0FA8: Function { $EF09: Initial $EF28: Wait for Samus to get near $EF68: Moving up $EFD4: Moving down $F040: Stopped moving up $F072: Stopped moving down $F099: Nothing } $0FAA: Function timer $0FAC: Down subvelocity $0FAE: Down velocity $0FB0: Up subvelocity $0FB2: Up velocity $7E:7800: Y speed table index $7E:7802: Primary direction { 0: Upwards 1: Downwards } $7E:7804: Moved up rest time parameter $7E:7806: Moved down rest time parameter $7E:7808: Trigger mode { 0: Timer 1: Proximity 2: Immediate 3: Once shootable 4: Always shootable } $7E:780A: Y distance $7E:780C: X proximity / wait time $7E:780E: Initial function index { 0: Timer 2: Proximity 4: Immediate 6: Once shootable 8: Always shootable } $7E:7810: Moved up rest time $7E:7812: Moved down rest time $7E:7814: Moving Samus flag $7E:7818: Shot activated flag $7E:781C: Previous Y position $7E:781E: Minimum Y position $7E:7820: Maximum Y position $7E:8000: Reaction direction { 0: Upwards 1: Downwards } } ; Horizontal shutter { $0FA8: Function { $F243: Wait for Samus to get near $F272: Moving left $F2E4: Moving right $F38C: Stopped moving left $F3B0: Stopped moving right $F3D4: Nothing } $0FAA: Function timer $0FAC: Right subvelocity $0FAE: Right velocity $0FB0: Left subvelocity $0FB2: Left velocity $7E:7800: Y speed table index $7E:7802: Primary direction { 0: Leftwards 1: Rightwards } $7E:7804: Moved left rest time parameter $7E:7806: Moved right rest time parameter $7E:7808: Trigger mode { 0: Timer 1: Proximity 2: Immediate 3: Once shootable 4: Always shootable } $7E:780A: X distance $7E:780C: X proximity / wait time $7E:780E: Initial function index { 0: Timer 2: Proximity 4: Immediate 6: Once shootable 8: Always shootable } $7E:7810: Moved left rest time $7E:7812: Moved right rest time $7E:7818: Shot activated flag $7E:781A: Previous X position $7E:7822: Minimum X position $7E:7824: Maximum X position $7E:7826: Moving Samus flag $7E:8000: Reaction direction { 0: Leftwards 1: Rightwards } } } ;;; Enemy population ;;; { ________________________________________ Enemy ID | __________________________________ X position | | _____________________________ Y position | | | _______________________ Initialisation parameter | | | | _________________ Properties. 8000h = solid enemy, 2000h = process instructions, 800h = process whilst off-screen | | | | | ____________ Extra properties | | | | | | ______ Parameter 1 | | | | | | | _ Parameter 2 | | | | | | | | ; Debug D4FF, 0300,0088, 0000, A800,0000, 004C,0008 ; Growing shutter D53F, 0100,0100, 0020, A800,0A0A, 2003,0000 ; Shootable shutter ; Room $9E11. Brinstar super-sidehopper power bomb room D53F, 0038,0190, 0008, A800,FFFF, 6004,0000 ; Shootable shutter D53F, 0198,01F0, 0008, A800,FFFF, 4004,0000 ; Shootable shutter ; Room $A130. Brinstar wave-gate sidehopper room D53F, 0158,01E0, 0008, A800,00FF, 4003,0000 ; Shootable shutter D53F, 0158,01E0, 0008, A800,00FF, 8003,0000 ; Shootable shutter D53F, 0158,01E0, 0008, A800,00FF, C003,0000 ; Shootable shutter D53F, 0158,01E0, 0008, A800,00FF, F003,0000 ; Shootable shutter D53F, 0148,01E0, 0000, A800,0000, 0000,0000 ; Shootable shutter D53F, 0168,01E0, 0000, A800,0000, 0000,0000 ; Shootable shutter ; Room $9BC8. Early supers room D4FF, 0198,0128, 0001, A800,0000, 0090,0010 ; Growing shutter D4FF, 0228,0128, 0001, A800,0000, 0090,0010 ; Growing shutter D4FF, 0288,0128, 0001, A800,0000, 0090,0010 ; Growing shutter ; Room $A2CE. X-ray room D53F, 0168,00A0, 0008, A800,FFFF, 4004,0000 ; Shootable shutter D53F, 00B8,00E0, 0008, A800,FFFF, 4004,0000 ; Shootable shutter ; Room $A815. Ice beam mockball hall D4FF, 0408,0258, 0001, A800,0000, 00F0,000D ; Growing shutter D4FF, 0608,0258, 0001, A800,0000, 0068,0010 ; Growing shutter ; Room $ADAD. Pre wave beam room D5FF, 0088,00A8, 0108, A800,0404, 4001,0020 ; Up/down mover platform D5FF, 00D0,00E8, 0008, A800,0808, 3001,0030 ; Up/down mover platform D5FF, 0110,00A8, 0108, A800,0202, 6001,0030 ; Up/down mover platform D5FF, 0178,00A8, 0108, A800,0303, 5001,0030 ; Up/down mover platform ; Room $AC83. Pre Bubble Norfair reserve tank room D53F, 0128,0100, 0008, A800,FFFF, 4003,0000 ; Shootable shutter D53F, 0128,0100, 0008, A800,FFFF, 8003,0000 ; Shootable shutter ; Room $B5D5. Lower Norfair spike platform room D53F, 0528,00E0, 0008, A800,00FF, 2003,0000 ; Shootable shutter ; Room $AE07. Norfair sinking tripper hall D53F, 0200,0008, 0110, A800,0303, 4002,0030 ; Shootable shutter ; Room $B656. Lower Norfair north kihunter shaft D53F, 02E8,025A, 0108, A800,FF00, 4003,0000 ; Shootable shutter D53F, 0388,023A, 0108, A800,FF00, 4003,0000 ; Shootable shutter ; Room $DE4D. Escape room 1 D5BF, 01B8,0040, 0108, A800,FF00, 2000,0010 ; Destroyable shutter D5BF, 01B8,00C0, 0008, A800,00FF, 2000,0010 ; Destroyable shutter D5BF, 0168,0040, 0108, A800,FF00, 2000,0010 ; Destroyable shutter D5BF, 0168,00C0, 0008, A800,00FF, 2000,0010 ; Destroyable shutter D5BF, 0118,0040, 0108, A800,FF00, 2000,0018 ; Destroyable shutter D5BF, 0118,00C0, 0008, A800,00FF, 2000,0018 ; Destroyable shutter D5BF, 00C8,0040, 0108, A800,FF00, 2000,0020 ; Destroyable shutter D5BF, 00C8,00C0, 0008, A800,00FF, 2000,0020 ; Destroyable shutter } ;;; Enemy header ;;; { _______________________________ Growing shutter | ________________________ Shootable shutter | | _________________ Horizontal shutter | | | __________ Destroyable shutter | | | | ___ Up/down mover platform | | | | | 0400 0400 0400 0400 0400 ; 0: Tile data size E978 E978 E978 E978 EDC7 ; 2: Palette 0014 0014 0014 0014 0014 ; 4: Health 0028 0028 0028 0028 0028 ; 6: Damage 0008 0008 0020 0008 0010 ; 8: Width 0008 0020 0008 0020 0008 ; Ah: Height A2 A2 A2 A2 A2 ; Ch: Bank 00 00 00 00 00 ; Dh: Hurt AI time 0000 0000 0000 0000 0000 ; Eh: Cry 0000 0000 0000 0000 0000 ; 10h: Boss ID E9DA EE12 F111 EE12 EE05 ; 12h: Initialisation AI 0001 0001 0001 0001 0001 ; 14h: Number of parts EAB6 EED1 F1DE EED1 EED1 ; 18h: Main AI 800F 800F 800F 800F 800F ; 1Ah: Grapple AI 804C 804C 804C 804C 804C ; 1Ch: Hurt AI 8041 8041 8041 8041 8041 ; 1Eh: Frozen AI 0000 0000 0000 0000 0000 ; 20h: Time is frozen AI 0000 0000 0000 0000 0000 ; 22h: Death animation 804C F0B6 F41A F0B6 F0B6 ; 28h: Power bomb reaction 0000 0000 0000 0000 0000 ; 2Ah: Sidehopper variant index 804C F09D F3D8 F09D F09D ; 30h: Enemy touch 802D F0A2 F40E F0AA F0A2 ; 32h: Enemy shot ACBA00 ACBA00 ACBA00 ACBA00 B18000 ; 36h: Tile data 05 05 05 05 05 ; 39h: Layer F4A0 F4A0 F4A0 F4A0 F4A0 ; 3Ah: Drop chances ($B4) EF08 EF08 EF08 EFB8 EF08 ; 3Ch: Vulnerabilities ($B4) E0FB E109 E109 E109 E109 ; 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 ; Growing shutter / shootable shutter / horizontal shutter / up/down mover platform 00 ; Power 00 ; Wave 00 ; Ice 00 ; Ice + wave 00 ; Spazer 00 ; Spazer + wave 00 ; Spazer + ice 00 ; Spazer + ice + wave 00 ; Plasma 00 ; Plasma + wave 00 ; Plasma + ice 00 ; Plasma + ice + wave 00 ; Missile 00 ; Super missile 00 ; Bomb 82 ; Power bomb 00 ; Speed booster 00 ; Shinespark 00 ; Screw attack 00 ; Charged beam 00 ; Pseudo screw attack 00 ; Unused ; Destroyable shutter 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 82 ; Plasma + ice 82 ; 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 ;;; { 00 ; Small health 00 ; Big health 00 ; Missiles FF ; 100.0% Nothing 00 ; Super missiles 00 ; Power bombs }