;inject a bullet
;A = slot
; BC = YX
.ALIENPOW_Fire
	call ALIENPOW_InjectB
	
	push BC
	
	ld A,(HL)
	inc L
	ld C,(HL)
	inc L
	ld B,(HL)
	
	call ALIENF99	
	;call ALIENF99
	
	LD (HL),B
 	DEC L
 	LD (HL),C
 	DEC L
	
	pop BC
	ret
.ALIENPOW_InjectB
	push BC
	push DE
	
	DEC A
 	AND 127
 	LD E,A
	ADD A
 	ADD E
 	LD D,0
	LD E,A
	LD HL,ALIENFIRE
 	ADD HL,DE
	
	
	jr ALIENPOW3
	

.ALIENPOW	
	LD A,(ALIENBULL)
	or A
	ret z
	;LD L,A
	;LD A,(ALIENACT)
 	;CP L
	;RET Z
 	;INC A
 	;LD (ALIENACT),A
 	PUSH BC:PUSH DE
	LD A,(SPRITE)

 	DEC A
 	AND 127
 	LD E,A
	ADD A
 	ADD E
 	LD D,0
	LD E,A
	LD HL,ALIENFIRE
 	ADD HL,DE
	
	ld A,(HL)	;is slot free ?
	;or A
	and 15
	jr z,ALIENPOW3
	
	pop DE
	pop BC
	ret
 ;
.ALIENPOW3	
	INC L
	INC L
 	INC B
 	INC C
 ;
	LD (HL),B
 	DEC L
 	LD (HL),C
 	DEC L
 ;
.ALIENPOW4	
	LD E,16
	LD A,(SHIPY)
	sub B
	JR Z,ALIENPOW6
	JR C,ALIENPOW5
	cp 2
	jr c,ALIENPOW6
	SET 1,E
 	JR ALIENPOW6
.ALIENPOW5	
	neg
	cp 2
	jr c,ALIENPOW6
	SET 0,E
.ALIENPOW6	
	LD A,(SHIPX)
	sub C
	JR Z,ALIENPOW9
	JR C,ALIENPOW7
	cp 2
	jr c,ALIENPOW9
	SET 3,E
	JR ALIENPOW9
ALIENPOW7	
	neg
	cp 3
	jr c,ALIENPOW9
	SET 2,E
ALIENPOW9	
	LD (HL),E
	SET 7,(IY+0)
	POP DE:POP BC
 	RET
;***************************
;*** ALIEN PROJECTILES ***
;***************************
.ALIENATX	
	LD HL,ALIENFIRE
 	XOR A
.ALIENF00	
	PUSH AF
 	LD A,(HL)
 	and A
	;and 15
 	JR NZ,ALIENF3
ALIENF1	
	INC L
ALIENF2	
	INC L
	INC L
 	POP AF
	INC A
 	CP 28
 	JR NZ,ALIENF00
	RET
 ;
.ALIENF3
;break
	INC L
	LD C,(HL)
 	INC L
 	LD B,(HL)
 	CALL ALIENF99
 	RRCA
	RRCA
	RRCA
	RRCA
	AND 15
	EX AF,AF'
 	LD A,128
	LD (SPRITE),A
 ;
	LD A,B
	CP 20
 	JR NC,ALIENF8
 	LD A,C
	CP 31
 	JR NC,ALIENF8
 	;CALL CONVERT
	;AND A
 	;JR Z,ALIENF30
 	;CP 6
	;JR C,ALIENF98
 	;CP 250
	;JR NC,ALIENF8
 	;CP 38
 	;JR C,ALIENF8
	;PUSH HL
 	;CALL GETSEQ
 	;POP HL
	;JR Z,ALIENF8
;check solid
	call COLL_CheckPosition
	jr nc,ALIENF30
	or A
	jr Z,ALIENF8
	cp #FF
	call z,PLAYER_Die	;if player , kill it !
	jr z,ALIENF8
	cp 32	;all= >128 = players
	jr c,ALIENF30
	jr ALIENF8	;kill it
;
.ALIENF30	
	EX AF,AF'
 	CP 1
	JR NZ,ALIENF3A
	LD A,(FRAME)
	AND 1
 	LD A,1
	JR Z,ALIENF3A
 	DEC L
 	JR ALIENF3B 
ALIENF3A	
	LD (HL),B
 	DEC L
 	LD (HL),C
ALIENF3B	
	PUSH HL
	cp 1	;if default bullet use precompiled sprite
	jr z,ALIENF9_Comp
 	CALL TSPGADD
;ALIENF9	
	CALL SPNS
	POP HL
	JR ALIENF2
	
.ALIENF9_Comp
	ld A,B
	add A ;*2
	add ATTR_Addr_low
	ld L,A
	ld H,ATTR_Addr_High	;HL point on address for Y
	ld A,(HL)
	inc L
	ld H,(HL)
	add C ;do not forget to add X to array address
	ld L,A
	bit 7,(HL)	;check solid
	jr nz,ALIENF9_CompEmpty

	ld (HL),63
	inc H	;bank
	inc H	;low addr
	ld (HL),00
	inc H
	ld (HL),#DE
	inc H
	ld (HL),64	;neutral master

.ALIENF9_CompEmpty
	pop HL
	JR ALIENF2
;
ALIENF8	
	DEC L
	DEC L
 	LD A,(HL)
 	LD (HL),0
 	AND 240
 	CP 16
	;bit 4,A
 	jp NZ,ALIENF1
 	POP AF
	PUSH AF
 	PUSH HL
 	INC A
 	CALL GETSEQ
 	RES 7,(HL)
	;LD A,(ALIENACT)
 	;DEC A
 	;LD (ALIENACT),A
 	POP HL
	jp ALIENF1
;KILL player
.ALIENF98	POP AF
	;JP DIE
	ret	;added
;
.ALIENF99	
	BIT 0,A
 	JR Z,ALIENF4
	DEC B
 ALIENF4	
	BIT 1,A
	JR Z,ALIENF5
	INC B
 ALIENF5	
	BIT 2,A
	JR Z,ALIENF6
	DEC C
 ALIENF6	
	BIT 3,A
	RET Z
 	INC C
 	RET