;;; General ;;; { Torizo corpse Sidehopper corpse Sidehopper corpse, part 2. Used only to load more tiles Zoomer corpse Ripper corpse Skree corpse Enemy ID: $ED3F: Torizo corpse $ED7F: Sidehopper corpse $EDBF: Sidehopper corpse, part 2 $EDFF: Zoomer corpse $EE3F: Ripper corpse $EE7F: Skree corpse Bank: $A9 Enemy projectiles: None Parameter 0: Unused Parameter 1: Index. Non-torizo only. Multiple of 2 Ripper: Range 0..2 Zoomer / skree: Range 0..4 Sidehopper: 0: Initially alive 2: Initially dead Parameter 2: Unused For non-torizo enemies, properties must have process instructions bit set Torizo must be slot 0 in room Initially alive sidehopper must be slot 1 if Shitroid is placed Palette 1 and 7 are loaded by Shitroid's initialisation AI Sidehopper uses palette 1 when alive and palette 7 when dead Zoomer, ripper and skree use palette 7 } ;;; Behaviour ;;; { } ;;; WRAM ;;; { ; Torizo corpse { $0FA8: Function { $D3AD: Wait for Samus collision $D3C8: Pre-rot delay $D3E6: Rotting } $0FAA: X velocity $0FAC: Y velocity $7E:7804: Sand heap Y pixel row to copy $7E:7806: Sand heap formation timer $7E:7808: Pre-rot delay timer } ; Sidehopper corpse { $0FA8: Function { $D8E2: Alive - waiting for activation $D8F1: Hopping $D90F: RTS $D910: Start idling $D91D: Idling $DA08: Being drained $DA64: Dead - wait for Samus collision $DA8F: Pre-rot delay $DABA: Rotting } $0FAA: Pre-rot delay timer $0FB2: Function timer $7E:780C: Hop index $7E:780E: Drained palette timer $7E:7810: Drained palette index. Set to 1 by Shitroid ($A9:F125) $7E:7814: X velocity $7E:7816: Y velocity } ; Zoomer corpse { $0FA8: Function { $DA63: RTS $DA69: Wait for Samus collision $DA94: Pre-rot delay $DAD0: Rotting } $0FAA: Pre-rot delay timer } ; Ripper corpse { $0FA8: Function { $DA63: RTS $DA73: Wait for Samus collision $DA99: Pre-rot delay $DAE6: Rotting } $0FAA: Pre-rot delay timer } ; Skree corpse { $0FA8: Function { $DA63: RTS $DA6E: Wait for Samus collision $DA9E: Pre-rot delay $DAFC: Rotting } $0FAA: Pre-rot delay timer } ; Common { $7E:8824: Corpse rotting rot table pointer $7E:8826: Corpse rotting VRAM transfers pointer $7E:8828: Corpse rotting rot entry copy function $7E:882A: Corpse rotting rot entry move function $7E:882C: Corpse rotting tile data row offsets pointer $7E:882E: Corpse rotting sprite height $7E:8830: Corpse rotting sprite height - 1 $7E:8832: Corpse rotting sprite height - 2 $7E:8834: Corpse rotting inter-tile data offset $7E:8836: Corpse rotting rot entry finished hook } } ;;; 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 | | | | | | | | ; Room $DC65. Torizo corpse room ED3F, 0120,0094, 0000, 2800,0000, 0000,0000 ; Torizo corpse ; Room $DCB1. Shitroid room ED7F, 0228,00A0, 0000, A000,0000, 0000,0000 ; Sidehopper corpse ED7F, 00A0,0040, 0000, A000,0000, 0002,0000 ; Sidehopper corpse EDFF, 00F0,0040, 0000, A000,0000, 0000,0000 ; Zoomer corpse EDFF, 0298,00C8, 0000, A000,0000, 0002,0000 ; Zoomer corpse EDFF, 0108,0036, 0000, A000,0000, 0004,0000 ; Zoomer corpse EE3F, 0320,00A8, 0000, A000,0000, 0000,0000 ; Ripper corpse EE3F, 00C2,00C8, 0000, A000,0000, 0002,0000 ; Ripper corpse EE7F, 0380,0047, 0000, A000,0000, 0000,0000 ; Skree corpse EE7F, 0260,0047, 0000, A000,0000, 0002,0000 ; Skree corpse EE7F, 0180,0047, 0000, A000,0000, 0004,0000 ; Skree corpse ; Unused. $A1:E70E EDFF, 00F0,0040, 0000, A000,0000, 0000,0000 ; Zoomer corpse EDFF, 0298,00C8, 0000, A000,0000, 0002,0000 ; Zoomer corpse EDFF, 0108,0036, 0000, A000,0000, 0004,0000 ; Zoomer corpse EE3F, 0320,00A8, 0000, A000,0000, 0000,0000 ; Ripper corpse EE3F, 00C2,00C8, 0000, A000,0000, 0002,0000 ; Ripper corpse EE7F, 0380,0047, 0000, A000,0000, 0000,0000 ; Skree corpse EE7F, 0260,0047, 0000, A000,0000, 0002,0000 ; Skree corpse EE7F, 0180,0047, 0000, A000,0000, 0004,0000 ; Skree corpse } ;;; Enemy header ;;; { ______________________________________ Torizo corpse | _______________________________ Sidehopper corpse | | ________________________ Sidehopper corpse, part 2 | | | _________________ Zoomer corpse | | | | __________ Ripper corpse | | | | | ___ Skree corpse | | | | | | 1800 0E00 0600 0000 0000 0000 ; 0: Tile data size D6BC F8A6 EBAC F8A6 F8A6 F8A6 ; 2: Palette 03E8 0140 0140 03E8 03E8 03E8 ; 4: Health 0000 0050 0050 0000 0000 0000 ; 6: Damage 0010 0016 0016 000A 000B 000C ; 8: Width 0028 000C 000C 0008 0006 0010 ; Ah: Height A9 A9 A9 A9 A9 A9 ; Ch: Bank 00 00 00 00 00 00 ; Dh: Hurt AI time 0000 0000 0000 0000 0000 0000 ; Eh: Cry 0000 0000 0000 0000 0000 0000 ; 10h: Boss ID D308 D7B6 D7B6 D849 D876 D89F ; 12h: Initialisation AI 0001 0001 0001 0001 0001 0001 ; 14h: Number of parts D368 D8DB D8DB D8DB D8DB D8DB ; 18h: Main AI 800F 800F 800F 800F 800F 800F ; 1Ah: Grapple AI 804C D8DB 804C 804C 804C 804C ; 1Ch: Hurt AI 8041 8041 8041 8041 8041 8041 ; 1Eh: Frozen AI 0000 0000 0000 0000 0000 0000 ; 20h: Time is frozen AI 0000 0000 0000 0000 0000 0000 ; 22h: Death animation D42A D8CC DD1D DCED DCFD DD0D ; 28h: Power bomb reaction 0000 0000 0000 0000 0000 0000 ; 2Ah: Sidehopper variant index D433 DD44 DD1D DCF8 DD08 DD18 ; 30h: Enemy touch D433 DD1D DD1D DCF8 DD08 DD18 ; 32h: Enemy shot B7A800 B7C000 AEAA00 B7C000 B7C000 B7C000 ; 36h: Tile data 05 05 05 05 05 05 ; 39h: Layer F4A0 0000 0000 0000 0000 0000 ; 3Ah: Drop chances ($B4) F12E F12E F12E F12E F12E F12E ; 3Ch: Vulnerabilities ($B4) 0000 0000 0000 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 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 00 ; Power bomb 00 ; Speed booster 00 ; Shinespark 00 ; Screw attack 00 ; Charged beam 00 ; Pseudo screw attack 00 ; Unused } ;;; Enemy drop chances ;;; { Non-torizo corpse: Nothing Torizo corpse: 00 ; Small health 00 ; Big health 00 ; Missiles FF ; 100.0% Nothing 00 ; Super missiles 00 ; Power bombs }