;;; $F180: Shitroid function - stare down Samus ;;;
{
;; Parameters:
;;     X: 0. Enemy index

; Shitroid moves towards Samus' X position and usually Y position 50h
; With a 0.78125% chance, Shitroid will move towards Samus' Y position instead for 20h frames
; 0.78125% chance per frame ~= 37.5% chance per second
; Shitroid will latch onto Samus when one of:
;     their X positions have been close for a while
;     they touch and Samus wasn't spin jumping (see enemy touch)
;     Samus X position < 200h
$A9:F180 BD 7A 0F LDA $0F7A,x[$7E:0F7A] ;\
$A9:F183 38 SEC ;|
$A9:F184 ED F6 0A SBC $0AF6 [$7E:0AF6] ;|
$A9:F187 10 04 BPL $04 [$F18D] ;|
$A9:F189 49 FF FF EOR #$FFFF ;} If |[enemy X position] - [Samus X position]| < 8:
$A9:F18C 1A INC A ;|
;|
$A9:F18D C9 08 00 CMP #$0008 ;|
$A9:F190 B0 09 BCS $09 [$F19B] ;/
$A9:F192 BF 04 78 7E LDA $7E7804,x ;\
$A9:F196 69 02 00 ADC #$0002 ;} Enemy proximity counter += 2
$A9:F199 80 0F BRA $0F [$F1AA]
$A9:F19B BF 04 78 7E LDA $7E7804,x[$7E:7804];\ Else (|[enemy X position] - [Samus X position]| >= 8):
$A9:F19F F0 09 BEQ $09 [$F1AA] ;|
$A9:F1A1 38 SEC ;|
$A9:F1A2 E9 01 00 SBC #$0001 ;} Enemy proximity counter = max(0, [enemy proximity counter] - 1)
$A9:F1A5 10 03 BPL $03 [$F1AA] ;|
$A9:F1A7 A9 00 00 LDA #$0000 ;/
$A9:F1AA 9F 04 78 7E STA $7E7804,x[$7E:7804]
$A9:F1AE C9 00 01 CMP #$0100 ;\
$A9:F1B1 B0 3D BCS $3D [$F1F0] ;} If [enemy proximity counter] >= 100h: go to BRANCH_DONE
$A9:F1B3 AD F6 0A LDA $0AF6 [$7E:0AF6] ;\
$A9:F1B6 C9 00 02 CMP #$0200 ;} If [Samus X position] < 200h: go to BRANCH_DONE
$A9:F1B9 30 35 BMI $35 [$F1F0] ;/
$A9:F1BB BF 02 78 7E LDA $7E7802,x[$7E:7802];\
$A9:F1BF F0 0A BEQ $0A [$F1CB] ;} If [enemy aggro timer] != 0:
$A9:F1C1 3A DEC A ;\
$A9:F1C2 9F 02 78 7E STA $7E7802,x ;} Decrement enemy aggro timer
$A9:F1C6 AC FA 0A LDY $0AFA [$7E:0AFA] ; Y = [Samus Y position]
$A9:F1C9 80 15 BRA $15 [$F1E0]
; Else ([enemy aggro timer] = 0):
$A9:F1CB A0 50 00 LDY #$0050 ; Y = 50h
$A9:F1CE AD E5 05 LDA $05E5 [$7E:05E5] ;\
$A9:F1D1 29 FF 0F AND #$0FFF ;|
$A9:F1D4 C9 E0 0F CMP #$0FE0 ;} If [random number] & FFFh >= FE0h:
$A9:F1D7 90 07 BCC $07 [$F1E0] ;/
$A9:F1D9 A9 20 00 LDA #$0020 ;\
$A9:F1DC 9F 02 78 7E STA $7E7802,x ;} Enemy aggro timer = 20h
$A9:F1E0 84 14 STY $14 [$7E:0014] ; $14 = [Y]
$A9:F1E2 AD F6 0A LDA $0AF6 [$7E:0AF6] ;\
$A9:F1E5 85 12 STA $12 [$7E:0012] ;} $12 = [Samus X position]
$A9:F1E7 AE 54 0E LDX $0E54 [$7E:0E54]
$A9:F1EA A0 0A 00 LDY #$000A ; Y = Ah (fast acceleration)
$A9:F1ED 4C 51 F4 JMP $F451 [$A9:F451] ; Go to gradually accelerate towards point ([$12], [$14])
; BRANCH_DONE
$A9:F1F0 AE 54 0E LDX $0E54 [$7E:0E54]
$A9:F1F3 A9 FA F1 LDA #$F1FA ;\
$A9:F1F6 9D A8 0F STA $0FA8,x[$7E:0FA8] ;} Enemy function = $F1FA
$A9:F1F9 60 RTS
}