;==========================================================================
; 
; Program Name	: Bouncy Bob Balls	{ Optimized }
; 
; Coded by	: Ian Quigley 		(aka : Damage)
; Date		: 19 July '93
; Licence	: Freeware
;
; AGA Fixed     : By Digital Candy, 1996
;==========================================================================

		incdir	include:
		include	hardware/custom.i   ;This sets things like DMACONR equ $02

; Boundaries.
Lowest_Floor	equ	200	
Right_Side	equ	287	

Start	;---> Initialise System <--------------------------------------------

		lea	gfxname,a1
		move.l	4.w,a6
		jsr	-$0228(a6)	; Exec.lib > Open 'Graphics' Library
		move.l	d0,_GfxBase
		move.l	d0,a0		; Fiddel with Copper list offsets
		move.l	38(a0),a0
		move.l	a0,Copper_1

		move.l	#Copper,$dff080

		lea	Planes,a0
		move.l	#Damage_Bin,d0
		move.w	d0,30(a0)	; Bitplane 4 low
		swap	d0	
		move.w	d0,26(a0)	; Bitplane 4 high

		move.l	4.w,a6
		jsr	-$0084(a6)	; Exec.lib > Forbid O/S

		move.l	#(8*40*256),d0	; 8 Planes size = 40*256 (320*256)
		move.l	#2,d1		; Chip Mem Please
		move.l	4.w,a6
		jsr	-$00C6(a6)	; Exec>lib > AllocMem
		move.l	d0,Mem_Space
		beq	Exit_13		; No Memory ! Bollocks !

		lea	OldPlanes,a0
		move.l	d0,(a0)+	; ie 60000
		add.l	#(40*256),d0
		move.l	d0,(a0)+	; ie 62800
		add.l	#(40*256),d0
		move.l	d0,(a0)+	; ie 65000
		add.l	#(40*256),d0
	
		lea	NewPlanes,a0
		move.l	d0,(a0)+	; ie 67800
		add.l	#(40*256),d0
		move.l	d0,(a0)+	; ie 6a000
		add.l	#(40*256),d0
		move.l	d0,(a0)+	; ie 6c8000

;----------} Main Code {-----------------------------------------------------

		jsr	Insert_NewPlanes

		lea	$dff000,a5
Keepon		cmp.b	#255,6(a5)
		bne.s	Keepon

;		move.w	#$ff0,$dff180
		lea	Object_1,a4
		bsr	Update_Object		; Write to New Planes
		lea	Object_2,a4
		bsr	Update_Object
		lea	Object_3,a4
		bsr	Update_Object
		lea	Object_4,a4
		bsr	Update_Object
		lea	Object_5,a4
		bsr	Update_Object
		lea	Object_6,a4
		bsr	Update_Object
		lea	Object_7,a4
		bsr	Update_Object
		lea	Object_8,a4
		bsr	Update_Object
		lea	Object_9,a4
		bsr	Update_Object
		lea	Object_A,a4
		bsr	Update_Object

		bsr	Insert_NewPlanes	; Inserts to copper list

		bsr	Clear_Planes		; Clears OldPlanes
		bsr	Swap_Old_New_Planes	; Swaps Old/New Planes

;		move.w	#$00f,$dff180

		btst	#6,$bfe001
		bne.w	Keepon			; Right Mouse Button ??

;----------) End Code (-----------------------------------------------------
	
		move.l	#(8*40*256),d0		; Our 8 planes
		move.l	Mem_Space,a1		; Where they live
		move.l	4.w,a6
		jsr	-$00D2(a6)		; Exec.lib > FreeMem

Exit_13		move.l	4.w,a6
		jsr	-$008A(a6)		; Exec.Lib > Permit
		move.l	Copper_1,$dff080
		move.l	_GfxBase,a1
		move.l	4.w,a6
		jmp	-$019e(a6)	; Exec.Lib > Close 'Graphics' Lib.

;----------> End of program <------------------------------------------------

; Subroutines ...


Counter		dc.l	0
Mem_Space	dc.l	0

Insert_NewPlanes
		;-----------------------------------------------
		; Inserts NewPlane addresses into Copper List.
		;
		; a0,a1,d0 <= Trash.

		lea	Planes,a0
		lea	NewPlanes,a1
		
		move.l	(a1)+,d0
		move.w	d0,6(a0)	; Plane 0 low
		swap	d0
		move.w	d0,2(a0)	; Plane 0 high
			
		move.l	(a1)+,d0
		move.w	d0,14(a0)	; Plane 1 low
		swap	d0
		move.w	d0,10(a0)	; Plane 1 high

		move.l	(a1)+,d0
		move.w	d0,22(a0)	; Plane 2 low
		swap	d0
		move.w	d0,18(a0)	; Plane 2 high
		rts


Swap_Old_New_Planes	
		;-----------------------------------------------
		; Swaps 3 long word from OldPlanes/NewPlanes
		;
		; a0,a1,d7 <= Trash

		move.l	#(3)-1,d7	
		lea	OldPlanes,a0
		lea	TmpPlanes,a1
Swap_Old_Temp
		move.l	(a0)+,(a1)+
		dbra	d7,Swap_Old_Temp

		move.l	#(3)-1,d7
		lea	NewPlanes,a0
		lea	OldPlanes,a1
Swap_Old_New
		move.l	(a0)+,(a1)+
		dbra	d7,Swap_Old_New

		move.l	#(3)-1,d7
		lea	TmpPlanes,a0
		lea	NewPlanes,a1
Swap_Tmp_New
		move.l	(a0)+,(a1)+	
		dbra	d7,Swap_Tmp_New
		rts

;============>> Blitter Image Code <<======================================

Update_Object	;--------------------------------------------
		; a4  => Object Structure to update
		; a5  == Hardware Registers ($dff000)
		;
		; d0-d7/a0-a3  <= Invalid.
		;
		; This routine will re-plot an object, and reset it's
		; x/y co-ords.

		move.w	Obj_xpos(a4),d0
		move.w	Obj_ypos(a4),d1
		move.w	Obj_dx(a4),d2
		move.w	Obj_dy(a4),d3
		add.w	d2,d0			; x = x + dx
		add.w	d3,d1			; y = y + dy
		add.w	#1,d3			; Add gravity to dy
		cmp.w	#Lowest_Floor,d1
		blt	UO_NoBounce1

		sub.w	#1,d3
		bcc	UO_NoSmallBounce
		move.w	#1,d3
UO_NoSmallBounce
		neg.w	d3			; reverse direction dy
		move.w	#Lowest_Floor,d1
UO_NoBounce1
		cmp.w	#Right_Side,d0		; | ie 	d0 > 0200
		blt	UO_NoBounce2		; | ie  d0 = 0203
		sub.w	#Right_Side,d0		; | ie	d0 = 0003
		neg.w	d0			; | ie	d0 = FFFD
		add.w	#Right_Side,d0		; | ie	d0 = 0197 
		neg.w	d2	;Reverser dirct.  \  and looks like a bounce
UO_NoBounce2
		btst	#15,d0			; ie	d0 < 0
		beq	UO_NoBounce3		; ie	d0 = FFFD
		neg.w	d0			; ie	d0 = 0003
		neg.w	d2	; Reverse Direction
UO_NoBounce3
		move.w	d0,Obj_xpos(a4)
		move.w	d1,Obj_ypos(a4)		
		move.w	d2,Obj_dx(a4)
		move.w	d3,Obj_dy(a4)


UO_PlotObject	;-----> Plot new object <---------------------------------
		move.w	Obj_xpos(a4),d0
		move.w	Obj_ypos(a4),d1
		mulu	#320/8,d1
		move.l	d1,UO_Addr_Offset	; add on y*40
		lsr.w	#4,d0
		add.w	d0,d0
		add.l	d0,UO_Addr_Offset	; add on 2*int(x/16)

		lea	Ball_Bob,a1	;pointer to bitplane data
		move.l	#124,d6	        ;size of 1 bitplane of image in BYTES!

		;------------ Now do the funky stuff -------------------------
		lea	Ball_Bob.MASK,a2
		move.w	#3-1,d7			; bitplane counter
		lea	NewPlanes,a3

UO_PlaneNumb	
		move.l	(a3)+,a0
		add.l	UO_Addr_Offset,a0

UO_WaitBlitter2	btst	#6,DMACONR(a5)		; blitter done?
		bne.s	UO_WaitBlitter2		; no, wait for it

		move.l	a0,BLTCPT(a5)		; bgnd and destination
		move.l	a0,BLTDPT(a5)		; bitplane pointers
		move.l	a1,BLTBPT(a5)		; ptr to image data
		move.l	a2,BLTAPT(a5)		; ptr to mask data

		move.w	#-2,BLTAMOD(a5)		
		move.w	#-2,BLTBMOD(a5)		

		move.w	#(320/8)-6,BLTCMOD(a5)	; C, D moduli equals
		move.w	#(320/8)-6,BLTDMOD(a5)	; 40-(cols width in bytes)

		move.l	#$ffff0000,BLTAFWM(a5)	

		moveq	#0,d0
		move.w	Obj_xpos(a4),d0
		and.w	#%1111,d0		; frac(x/16)

		rol.w	#4,d0
		move.w	d0,d1
		or.w	#%1111,d0		; and in USEx bits!
		rol.w	#8,d0			; put in proper place
		or.b	#$CA,d0			; put in minterm bits

		move.w	d0,BLTCON0(a5)		; save BLTCON0 control word
		rol.w	#8,d1			; proper place
		move.w	d1,BLTCON1(a5)
		move.w	#$07C3,BLTSIZE(a5)

UO_NextDest	

		add.l	d6,a1			; next image bitplane
		dbra	d7,UO_PlaneNumb

		rts

Clear_Planes
		;------------ Clear Old Area ------------------------------
		;
		; Clears Old Planes.
		;
		; a0-a4,d7 <= Trash

USED=$100

		moveq	#3-1,d7
		lea	OldPlanes,a3
UO_ClearArea
		btst	#6,DMACONR(a5)		; Is blitter ready ?
		bne	UO_ClearArea		; No. Wait for it...
			
		move.w	#0,BLTDMOD(a5)		; Nor you.
		move.l	(a3)+,a0
		move.l	a0,BLTDPT(a5)		; Tell it screen Addr.
		move.w	#0,BLTDMOD(a5)		; Don't skip bits
		move.w	#USED,$40(a5)		; Just output to D
		move.w	#0,BLTCON1(a5)		; and no wise moves.
		move.w	#$4014,BLTSIZE(a5)	; 256 * 40 (bytes) scrn
		dbra	d7,UO_ClearArea

		rts

UO_Addr_Offset	dc.l	0		; Address offset from x * y

;==========>> Data Area <<==================================================

Object_1	;=============================================================
		dc.w	32,53		;  x / y   - position NOW
		dc.w	-3,1		; dx / dy  - velocity
 
Object_2	;=============================================================
		dc.w	132,62		;  x / y   - position NOW
		dc.w	2,-1		; dx / dy  - velocity

Object_3	;=============================================================
		dc.w	232,42		;  x / y   - position NOW
		dc.w	3,1		; dx / dy  - velocity

Object_4	;=============================================================
		dc.w	2,20		;  x / y   - position NOW
		dc.w	-5,1		; dx / dy  - velocity

Object_5	;=============================================================
		dc.w	60,80		;  x / y   - position NOW
		dc.w	1,-1		; dx / dy  - velocity
 
Object_6	;=============================================================
		dc.w	50,75		;  x / y   - position NOW
		dc.w	6,1		; dx / dy  - velocity
 
Object_7	;=============================================================
		dc.w	90,24		;  x / y   - position NOW
		dc.w	3,-1		; dx / dy  - velocity
 
Object_8	;=============================================================
		dc.w	20,93		;  x / y   - position NOW
		dc.w	-3,1		; dx / dy  - velocity
 
Object_9	;=============================================================
		dc.w	100,10		;  x / y   - position NOW
		dc.w	-8,1		; dx / dy  - velocity
 
Object_A	;=============================================================
		dc.w	60,130		;  x / y   - position NOW
		dc.w	3,-2		; dx / dy  - velocity

_GfxBase	dc.l	0
gfxname		dc.b	'graphics.library',0
		even

Copper_1	dc.l	0

OldPlanes	dc.l	0,0,0,0
NewPlanes	dc.l	0,0,0,0
TmpPlanes	dc.l	0,0,0,0

		SECTION	MY_COPPER,CODE_C

Copper		dc.l	$01fc0000,$01060000
		dc.l	$01200000,$01220478
		dc.l	$01240000,$01260478,$01280000,$012A0478
		dc.l	$012C0000,$012E0478,$01300000,$01320478
		dc.l	$01340000,$01360478,$01380000,$013A0478
		dc.l	$013C0000,$013E0478
Cop_Colors	dc.l	$01820A00,$01840500,$01860600		; Colors   1,2,3
	 	dc.l	$01880611,$018A0811,$018C0300,$018E0FC8	; Colors 4,5,6,7
 		dc.l	$01900303,$01920a00,$01940500,$01960600	; Colors 8,9,a,b
		dc.l	$01980611,$019a0811,$019c0300,$019e0fc8	; Colors c,d,e,f


;Bar one
		dc.l $01800111,$2901fffe
		dc.l $01800a0a,$2a01fffe
		dc.l $0180011f,$2b01fffe,$01800000

		dc.l $008E057C,$01000200,$01040024
		dc.l $009040BC,$00920030,$009400C8,$010200BB
		dc.l $01080000,$010A0000

Planes		dc.l $00E00006,$00E20000
		dc.l $00E40006,$00E62800
		dc.l $00E80006,$00Ea5000
		dc.l $00EC0000,$00EE0000


		dc.l $2c01fffe,$01003200	; 3 Bit Planes
		dc.l $6001fffe,$01004200	; 4 Bit Planes (Damage Piccy)
		dc.l $c001fffe,$01003200	; 3 Bit Planes

		dc.l $FFDFFFFE
;Bar Two
		dc.l $01800000,$1401fffe
		dc.l $0180011f,$1501fffe
		dc.l $01800a0a,$1601fffe,$01800111

		dc.l $2B01FFFE,$01000200	; No Bit Planes Thanx 
		dc.l $FFFFFFFE			; End Of CopperList.



Ball_Bob	;=============================================================
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$003F,$8000
 DC.W $00C1,$E000,$017C,$E000,$02FE,$3000,$05FF,$5400
 DC.W $07FF,$1800,$0BFE,$AC00,$03FF,$1A00,$0BFE,$AC00
 DC.W $11FF,$1A00,$197D,$2C00,$0EAA,$1A00,$1454,$DC00
 DC.W $0E81,$3800,$0154,$F400,$02EB,$F000,$015F,$D000
 DC.W $00B5,$A000,$002A,$8000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000

 DC.W $000F,$E000,$007F,$FC00,$01FF,$FF00,$03FF,$FF80
 DC.W $07C1,$FFC0,$0F00,$FFE0,$1E00,$3FF0,$3C40,$5FF8
 DC.W $3CE0,$1FF8,$7840,$2FFC,$7800,$1FFC,$7800,$2FFC
 DC.W $F800,$1FFE,$F800,$2FFE,$FE00,$1FFE,$FC00,$DFFE
 DC.W $FE81,$3FFE,$FF54,$FFFE,$FFEB,$FFFE,$7FFF,$FFFC
 DC.W $7FFF,$FFFC,$7FFF,$FFFC,$3FFF,$FFF8,$3FFF,$FFF8
 DC.W $1FFF,$FFF0,$0FFF,$FFE0,$07FF,$FFC0,$03FF,$FF80
 DC.W $01FF,$FF00,$007F,$FC00,$000F,$E000

 DC.W $000F,$E000,$007F,$FC00,$01E0,$7F00,$0380,$0F80
 DC.W $073E,$0AC0,$0CFF,$0560,$198F,$C2F0,$3347,$A0B8
 DC.W $32EB,$E158,$6647,$D0AC,$660B,$E05C,$4757,$D0AC
 DC.W $C7AF,$E05E,$A7FF,$D02E,$C1FF,$E05E,$A3FF,$202E
 DC.W $D17E,$C05E,$E0AB,$002E,$D014,$005E,$6800,$00AC
 DC.W $7000,$02DC,$7400,$057C,$2800,$0AF8,$3680,$55F8
 DC.W $1D54,$AAF0,$0EAB,$55E0,$0754,$ABC0,$03EB,$FF80
 DC.W $01FE,$FF00,$007F,$FC00,$000F,$E000

Ball_Bob.MASK
 DC.W $000F,$E000,$007F,$FC00,$01FF,$FF00,$03FF,$FF80
 DC.W $07FF,$FFC0,$0FFF,$FFE0,$1FFF,$FFF0,$3FFF,$FFF8
 DC.W $3FFF,$FFF8,$7FFF,$FFFC,$7FFF,$FFFC,$7FFF,$FFFC
 DC.W $FFFF,$FFFE,$FFFF,$FFFE,$FFFF,$FFFE,$FFFF,$FFFE
 DC.W $FFFF,$FFFE,$FFFF,$FFFE,$FFFF,$FFFE,$7FFF,$FFFC
 DC.W $7FFF,$FFFC,$7FFF,$FFFC,$3FFF,$FFF8,$3FFF,$FFF8
 DC.W $1FFF,$FFF0,$0FFF,$FFE0,$07FF,$FFC0,$03FF,$FF80
 DC.W $01FF,$FF00,$007F,$FC00,$000F,$E000



Damage_Bin		; 320 * 100 1 Bitplane
 dc.b 0
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0001,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0400,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0400
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$3000,$0000
 DC.W $0000,$0000,$0000,$0100,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $2000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$4000,$0000,$0000
 DC.W $0000,$0000,$0000,$0180,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0040,$0000,$0000,$0000,$0007,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$4000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0002,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0401,$6000,$0000,$0400,$0000,$0000,$0000,$0000
 DC.W $0000,$0050,$0000,$0000,$0000,$0000,$2000,$0000
 DC.W $4000,$0000,$0000,$0000,$080A,$3000,$1C00,$0C00
 DC.W $0000,$0000,$0000,$0000,$0000,$0020,$0000,$0000
 DC.W $0008,$0000,$6000,$0000,$2FEC,$0000,$0000,$0000
 DC.W $181F,$DC00,$3E07,$FB40,$0000,$0000,$0000,$0000
 DC.W $0000,$0020,$0000,$0000,$021C,$0001,$FC00,$0000
 DC.W $8FFE,$0000,$F001,$8000,$101C,$FF00,$3FFF,$EEE0
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0438,$8003,$7EF0,$4000,$DFF7,$8001,$FC03,$0000
 DC.W $003F,$FF88,$3FFF,$F8D6,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0600,$0000,$027D,$4001,$FFF8,$0000
 DC.W $3FFB,$0011,$FF80,$0000,$007F,$FFC0,$DFFF,$EA5F
 DC.W $C000,$0000,$0000,$0000,$0000,$0C00,$7600,$0000
 DC.W $0019,$4000,$FEF8,$0000,$7FFF,$0001,$FFC0,$0000
 DC.W $00FF,$FFC0,$5FFF,$FEFF,$B800,$0000,$0000,$0000
 DC.W $0000,$1C0E,$3600,$0000,$0007,$8800,$FC7D,$0000
 DC.W $7FEB,$0083,$FFC0,$0000,$40FF,$FFD0,$1FFF,$FFDF
 DC.W $FC00,$0000,$0000,$0000,$0000,$1B4E,$7C00,$0000
 DC.W $000F,$DC04,$7E7E,$0000,$FFF7,$0003,$FFC0,$0000
 DC.W $08FE,$DFE0,$3FFF,$EC5F,$F800,$0000,$0000,$0000
 DC.W $0000,$7346,$0800,$0000,$02BF,$FC00,$FFFE,$0001
 DC.W $FFFF,$0007,$FFC0,$0000,$046F,$BFF8,$3FFF,$E9BF
 DC.W $FC00,$0000,$0000,$0000,$0006,$B786,$0E00,$0000
 DC.W $033F,$FC00,$FEE4,$0000,$7FFF,$0007,$FFE0,$0000
 DC.W $1385,$BFF8,$3FFF,$F47F,$FE00,$0000,$0000,$0000
 DC.W $0004,$6FD3,$1F80,$0000,$003F,$FC00,$FFFE,$1001
 DC.W $7FFF,$0005,$FFE0,$0000,$0277,$FFF8,$3FFF,$F7FF
 DC.W $FF00,$0000,$0000,$0000,$0007,$7FCB,$FFE0,$0000
 DC.W $001E,$BE00,$FFFB,$8000,$5FFF,$800F,$FFE0,$0000
 DC.W $047F,$FFFC,$3FFF,$EB7F,$FF00,$0000,$0000,$0000
 DC.W $0003,$FFE1,$FFF0,$0008,$003F,$6E00,$FFFF,$8001
 DC.W $4FFD,$001F,$FDF0,$0000,$086D,$FFFC,$3FFE,$1BFF
 DC.W $FF00,$0000,$0000,$0000,$0003,$FBC8,$FFF8,$0004
 DC.W $00FF,$FE00,$7FFF,$8000,$0FFE,$800F,$FB38,$0000
 DC.W $0B4F,$FDBC,$3FFC,$3ABF,$FE00,$0000,$0000,$0000
 DC.W $0003,$FDF1,$FFFC,$0000,$00FF,$FE00,$3FFF,$8001
 DC.W $5DFF,$000F,$FDF0,$0000,$075F,$FBFC,$3FFC,$33FF
 DC.W $F000,$0000,$0000,$0000,$0003,$F9F2,$FFFE,$0000
 DC.W $00FF,$FE00,$7FFF,$8003,$CDDF,$001F,$FFA0,$0200
 DC.W $07AF,$7BFC,$3FFC,$07E0,$0000,$0000,$0000,$0000
 DC.W $0003,$F9E8,$7FFF,$0000,$01FF,$FE00,$FFFF,$C005
 DC.W $D1FF,$001F,$FFE0,$1200,$0EAE,$7FFC,$3FFC,$0E20
 DC.W $0200,$0000,$0000,$0000,$0003,$FBF1,$3FFF,$8000
 DC.W $01FF,$FE00,$FFFF,$C001,$28D9,$401F,$EFF8,$5000
 DC.W $0EEC,$FFFC,$3FFC,$1804,$0600,$0000,$0000,$0000
 DC.W $0003,$FFF0,$1FFF,$C000,$01DF,$FF00,$FFFF,$C003
 DC.W $A06F,$803F,$FBE8,$0400,$1B1F,$FFFC,$3FFC,$1012
 DC.W $0000,$0000,$0000,$0000,$0003,$FFF0,$0FFF,$E000
 DC.W $018F,$FF00,$FFFF,$E003,$F9FB,$803F,$FFE8,$0000
 DC.W $0B7F,$7FFC,$3FF8,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FFC5,$0FFF,$C000,$05DF,$FF00,$BBFF,$E007
 DC.W $FC87,$811F,$FE42,$0000,$9F47,$DFFC,$3FF0,$0020
 DC.W $0000,$0000,$0000,$0000,$0003,$FFC0,$07FF,$E000
 DC.W $07FF,$FF00,$FFFF,$E007,$FE80,$008D,$47A0,$0000
 DC.W $7F49,$FFFC,$3FF0,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FFC0,$07FF,$E200,$0A7F,$FE02,$F7FF,$C007
 DC.W $FF80,$811A,$658B,$4000,$3F00,$FFF8,$3FFA,$0000
 DC.W $0000,$0000,$0000,$0000,$0003,$FFC0,$87FF,$E000
 DC.W $031F,$FC80,$BFFF,$E007,$FFF0,$8065,$2F0B,$0000
 DC.W $7FB7,$7FF8,$3FFE,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FFC0,$03FF,$F000,$0F3F,$FE04,$FFFF,$F80F
 DC.W $FFF8,$8071,$BC75,$8000,$FBFF,$FFF0,$3FF8,$0000
 DC.W $0000,$0000,$0000,$0000,$0003,$FFC0,$027F,$F000
 DC.W $0B17,$FF02,$FFFF,$480F,$FFFB,$0054,$36F3,$8000
 DC.W $FFF5,$E964,$77F8,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FFCC,$027F,$B000,$3ED1,$FFE0,$FFFA,$084F
 DC.W $FFF8,$0003,$F9FF,$8000,$FF9A,$A182,$3FF8,$0000
 DC.W $0010,$0000,$0000,$0000,$0003,$FFF4,$037D,$1800
 DC.W $0BD2,$FF80,$FFFD,$CCAF,$FFFC,$0007,$FFFF,$8001
 DC.W $FDF8,$1604,$3FB8,$4000,$0000,$0000,$0000,$0000
 DC.W $0003,$FF07,$03FD,$B800,$3FD7,$7F80,$F7FF,$A51F
 DC.W $FFFC,$000F,$FFFF,$8001,$FFF0,$E080,$3F98,$8400
 DC.W $0000,$0000,$0000,$0000,$0003,$FFE7,$01DD,$F800
 DC.W $7FB7,$FF80,$FFFF,$F10F,$FFFD,$000F,$FFFF,$8003
 DC.W $FFF0,$1000,$3FFD,$8000,$0000,$0000,$0000,$0000
 DC.W $0003,$FEE8,$01E7,$F800,$7FD0,$5F80,$F9FF,$443F
 DC.W $FFFF,$000F,$FFFF,$8003,$FFE2,$9000,$7FFF,$4838
 DC.W $0000,$0000,$0000,$0000,$0007,$FEF0,$01FF,$F800
 DC.W $7FFD,$0FC0,$FFFF,$D86F,$FFFF,$200F,$FFDF,$C003
 DC.W $FFE4,$0000,$7FFF,$7C2A,$0000,$0000,$0000,$0000
 DC.W $0003,$FE5C,$01FF,$F800,$7FFE,$4FC0,$FFFF,$927F
 DC.W $FFFF,$001F,$FDEF,$C007,$FFC8,$0007,$7FFF,$5008
 DC.W $0000,$0000,$0000,$0000,$0001,$FFF2,$01FF,$F802
 DC.W $7FEC,$47C0,$FFFD,$1727,$FFFF,$041F,$FDFF,$C007
 DC.W $FFD8,$000F,$FFFF,$C40C,$0000,$0000,$0000,$0000
 DC.W $0011,$FFD0,$01FF,$F830,$FFED,$83C0,$EFFD,$B77F
 DC.W $FFFF,$021F,$FBFF,$C007,$FFC0,$000F,$6FFF,$77AA
 DC.W $0000,$0000,$0000,$0000,$0003,$FFC0,$01FF,$F810
 DC.W $7FED,$F950,$F7DF,$CE3F,$FFFF,$005F,$FA7F,$C02F
 DC.W $FF90,$0017,$FDFF,$B7EB,$F000,$0000,$0000,$0000
 DC.W $0003,$FFC0,$01FF,$F820,$BFF5,$F828,$FBDF,$CFFF
 DC.W $FFFF,$004F,$FFFF,$C069,$FFD0,$0003,$1BFE,$FFFF
 DC.W $F000,$0000,$0000,$0000,$0003,$FFA0,$01FF,$F808
 DC.W $7FC7,$F990,$FFC3,$CFBF,$FFFF,$002F,$FEFF,$C00F
 DC.W $FF4C,$2384,$7FFF,$3FFF,$F000,$0000,$0000,$0000
 DC.W $0003,$FFA0,$01FF,$F803,$FFCF,$FE80,$FFE1,$477F
 DC.W $FFFF,$0187,$FAFF,$E01F,$FF00,$07DE,$FFFF,$F7FF
 DC.W $F000,$0000,$0000,$0000,$0003,$FEA0,$03FF,$F801
 DC.W $FFC7,$FB00,$FF80,$C7FF,$DFFF,$0087,$FCFF,$E01D
 DC.W $FF80,$1DDE,$7FFF,$DFFF,$F000,$0000,$0000,$0000
 DC.W $0003,$FF40,$03FF,$F803,$FFD7,$FF00,$F701,$37FE
 DC.W $FFFF,$8003,$FEFF,$E01B,$FD28,$D88F,$7FFF,$1FFF
 DC.W $F000,$0000,$0000,$0000,$0003,$FFC0,$03FF,$F807
 DC.W $FFBB,$FD00,$1F00,$B7FF,$5FFF,$9859,$F47F,$F01F
 DC.W $FE00,$59D3,$7FF9,$3FFF,$E000,$0000,$0000,$0000
 DC.W $0003,$FFC0,$03FF,$F802,$FF9F,$BF00,$3FE0,$3FFF
 DC.W $EFFD,$085B,$F07F,$181F,$FC00,$0FFF,$7FF9,$2FFF
 DC.W $0000,$0000,$0000,$0000,$0003,$FFC0,$07FF,$F003
 DC.W $FF9B,$FF00,$FDF0,$1DFF,$EF7A,$1061,$F37F,$F01F
 DC.W $FF0B,$BFDF,$77F8,$9F00,$0000,$0000,$0000,$0000
 DC.W $0003,$FFC0,$07FB,$E407,$EF81,$FF00,$39C2,$0FFF
 DC.W $CF7F,$403B,$E07F,$F83F,$FE67,$E3BF,$7FF9,$0000
 DC.W $0000,$0000,$0000,$0000,$0003,$FFA0,$0FFF,$F007
 DC.W $FF03,$F381,$4180,$6FFF,$CFFB,$0033,$FFFF,$F03F
 DC.W $FFD7,$F3DF,$37F8,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FF70,$07F7,$F407,$DFFE,$FF80,$6990,$0FFF
 DC.W $CFAE,$007D,$FFFF,$F03F,$FD4F,$FAFF,$07F8,$0000
 DC.W $0000,$0000,$0000,$0000,$0003,$FFE0,$03FB,$2007
 DC.W $CFF9,$FF81,$0AE0,$0FFF,$8FDD,$007F,$FFFF,$F03F
 DC.W $FC9F,$A7DF,$1BF8,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FDC0,$05FB,$800F,$EFBF,$FF83,$8340,$3FFF
 DC.W $8F89,$00F9,$7FFF,$F01F,$FC7F,$F3FE,$E7F8,$0000
 DC.W $0000,$0000,$0000,$0000,$0003,$FF60,$09D7,$E00F
 DC.W $FFFF,$FF81,$A060,$1FFF,$0FC7,$00F3,$70FF,$F11F
 DC.W $FC03,$FBFF,$67F8,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FF18,$1DEF,$E00F,$FFFF,$FF81,$B840,$37FF
 DC.W $0F43,$00FF,$7EFF,$F09F,$FC01,$F6FA,$4FF8,$0000
 DC.W $0000,$0000,$0000,$0000,$0003,$FEC8,$0AFF,$E00F
 DC.W $FFFB,$FF81,$D000,$0FFE,$0D11,$00EB,$7C7F,$FC4F
 DC.W $FC04,$35FC,$27F8,$0000,$0000,$0000,$0000,$0000
 DC.W $0006,$FF80,$13FF,$C01F,$FFF7,$FFC1,$F600,$19FA
 DC.W $0EFD,$01FD,$FEFF,$FC3F,$FC80,$357E,$1BF8,$0000
 DC.W $0000,$0000,$0000,$0000,$0008,$F040,$39FF,$801F
 DC.W $FEFF,$FFC1,$F700,$46FC,$0405,$01FD,$F43F,$FC3F
 DC.W $F000,$7CFC,$2FF8,$0000,$0000,$0000,$0000,$0000
 DC.W $000F,$CBC0,$38FF,$0017,$FDE1,$FFC1,$FB80,$07D2
 DC.W $1D3F,$01FF,$983F,$FC3F,$E000,$7EF8,$1FF8,$0000
 DC.W $0000,$0000,$0000,$0000,$000D,$5040,$7E7F,$0403
 DC.W $FC81,$FFC1,$FFC0,$0FFC,$041F,$05FF,$3C3F,$FC7F
 DC.W $F000,$78F8,$3FF8,$2000,$0000,$0000,$0000,$0000
 DC.W $0010,$1500,$79BE,$052F,$FDC1,$FFC1,$FFA0,$03F8
 DC.W $083F,$07FC,$081F,$F83F,$F800,$FFD0,$3FFC,$2000
 DC.W $0000,$0000,$0000,$0000,$0020,$0580,$FEFE,$012F
 DC.W $F880,$FFC1,$FFE0,$03F0,$107F,$07FE,$201F,$F87F
 DC.W $F800,$FED0,$3DFC,$4200,$0000,$0000,$0000,$0000
 DC.W $0020,$1B80,$7CFC,$04AB,$F800,$FFC1,$FFE0,$0000
 DC.W $24FF,$03FE,$801F,$FDEF,$F801,$FE40,$37FC,$8200
 DC.W $0020,$0000,$0000,$0000,$0000,$7F81,$FEFC,$04C7
 DC.W $F980,$FFE1,$FF80,$0000,$53FF,$03FF,$905F,$FDF7
 DC.W $F801,$FF20,$3FF8,$1400,$0000,$0000,$0000,$0000
 DC.W $0061,$FF80,$7AD0,$050A,$7801,$7FE1,$FF90,$0000
 DC.W $0FFF,$07FF,$88FF,$FD27,$F003,$FF20,$39D8,$0800
 DC.W $0000,$0000,$0000,$0000,$0029,$FF80,$7FC8,$0001
 DC.W $F802,$7FE1,$FE80,$0000,$2DFF,$27FF,$805F,$F80F
 DC.W $F803,$FFB0,$3FD2,$81FF,$8000,$0000,$0000,$0000
 DC.W $0007,$FF82,$7AD8,$0001,$F800,$FFE1,$FED0,$0000
 DC.W $0FFF,$47FF,$800F,$FC07,$FC07,$FF90,$3FA6,$0FFF
 DC.W $F800,$0000,$0000,$0000,$0317,$FF83,$FBD8,$000E
 DC.W $7900,$7FE1,$FEC0,$0200,$27FF,$0FFF,$000F,$FE0F
 DC.W $FC0F,$FF90,$3F3D,$1FFF,$FE00,$0000,$0000,$0000
 DC.W $0387,$FF8E,$EF00,$2003,$1000,$7FF1,$FFC0,$0400
 DC.W $0FFF,$0FFF,$000F,$FE07,$FE3F,$FFD0,$3F68,$7FFF
 DC.W $FF00,$0000,$0000,$0000,$004F,$FF8F,$6F80,$000E
 DC.W $4000,$7FF1,$FFE0,$0000,$0FFF,$0FFF,$000F,$FE07
 DC.W $FFFF,$FFE0,$1E99,$FFFF,$FF00,$0000,$0000,$0000
 DC.W $0007,$FF9F,$DF00,$000E,$4800,$7FF1,$FFE0,$0000
 DC.W $0FFF,$0FFF,$000F,$FC83,$7FFF,$FFC4,$1D92,$FFFF
 DC.W $FF00,$0000,$0000,$0000,$000D,$7FFF,$5F00,$000F
 DC.W $C000,$7FF1,$FF80,$0000,$9FFF,$0FFF,$8006,$FE00
 DC.W $3FFF,$FF86,$0209,$FFFF,$FE00,$0000,$0000,$0000
 DC.W $0007,$FFFF,$7600,$000F,$C008,$3FF1,$FFA0,$0000
 DC.W $1FFF,$0FFE,$0007,$FC01,$3FFF,$FF20,$0503,$7BFF
 DC.W $FC00,$0000,$0000,$0000,$0007,$FFFF,$6CA0,$000B
 DC.W $EE00,$3FF9,$FF90,$0000,$0FFF,$1FFE,$0007,$FE81
 DC.W $4FFF,$FE30,$0491,$FFFF,$B000,$0000,$0000,$0000
 DC.W $0007,$FFFF,$B000,$001F,$F340,$3FF9,$FFC0,$0000
 DC.W $0FFF,$9FFE,$0087,$FF80,$5FFF,$7800,$05E3,$FFFF
 DC.W $0000,$0000,$0000,$0000,$0007,$FFFF,$8000,$001F
 DC.W $C040,$3FF8,$FFC0,$0000,$0FF9,$9FFC,$0005,$FF00
 DC.W $A0FF,$1000,$020F,$FFF8,$0000,$0000,$0000,$0000
 DC.W $0207,$FFFF,$8000,$001F,$C8A0,$3FF8,$0F80,$0000
 DC.W $0FFE,$9FFE,$0001,$FE01,$4000,$4000,$03DF,$C400
 DC.W $0000,$0000,$0000,$0000,$0707,$FFFF,$C000,$001F
 DC.W $D800,$1FF0,$0000,$0000,$0FFE,$3FFF,$0000,$0000
 DC.W $0001,$5000,$03A6,$0000,$0000,$0000,$0000,$0000
 DC.W $0007,$FFFF,$E080,$003F,$9408,$0000,$0000,$0000
 DC.W $0FFC,$3FF6,$0000,$0000,$0000,$1800,$0090,$0000
 DC.W $0000,$0000,$0000,$0000,$0007,$FFFF,$C010,$003F
 DC.W $C000,$0000,$0000,$0000,$07FF,$3FF2,$0000,$0000
 DC.W $0400,$1020,$0180,$0000,$0000,$0000,$0000,$0000
 DC.W $0007,$FFFF,$0020,$003F,$FD00,$0000,$0000,$0000
 DC.W $003E,$1FF4,$0000,$0000,$0000,$0070,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0007,$FFFC,$0000,$001F
 DC.W $F200,$0000,$0000,$0000,$0000,$0FF8,$0000,$0000
 DC.W $0000,$0020,$2000,$0000,$0000,$0000,$0000,$0000
 DC.W $0003,$FF80,$0200,$000F,$F000,$0000,$0000,$0000
 DC.W $0000,$03F0,$0000,$0000,$0000,$0000,$0080,$0000
 DC.W $0000,$0000,$0000,$0000,$0400,$FFD0,$0000,$0003
 DC.W $F000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0800,$0010,$8000,$0000,$0000,$0000
 DC.W $0000,$0020,$0000,$0000,$3008,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0024
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0004,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0010,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0800,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0020
 DC.W $0000,$0000,$0000,$0000,$1400,$0000,$0000,$0002
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0060,$0000
 DC.W $0000,$0000,$0000,$0004,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0040
 DC.W $0008,$0000,$0000,$0000,$0400,$0000,$0000,$0002
 DC.W $0000,$0000,$0000,$0000,$0100,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0020,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0058,$0000,$8000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$6000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$2000
 DC.W $0000,$0000,$6000,$0000,$0000,$0000,$0000,$0000

;----------)) Blitter Object Definition Area ((----------------------------

		rsreset
Obj_xpos	rs.w	1	; Possition it is in now. 
Obj_ypos	rs.w	1	; Calculated with ....
Obj_dx		rs.w	1	;  x = x + dx
Obj_dy		rs.w	1	;  y = y + dy 

		end
