๙๚๙๚                                        

	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

MainLoop:
	cmp.w	#0,VBB
	beq.s	MainLoop

	bsr.w	DPclear
	bsr.w	VCline
	bsr.w	DPfill
	bsr.w	Matrix
	bsr.w	Points
	bsr.w	VChide
	bsr.w	Swaps

;.wait:	btst	#14,$dff002
;	bne.s	.wait
;	move.w	#$445,$dff180
	move.w	#0,VBB
	btst	#6,$bfe001
	bne.w	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
Tpointer:	dc.w	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	#3-1,d7		;number of planes
	move.w	#32*256,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

;------------------------------
Light_RGB:
	lea	colors(pc),a0
	move.w	4(a0),d0
	move.w	8(a0),d1
	move.w	16(a0),d2
	move.w	d0,d5
	add.w	d1,d5
	move.w	d5,12(a0)
	add.w	d2,d5
	move.w	d5,28(a0)
	move.w	d5,d6
	sub.w	d1,d5
	move.w	d5,20(a0)
	sub.w	d0,d6
	move.w	d6,24(a0)
	rts
;------------------------------

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	#112*64+16,$58(a6)


	lea	clrbase,a6
	movem.l	(a6),d0-a5
	move.l	clearplane,a6
	lea	6950(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)
	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)
	rts

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

DPfill:
	move.l	Drawplane,a0
	lea	24575(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	#3*256*64+16,$58(a6)

	lea	clrbase,a6
	movem.l	(a6),d0-a5
	move.l	clearplane,a6
	lea	24576(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)	;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)	;130
	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	LIGHTBIG,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	#128,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	#1300,d4

	muls	d4,d0
	muls	d4,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	LightBIG,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

	move.w	(a0)+,d7
.loop:
	move.w	(a2),color
	move.w	(a2)+,(a4)+	;color of face
	
	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
	muls.w	d5,d0
	sub.w	d2,d4
	sub.w	d3,d1
	muls.w	d4,d1
	sub.w	d1,d0
	bpl.s	.alle

	move.w	#1,(a4)+
	bra.s	.ready

.alle:	move.w	color,d6	;planecols A3, color D6, index(color) D0
	lsr.w	#8,d0
	lsr.w	#3,d0
	and.w	#$f,d0
	addq.w	#5,d0
	cmp.w	#1,d6
	beq.s	.pun
	cmp.w	#3,d6
	beq.s	.pun
	cmp.w	#5,d6
	beq.s	.pun
	add.w	#$520,d0
	bra.s	.putc
.pun:	moveq	#8,d1
	lsl.w	d1,d0
	add.w	#$025,d0
.putc:	lsl.w	#2,d6
	move.w	d0,(a3,d6.w)	;lightsource (grazy way to do it!)
	move.w	#0,(a4)+

.ready:	move.w	(a0)+,d6	;ei piirretไ
	add.w	d6,d6
	lea	(a0,d6.w),a0	;next face...
	dbf	d7,.loop
	rts

*******************************************************************************
*									      *
*			'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	LIGHTBIG,a5
	move.l	4(a5),a2   ;connects
	move.l	20(a5),a3  ;buffer
	lea	hidetable,a4
	move.l	Drawplane,a5
	lea	$dff002,a6

DL_Init:	moveq	#-1,d1
		moveq	#32,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	a5,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
		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	8192(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	8192(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:		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
xmax:	dc.w	0
ymax:	dc.w	0
xmin:	dc.w	0
ymin:	dc.w	0

;*****************************************************
LightBIG:
	dc.l	Light_Coords
	dc.l	Light_Connects
	dc.l	Light_Cols
	dc.l	Light_Angels
	dc.l	Light_Speed
	dc.l	Light_Buffer2D
*****************************************************

Light_Coords:
	dc.w	[8]-1
	dc.w	0,0,-200
	dc.w	-200,0,0
	dc.w	-100,-160,0
	dc.w	100,-160,0
	dc.w	200,0,0
	dc.w	100,160,0
	dc.w	-100,160,0
	dc.w	0,0,200

;*******
Light_Connects:
	dc.w	[12]-1
	dc.w	4,1*4,2*4,0*4,1*4
	dc.w	4,2*4,3*4,0*4,2*4
	dc.w	4,3*4,4*4,0*4,3*4
	dc.w	4,4*4,5*4,0*4,4*4
	dc.w	4,5*4,6*4,0*4,5*4
	dc.w	4,6*4,1*4,0*4,6*4

	dc.w	4,2*4,1*4,7*4,2*4
	dc.w	4,3*4,2*4,7*4,3*4
	dc.w	4,4*4,3*4,7*4,4*4
	dc.w	4,5*4,4*4,7*4,5*4
	dc.w	4,6*4,5*4,7*4,6*4
	dc.w	4,1*4,6*4,7*4,1*4
	dc.w	$8000

Light_Cols:	dc.w	1,2,3,4,5,6,6,5,4,3,2,1
Light_Angels:	dc.w	0,0,0
Light_Speed:	dc.w	1,1,2
Light_Buffer2D:	blk.b	 150,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
	dc.w	$8e,$2c91,$90,$2ca1
	dc.w	$0092,$0048,$0094,$00c0

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,$3200

	dc.w	$180
Colors:	dc.w	$0
	dc.w	$0182,$8d8	;e1
	dc.w	$0184,$0
	dc.w	$0186,$fff
	dc.w	$0188,$7c7	;e2
	dc.w	$018a,$0
	dc.w	$018c,$ddd
	dc.w	$018e,$0
	dc.w	$1fc,0
	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

screen1:	blk.b	256*40*3,0
screen2:	blk.b	256*40*3,0
screen3:	blk.b	256*40*3,0
Drawplane:	dc.l	screen1
Clearplane:	dc.l	screen2




