๙๚๙๚                                        
	bsr	mulu_maker24

	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d3
	moveq	#0,d4
	moveq	#0,d5
	moveq	#0,d6
	moveq	#0,d7

	lea.l	$dff000,a6
	jsr	SetupCopper
	jsr	SetupInterupts
	move.l	#$ffffffff,$dff044
	bsr.w	Matrix

MainLoop:
	cmp.w	#0,VBB
	beq.s	MainLoop
;	btst	#14,$dff002
;	bne.w	.joe
;	move.w	#$900,$dff180
.joe:

	bsr.w	DPclear
	bsr.w	Matrix
	bsr.w	Points

	bsr.w	VCline
	bsr.w	DPfill
	bsr.w	VChide
	bsr.w	pompi
	bsr.b	Swaps

;	move.w	#550,d7
;.loop:	dbf	d7,.loop

.wait:	btst	#14,$dff002
	bne.s	.wait
;	move.w	#$445,$dff180
	move.w	#0,VBB

	btst	#6,$bfe001
	bne.b	MainLoop

Quit:	lea.l	$dff000,a6
	move.l	level3,$6c
	jsr	SetupOldInterupts		;Install Old Interupt
	jsr	SetupOldCopper			;Install Old Copper
Exit:	rts

BlankSprite:		dc.l	0
Level3:		dc.l	0

Interrupt:
	btst	#5,$dff01f
	beq.s	Interrupt
	move.w	#$0020,$dff09c
	move.w	#1,VBB
	rte

VBB:		dc.w	0
IntBlit:	dc.w	0

;---------------------------
swaps:	lea	planes,a0
	move.l	#screen1,d0
	move.l	#screen2,d1
	move.l	#screen3,d2
	moveq	#4-1,d7		;number of planes
	move.w	#24*192,d6

	cmp.l	drawplane,d0
	beq.s	.paa2
	cmp.l	drawplane,d1
	beq.s	.paa3
	move.l	d1,Clearplane
	move.l	d0,Drawplane
	move.l	d2,d0
	bra.s	.loop
.paa2:	move.l	d2,Clearplane
	move.l	d1,Drawplane
	bra.s	.loop
.paa3:	move.l	d0,Clearplane
	move.l	d1,d0
	move.l	d2,Drawplane

.loop:	move.w	d0,6(a0)
	swap	d0
	move.w	d0,2(a0)
	swap	d0
	add.l	d6,d0
	addq.w	#8,a0
	dbf	d7,.loop
	rts

;------------------------------
mulu_maker24:
	lea	mulu_table24(pc),a0
	move.w	#255,d7
	moveq	#0,d6
.loop:
	move.w	d6,d5
	muls.w	#24,d5
	move.w	d5,(a0)+
	addq.w	#1,d6
	dbf	d7,.loop
	rts
	
mulu_table24:	blk.w	256,0

;------------------------------
pompi:	moveq	#0,d0
	lea	gbtab,a0
	addq.w	#2,gbpoint
.bad:	move.w	gbpoint,d1
	move.w	(a0,d1.w),d0
	bpl.s	.bra
	move.w	#0,gbpoint
	bra.s	.bad
.bra:	add.w	#20,d0
	move.b	d0,bounch+2
	add.w	#192,d0
	move.b	d0,bounch+6
	rts

gbpoint:	dc.w	0

gbtab:;	dc.w	50,-1
	dc.w	101,96,91,85,80,75,70,65,60,56,51,47
	dc.w	42,38,34,30,27,23,20,17,14,12,10,8
	dc.w	6,4,3,2,2,1,1,1,2,2,3,4
	dc.w	6,8,10,12,14,17,20,23,27,30,34,38
	dc.w	42,47,51,56,60,65,70,75,80,85,91,96
	dc.w	101
	dc.w	-1
;-------------------------------

DPclear:
	move.l	Drawplane,a0
	lea	$dff000,a6
	moveq	#0,d0

.blit:	btst	#14,2(a6)
	bne.s	.blit
	move.l	#$01000000,$40(a6)
	move.w	d0,$66(a6)
	move.l	a0,$54(a6)
	move.w	#280*64+12,$58(a6)
	rts

clrbase:	blk.l	14,0
;------------------------------

DPfill:
	move.l	Drawplane,a0
	lea	18431(a0),a0
	lea	$dff000,a6
	moveq	#0,d0

.blit:	btst	#14,2(a6)
	bne.s	.blit
	move.l	#$09f00012,$40(a6)
	move.l	d0,$64(a6)
	move.l	a0,$50(a6)
	move.l	a0,$54(a6)
	move.w	#4*192*64+12,$58(a6)

	lea	clrbase,a6
	movem.l	(a6),d0-a5
	move.l	clearplane,a6
	lea	18432(a6),a6

	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)	;10
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)	;100
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)	;179

	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	movem.l	d0-a5,-(a6)
	rts

;****************************************************************************

Matrix:
   ;--------------------------;
	lea	glenz24,a5
   ;--------------------------;
	move.l	12(a5),a0	;angles
	move.l	16(a5),a1	;speed

	movem.w	(a0),d5-d7
	add.w	(a1),d5
	add.w	2(a1),d6
	add.w	4(a1),d7
	and.w	#$ff,d5
	and.w	#$ff,d6
	and.w	#$ff,d7
	movem.w	d5-d7,(a0)
	add.w	d5,d5
	add.w	d6,d6
	add.w	d7,d7

Sector:	lea	SinTab(pc),a0
	lea	CosTab(pc),a1

	move.w	(a0,d5.w),d1
	move.w	(a1,d5.w),d0
	move.w	(a0,d6.w),d3
	move.w	(a1,d6.w),d2
	move.w	(a0,d7.w),d5
	move.w	(a1,d7.w),d4

Matrix1:
	move.w	d2,d6
	muls	d4,d6
	move.w	d3,d7
	muls	d1,d7
	add.l	d7,d7
	swap	d7
	muls	d5,d7
	sub.l	d7,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat1+2
Matrix2:
	moveq	#0,d6
	sub.w	d0,d6
	muls	d5,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat2+2
Matrix3:
	move.w	d3,d6
	muls	d4,d6
	move.w	d2,d7
	muls	d1,d7
	lsl.l	#1,d7
	swap	d7
	muls	d5,d7
	add.l	d7,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat3+2
Matrix4:
	move.w	d2,d6
	muls	d5,d6	
	move.w	d3,d7
	muls	d1,d7
	add.l	d7,d7
	swap	d7
	muls	d4,d7
	add.l	d7,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat4+2
Matrix5:
	move.w	d0,d6
	muls	d4,d6	
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat5+2
Matrix6:
	move.w	d3,d6
	muls	d5,d6
	move.w	d2,d7
	muls	d1,d7
	add.l	d7,d7
	swap	d7
	muls	d4,d7
	sub.l	d7,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat6+2
Matrix7:
	moveq	#0,d6
	sub.w	d3,d6
	muls	d0,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat7+2
Matrix8:
	move.w	d1,Mat8+2
Matrix9:
	move.w	d2,d6
	muls	d0,d6
	add.l	d6,d6
	swap	d6
	move.w	d6,Mat9+2	;all matrix` calculated
	rts

Points:	move.l	(a5),a3
	move.l	20(a5),a1
	move.w	(a3)+,d7	;amount
	move.w	#96,a6

rotatethem:
	movem.w	(a3)+,d4-d6
	move.w	d4,d0
Mat1:	muls	#$0,d0
	move.w	d5,d1
Mat2:	muls	#$0,d1
	move.w	d6,d2
Mat3:	muls	#$0,d2
	add.l	d2,d1
	add.l	d1,d0
;	lsl.l	#1,d0
	swap	d0

	move.w	d4,d1
Mat4:	muls	#$0,d1
	move.w	d5,d2
Mat5:	muls	#$0,d2
	move.w	d6,d3
Mat6:	muls	#$0,d3
	add.l	d3,d2
	add.l	d2,d1
;	lsl.l	#1,d1
	swap	d1

Mat7:	muls	#$0,d4
Mat8:	muls	#$0,d5
Mat9:	muls	#$0,d6
	add.l	d6,d5
	add.l	d5,d4
;	lsl.l	#1,d4
	swap	d4
	move.w	d4,d2

perspektiivi:
zpos:	addi.w	#540,d2

	muls	d2,d0
	muls	d2,d1
	lsl.l	#6,d0
	swap	d0
	lsl.l	#6,d1
	swap	d1

	add.w	a6,d0
	add.w	a6,d1
	move.w	d0,(a1)+
	move.w	d1,(a1)+
	dbf	d7,rotatethem
	rts

;-------

VChide:	lea	glenz24,a5
	move.l	4(a5),a0   ;connects
	move.l	20(a5),a1  ;buffer
	move.l	8(a5),a2   ;cols
	lea	colors(pc),a3
	lea	hidetable,a4
	lea	pussy(pc),a5

GLENZO:
	move.w	(a0)+,d7
.loop:	move.w	(a2),color
	
	movem.w	2(a0),d4/d5/d6	;1.luku facejen pointsien mไไrไ
	movem.w	(a1,d4.w),d0/d1	  ;x1/y1
	movem.w	(a1,d5.w),d2/d3	  ;x2/y2
	movem.w	(a1,d6.w),d4/d5	  ;x3/y3

	;[(x1-x2)*(y3-y2)]-[(y1-y2)*(x3-x2)]
	sub.w	d3,d5
	sub.w	d2,d0
	sub.w	d2,d4
	sub.w	d3,d1
	muls.w	d5,d0
	muls.w	d4,d1
	sub.w	d1,d0
	bpl.s	.alle

	addq.w	#2,a2
	cmp.w	#1,color
	beq.s	.noch
	move.l	#$00080000,(a4)+	;4 & 0
	lea	10(a0),a0
	dbf	d7,.loop
	rts
.noch:	move.l	#$00010001,(a4)+	;1 & 0
	lea	10(a0),a0
	dbf	d7,.loop
	rts

.alle:
	addq.w	#2,a2
	lsr.w	#8,d0
	lsr.w	#3,d0
	and.w	#$f,d0
	addq.w	#2,d0
	move.w	d0,(a5)+

	cmp.w	#7,d0
	bne.s	.1
	move.w	#7,(a4)+
	bra.s	.jatkuu
.1:	cmp.w	#6,d0
	bne.s	.2
	move.w	#6,(a4)+
	bra.s	.jatkuu
.2:	cmp.w	#5,d0
	bne.s	.3
	move.w	#5,(a4)+
	bra.s	.jatkuu
.3:	cmp.w	#4,d0
	bne.s	.4
	move.w	#3,(a4)+
	bra.s	.jatkuu
.4:	cmp.w	#3,d0
	bne.s	.5
	move.w	#4,(a4)+
	bra.s	.jatkuu
.5:	cmp.w	#2,d0
	bne.s	.6
	move.w	#2,(a4)+
	bra.s	.jatkuu
.6:	cmp.w	#1,d0
	bne.s	.7
	move.w	#1,(a4)+
	bra.s	.jatkuu
.7:	move.w	#1,(a4)+

.jatkuu:
	move.w	#0,(a4)+
	lea	10(a0),a0
	dbf	d7,.loop
	rts


.yks:	move.l	#$00010000,(a4)+	;1 & 1
	lea	10(a0),a0
	dbf	d7,.loop
	rts

pussy:	blk.w	30,0

*******************************************************************************
*									      *
*			'DrawLine V1.01' By TIP/SPREADPOINT		      *
*			ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ		      *
*									      *
*******************************************************************************

DL_Fill		=	1		; 0=NOFILL / 1=FILL
	IFEQ	DL_Fill
DL_MInterns	=	%11001010  ;ca
	ELSE
DL_MInterns	=	%01001010  ;$4a
	ENDC

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
;	A0 = PlanePtr, A6 = $DFF002, D0/D1 = X0/Y0, D2/D3 = X1/Y1
;	D4 = PlaneWidth > Kills: D0-D4/A0-A1 (+D5 in Fill Mode)

VCline:
	lea	glenz24,a5
	move.l	4(a5),a2   ;connects
	move.l	20(a5),a3  ;buffer
	lea	hidetable,a4
	lea	mulu_table24,a5
	lea	$dff002,a6

DL_Init:	moveq	#-1,d1
		moveq	#24,d0
		moveq	#6,d2
.wb:		btst	d2,(a6)
		bne.s	.wb
		move.w	d1,$44-2(a6)
		move.w	d1,$72-2(a6)
		move.w	#$8000,$74-2(a6)
		move.w	d0,$60-2(a6)
		move.w	d0,$66-2(a6)
     ;-------------

	addq.w	#2,a2
Next:	move.w	(a4)+,d6
	cmp.w	#1,(a4)
	bne.s	.hooh
	addq.w	#2,a4
	move.w	(a2)+,d7
	add.w	d7,d7
	lea	(a2,d7.w),a2
	cmp.w	#$8000,(a2)
	beq.w	OUT
	bra.s	next
.hooh:	move.w	(a2)+,d7
	subq.w	#2,d7

DSloop:	move.w	(a2)+,d0
	movem.w	(a3,d0.w),d0/d1
	move.w	(a2),d2
	movem.w	(a3,d2.w),d2/d3
	move.l	Drawplane,a0
	
DrawLine:	cmp.w	d1,d3		; Drawing only from Top to Bottom is
		bge.s	.y1ly2		; necessary for:
		exg	d0,d2		; 1) Up-down Differences (same coords)
		exg	d1,d3		; 2) Blitter Invert Bit (only at top of
					;    line)
.y1ly2:		sub.w	d1,d3		; D3 = yd
;		moveq	#5,d5
;		lsl.w	d5,d1		; *32
;		mulu	#24,d1
		add.w	d1,d1
		move.w	(a5,d1.w),d1
		add.l	d1,a0		; Please don't use add.w here !!!
		moveq	#0,d1		; D1 = Quant-Counter
		sub.w	d0,d2		; D2 = xd
		bge.s	.xdpos
		addq.w	#2,d1		; Set Bit 1 of Quant-Counter (here it
					; could be a moveq)
		neg.w	d2
.xdpos:		moveq	#$f,d4		; D4 full cleaned (for later oktants
					; move.b)
		and.w	d0,d4
	IFNE	DL_Fill
		move.b	d4,d5		; D5 = Special Fill Bit
		not.b	d5
	ENDC
		lsr.w	#3,d0		; Yeah, on byte (necessary for bchg)...
		add.w	d0,a0		; ...Blitter ands automagically
		ror.w	#4,d4		; D4 = Shift
		or.w	#$B00+DL_MInterns,d4	; BLTCON0-codes
		swap	d4
		cmp.w	d2,d3		; Which Delta is the Biggest ?
		bge.s	.dygdx
		addq.w	#1,d1		; Set Bit 0 of Quant-Counter
		exg	d2,d3		; Exchange xd with yd
.dygdx:		add.w	d2,d2		; D2 = xd*2
		move.w	d2,d0		; D0 = Save for $52(a6)
		sub.w	d3,d0		; D0 = xd*2-yd
		addx.w	d1,d1		; Bit0 = Sign-Bit
		move.b	Oktants(PC,d1.w),d4	; In Low Byte of d4
						; (upper byte cleaned above)
		swap	d2
		move.w	d0,d2
		sub.w	d3,d2		; D2 = 2*(xd-yd)
		moveq	#6,d1		; D1 = ShiftVal (not necessary) 
					; + TestVal for the Blitter
		lsl.w	d1,d3		; D3 = BLTSIZE
		add.w	#$42,d3
		lea	$52-2(a6),a1	; A1 = CUSTOM+$52
		bra.s	over_ocxt

Oktants:	dc.b	SML+1,SML+1+$40
		dc.b	SML+17,SML+17+$40
		dc.b	SML+9,SML+9+$40
		dc.b	SML+21,SML+21+$40

over_ocxt:	btst	#0,d6
		beq.s	plane2
	;--------
.blit:		btst	d1,(a6)
		bne.s	.blit
		bchg	d5,(a0)
		move.l	d4,$40-2(a6)
		move.l	d2,$62-2(a6)
		move.l	a0,$48-2(a6)
		move.w	d0,(a1)+
		move.l	a0,(a1)+
		move.w	d3,(a1)
	;--------

plane2:		lea	4608(a0),a0
		btst	#1,d6
		beq.b	plane3
		lea	$52-2(a6),a1
.blit:		btst	d1,(a6)
		bne.s	.blit
		bchg	d5,(a0)
		move.l	d4,$40-2(a6)
		move.l	d2,$62-2(a6)
		move.l	a0,$48-2(a6)
		move.w	d0,(a1)+
		move.l	a0,(a1)+
		move.w	d3,(a1)

plane3:		lea	4608(a0),a0
		btst	#2,d6
		beq.b	plane4
		lea	$52-2(a6),a1
.blit:		btst	d1,(a6)
		bne.s	.blit
		bchg	d5,(a0)
		move.l	d4,$40-2(a6)
		move.l	d2,$62-2(a6)
		move.l	a0,$48-2(a6)
		move.w	d0,(a1)+
		move.l	a0,(a1)+
		move.w	d3,(a1)

plane4:		lea	4608(a0),a0
		btst	#3,d6
		beq.b	plane5
		lea	$52-2(a6),a1
.blit:		btst	d1,(a6)
		bne.s	.blit
		bchg	d5,(a0)
		move.l	d4,$40-2(a6)
		move.l	d2,$62-2(a6)
		move.l	a0,$48-2(a6)
		move.w	d0,(a1)+
		move.l	a0,(a1)+
		move.w	d3,(a1)

plane5:		dbf	d7,DSloop
		addq.w	#2,a4
		addq.w	#2,a2
		cmp.w	#$8000,(a2)
		bne.w	Next
OUT:		rts
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
	IFNE	DL_Fill
SML		= 	2
	ELSE
SML		=	0
	ENDC
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
;		Optimized Init Part... A6 = $DFF000 > Kills : D0-D2


color:	dc.w	0

;*****************************************************
Glenz24:	dc.l	Glenz24_Coords		;Coords		0
		dc.l	Glenz24_Connects	;Coonects	4
		dc.l	Glenz24_Cols		;Cols	8
		dc.l	Glenz24_Angels		;Angels	12
		dc.l	Glenz24_Speed		;Speed	16
		dc.l	Glenz24_Buffer		;Coords 2d (rotated) 20
;******************* CubeC DATA *******************
	
Glenz24_Coords:
	dc.w	[14]-1
	dc.w	-200,-200,-200
	dc.w	200,-200,-200
	dc.w	200,200,-200
	dc.w	-200,200,-200
	dc.w	-200,-200,200
	dc.w	200,-200,200
	dc.w	200,200,200
	dc.w	-200,200,200
	dc.w	0,0,330
	dc.w	0,-330,0
	dc.w	330,0,0
	dc.w	0,330,0
	dc.w	-330,0,0
	dc.w	0,0,-330

Glenz24_Connects:
	dc.w	[24]-1
	dc.w	4,0*4,1*4,13*4,0*4	;1
	dc.w	4,7*4,6*4,8*4,7*4	;1
	dc.w	4,1*4,2*4,13*4,1*4	;2
	dc.w	4,4*4,7*4,8*4,4*4	;2
	dc.w	4,2*4,3*4,13*4,2*4	;3
	dc.w	4,5*4,4*4,8*4,5*4	;3
	dc.w	4,3*4,0*4,13*4,3*4	;4
	dc.w	4,6*4,5*4,8*4,6*4	;4
	
	dc.w	4,0*4,4*4,9*4,0*4	;21
	dc.w	4,2*4,6*4,11*4,2*4	;21
	dc.w	4,4*4,5*4,9*4,4*4	;24
	dc.w	4,3*4,2*4,11*4,3*4	;24
	dc.w	4,5*4,1*4,9*4,5*4	;23
	dc.w	4,7*4,3*4,11*4,7*4	;23
	dc.w	4,1*4,0*4,9*4,1*4	;22
	dc.w	4,6*4,7*4,11*4,6*4	;22
	
	dc.w	4,1*4,5*4,10*4,1*4	;31
	dc.w	4,3*4,7*4,12*4,3*4	;31
	dc.w	4,2*4,1*4,10*4,2*4	;32
	dc.w	4,7*4,4*4,12*4,7*4	;32
	dc.w	4,6*4,2*4,10*4,6*4	;33
	dc.w	4,4*4,0*4,12*4,4*4	;33
	dc.w	4,5*4,6*4,10*4,5*4	;34
	dc.w	4,0*4,3*4,12*4,0*4	;34
	
	dc.w	$8000

Glenz24_Cols:	
	dc.w	1,1,2,2
	dc.w	1,1,2,2
	dc.w	1,1,2,2
	dc.w	1,1,2,2
	dc.w	2,2,1,1
	dc.w	2,2,1,1

Glenz24_Angels:	dc.w	0,0,0
Glenz24_Speed:	dc.w	1,1,-1
Glenz24_Buffer:	blk.w	100,0

;--------------------------- Installing the copper ----------------------
SetupCopper:		move.l	#BlankSprite,$120(a6)
			move.l	#BlankSprite,$124(a6)
			move.l	#BlankSprite,$128(a6)
			move.l	#BlankSprite,$12c(a6)
			move.l	#BlankSprite,$130(a6)
			move.l	#BlankSprite,$134(a6)
			move.l	#BlankSprite,$138(a6)
			move.l	#BlankSprite,$13c(a6)

			clr.l	$140(a6)
			clr.l	$148(a6)
			clr.l	$150(a6)
			clr.l	$158(a6)
			clr.l	$160(a6)
			clr.l	$168(a6)
			clr.l	$170(a6)
			clr.l	$178(a6)

			clr.l	$144(a6)
			clr.l	$14c(a6)
			clr.l	$154(a6)
			clr.l	$15c(a6)
			clr.l	$164(a6)
			clr.l	$16c(a6)
			clr.l	$174(a6)
			clr.l	$17c(a6)

	move.w	$2(a6),DmaCon
	move.w	#$7fff,$96(a6)		
	move.w	#$87c0,$96(a6)
	lea.l	Copper1(pc),a0
	move.l	a0,$80(a6)
	rts

;--------------------------- Installing the old copper ------------------
SetupOldCopper:
	move.l	$4,a5
	move.l	156(a5),a1
	move.l	38(a1),$80(a6)		
	bclr	#0,$2e(a6)
	move.w	DmaCon,d0
	or.w	#$8000,d0
	move.w	d0,$96(a6)
	rts

;--------------------------- Setting up div. inter. ---------------------
SetupInterupts:
	move.w	$1c(a6),Intena
	move.w	$1e(a6),Intreq
	move.w	#$7fff,$9a(a6)		;Turn off all other interupts
	move.w	#$7fff,$9c(a6)		;Turn off all other interupts
	move.l	$6c,Level3
	move.l	#interrupt,$6c
	move.w	#$c020,$9a(a6)
	rts
;------------------------ Setting up old inter. -------------------------
SetupOldInterupts:
	move.w	Intena,d0
	move.w	Intreq,d1
	or.w	#$8000,d0
	or.w	#$8000,d1
	move.w	d0,$9a(a6)
	move.w	d1,$9c(a6)
	rts

;------------------------ Installing the BplPts -------------------------


DmaCon:	dc.w	0
IntreQ:	dc.w	0
IntenA:	dc.w	0
hidetable:	blk.w	100,0

;-------------------------- Copper list ------------------------------------
Copper1:
	dc.w	$0108,$0000,$010a,$0000,$0102,$0000
	dc.w	$0100,$0200,$0180,$0000
	dc.w	$120,0,$122,0
bounch:	dc.w	$8e,$4c91,$90,$0ca1
	dc.w	$0092,$0058,$0094,$00b0

planes:	dc.w	$00e0,$0000,$00e2,$0000
	dc.w	$00e4,$0000,$00e6,$0000
	dc.w	$00e8,$0000,$00ea,$0000
	dc.w	$00ec,$0000,$00ee,$0000
;	dc.w	$00f0,$0000,$00f2,$0000
	dc.w	$0100,$4200
	dc.w	$1fc,0

	dc.w	$0180
Colors:	dc.w	$0000
	dc.w	$0182,$0841
	dc.w	$0184,$0952
	dc.w	$0188,$0a63
	dc.w	$0186,$0b74
	dc.w	$018A,$0c85
	dc.w	$018C,$0d96
	dc.w	$018E,$0ea7
	dc.w	$0190,$0841
	dc.w	$0192,$0952
	dc.w	$0194,$0a63
	dc.w	$0198,$0b74
	dc.w	$0196,$0c85
	dc.w	$019A,$0d96
	dc.w	$019C,$0ea7
	dc.w	$019E,$0fb8
	dc.w	$ffff,$fffe


SinTab:	dc.w	0,804,1608,2411,3212,4011,4808,5602
	dc.w	6393,7179,7962,8739,9512,10279,11039,11793
	dc.w	12540,13279,14010,14733,15446,16151,16846,17530
	dc.w	18204,18868,19519,20159,20787,21403,22005,22594
	dc.w	23170,23732,24279,24812,25329,25832,26319,26790
	dc.w	27245,27683,28105,28510,28898,29269,29621,29956
	dc.w	30273,30571,30852,31113,31356,31580,31785,31971
	dc.w	32137,32285,32412,32520,32609,32678,32727,32757
CosTab:	dc.w	32767,32757,32728,32678,32609,32521,32412,32285
	dc.w	32137,31971,31785,31580,31356,31113,30852,30571
	dc.w	30273,29956,29621,29268,28898,28510,28105,27683
	dc.w	27245,26790,26319,25832,25329,24811,24279,23731
	dc.w	23170,22594,22005,21403,20787,20159,19519,18868
	dc.w	18204,17530,16846,16151,15446,14732,14010,13279
	dc.w	12539,11793,11039,10278,9512,8739,7962,7179
	dc.w	6393,5602,4808,4011,3212,2411,1608,804
	dc.w	0,-803,-1607,-2409,-3211,-4010,-4807,-5601
	dc.w	-6391,-7178,-7961,-8738,-9511,-10277,-11038,-11792
	dc.w	-12538,-13277,-14009,-14731,-15445,-16150,-16845,-17529
	dc.w	-18203,-18866,-19518,-20158,-20786,-21401,-22004,-22593
	dc.w	-23169,-23730,-24278,-24810,-25328,-25831,-26318,-26789
	dc.w	-27244,-27682,-28104,-28509,-28897,-29267,-29620,-29955
	dc.w	-30272,-30570,-30851,-31112,-31355,-31579,-31784,-31970
	dc.w	-32136,-32284,-32411,-32520,-32608,-32677,-32727,-32756
	dc.w	-32766,-32756,-32727,-32677,-32608,-32520,-32411,-32284
	dc.w	-32136,-31970,-31784,-31579,-31355,-31112,-30851,-30570
	dc.w	-30272,-29955,-29620,-29267,-28897,-28509,-28104,-27682
	dc.w	-27244,-26789,-26318,-25831,-25328,-24810,-24278,-23730
	dc.w	-23169,-22593,-22004,-21401,-20786,-20158,-19518,-18866
	dc.w	-18203,-17529,-16845,-16150,-15445,-14731,-14009,-13277
	dc.w	-12538,-11792,-11038,-10277,-9511,-8738,-7961,-7178
	dc.w	-6391,-5601,-4807,-4010,-3211,-2409,-1607,-803
	dc.w	0,804,1608,2411,3212,4011,4808,5602
	dc.w	6393,7179,7962,8739,9512,10279,11039,11793
	dc.w	12540,13279,14010,14733,15446,16151,16846,17530
	dc.w	18204,18868,19519,20159,20787,21403,22005,22594
 	dc.w	23170,23732,24279,24812,25329,25832,26319,26790
	dc.w	27245,27683,28105,28510,28898,29269,29621,29956
	dc.w	30273,30571,30852,31113,31356,31580,31785,31971
	dc.w	32137,32285,32412,32520,32609,32678,32727,32757

Drawplane:	dc.l	screen1
Clearplane:	dc.l	screen2

	section	tsunami,bss

screen1:	ds.b	192*24*4
screen2:	ds.b	192*24*4
screen3:	ds.b	192*24*4
