Every 64 frames, select a random turret (with 25% chance of not selecting one), then if that turret is not dead, spawn a projectile from it. Basically it does a 0-3 RNG number and indexes some memory for "dead turrets". But since there's only 3 turrets and not 4, one memory address is just set to "dead" when you enter the room and thus will always fail. (And you'd have to wait another 64 frames for the next chance of a turret shooting). The turret logic is not run while Draygon is shooting out mucus, nor right after she's done shooting it out. But if you get caught in the mucus or wait for the next phase, it will start shooting again. Random code: ; This is probably the turrets shooting { $A5:87AA AD B6 05 LDA $05B6 [$7E:05B6] ; Frame counter $A5:87AD 29 3F 00 AND #$003F $A5:87B0 D0 29 BNE $29 [$87DB] ; Every 0x40 frames, this is run { $A5:87B2 22 11 81 80 JSL $808111[$80:8111] $A5:87B6 29 03 00 AND #$0003 $A5:87B9 18 CLC $A5:87BA 69 02 00 ADC #$0002 $A5:87BD 0A ASL A $A5:87BE AA TAX $A5:87BF 0A ASL A $A5:87C0 A8 TAY ; X is now rand(2-5) * 2 [4-10] ; Y is now rand(2-5) * 4 [8-20] $A5:87C1 BF 00 88 7E LDA $7E8800,x[$7E:8808] $A5:87C5 D0 14 BNE $14 [$87DB] $A5:87C7 B9 DC 87 LDA $87DC,y[$A5:87EC] $A5:87CA 85 12 STA $12 [$7E:0012] $A5:87CC B9 DE 87 LDA $87DE,y[$A5:87EE] $A5:87CF 85 14 STA $14 [$7E:0014] $A5:87D1 A0 5E 8E LDY #$8E5E $A5:87D4 A9 03 00 LDA #$0003 $A5:87D7 22 27 80 86 JSL $868027[$86:8027] ; Spawn enemy specific projectiles } $A5:87DB 60 RTS }