*****************************************************************************
*						COPPER FLIGHT BAR TANGO/XENTRIX						*
*****************************************************************************
	
	section copperbars,code_c
	opt c-
	incdir	df1:
	include	gamemacros


*****************************************************************************
*					KILL O/S AND CALL ROUTINES AND TEST MOUSE				*
*****************************************************************************

	killsys
	move.l	#newcopper,$dff080
	lea		custom,a5
mouse:
	cmp.b	#$ff,$dff006
	bne.s	mouse
	move.w	#$fff,$dff180
	bsr		doform
	move.w	#$0,$dff180
	btst	#6,$bfe001
	bne.s	mouse
	ressys
	clr.l	d0
	rts

																																									
*****************************************************************************
*							BLIT THE COPPER BARS							*
*****************************************************************************

blitbar:
	lea		coltab(pc),a1
	lea		dest+6(pc),a2				; point to colour 
	lea		bltapth(a5),a3
	lea		bltdpth(a5),a4
	lea		bltsize(a5),a0
	lea		bltcon0(a5),a6
	move.l	#-1,d6
	moveq	#0,d4
	moveq	#6,d5
	add.l	d1,a2						; d1 holds position of bar
	blitwait
	move.w	d4,bltamod(a5)
	move.w	d5,bltdmod(a5)				; 6  (3words to next colour)
	move.l	d6,bltafwm(a5)
	move.l	a1,(a3)						; source
	move.l	a2,(a4)						; dest
	move.l	#$09f00000,(a6)				; minterm D=A
	move.w	#32<<6!1,(a0)				; blitsize
	rts


*****************************************************************************
*					MOVE THE COPPER BARS FROM A SINE TABLE					*
*****************************************************************************

doform:
	move.l	sinptr(pc),a2	; pointer to sine table
	move.l	tabptr(pc),a0	; pointer to table
	move.w	(a0)+,d7		; amount of bars
barlooper:
	move.w	(a0)+,d1		; position in sinetab
	add.w	d1,d1			; even
	and.w	#$fe,d1
	move.w	(a2,d1),d1		; got position
	asl.l	#3,d1			; times by 8 for next line down!
	move.w	(a0)+,d2
	add.w	d2,-4(a0)		; speed
	save_all
	bsr		blitbar
	return_all
	dbf		d7,barlooper
	rts


*****************************************************************************
*						COPPER LIST (JUST A BIG REPEAT!)					*
*****************************************************************************

newcopper:
	cmove	bplcon0,$0200
a	set	50
dest:
	rept	180
	dc.b	a,$09,$ff,$fe
	dc.w	$180,$00			; CHANGE THIS COL!!!
a	set		a+1
	endr
	dc.w	$ffff,$fffe
	

*****************************************************************************
*		   COLOURS FOR BAR (NOTE BAR IS 34 LINES, HENCE 34 COLOURS!)		*
*****************************************************************************

coltab:
	dc.w	$000,$000,$001,$002,$003,$004,$005,$006,$007
	dc.w	$008,$009,$00a,$00b,$00c,$00d,$00e,$00f
	dc.w	$00e,$00d,$00c,$00b,$00a,$009,$008,$007,$006
	dc.w	$005,$004,$003,$002,$001,$000


	
*****************************************************************************
*							 BAR FORMATIONS!								*
*****************************************************************************

tabptr:
	dc.l	tab
tab:
	dc.w	10-1				; no of bars to blit
	dc.w	10,1				; offset to sine tab and speed
	dc.w	20,1				; offset to sine tab and speed
	dc.w	30,1
	dc.w	40,1
	dc.w	50,1
	dc.w	60,1
	dc.w	70,1
	dc.w	80,1
	dc.w	90,1
	dc.w	100,1
 

*****************************************************************************
*							THE MEGA SINE TABLE								*
*****************************************************************************

sinptr:	
		dc.l	sintab
sintab:
	dc.w	120,120,120,119,119,118,117,116
	dc.w	115,114,113,111,110,108,106,104
	dc.w	102,100,98,96,93,91,88,86
	dc.w	83,80,77,75,72,69,66,63
	dc.w	60,57,54,51,48,45,43,40
	dc.w	37,34,32,29,27,24,22,20
	dc.w	18,16,14,12,10,9,7,6
	dc.w	5,4,3,2,1,1,0,0
	dc.w	0,0,0,1,1,2,3,4
	dc.w	5,6,7,9,10,12,14,16
	dc.w	18,20,22,24,27,29,32,34
	dc.w	37,40,43,45,48,51,54,57
	dc.w	60,63,66,69,72,75,77,80
	dc.w	83,86,88,91,93,96,98,100
	dc.w	102,104,106,108,110,111,113,114
	dc.w	115,116,117,118,119,119,120,120
	even
sl=*-sintab		

