שתשת                                        *********************************
*				*
*	SPRITES v.3.0		*
*	     by			*
*	JUDAS/SAINT GROUP	*
*				*
* Date:27.09.93     23:50:00	*
*				*
* Program porusza sprite'a	*
* o dowolnej wysokosci 		*
* i szerokosci 16 pikseli	*
* w trzech kolorach na ekranie	*
* i powoduje jego pozorne	*
* odbijanie sie od krawedzi	*
* 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	#1,OrientX
		bne.b	LeftMove
RightMove:
		addq.b	#1,PosX
		cmp.b	#210,PosX
		bne.b	MoveY
		move.b	#-1,OrientX		
LeftMove:	
		subq.b	#1,PosX
		cmp.b	#70,PosX
		bne.b	MoveY
		move.b	#1,OrientX

MoveY:		cmp.b	#1,OrientY
		bne.b	UpMove
DownMove:
		addq.b	#1,PosY
		addq.b	#1,Height
		cmp.b	#230,PosY
		bne.b	Go
		move.b	#-1,OrientY		
UpMove:	
		subq.b	#1,PosY
		subq.b	#1,Height
		cmp.b	#50,PosY
		bne.b	Go
		move.b	#1,OrientY

Go:		bsr.b	Delay
;-----------------------------------------------------------------------
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
;-----------------------------------------------------------------------
Delay:		move.w	#10,d7		;opoznienie
wait_loop:	nop
		dbf	d7,wait_loop
		rts
;-----------------------------------------------------------------------
OrientX:	dc.b	0		;0=brak ruchu
					;1=ruch w prawo
					;-1=ruch w lewo
OrientY:	dc.b	1		;0=brak ruchu
					;1=ruch w dol
					;-1=ruch w gore
************************************************************************
		SECTION	Sprites2,data_c
;-----------------------------------------------------------------------
Sprite:
PosY:		dc.b	50		;y_start
PosX:		dc.b	71		;x_start
Height:		dc.b	50+24
		dc.b	$00		;x,y,height
		dc.w	$ffff,$0000		;color 1
		dc.w	$ffff,$0000
		dc.w	$ffff,$0000
		dc.w	$ffff,$0000
		dc.w	$ffff,$0000
		dc.w	$ffff,$0000
		dc.w	$ffff,$0000
		dc.w	$ffff,$0000
		dc.w	$0000,$ffff		;color 2
		dc.w	$0000,$ffff
		dc.w	$0000,$ffff
		dc.w	$0000,$ffff
		dc.w	$0000,$ffff
		dc.w	$0000,$ffff
		dc.w	$0000,$ffff
		dc.w	$0000,$ffff
		dc.w	$ffff,$ffff		;color 3
		dc.w	$ffff,$ffff
		dc.w	$ffff,$ffff
		dc.w	$ffff,$ffff
		dc.w	$ffff,$ffff
		dc.w	$ffff,$ffff
		dc.w	$ffff,$ffff
		dc.w	$ffff,$ffff
		dc.w	$0,0			;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,$0f00		;red
		dc.w	COLOR18,$00f0		;green
		dc.w	COLOR19,$000f		;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
