;enemy.include


Move_dump
	move.w #0,hit
	move.l #dump_variables,a3
	move.l #5,d4
dump_3
	bsr run_dump
	add.l #6,a3
	dbf d4,dump_3
	rts

Print_dump
	move.l #dump_variables,a3
	move.l #5,d4
dump_9
	tst.w (a3)
	beq dump_10
	bsr check_dump_part1
	bsr unblank_dump
	bsr check_dump_part2
	bra animate_dump
dump_10
	add.l #6,a3
	dbf d4,dump_9
	rts

animate_dump
	tst.w 4(a3)
	beq dump_10
	cmp.w #1,4(a3)
	beq dump_10
	cmp.w #12,4(a3)
	beq dump_10
	cmp.w #13,4(a3)
	beq dump_10
	move.w DISTANCE,d0
	btst #1,d0
	bne dump_10
	add.w #1,4(a3)
	cmp.w #12,4(a3)
	bne dump_10
	move.w #2,4(a3)
	bra dump_10


Reset_table1
	move.l #dump_table1,a2
	move.l #rocket_table1,a1
	bsr reset_enemy
	rts

Reset_table2
	move.l #dump_table2,a2
	move.l #rocket_table2,a1
	bsr reset_enemy
	rts

Reset_table3
	move.l #dump_table3,a2
	move.l #rocket_table3,a1
	bsr reset_enemy
	rts

Reset_table4
	move.l #dump_table4,a2
	tst.w clocked
	beq chicken
	move.l #rocket_table4,a1
	bsr reset_enemy
	rts

Reset_table5
	move.l #dump_table5,a2
	tst.w clocked
	beq chicken
	move.l #rocket_table5,a1
	bsr reset_enemy
	rts

Reset_table6
	move.l #dump_table6,a2
	tst.w clocked
	beq chicken
	move.l #rocket_table6,a1
	bsr reset_enemy
	rts

Reset_table7
	move.l #dump_table7,a2
	move.l #rocket_table7,a1
	bsr reset_enemy
	rts

Reset_table8
	move.l #dump_table8,a2
	move.l #rocket_table8,a1
	bsr reset_enemy
	rts

chicken
	move.l #rocket_table9,a1
	bsr reset_enemy
	rts





reset_enemy
	move.l #rocket_variables,a0
	move.w #29,d0
r_1
	move.l #0,(a0)+
	dbf d0,r_1

	move.l #dump_variables,a0
	move.w #29,d0
r_2
	move.l #0,(a0)+
	dbf d0,r_2
	move.w (a2)+,dump_next
	move.l a2,dump_ptr
	move.w (a1)+,rocket_next
	move.l a1,rocket_ptr
	move.l #SCREEN6,a0
	bsr Blit_Zap2
	rts

run_dump
	tst.w (a3)	;dump_run
	bne dump_4
	move.w DISTANCE,d0
	cmp.w dump_next,d0
	bne dump_1
	move.l dump_ptr,a0
	move.w (a0)+,2(a3)	;dump_pos_y
	move.w (a0)+,4(a3)	;dump type
	move.w (a0)+,dump_next
	move.l a0,dump_ptr
	move.w #352,(a3)	;dump_pos_x

	cmp.w #1,clocked
	blt haha
	cmp.w #1,4(a3)
	bne hoho
	move.w #12,4(a3)
	rts
hoho
	cmp.w #2,clocked
	blt haha
	cmp.w #2,4(a3)
	bne haha
	move.w #12,4(a3)
haha
	rts
dump_4
	move.w (a3),d1
	move.w 2(a3),d0
	bsr erase_dump
	sub.w #2,(a3)		;move it too left
	tst.w (a3)		;check for reaching far left
	beq dump_2

	cmp.w #12,4(a3)
	bne dump_1
	move.w DISTANCE,d0
	and.w #15,d0
	tst.w d0
	bne dump_1
	move.w (a3),d0
	move.w 2(a3),d1
	bsr Set_ackack		;Weh hey!!!

dump_1
	rts
dump_2					;switch off dump
	move.w #0,(a3)
	rts


unblank_dump
	tst.w (a3)		;is this one activated?
	beq dump_1
	move.w (a3),d1
	move.w 2(a3),d0
	moveq #0,d2
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2
	move.l #SCREEN6,a2
	add.l d0,a2
	add.l d2,a2
	move.w 4(a3),d0
	bsr which_dump
	and.w #$000F,d1
	ror.w #4,d1
	or.w #$9f0,d1		
	bsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.w d1,BLTCON0(a6)			; Copy A -> D
	move.l a0,BLTAPTH(a6)			; Area to copy FROM
	move.w #0,BLTAMOD(a6)			; Data is consectutive!
	move.l a2,BLTDPTH(a6)			; Area to copy TO
	move.w #44,BLTDMOD(a6)			; Screen width - ship width (.b)
	move.w #$382,BLTSIZE(a6)		; Size and DO IT!
	rts

erase_dump	
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2
	move.l #SCREEN6,a2
	add.l d0,a2
	add.l d2,a2
	and.w #$000F,d1
	ror.w #4,d1
	or.w #DEST,d1					;d1 is now BLTCON0
	bsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a2,BLTDPTH(a6)			; Area to copy TO
	move.w #44,BLTDMOD(a6)			; skip a word each line here too
	move.w d1,BLTCON0(a6)			; Copy A -> D (without A)
	move.w #$382,BLTSIZE(a6)		; Size and DO IT!
	rts

check_dump_part1
	move.w (a3),d1
	move.w 2(a3),d0
	moveq #0,d2
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2
	move.l #SCREEN4,a2
	add.l d0,a2
	add.l d2,a2
	and.w #$000F,d1
	ror.w #4,d1
	or.w #$cc0,d1	
	move.w 4(a3),d0
	bsr which_dump
	bsr waitblit
	move.w d1,BLTCON0(a6)			; Copy A.B -> D (without D)
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a0,BLTAPTH(a6)			; Graphic
	move.w #0,BLTAMOD(a6)
	move.l a2,BLTBPTH(a6)			; Area to check
	move.w #44,BLTBMOD(a6)			; skip a word each line here too
	move.w #$382,BLTSIZE(a6)			; Size and DO IT!
	bsr waitblit

	move.w DMACONR(a6),d0
	lsr.w #6,d0
	btst #7,d0
	bne c_4
	move.w #1,hit
c_4
	rts

check_dump_part2
	cmp.w #1,hit
	beq collision_2
	rts
collision_2
	;here we must check for missile1,2 and bomb 1,2 in turn
	move.l #miss_variables,a2
	bsr check_it_missile
	move.l #miss_variables+6,a2
	bsr check_it_missile
	move.l #bomb_variables,a2
	bsr check_it_bomb
	move.l #bomb_variables+6,a2
	bsr check_it_bomb
	rts

check_it_missile
	tst.w (a2)
	beq c_3		;no weapon operating
	move.w 2(a2),d1	;miss.x
	move.w 4(a2),d0 ;miss.y

	and.l #$0000ffff,d0
	and.l #$000000ff,d1
	move.l d1,d2
	bclr #0,d2
	mulu.w #48,d0
	move.l #SCREEN6+1920,a1
	add.l d0,a1
	add.l d2,a1
	move.w (a1),d0
	btst #0,d1
	bne c_1
	move.w #$ff00,d2
	bra c_2
c_1
	move.w #$00ff,d2
c_2
	and.w d2,d0
	tst.w d0
	bne destroyed_dump
c_3
	rts ;no hit

destroyed_dump
	bsr Sound2
	add.w #10,score
	move.w #2,(a2)		;switch weapon off
	move.w (a3),d1
	move.w 2(a3),d0
	bsr erase_dump
	move.w (a3),d0
	move.w 2(a3),d1
	move.w d0,d6	;
	move.w d1,d7	;keep them for later
	bsr Bang
	move.w #0,(a3)
	tst.w 4(a3)
	beq destroyed_fuel
	cmp.w #1,4(a3)
	beq destroyed_other
	cmp.w #13,4(a3)
	beq destroyed_end
	;destroyed radar
	add.w #10,score
	rts

destroyed_end
	move.w #1,level_complete
	bsr Sound3
	bsr Flash_on
	add.w #1000,score
	move.w d6,d0
	move.w d7,d1
	add.w #16,d0
	bsr Bang
	move.w d6,d0
	move.w d7,d1
	add.w #16,d1
	bsr Bang
	move.w d6,d0
	move.w d7,d1
	add.w #16,d0
	add.w #16,d1
	bsr Bang
	rts


destroyed_fuel
	add.w #400,fuel
	cmp.w #MAX_FUEL,fuel
	blt df1
	move.w #MAX_FUEL,fuel
df1
	rts
destroyed_other
	add.w #5,score
	rts




check_it_bomb
	tst.w (a2)
	beq c_3		;no weapon operating
	move.w 2(a2),d1	;bomb.x
	move.w 4(a2),d0 ;bomb.y
	and.l #$0000ffff,d0
	and.l #$000000ff,d1
	move.l d1,d2
	bclr #0,d2
	mulu.w #48,d0
	move.l #SCREEN6+1920,a1
	add.l d0,a1
	add.l d2,a1

	move.w (a1),d0
	and.w #$ff00,d0
	tst.w d0
	bne destroyed_dump
	rts
cb_3
	rts ;no hit

which_dump
	;choose correct graphic for dump. Type=d0, add=a0
	tst.w d0
	beq fuel_dump
	cmp.w #1,d0
	beq store_dump
	cmp.w #2,d0
	beq radar0
	cmp.w #3,d0
	beq radar1
	cmp.w #4,d0
	beq radar2
	cmp.w #5,d0
	beq radar3
	cmp.w #6,d0
	beq radar4
	cmp.w #7,d0
	beq radar5
	cmp.w #8,d0
	beq radar4
	cmp.w #9,d0
	beq radar3
	cmp.w #10,d0
	beq radar2
	cmp.w #11,d0
	beq radar1
	cmp.w #12,d0
	beq launcher
	move.l #dump_data9,a0	;big baddie
	rts
launcher
	move.l #dump_data8,a0	;rocket launcher
	rts
fuel_dump
	move.l #dump_data0,a0
	rts
store_dump
	move.l #dump_data1,a0
	rts
radar0
	move.l #dump_data2,a0
	rts
radar1
	move.l #dump_data3,a0
	rts
radar2
	move.l #dump_data4,a0
	rts
radar3
	move.l #dump_data5,a0
	rts
radar4
	move.l #dump_data6,a0
	rts
radar5
	move.l #dump_data7,a0
	rts


Move_rocket
	move.w #0,rhit
	move.l #rocket_variables,a3
	move.l #5,d4
rocket_3
	bsr run_rocket
	add.l #6,a3
	dbf d4,rocket_3
	rts

Print_rocket
	move.l #rocket_variables,a3
	move.l #5,d4
rocket_9
	tst.w (a3)
	beq rocket_10
	bsr check_rocket_part1
	bsr unblank_rocket
	bsr check_rocket_part2

rocket_10
	add.l #6,a3
	dbf d4,rocket_9
	rts





run_rocket
	tst.w (a3)	;rocket_run
	bne rocket_4
	move.w DISTANCE,d0
	cmp.w rocket_next,d0
	bne rocket_1
	move.l rocket_ptr,a0
	move.w (a0)+,2(a3)	;rocket_pos_y
	move.w (a0)+,rocket_next
	move.l a0,rocket_ptr
	move.w #352,(a3)	;rocket_pos_x
	move.w #0,4(a3)
	rts
rocket_4
	move.w (a3),d1
	move.w 2(a3),d0
	bsr erase_rocket
	sub.w #2,(a3)		;move it to left
	tst.w (a3)		;check for reaching far left
	beq rocket_2
	tst.w 4(a3)		;is it moving upwards?
	beq rocket_5		;nope, so try for launch

	sub.w #3,2(a3)		;move it upwards
	cmp.w #100,2(a3)
	bgt noheehee
	sub.w #1,2(a3)		;move it upwards ;fiddle !!
noheehee


	cmp.w #2,2(a3)		;check for reaching top
	blt rocket_2
rocket_1
	rts
rocket_2					;switch off rocket
	move.w #0,(a3)
	rts
rocket_5	;can we launch rocket?
	move.w (a3),d0
	sub.w Ship_pos_x,d0 ;d0=Rx-Sx
	cmp.w #65,d0	;fiddle !!
	bgt rocket_1
	move.w #1,4(a3)		;Launch!
	rts


unblank_rocket
	tst.w (a3)		;is this one activated?
	beq rocket_1
	move.w (a3),d1
	move.w 2(a3),d0
	moveq #0,d2
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2
	move.l #SCREEN6,a2
	add.l d0,a2
	add.l d2,a2
	move.l #rocket_data,a0
	and.w #$000F,d1
	ror.w #4,d1
	or.w #$9f0,d1					;d1 is now BLTCON0
	bsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.w d1,BLTCON0(a6)			; Copy A -> D
	move.l a0,BLTAPTH(a6)			; Area to copy FROM
	move.w #0,BLTAMOD(a6)			; Data is consectutive!
	move.l a2,BLTDPTH(a6)			; Area to copy TO
	move.w #44,BLTDMOD(a6)			; Screen width - ship width (.b)
	move.w #$9c2,BLTSIZE(a6)		; Size and DO IT!
	rts

erase_rocket	
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2
	move.l #SCREEN6,a2
	add.l d0,a2
	add.l d2,a2
	and.w #$000F,d1
	ror.w #4,d1
	or.w #DEST,d1					;d1 is now BLTCON0
	bsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a2,BLTDPTH(a6)			; Area to copy TO
	move.w #44,BLTDMOD(a6)			; skip a word each line here too
	move.w d1,BLTCON0(a6)			; Copy A -> D (without A)
	move.w #$9c2,BLTSIZE(a6)		; Size and DO IT!
	rts

check_rocket_part1
	move.w (a3),d1
	move.w 2(a3),d0
	moveq #0,d2
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2
	move.l #SCREEN4,a2
	add.l d0,a2
	add.l d2,a2
	move.l #rocket_data,a0
	and.w #$000F,d1
	ror.w #4,d1
	move.w d1,d2
	or.w #$cc0,d1					;d1 is now BLTCON0
	bsr waitblit
	move.w d1,BLTCON0(a6)			; Copy A.B -> D (without D)
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a0,BLTAPTH(a6)			; Graphic
	move.w #0,BLTAMOD(a6)
	move.l a2,BLTBPTH(a6)			; Area to check
	move.w #44,BLTBMOD(a6)			; skip a word each line here too
	move.w #$9c2,BLTSIZE(a6)			; Size and DO IT!
	bsr waitblit

	move.w DMACONR(a6),d0
	lsr.w #6,d0
	btst #7,d0
	bne rc_4
	move.w #1,rhit
rc_4
	rts

check_rocket_part2
	cmp.w #1,rhit
	beq collision_1
	rts
collision_1
	;here we must check for missile1,2 and bomb 1,2 in turn
	move.l #miss_variables,a2
	bsr check_it_missile2
	move.l #miss_variables+6,a2
	bsr check_it_missile2
	move.l #bomb_variables,a2
	bsr check_it_bomb2
	move.l #bomb_variables+6,a2
	bsr check_it_bomb2
	rts

check_it_missile2
	tst.w (a2)
	beq rc_3		;no weapon operating
	move.w 2(a2),d1	;miss.x
	move.w 4(a2),d0 ;miss.y

	and.l #$0000ffff,d0
	and.l #$000000ff,d1
	move.l d1,d2
	bclr #0,d2
	mulu.w #48,d0
	move.l #SCREEN6+1920,a1
	add.l d0,a1
	add.l d2,a1
	tst.w (a1)
	bne rc_5
rc_3
	rts ;no rhit

rc_5 ;hit
	add.w #5,score
	move.w #2,(a2)
	move.w (a3),d1
	move.w 2(a3),d0
	bsr erase_rocket
	move.w (a3),d0
	move.w 2(a3),d1
	bsr Bang
	move.w #0,(a3)
	bsr Sound2
	rts



check_it_bomb2
	tst.w (a2)
	beq rc_3		;no weapon operating
	move.w 2(a2),d1	;bomb.x
	move.w 4(a2),d0 ;bomb.y

	and.l #$0000ffff,d0
	and.l #$000000ff,d1
	move.l d1,d2
	bclr #0,d2
	mulu.w #48,d0
	move.l #SCREEN6+1920,a1
	add.l d0,a1
	add.l d2,a1
	move.w (a1),d0
	tst.w d0
	bne rcb_5
	rts

rcb_5	;hit!
	add.w #5,score
	move.w #2,(a2)
	move.w (a3),d1
	move.w 2(a3),d0
	bsr erase_rocket
	move.w (a3),d0
	move.w 2(a3),d1
	bsr Bang
	move.w #0,(a3)
	bsr Sound2
	rts



rhit
	dc.w 0
hit
	dc.w 0
