test:
move.l	#copl,$dff080

moveq	#0,d6
moveq	#0,d3
moveq	#0,d4

EEkItsaloop:
cmp.b	#255,$dff006
bne.s	EEkItsaloop

move.w	#$fff,$dff180

moveq	#3,d5
All4:
cmp.w	#360,d6
blt.s	NoRe
sub.w	#360,d6
NoRe:
lea	Rad20,a2
bsr	EraseOn
add.w	#90,d6
dbf	d5,All4

move.w	SaveD6,d6

add.w	#45,d6

moveq	#3,d5
All4E1:
cmp.w	#360,d6
blt.s	NoRe2
sub.w	#360,d6
NoRe2:
lea	Rad14,a2
bsr	EraseOn
add.w	#90,d6
dbf	d5,All4E1

moveq	#0,d3
moveq	#0,d4
bsr	EnterErase

move.w	SaveD6,d6
add.w	#90,d6

cmp.w	#360,d6
blt.s	NoRes3
sub.w	#360,d6
NoRes3:
lea	Rad10,a2
bsr	EraseOn

move.w	SaveD6,d6
add.w	#90,d6

moveq	#1,d5
Rad5L:
cmp.w	#360,d6
blt.s	NoRes4
sub.w	#360,d6
NoRes4:
lea	Rad5,a2
bsr	EraseOn
add.w	#180,d6
dbf	d5,Rad5L

move.w	SaveD6,d6
add.w	#225,d6

moveq	#1,d5
All4E5:
cmp.w	#360,d6
blt.s	NoRes7
sub.w	#360,d6
NoRes7:
st	SfFl
lea	Rad14,a2
bsr	EraseOn
sf	SfFl
add.w	#90,d6
dbf	d5,All4E5

move.w	SaveD6,d6
addq.w	#4,d6
cmp.w	#360,d6
blt.s	NoReset
sub.w	#360,d6
NoReset:
move.w	d6,saveD6

moveq	#3,d5
All4E:
cmp.w	#360,d6
blt.s	NoRes1
sub.w	#360,d6
NoRes1:
lea	Rad20,a2
bsr	PlaceOn
add.w	#90,d6
dbf	d5,All4E

move.w	SaveD6,d6
add.w	#45,d6

moveq	#3,d5
All4E2:
cmp.w	#360,d6
blt.s	NoRes2
sub.w	#360,d6
NoRes2:
lea	Rad14,a2
bsr	PlaceOn
add.w	#90,d6
dbf	d5,All4E2

move.w	SaveD6,d6
add.w	#90,d6

cmp.w	#360,d6
blt.L	NoRes5
sub.w	#360,d6
NoRes5:
lea	Rad10,a2
bsr	PlaceOn

moveq	#0,d4
moveq	#0,d3
bsr	EnterDraw

move.w	SaveD6,d6
add.w	#90,d6

moveq	#1,d5
Rad5LE:
cmp.w	#360,d6
blt.s	NoRes6
sub.w	#360,d6
NoRes6:
lea	Rad5,a2
bsr	PlaceOn
add.w	#180,d6
dbf	d5,Rad5LE

move.w	SaveD6,d6
add.w	#225,d6

moveq	#1,d5
All4E8:
cmp.w	#360,d6
blt.s	NoRes8
sub.w	#360,d6
NoRes8:
st	SfFl
lea	Rad14,a2
bsr	PlaceOn
sf	SfFl
add.w	#90,d6
dbf	d5,All4E8

move.w	saveD6,d6

move.w	#$000,$dff180

btst	#6,$bfe001
bne.L	EEKItsaLoop

move.l	4.w,a6
moveq	#0,d0
lea	GraphName,a1
jsr	-552(a6)
move.l	d0,a0
move.l	$26(a0),$dff080
rts

SaveD6:dc.w 0

PlaceOn:
move.w	d6,d7
add.w	#90,d7
cmp.w	#360,d7
blt.s	NoRe4
sub.w	#360,d7
NoRe4:

move.b	(a2,d7),d4			; Y Pos
move.b	(a2,d6),d3			; X Pos
ext.w	d4
ext.w	d3
tst.b	SfFl
beq.s	EnterDraw
asr.w	#1,d4
asr.w	#1,d3
EnterDraw:
add.w	YCenter,d4
add.w	XCenter,d3

lea	BobImage,a0			; Bob
lea	$78000,a1			; BitMap
moveq	#1,d0				; Width
moveq	#3,d1				; Height
moveq	#40,d2				; BM Width in bytes
bsr	PutBobNoSave
rts

EraseOn:
move.w	d6,d7
add.w	#90,d7
cmp.w	#360,d7
blt.L	NoReE
sub.w	#360,d7
NoReE:

move.b	(a2,d7),d4			; Y Pos
move.b	(a2,d6),d3			; X Pos
ext.w	d4
ext.w	d3
tst.b	SfFl
beq.s	EnterErase
asr.w	#1,d4
asr.w	#1,d3
EnterErase:
add.w	YCenter,d4
add.w	XCenter,d3

lea	$78000,a1			; BitMap
moveq	#1,d0				; Width
moveq	#3,d1				; Height
moveq	#40,d2				; BM Width in bytes
bsr	EraseBobNoSave
rts

YCenter:dc.w 100
XCenter:dc.w 100

copl:
dc.l	$01001200,$00e00007,$00e28000,$00920038,$009400d0
dc.l	$008e2c81,$0090f4c1,$fffffffe

GraphName:
dc	"graphics.library",0
even

*********************************************************************
*                                                                   *
*                                                                   *
*     SOME ROUTINES FOR THE HANDLING OF BLITTER OBJECTS (BOBS)      *
*                                                                   *
*      Written By AntiAction of TETRAGON on 18th of July -88.       *
*                                                                   *
*                                                                   *
*********************************************************************

*************************************************
*		      MakeMask			*
*	D7=Depth, D0=WordWidth, D1=Height	*
*      A0-A5 Contains Source BM's, A6=Dest	*
*************************************************

MakeMask:
tst.b	d7
beq.s	MMaskRet			; If 0 Depth, return
bsr	MaskIt
subq.b	#1,d7
beq.s	MMaskRet
move.l	a1,a0
bsr	MaskIt
subq.b	#1,d7
beq.s	MMaskRet
move.l	a2,a0
bsr	MaskIt
subq.b	#1,d7
beq.s	MMaskRet
move.l	a3,a0
bsr	MaskIt
subq.b	#1,d7
beq.s	MMaskRet
move.l	a4,a0
bsr	MaskIt
subq.b	#1,d7
beq.s	MMaskRet
move.l	a5,a0
bsr	MaskIt
MMaskRet:
rts

*********************************
*   A0=Source, A6=Destination	*
*	      D = A+D		*
*********************************

MaskIt:
movem.l	d2-d3,-(a7)
bsr	WaitBlit
move.l	a0,$dff050			; BLTAPT
move.l	a6,$dff054			; BLTDPT
move.l	a6,$dff04c			; BLTBPT
clr.l	$dff064				; The Modulos = 0
clr.w	$dff062
move.l	#-1,$dff044			; Ze masks
move.l	#$0dfc0000,$dff040		; D = A+B
move.w	d1,d2				; Height
asl.w	#6,d2				; Mapped to bits 6-15
ori.w	d0,d2				; Width
move.w	d2,$dff058			; Trigger blit
movem.l	(a7)+,d2-d3
rts

******************************
* Wait for blitter to finish *
******************************

WaitBlit:
btst	#14,$dff002
bne.s	WaitBlit
rts

*********************************************************
*  Put A Bob plane into a bitmap, no background saving	*
*		  or masking with masks			*
*-------------------------------------------------------*
* 	D0=BOBWidth in words, D1=Height in pixels	*
* 	D2=BitMapWidth in bytes.			*
*	D3=Horiz.Position, D4=Vertical Position		*
*	A0=BobData Pointer				*
*	A1=BitMap  Pointer				*
*********************************************************

PutBobNoSave:
movem.l	d0-d7/a0-a6,-(a7)
bsr	WaitBlit
addq.w	#1,d0
swap	d4
move.w	#0,d4			; Used as long later
swap	d4
move.w	d3,d5
asr.w	#4,d5			; Divide by 16 to get word offset.
asl.w	#1,d5			; Multiply with 2 to get byte offset
mulu	d2,d4			; To get byte offset =vertwidth*ypos
add.w	d5,d4			; Total offset
and.w	#15,d3			; Shift value = low 4 bits
add.l	d4,a1			; Calc BitMap pointer

move.l	a0,$dff050		; BLTAPT
move.l	a1,$dff054		; BLTDPT
move.l	a1,$dff04c		; BLTBPT
move.l	#$ffff0000,$dff044	; First and LastWord masks
ror.w	#4,d3			; No.Of shifts
ori.w	#$0dfc,d3		; D=A+B
move.w	d3,$dff040		; BLTCON0
clr.w	$dff042			; BLTCON1
move.w	d2,d3			; BitMapWidth in bytes
asr.w	#1,d3			; Divide by two.
sub.w	d0,d3			; Calculate modulo
asl.w	#1,d3			; Must be even
move.w	d3,$dff062		; BLTBMOD
move.w	d3,$dff066		; BLTDMOD
move.w	#-2,$dff064		; BLTAMOD
lsl.w	#6,d1			; Height is mapped to bits 6-15
ori.w	d0,d1			; Width is mapped to bits 0-5
move.w	d1,$dff058		; BLTSIZE and trigger
movem.l	(a7)+,d0-d7/a0-a6
rts

*********************************************************
*      Erase a bob without restoring the background	*
*-------------------------------------------------------*
* 	D0=BOBWidth in words, D1=Height in pixels	*
* 	D2=BitMapWidth in bytes.			*
*	D3=Horiz.Position, D4=Vertical Position		*
*	A1=BitMap  Pointer				*
*********************************************************

EraseBobNoSave:
movem.l	d0-d7/a0-a6,-(a7)
bsr	WaitBlit
ext.l	d4
addq.w	#1,d0
asr.w	#4,d3			; Divide by 16 to get word offset.
asl.w	#1,d3			; Multiply with 2 to get byte offset
mulu	d2,d4			; To get byte offset =vertwidth*ypos
add.w	d3,d4			; Total offset
add.l	d4,a1			; Calc BitMap pointer

move.l	a1,$dff054		; BLTDPT
move.w	#$0100,$dff040		; D=0
clr.w	$dff042			; BLTCON1
move.w	d2,d3			; BitMapWidth in bytes
asr.w	#1,d3			; Divide by two.
sub.w	d0,d3			; Calculate modulo
asl.w	#1,d3			; Must be even
move.w	d3,$dff066		; BLTDMOD
lsl.w	#6,d1			; Height is mapped to bits 6-15
ori.w	d0,d1			; Width is mapped to bits 0-5
move.w	d1,$dff058		; BLTSIZE and trigger
movem.l	(a7)+,d0-d7/a0-a6
rts

BobImage:
dc.w	%0100000000000000
dc.w	%1110000000000000
dc.w	%0100000000000000

Rad20:
dc.b 0,0,0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6
dc.b 7,7,7,8,8,8,9,9,9,10,10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13
dc.b 13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17
dc.b 17,17,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19
dc.b 19, 19, 19, 19, 19, 19, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19
dc.b 19, 19, 19, 19, 19
dc.b 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17
dc.b 17, 16, 16, 16, 16
dc.b 16, 15, 15, 15, 15, 15, 14, 14, 14, 14, 13, 13, 13, 13, 12, 12
dc.b 12, 12, 11, 11, 11
dc.b 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4
dc.b 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0,-1,-1,-1,-2,-2,-2,-3,-3,-3
dc.b -4,-4,-4,-5,-5,-5,-6,-6,-6,-7,-7,-7,-8,-8,-8,-9,-9,-9,-10,-10,-10
dc.b -11,-11,-11,-11,-12,-12,-12,-13,-13,-13,-13,-14,-14,-14,-14,-15
dc.b -15,-15,-15,-16,-16
dc.b -16,-16,-16,-17,-17,-17,-17,-17,-18,-18,-18,-18,-18,-18,-19,-19
dc.b -19,-19,-19,-19,-19
dc.b -20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20
dc.b -20,-20,-20,-20,-20
dc.b -20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,-20
dc.b -19,-19,-19,-19,-19
dc.b -19,-19,-18,-18,-18,-18,-18,-18,-17,-17,-17,-17,-17,-16,-16,-16
dc.b -16,-16,-15,-15,-15
dc.b -15,-14,-14,-14,-14,-13,-13,-13,-13,-12,-12,-12,-11,-11,-11,-10
dc.b -10,-10,-10,-9,-9
dc.b -9,-8,-8,-8,-7,-7,-7,-6,-6,-6,-5,-5,-5,-4,-4,-4,-3,-3,-3,-2,-2
dc.b -2,-1,-1

Rad14:
dc.b  0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4
dc.b  5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9
dc.b 9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11, 11, 12, 12, 12, 12
dc.b  12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
dc.b  13, 13, 13, 14, 14
dc.b  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13
dc.b  13, 13, 13, 13, 13
dc.b  13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12
dc.b  12, 11, 11, 11, 11
dc.b  11, 11, 11, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8
dc.b  8, 8, 7
dc.b  7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3
dc.b  2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0,-1,-1,-1,-1,-1,-2,-2,-2,-2
dc.b -3,-3,-3,-3,-4,-4,-4,-4,-5,-5,-5,-5,-6,-6,-6,-6,-6,-7,-7,-7,-7
dc.b -8,-8,-8,-8,-8,-9,-9,-9,-9,-9,-10,-10,-10,-10,-10,-11,-11,-11,-11
dc.b -11,-11
dc.b -11,-12,-12,-12,-12,-12,-12,-12,-13,-13,-13,-13,-13,-13,-13,-13
dc.b -14,-14,-14,-14,-14
dc.b -14,-14,-14,-14,-14,-14,-14,-14,-14,-14,-15,-15,-15,-15,-15,-15
dc.b -15,-15,-15,-15,-15
dc.b -15,-15,-15,-15,-15,-15,-14,-14,-14,-14,-14,-14,-14,-14,-14,-14
dc.b -14,-14,-14,-14,-14
dc.b -13,-13,-13,-13,-13,-13,-13,-13,-12,-12,-12,-12,-12,-12,-12,-11
dc.b -11,-11,-11,-11,-11
dc.b -10,-10,-10,-10,-10,-10,-9,-9,-9,-9,-9,-8,-8,-8,-8,-8,-7,-7,-7
dc.b -7,-6
dc.b -6,-6,-6,-6,-5,-5,-5,-5,-4,-4,-4,-4,-3,-3,-3,-3,-2,-2,-2,-2,-1
dc.b -1,-1,-1

Rad10:
dc.b  0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3
dc.b  3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6
dc.b  6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8
dc.b  8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
dc.b  9, 9, 9, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
dc.b  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
dc.b  8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5
dc.b  5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2
dc.b  2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-2,-2,-2
dc.b -2,-2,-2,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-5,-5,-5,-5,-5,-5
dc.b -6,-6,-6,-6,-6,-6,-6,-7,-7,-7,-7,-7,-7,-7,-7,-8,-8,-8,-8,-8,-8
dc.b -8,-8,-8,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-10,-10,-10,-10,-10
dc.b -10,-10
dc.b -10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10
dc.b -10,-10,-10,-10,-10
dc.b -10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10
dc.b -10,-10,-10,-10,-10
dc.b -10,-10,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-8,-8,-8,-8,-8,-8,-8,-8
dc.b -8,-7,-7,-7,-7,-7,-7,-7,-7,-6,-6,-6,-6,-6,-6,-5,-5,-5,-5,-5,-5
dc.b -5,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2,-2,-1,-1
dc.b -1,-1,-1

Rad5:
dc.b  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1
dc.b  1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3
dc.b  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4
dc.b  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
dc.b  4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
dc.b  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
dc.b  4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2
dc.b  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
dc.b  1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1
dc.b -1,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3
dc.b -3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
dc.b -4,-4,-4,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
dc.b -5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
dc.b -5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5
dc.b -5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4,-4,-4,-4,-4,-4,-4,-4
dc.b -4,-4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3
dc.b -3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,-1
dc.b -1,-1,-1

SfFl:dc.w 0
