שתשת                                        *********************************
*				*
*	SPRITES v.4.0		*
*	     by			*
*	JUDAS/SAINT GROUP	*
*				*
* Date:28.09.93     00:50:00	*
*				*
* Program porusza sprite'a	*
* o dowolnej wysokosci 		*
* i szerokosci 16 pikseli	*
* w trzech kolorach na		*
* krawedziach ekranu i czeka na	*
* nacisniecie lewego klawisza	*
* myszki.			*
*				*
*********************************

Custom		equ	$dff000
CIAAPRA		equ	$bfe001

VHPOSR		equ	$006
COP1LC		equ	$080
COPJMP1		equ	$088
DIWSTRT		equ	$08e
DIWSTOP		equ	$090
DDFSTRT		equ	$092
DDFSTOP		equ	$094
DMACON		equ	$096
BPL1PTH		equ	$0e0
BPL1PTL		equ	$0e2
BPLCON0		equ	$100
COLOR00		equ	$180
COLOR17		equ	$1a2
COLOR18		equ	$1a4
COLOR19		equ	$1a6
SPR0PTH		equ	$120
SPR0PTL		equ	$122
SPR1PTH		equ	$124
SPR1PTL		equ	$126
SPR2PTH		equ	$128
SPR2PTL		equ	$12a
SPR3PTH		equ	$12c
SPR3PTL		equ	$12e
SPR4PTH		equ	$130
SPR4PTL		equ	$132
SPR5PTH		equ	$134
SPR5PTL		equ	$136
SPR6PTH		equ	$138
SPR6PTL		equ	$13a
SPR7PTH		equ	$13c
SPR7PTL		equ	$13e

***********************************************************************
		SECTION	Sprites1,code_p
;-----------------------------------------------------------------------
Start:		movem.l	d0-a7,-(sp)		;store regs
;-----------------------------------------------------------------------
		move.l	#Screen,d0
		move.w	d0,Screen_lo
		swap	d0
		move.w	d0,Screen_hi
;-----------------------------------------------------------------------
		move.l	#Sprite,d0
		move.w	d0,Sprite_lo
		swap	d0
		move.w	d0,Sprite_hi
;-----------------------------------------------------------------------
		lea	Custom,a5
		move.l	#CopperList,COP1LC(a5)
		clr.w	COPJMP1(a5)
;-----------------------------------------------------------------------
		move.w	#$8220,DMACON(a5)	;DMA sprites on
;-----------------------------------------------------------------------
SpriteMove:
		bsr.w	Wait_rast
						
		cmp.b	#0,OrientX
		beq.b	X_End

RightMove:
		cmp.b	#-1,OrientX
		beq.b	LeftMove
		addq.b	#1,PosX
		cmp.b	#210,PosX
		bne.b	X_End
		move.b	#0,OrientX	;x off
		move.b	#1,OrientY	;y down
		bra.b	X_End

LeftMove:
		cmp.b	#0,OrientX
		beq.b	X_End	
		subq.b	#1,PosX
		cmp.b	#70,PosX
		bne.b	X_End
		move.b	#0,OrientX	;x off
		move.b	#-1,OrientY	;y up
		bra.b	Y_End
X_End:
		cmp.b	#0,OrientY
		beq.b	Y_End
DownMove:
		cmp.b	#-1,OrientY
		beq.b	UpMove
		addq.b	#2,PosY
		addq.b	#2,Height
		cmp.b	#230,PosY
		bne.b	Y_End
		move.b	#0,OrientY	;y off	
		move.b	#-1,OrientX	;x left
		bra.b	Y_End
UpMove:
		cmp.b	#1,OrientY
		beq.b	Y_End	
		subq.b	#2,PosY
		subq.b	#2,Height
		cmp.b	#50,PosY
		bne.b	Y_End
		move.b	#0,OrientY	;y off
		move.b	#1,OrientX	;x right
		
Y_End:
;-----------------------------------------------------------------------
MouseWait:	btst	#6,CIAAPRA		;wait for button
		bne.w	SpriteMove
;-----------------------------------------------------------------------
		movem.l	(sp)+,d0-a7		;restore regs
		moveq	#0,d0			;all ok
End:		rts
************************************************************************
;-----------------------------------------------------------------------
Wait_rast:	cmp.b	#$ff,VHPOSR(a5)
		bne.b	Wait_rast
		rts
;-----------------------------------------------------------------------
OrientX:	dc.b	1		;0=no move
					;1=move right
					;-1=move left
OrientY:	dc.b	0		;0=no move
					;1=move down
					;-1=move up
************************************************************************
		SECTION	Sprites2,data_c
;-----------------------------------------------------------------------
Sprite:
PosY:		dc.b	50		;y_start
PosX:		dc.b	70		;x_start
Height:		dc.b	50+15		;y_start+height
		dc.b	$00

		dc.w	$07c0,$0000
		dc.w	$1ff0,$0000
		dc.w	$3ff8,$0000
		dc.w	$7ffc,$0000
		dc.w	$7ffc,$0c60
		dc.w	$f11e,$1010
		dc.w	$f39e,$0000
		dc.w	$fffe,$0000
		dc.w	$fffe,$0000
		dc.w	$e38e,$1830
		dc.w	$783c,$0440
		dc.w	$7c7c,$0380
		dc.w	$3ff8,$0000
		dc.w	$1ff0,$0000
		dc.w	$07c0,$0000

		dc.w	$0000,$0000	;end sprite data
		
;-----------------------------------------------------------------------
CopperList:
		dc.w	DIWSTRT,$2981
		dc.w	DIWSTOP,$29c1
		dc.w	DDFSTRT,$0038		;lores screen
		dc.w	DDFSTOP,$00d0
		dc.w	BPLCON0,$1200		;1 plane
		dc.w	COLOR00,$0000		;ground=black
		dc.w	COLOR17,$0ff0		;red
		dc.w	COLOR18,$0f00		;green
		dc.w	COLOR19,$055e		;blue
		dc.w	BPL1PTH
Screen_hi:	dc.w	$0000
		dc.w	BPL1PTL
Screen_lo:	dc.w	$0000
		dc.w	SPR0PTH
Sprite_hi:	dc.w	$0000
		dc.w	SPR0PTL
Sprite_lo:	dc.w	$0000
		dc.w	SPR1PTH,$0000		;unused sprites off
		dc.w	SPR1PTL,$0000
		dc.w	SPR2PTH,$0000
		dc.w	SPR2PTL,$0000
		dc.w	SPR3PTH,$0000
		dc.w	SPR3PTL,$0000
		dc.w	SPR4PTH,$0000
		dc.w	SPR4PTL,$0000
		dc.w	SPR5PTH,$0000
		dc.w	SPR5PTL,$0000
		dc.w	SPR6PTH,$0000
		dc.w	SPR6PTL,$0000
		dc.w	SPR7PTH,$0000
		dc.w	SPR7PTL,$0000

		dc.w	$ffff,$fffe
;-----------------------------------------------------------------------
Screen:		blk.b	40*256,0
