
; Sprite Example 18:		Two Star Fields using 2 sprites

;				Produce 2 'layers' of stars with different
;				luminosities

		include		hardware.i
		include		HW_Macros.i
		include		HW_Start.i
		include		HW_Sprites.i

; Stuff bitplane pointers into Copper list using a macro

Main		COPBPL		CopPlanes,bitplane,(320/8)*256,1

; Call routine that sets all sprite pointers to a blank sprite

		lea		SprtBase,a0
		bsr		SpritesOff

; Initialise hardware sprite structures

		lea		Sprite1,a2		a2->Sprite Struct
		lea		SpriteXY,a3		a3->coord list
		
InitLoop	move.l		(a3)+,d0		get next coord pair
		beq.s		Init2		exit if end of table
		
		move.l		d0,(a2)			write into Sprite
		move.l		a2,a0
		bsr		SetSprPos
		addq.l		#8,spr_Data(a2)		bump Data pointer
		bra.s		InitLoop

Init2		move.l		#sprite1Data,spr_Data(a2)
		
		lea		Sprite2,a2		a2->Sprite Struct
		lea		Sprite1XY,a3		a3->coord list
		
InitLoop1	move.l		(a3)+,d0		get next coord pair
		beq.s		Activate		exit if end of table
		
		move.l		d0,(a2)			write into Sprite
		move.l		a2,a0
		bsr		SetSprPos
		addq.l		#8,spr_Data(a2)		bump Data pointer
		bra.s		InitLoop1

; Position and activate sprite

Activate	move.l		#sprite2Data,spr_Data(a2)

		SPRITEON	#0,#Sprite1		Turn sprites on
		SPRITEON	#1,#Sprite2		Turn sprites on

; Enable Bitplane, Copper and Sprite DMA.

		move.w		#SETIT!DMAEN!COPEN!BPLEN!SPREN,DMACON(a5)

; Now strobe the Copper list.

		move.l		#CopperList,COP1LCH(a5)	address of list
		move.w		#0,COPJMP1(a5)		strobe Copper

; Wait for user to press the left mouse button

mouse		btst		#6,CIAAPRA
		bne.s		mouse

; And exit.

		rts

;		***************************
;		*    Blank All Sprites	  *
;		***************************

; Entry		a0->SprBase for relevant Copper list

SpritesOff	move.l		#BlankSprite,d0		blank sprite
		moveq.l		#7,d1			sprite counter

_sprLoop	swap		d0			get high part of addr
		move.w		d0,2(a0)		into Copper list
		swap		d0			get low part of addr
		move.w		d0,6(a0)		into Copper list
		addq.l		#8,a0			bump Copper list ptr
		dbra		d1,_sprLoop
		
		rts

;		***************************
;		*	   Data    	  *
;		***************************

ColFlag		dc.w		0

Sprite1		dc.w		128		X
		dc.w		44		Y
		dc.w		1		height
		dc.l		sprite1Data	address of initial data
		dc.l		0		->Animation Structure
		dc.w		0		current frame number
		dc.w		0		initial timer value

Sprite2		dc.w		128		X
		dc.w		44		Y
		dc.w		1		height
		dc.l		sprite2Data	address of initial data
		dc.l		0		->Animation Structure
		dc.w		0		current frame number
		dc.w		0		initial timer value


SpriteXY	dc.w		130,44
		dc.w		197,46
		dc.w		295,48
		dc.w		188,50
		dc.w		428,52
		dc.w		372,54
		dc.w		285,56
		dc.w		245,58
		dc.w		402,60
		dc.w		247,62 .
		dc.w		402,64
		dc.w		268,66
		dc.w		183,68
		dc.w		382,70
		dc.w		241,72
		dc.w		252,74
		dc.w		271,76
		dc.w		179,78
		dc.w		341,80
		dc.w		337,82 .
		dc.w		213,84
		dc.w		140,86
		dc.w		158,88
		dc.w		411,90
		dc.w		175,92
		dc.w		365,94
		dc.w		444,96
		dc.w		363,98
		dc.w		328,100
		dc.w		352,102 .
		dc.w		229,104
		dc.w		135,106
		dc.w		440,108
		dc.w		203,110
		dc.w		206,112
		dc.w		287,114
		dc.w		172,116
		dc.w		297,118
		dc.w		356,120
		dc.w		185,122 .
		dc.w		185,124
		dc.w		129,126
		dc.w		266,128
		dc.w		197,130
		dc.w		413,132
		dc.w		285,134
		dc.w		375,136
		dc.w		318,138
		dc.w		274,140
		dc.w		431,142 .
		dc.w		191,144
		dc.w		138,146
		dc.w		388,148
		dc.w		364,150
		dc.w		208,152
		dc.w		160,154
		dc.w		197,156
		dc.w		441,158
		dc.w		264,160
		dc.w		435,162 .
		dc.w		308,164
		dc.w		129,166
		dc.w		430,168
		dc.w		236,170
		dc.w		280,172
		dc.w		440,174
		dc.w		225,176
		dc.w		232,178
		dc.w		350,180
		dc.w		210,182
		dc.w		359,184
		dc.w		329,186
		dc.w		434,188
		dc.w		132,190
		dc.w		302,192
		dc.w		319,194
		dc.w		291,196
		dc.w		177,198
		dc.w		419,200
		dc.w		208,202
		dc.w		194,204
		dc.w		228,206
		dc.w		283,208
		dc.w		418,210
		dc.w		179,212
		dc.w		327,214
		dc.w		292,216
		dc.w		231,218
		dc.w		309,220
		dc.w		213,222
		dc.w		412,224
		dc.w		398,226
		dc.w		309,228
		dc.w		428,230
		dc.w		310,232
		dc.w		313,234
		dc.w		304,236
		dc.w		266,238
		dc.w		165,240
		dc.w		375,242
		dc.w		424,244
		dc.w		291,246
		dc.w		417,248
		dc.w		265,250
		dc.w		177,252
		dc.w		304,254
		dc.w		237,256
		dc.w		209,258
		dc.w		376,260
		dc.w		165,262
		dc.w		319,264
		dc.w		331,266
		dc.w		431,268
		dc.w		192,270
		dc.w		165,272
		dc.w		337,274
		dc.w		231,276
		dc.w		260,278
		dc.w		391,280
		dc.w		289,282
		dc.w		205,284
		dc.w		389,286
		dc.w		200,288
		dc.w		304,290
		dc.w		274,292
		dc.w		410,294
		dc.w		252,296
		dc.w		309,298
		dc.w		302,300

		dc.l		0
		
Sprite1XY	dc.w		130,44
		dc.w		197,48
		dc.w		295,52
		dc.w		188,56
		dc.w		428,60
		dc.w		372,64
		dc.w		285,68
		dc.w		245,72
		dc.w		402,76
		dc.w		247,80
		dc.w		402,84
		dc.w		268,88
		dc.w		183,92
		dc.w		382,96
		dc.w		241,100
		dc.w		252,104
		dc.w		271,108
		dc.w		179,112
		dc.w		341,116
		dc.w		337,120
		dc.w		213,124
		dc.w		140,128
		dc.w		158,132
		dc.w		411,136
		dc.w		175,140
		dc.w		365,144
		dc.w		444,148
		dc.w		363,152
		dc.w		328,156
		dc.w		352,160
		dc.w		229,164
		dc.w		135,168
		dc.w		440,172
		dc.w		203,176
		dc.w		206,180
		dc.w		287,184
		dc.w		172,188
		dc.w		297,192
		dc.w		356,196
		dc.w		185,200
		dc.w		185,204
		dc.w		129,208
		dc.w		266,212
		dc.w		197,216
		dc.w		413,220
		dc.w		285,224
		dc.w		375,228
		dc.w		318,232
		dc.w		274,236
		dc.w		431,240
		dc.w		191,244
		dc.w		138,248
		dc.w		388,252
		dc.w		364,256
		dc.w		208,260
		dc.w		160,264
		dc.w		197,268
		dc.w		441,272
		dc.w		264,276
		dc.w		435,280
		dc.w		308,284
		dc.w		129,288
		dc.w		430,292
		dc.w		236,296
		dc.w		280,300		65 entries

		dc.l		0
		
;		***************************
;		*     CHIP Memory Data    *
;		***************************

section		data custom,chip		****  Use this for A68K  ****

;		Section		custom,data_C	**** Use this for Devpac ****


CopperList	CMOVE		COLOR00,$0000		Black background

		CWAIT		0,20			build in a pause!

SprtBase	CMOVE		SPR0PTH,0		Sprite defs
		CMOVE		SPR0PTL,0
		CMOVE		SPR1PTH,0
		CMOVE		SPR1PTL,0
		CMOVE		SPR2PTH,0
		CMOVE		SPR2PTL,0
		CMOVE		SPR3PTH,0
		CMOVE		SPR3PTL,0
		CMOVE		SPR4PTH,0
		CMOVE		SPR4PTL,0
		CMOVE		SPR5PTH,0
		CMOVE		SPR5PTL,0
		CMOVE		SPR6PTH,0
		CMOVE		SPR6PTL,0
		CMOVE		SPR7PTH,0
		CMOVE		SPR7PTL,0
		
		CMOVE		DIWSTRT,$2c81		PAL -- 256 lines
		CMOVE		DIWSTOP,$2cc1
		CMOVE		DDFSTRT,$0038		LoRes
		CMOVE		DDFSTOP,$00d0
		CMOVE		BPL1MOD,$0000		No modulos
		CMOVE		BPL2MOD,$0000
		CMOVE		BPLCON0,$1200		1 bitplane & colour
		CMOVE		BPLCON1,$0000		No scrolling
		CMOVE		BPLCON2,%0000000000001000		pf1=1
;                                                 P222111

CopPlanes	CMOVE		BPL1PTH,0		Bit plane pointer
		CMOVE		BPL1PTL,0

		CMOVE		COLOR00,$0000		black background
		CMOVE		COLOR01,$0fff		white foreground

		CMOVE		COLOR16,$0000
		CMOVE		COLOR17,$0555		
		CMOVE		COLOR18,$0aaa		
		CMOVE		COLOR19,$0fff		
		CMOVE		COLOR20,$0666
		CMOVE		COLOR21,$000f
		CMOVE		COLOR22,$007c
		CMOVE		COLOR23,$0080
		CMOVE		COLOR24,$00af
		CMOVE		COLOR25,$00dd
		CMOVE		COLOR26,$0e00
		CMOVE		COLOR27,$0d80
		CMOVE		COLOR28,$0888
		CMOVE		COLOR29,$0aaa
		CMOVE		COLOR30,$0ccc
		CMOVE		COLOR31,$0eee
		
		CEND					end of list

bitplane	ds.b		40*256

BlankSprite	dc.w		0,0		non-exsistent sprite!

sprite1Data

	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		10 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		20 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		30 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		40 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		50 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		60 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		70 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		80 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		90 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		100 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		110 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		120 Sprites
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000
	dc.w	0,0
	dc.w	$8000,$0000		129 Sprites

	dc.l	0


sprite2Data

	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		10 Sprites
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		20 Sprites
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		30 Sprites
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		40 Sprites
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		50 Sprites
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		60 Sprites
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000
	dc.w	0,0
	dc.w	$0000,$8000		65 Sprites

	dc.l	0
	
	end

		
