	opt	c-,l+
	section	ben,code

	xdef	ben,sen,kflg,scalc,pogodak,death

	xref	prscore,turn,edraw0,pauza,killno,basno
	xref	bullets,bulpos,oldx,shipy,edraw1,double
	xref	exist,tsm,spencr1,codow,entyp,enx,eny,shipx
	xref	ostano,fxtsno,eflg,score,time3,newbul

maxbul:	equ	6
buloff:	equ	80
bulloc:	equ	80512
bul5:	equ	7
bul6:	equ	4

EXPLO.14:	EQU	104448
explo.15:	equ	104704
explo.16:	equ	104960
explo.17:	equ	105216

; BEN - SHIP BULLET TO ENEMY CHECKIN' !!!

BEN:	move.b	bullets,pogodak
	BEQ	BENZ
	CLR.L	D7

BEN1:	LEA	EXIST,A1
	cmpi.w	#1,0(A1,D7.w)
	Bne	BEN3

	LEA	TSM,A2
	tst.W	0(A2,D7.w)
	BEQ	BEN3

	LEA	SPENCR1,A2
	tst.W	0(A2,D7.w)
	BEQ	BEN3

	LEA	CODOW,A2
	tst.w	0(A2,d7.w)
	BNE	BEN3

	CLR.L	D3
	LEA	ENTYP,A3
	MOVE.W	0(A3,d7.w),D3
	asl.w	#1,D3
	CLR.L	D5
	CLR.L	D6
	LEA	TIPX,A5
	LEA	TIPY,A6
	MOVE.W	0(A6,D3.w),D6
	MOVE.W	0(A5,D3.w),D5
	LEA	enX,A2
	LEA	enY,A3
	CLR.L	D3
	CLR.L	D4
	MOVE.W	0(A2,d7.w),D3
	MOVE.W	0(A3,d7.w),D4
	lea	newbul,a1
	clr.l	d0
xxx:	CLR.L	D1
	CLR.L	D2
	MOVE.W	(A1)+,D1
	MOVE.W	(A1)+,D2
	btst	d0,pogodak
	beq	nxtb

	sub.w	d4,d2
	cmp.w	d6,d2
	bgt	nxtb
	add.w	#2,d2
	ble	nxtb
	sub.w	d3,d1
	cmp.w	d5,d1
	bgt	nxtb
	add.w	#4,d1
	ble	nxtb

	bclr	d0,pogodak
	move.b	#2,fxtsno	*bilo 4
	move.b	#1,eflg
	lea	killno,a5
	subi.w	#1,0(a5,d7.w)
	beq.s	db0
	moveq.l	#5,d0
	jsr	scalc
	bra	ben3
db0:	LEA	EXIST,a5
	MOVE.W	#7,0(a5,d7.w)
	LEA	CODOW,a5
	LEA	COTAB,A2
	LEA	ENTYP,A3
	CLR.L	D6
	MOVE.W	0(A3,d7.w),D6
	asl.w	#1,D6
	MOVE.W	0(A2,D6.w),0(a5,d7.w)
	LEA	ADDTAB,A2
	MOVE.W	0(A2,D6.w),d0
	CLR.L	D6
	MOVE.B	#4,FXTSNO	*bilo 2
	MOVE.B	#1,EFLG
	JSR	SCALC
	bra.s	ben3

nxtb:	addq.w	#1,d0
	cmp.w	#maxbul,d0
	bne	xxx

BEN3	ADDI.B	#2,D7
	CLR.L	D6
	MOVE.B	basno,D6
	asl.w	#1,D6
	CMP.B	D6,D7
	BNE	BEN1
BENZ	RTS

; SEN - SHIP TO ENEMY CHECKIN' !!!

SEN:	CLR.L	D7
	CLR.L	D1
	CLR.L	D2

SEN1:	MOVE.W	oldx,D1
	MOVE.W	shipy,D2
	ADDI.W	#4,D1
	LEA	EXIST,A1
	CMPI.W	#1,0(A1,D7.w)
	BNE	SEN3

	LEA	TSM,A2
	tst.W	0(A2,D7.w)
	BEQ	SEN3
	LEA	SPENCR1,A2
	tst.W	0(A2,D7.w)
	BEQ	SEN3
	LEA	CODOW,A2
	tst.W	0(A2,D7.w)
	BNE	SEN3
	CLR.L	D3
	LEA	ENTYP,A3
	MOVE.W	0(A3,D7.w),D3
	asl.w	#1,D3
	CLR.L	D5
	CLR.L	D6
	LEA	TIPX,A5
	LEA	TIPY,A6
	MOVE.W	0(A6,D3.w),D6
	MOVE.W	0(A5,D3.w),D5
	LEA	enX,A2
	LEA	enY,A3
	CLR.L	D3
	CLR.L	D4
	MOVE.W	0(A2,D7.w),D3
	MOVE.W	0(A3,D7.w),D4
	SUB.W	D2,D4
	CMPI.W	#16,D4
	Bge	sen3
	add.W	D6,D4
	BLt	SEN3
	SUB.W	D1,D3
	CMPI.W	#12,D3
	Bge	sen3
	add.W	D5,D3
	Blt	SEN3
	lea	entyp,a1
	cmp.w	#15,0(a1,d7.w)
	bne	death
	lea	exist,a1
	move.w	#5,0(a1,d7.w)
	clr.l	d1
	clr.l	d2
	move.w	shipx,d1
	move.w	shipy,d2
	clr.l	d0
	move.b	time3,d0
	mulu	#4992,d0
	movea.l	d0,a0
	move.l	d1,d0
	andi.l	#$f,d0
	lsr.w	#1,d0
	mulu	#624,d0
	adda.l	d0,a0
	moveq.l	#11,d5
	moveq.l	#25,d6
	jsr	edraw0
	move.b	#$ff,double

	clr.l	d1
	clr.l	d2
	move.w	shipx,d1
	move.w	shipy,d2
	move.l	d1,d0
	andi.l	#$f,d0
	lsr.w	#1,d0
	mulu	#384,d0
	movea.l	#98048,a0
	adda.l	d0,a0
	move.w	shipy,d2
	moveq	#11,d5
	moveq	#15,d6
	bra	edraw0

death:	MOVE.B	#1,KFLG
	clr.l	d1
	clr.l	d2
	move.w	shipx,d1
	move.w	shipy,d2
	tst.b	double
	bne.s	b00

	clr.l	d0
	move.b	time3,d0
	mulu	#4992,d0
	movea.l	d0,a0
	move.l	d1,d0
	andi.l	#$f,d0
	lsr.w	#1,d0
	mulu	#624,d0
	adda.l	d0,a0
	moveq.l	#11,d5
	moveq.l	#25,d6
	jsr	edraw0
	bra.s	b01

b00:	move.l	d1,d0
	andi.l	#$f,d0
	lsr.w	#1,d0
	mulu	#384,d0
	movea.l	#98048,a0
	adda.l	d0,a0
	moveq.l	#11,d5
	moveq.l	#15,d6
	jsr	edraw0

b01:	movea.l	#explo.14,a0
	jsr	do.explosion
	movea.l	#explo.15,a0
	jsr	do.explosion
	movea.l	#explo.16,a0
	jsr	do.explosion
	movea.l	#explo.17,a0
	jsr	do.explosion

	RTS

do.explosion:
	move.l	a0,-(sp)
	jsr	do.ex
	movea.l	(sp)+,a0

do.ex:	clr.l	d1
	clr.l	d2
	move.w	oldx,d1
	move.w	shipy,d2
	move.l	#7,d5
	move.l	#15,d6
	jsr	edraw0
	jsr	pauza
	move.b	#6,fxtsno	*bilo 4
	move.b	#1,eflg

	rts

SEN3	ADDI.B	#2,D7
	CLR.L	D6
	MOVE.B	BASNO,D6
	asl.w	#1,d6
	CMP.B	D6,D7
	BNE	SEN1
SENZ	RTS

SCALC:	move.w	d0,sdod2
	moveq.l	#2,d2
	LEA	score,A0
	addq.l	#3,a0
	LEA	SDOD+3,a5
	MOVE	#0,CCR
SLOOP:	ABCD.B	-(a5),-(A0)
	DBRA	D2,SLOOP
	CLR.b	sdod
	clr.b	sdod+1
	clr.b	sdod+2
	jsr	prscore
	jsr	turn
	jsr	prscore
	bra	turn

TIPX	DC.W	0016,0016,0016,0016,0016,0016,0016,0016
	dc.w	0016,0016,0016,0016,0016,0016,0016,0024
	dc.w	0024,0024,0024
TIPY	DC.W	0016,0016,0016,0016,0016,0016,0016,0016
	dc.w	0016,0016,0016,0016,0016,0010,0016,0026
	dc.w	0016,0016,0032

ADDTAB	DC.W	$095,$035,$060,$125,$250,$175,$075,$200
	dc.w	$086,$090,$150,$330,$204,$050,$050,$000
	dc.w	$135,$500,$999

COTAB	DC.W	0001,0010,0014,0018,0001,0010,0014,0018
	dc.w	0001,0010,0014,0018,0001,0010,0014,0014
	dc.w	0001,0010,0014

	DC.B	0
SDOD	DC.B	0
SDOD2	DC.B	0,0

kflg:	ds.b	1
pogodak:ds.w	1

	end

