; object.include


Print_ship

	cmp.w #6,game_flag
	beq ps1
	move.w Ship_pos_x,d1
	move.w Ship_pos_y,d0
	bsr Check_ship
ps1
	move.w Ship_pos_x,d1
	move.w Ship_pos_y,d0
	bsr unblank_ship
	rts

Move_ship
	move.w Ship_pos_x,d1
	move.w Ship_pos_y,d0
	bsr blank_ship
	bra use_fuel
ms1
	move.w JOY1DAT(a6),d0
	btst #1,d0
	bne Ship_right

ship_1
	btst #9,d0
	bne Ship_left

ship_2	;test for down (0 xor 1)
	btst #0,d0
	beq ship_2.2
	btst #1,d0
	beq Ship_down
	bra ship_3
ship_2.2
	btst #1,d0
	bne Ship_down

ship_3
	btst #9,d0
	beq ship_3.2
ship_3.1
	btst #8,d0
	beq Ship_up
	bra ship_4
ship_3.2
	btst #8,d0
	bne Ship_up
ship_4
	rts

Ship_right
	cmp.w #260,Ship_pos_x
	bgt ship_1
	addq.w #2,Ship_pos_x
	bra ship_1

Ship_left
	cmp.w #38,Ship_pos_x
	blt ship_2
	subq.w #2,Ship_pos_x
	bra ship_2

Ship_down
	cmp.w #170,Ship_pos_y
	bgt ship_3
	addq.w #2,Ship_pos_y
	bra ship_3

Ship_up
	cmp.w #2,Ship_pos_y
	beq ship_4
	subq.w #2,Ship_pos_y
	bra ship_4


use_fuel
	tst fuel
	beq uf
	subq.w #1,fuel
	bra ms1
uf
	cmp.w #170,Ship_pos_y
	bgt uf2
	addq.w #2,Ship_pos_y
uf2
	rts	



unblank_ship
;i.e. print it
; Note that it is actually OR'ed with the screen
; memory to make it look nicer

; d0 = y co-ord (0..256)
; d1 = x co-ord (0..320)

	move.l #0,d2
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2

	move.l #SCREEN2,a2			;in plane2, nothing to OR with
	add.l d0,a2
	add.l d2,a2
	move.l #ship_data_1,a0

	ror.w #4,d1
	and.w #$F000,d1
	move.w d1,d3					;d3 = BLTCON1
	or.w #$9f0,d1					;d1 = BLTCON0

	jsr waitblit
	move.w #0,BLTCON1(a6)		; Special modes: none
	move.w d1,BLTCON0(a6)		; Copy D=A+B
	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 #40,BLTDMOD(a6)		; Screen width - ship width (.b)
	move.w #$484,BLTSIZE(a6)	; Size and DO IT!
	
	move.l #SCREEN4+1920,a2
	add.l d0,a2
	add.l d2,a2
	move.l #ship_data_2,a0
	and.w #$f000,d1
	or.w #$0dfc,d1

	jsr waitblit
	move.w d3,BLTCON1(a6)		; Special modes: none
	move.w d1,BLTCON0(a6)		; Copy D=A+B
	move.l a0,BLTAPTH(a6)		; Area to copy FROM
	;move.w #0,BLTAMOD(a6)		; Data is consectutive!
	move.l a2,BLTBPTH(a6)
	move.w #40,BLTBMOD(a6)
	move.l a2,BLTDPTH(a6)		; Area to copy TO
	;move.w #40,BLTDMOD(a6)		; Screen width - ship width (.b)
	move.w #$484,BLTSIZE(a6)		; Size and DO IT!
	rts

blank_ship	
	
; d0 = y co-ord (0..256)
; d1 = x co-ord (0..320)

	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2

	move.l #SCREEN2,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

	jsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a2,BLTDPTH(a6)			; Area to copy TO
	move.w #40,BLTDMOD(a6)			; skip a word each line here too
	move.w d1,BLTCON0(a6)			; Copy A -> D (without A)
	move.w #$484,BLTSIZE(a6)		; Size and DO IT!

	move.l #SCREEN4+1920,a2
	add.l d0,a2
	add.l d2,a2
	jsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a2,BLTDPTH(a6)			; Area to copy TO
	move.w #40,BLTDMOD(a6)			; skip a word each line here too
	move.w d1,BLTCON0(a6)			; Copy A -> D (without A)
	move.w #$484,BLTSIZE(a6)		; Size and DO IT!
	rts


Check_ship

; d0 = y co-ord (0..256)
; d1 = x co-ord (0..320)
;look under where ship will be to see if anything there

	move.l #0,d2
	mulu.w #48,d0
	move.w d1,d2
	lsr.w #3,d2

	move.l #SCREEN6+1920,a2
	add.l d0,a2
	add.l d2,a2
	move.l #ship_data_1,a0

	and.w #$000F,d1
	ror.w #4,d1
	or.w #$cc0,d1
					;d1 is now BLTCON0
	jsr waitblit
	move.w #0,BLTCON1(a6)			; Special modes: none
	move.l a0,BLTAPTH(a6)			; Area to copy FROM
	move.w #0,BLTAMOD(a6)			; Data is consectutive!
	move.l a2,BLTBPTH(a6)			; Other Area to copy FROM
	move.w #40,BLTBMOD(a6)			; Screen width - ship width (.b)
	move.w d1,BLTCON0(a6)			; Copy A.B -> D (dont care where)
	move.w #$484,BLTSIZE(a6)		; Size and DO IT!

	;twiddle thumbs

	jsr waitblit

	move.w DMACONR(a6),d0
	lsr.w #6,d0
	btst #7,d0
	beq collision
	rts
collision
	move.w #1,game_flag
	rts


	even

Ship_delta
	dc.w 0
Ship_pos_x
	dc.w 160
Ship_pos_y
	dc.w 180
Ship_pos_old_x
	dc.w 160
Ship_pos_old_y
	dc.w 180
