	machine	mc68020
	fpu	1

*******************************************************************************
* name      	 offset
* n         	 -4
* ch        	 -8
* list      	 -12
* y2        	 -16
* y1        	 -20
* y0        	 -24
* x2        	 -28
* x1        	 -32
* x0        	 -36
* drx       	 -40
* rx        	 -44
* dlx       	 -48
* lx        	 -52
* y         	 -56
* args
* dest      	 16
* dc        	 12
* c         	 8
	xdef	_DrawTriangle
_DrawTriangle
	link	a5,#-56
	movem.l	d2-d6,-(a7)
	lea	(-24,a7),a7
	movea.l	(12,a5),a0
	moveq	#0,d0
	lea	(a0,d0.l*8),a0
	move.l	(a0),(a7)
	movea.l	(12,a5),a0
	moveq	#0,d0
	lea	(a0,d0.l*8),a0
	move.l	(4,a0),(4,a7)
	movea.l	(12,a5),a0
	moveq	#1,d0
	lea	(a0,d0.l*8),a0
	move.l	(a0),(8,a7)
	movea.l	(12,a5),a0
	moveq	#1,d0
	lea	(a0,d0.l*8),a0
	move.l	(4,a0),(12,a7)
	movea.l	(12,a5),a0
	moveq	#2,d0
	lea	(a0,d0.l*8),a0
	move.l	(a0),(16,a7)
	movea.l	(12,a5),a0
	moveq	#2,d0
	lea	(a0,d0.l*8),a0
	move.l	(4,a0),(20,a7)
	lea	list0,a0
	move.l	(a7)+,(a0)
	move.l	(a7)+,(4,a0)
	move.l	(a7)+,(8,a0)
	move.l	(a7)+,(12,a0)
	move.l	(a7)+,(16,a0)
	move.l	(a7)+,(20,a0)
	move.l	a0,(-12,a5)
repeat0
	clr.l	(-8,a5)
	clr.l	(-4,a5)
for1
if2
	movea.l	(-12,a5),a0
	move.l	(-4,a5),d1
	lea	(a0,d1.l*8),a0
	fmove.s	(4,a0),fp0
	movea.l	(-12,a5),a0
	move.l	(-4,a5),d2
	addq.l	#1,d2
	move.l	d2,d1
	lea	(a0,d1.l*8),a0
	fcmp.s	(4,a0),fp0
	fble	end2
	movea.l	(-12,a5),a0
	move.l	(-4,a5),d1
	addq.l	#1,d1
	move.l	d1,d0
	lea	(a0,d0.l*8),a0
	movea.l	(-12,a5),a1
	move.l	(-4,a5),d0
	lea	(a1,d0.l*8),a1
	move.l	(a1),d0
	move.l	(a0),(a1)
	move.l	d0,(a0)
	movea.l	(-12,a5),a0
	move.l	(-4,a5),d1
	addq.l	#1,d1
	move.l	d1,d0
	lea	(a0,d0.l*8),a0
	movea.l	(-12,a5),a1
	move.l	(-4,a5),d0
	lea	(a1,d0.l*8),a1
	move.l	(4,a1),d0
	move.l	(4,a0),(4,a1)
	move.l	d0,(4,a0)
	move.l	#-1,(-8,a5)
end2
nextfor1
	addq.l	#1,(-4,a5)
	cmpi.l	#1,(-4,a5)
	ble	for1
end1
	move.l	(-8,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	bne	repeat0
end0
	movea.l	(-12,a5),a0
	moveq	#0,d0
	lea	(a0,d0.l*8),a0
	move.l	(a0),(-36,a5)
	movea.l	(-12,a5),a0
	moveq	#0,d0
	lea	(a0,d0.l*8),a0
	move.l	(4,a0),(-24,a5)
	movea.l	(-12,a5),a0
	moveq	#1,d0
	lea	(a0,d0.l*8),a0
	move.l	(a0),(-32,a5)
	movea.l	(-12,a5),a0
	moveq	#1,d0
	lea	(a0,d0.l*8),a0
	move.l	(4,a0),(-20,a5)
	movea.l	(-12,a5),a0
	moveq	#2,d0
	lea	(a0,d0.l*8),a0
	move.l	(a0),(-28,a5)
	movea.l	(-12,a5),a0
	moveq	#2,d0
	lea	(a0,d0.l*8),a0
	move.l	(4,a0),(-16,a5)
if4
	fmove.s	(-24,a5),fp0
	fcmp.s	(-20,a5),fp0
	fseq	d1
	extb.l	d1
	move.l	d1,d0
	fmove.s	(-36,a5),fp0
	fcmp.s	(-32,a5),fp0
	fsgt	d1
	extb.l	d1
	and.l	d1,d0
	tst.l	d0
	beq	end4
	move.l	(-36,a5),d0
	move.l	(-32,a5),(-36,a5)
	move.l	d0,(-32,a5)
end4
if6
	fmove.s	(-20,a5),fp0
	fcmp.s	(-16,a5),fp0
	fseq	d1
	extb.l	d1
	move.l	d1,d0
	fmove.s	(-32,a5),fp0
	fcmp.s	(-28,a5),fp0
	fsgt	d1
	extb.l	d1
	and.l	d1,d0
	tst.l	d0
	beq	end6
	move.l	(-32,a5),d0
	move.l	(-28,a5),(-32,a5)
	move.l	d0,(-28,a5)
end6
if8
	fmove.s	(-24,a5),fp0
	ftst.d	fp0
	fslt	d1
	extb.l	d1
	move.l	d1,d0
	fmove.s	(-20,a5),fp0
	ftst.d	fp0
	fslt	d1
	extb.l	d1
	and.l	d1,d0
	fmove.s	(-16,a5),fp0
	ftst.d	fp0
	fslt	d1
	extb.l	d1
	and.l	d1,d0
	tst.l	d0
	beq	end8
	moveq	#0,d0
	bra	DrawTrianglefinish
end8
if10
	fmove.s	(-36,a5),fp0
	ftst.d	fp0
	fslt	d1
	extb.l	d1
	move.l	d1,d0
	fmove.s	(-32,a5),fp0
	ftst.d	fp0
	fslt	d1
	extb.l	d1
	and.l	d1,d0
	fmove.s	(-28,a5),fp0
	ftst.d	fp0
	fslt	d1
	extb.l	d1
	and.l	d1,d0
	tst.l	d0
	beq	end10
	moveq	#0,d0
	bra	DrawTrianglefinish
end10
if12
	fmove.s	(-24,a5),fp0
	movea.l	(16,a5),a0
	fcmp.l	(4,a0),fp0
	fsge	d1
	extb.l	d1
	move.l	d1,d0
	fmove.s	(-20,a5),fp0
	movea.l	(16,a5),a0
	fcmp.l	(4,a0),fp0
	fsge	d1
	extb.l	d1
	and.l	d1,d0
	fmove.s	(-16,a5),fp0
	movea.l	(16,a5),a0
	fcmp.l	(4,a0),fp0
	fsge	d1
	extb.l	d1
	and.l	d1,d0
	tst.l	d0
	beq	end12
	moveq	#0,d0
	bra	DrawTrianglefinish
end12
if14
	fmove.s	(-36,a5),fp0
	movea.l	(16,a5),a0
	fcmp.l	(a0),fp0
	fsge	d1
	extb.l	d1
	move.l	d1,d0
	fmove.s	(-32,a5),fp0
	movea.l	(16,a5),a0
	fcmp.l	(a0),fp0
	fsge	d1
	extb.l	d1
	and.l	d1,d0
	fmove.s	(-28,a5),fp0
	movea.l	(16,a5),a0
	fcmp.l	(a0),fp0
	fsge	d1
	extb.l	d1
	and.l	d1,d0
	tst.l	d0
	beq	end14
	moveq	#0,d0
	bra	DrawTrianglefinish
end14
if16
	fmove.s	(-24,a5),fp0
	fcmp.s	(-20,a5),fp0
	fbne	elseif16_1
	move.l	(-36,a5),(-52,a5)
	move.l	(-32,a5),(-44,a5)
	fmove.s	(-28,a5),fp1
	fsub.s	(-52,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-48,a5)
	fmove.s	(-28,a5),fp1
	fsub.s	(-44,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-40,a5)
	fmove.s	(-24,a5),fp0
	fmove.l	fp0,(-56,a5)
for18
if19
	move.l	(-56,a5),d0
	movea.l	(16,a5),a0
	cmp.l	(4,a0),d0
	blt	end19
	moveq	#0,d0
	bra	DrawTrianglefinish
end19
if21
	move.l	(-56,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	blt	end21
	movea.l	(16,a5),a0
	fmove.s	(-52,a5),fp0
	fmove.l	fp0,d0
	fmove.s	(-44,a5),fp0
	fmove.l	fp0,d1
	move.l	(-56,a5),d2
	move.l	(8,a5),d3
	jsr	_HLine		; HLine
end21
	fmove.s	(-52,a5),fp0
	fadd.s	(-48,a5),fp0
	fmove.s	fp0,(-52,a5)
	fmove.s	(-44,a5),fp0
	fadd.s	(-40,a5),fp0
	fmove.s	fp0,(-44,a5)
nextfor18
	addq.l	#1,(-56,a5)
	fmove.l	(-56,a5),fp0
	fcmp.s	(-16,a5),fp0
	fble	for18
end18
	bra	end16
elseif16_1
	fmove.s	(-20,a5),fp0
	fcmp.s	(-16,a5),fp0
	fbne	elseif16_2
	move.l	(-36,a5),(-44,a5)
	move.l	(-44,a5),(-52,a5)
	fmove.s	(-32,a5),fp1
	fsub.s	(-52,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-48,a5)
	fmove.s	(-28,a5),fp1
	fsub.s	(-44,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-40,a5)
	fmove.s	(-24,a5),fp0
	fmove.l	fp0,(-56,a5)
for25
if26
	move.l	(-56,a5),d0
	movea.l	(16,a5),a0
	cmp.l	(4,a0),d0
	blt	end26
	moveq	#0,d0
	bra	DrawTrianglefinish
end26
if28
	move.l	(-56,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	blt	end28
	movea.l	(16,a5),a0
	fmove.s	(-52,a5),fp0
	fmove.l	fp0,d0
	fmove.s	(-44,a5),fp0
	fmove.l	fp0,d1
	move.l	(-56,a5),d2
	move.l	(8,a5),d3
	jsr	_HLine		; HLine
end28
	fmove.s	(-52,a5),fp0
	fadd.s	(-48,a5),fp0
	fmove.s	fp0,(-52,a5)
	fmove.s	(-44,a5),fp0
	fadd.s	(-40,a5),fp0
	fmove.s	fp0,(-44,a5)
nextfor25
	addq.l	#1,(-56,a5)
	fmove.s	(-20,a5),fp0
	fsub.w	#1,fp0
	fmove.l	(-56,a5),fp1
	fcmp.x	fp0,fp1
	fble	for25
end25
	bra	end16
elseif16_2
	movem.l	d0,-(a7)
	move.l	(-24,a5),-(a7)
	move.l	(-16,a5),-(a7)
	move.l	(-20,a5),-(a7)
	move.l	(-36,a5),-(a7)
	move.l	(-28,a5),-(a7)
	jsr	_GetXLine		; GetXLine
	lea	(20,a7),a7
	movem.l	(a7)+,d0
	fcmp.s	(-32,a5),fp0
	fble	elseif16_3
	move.l	(-36,a5),(-44,a5)
	move.l	(-44,a5),(-52,a5)
	fmove.s	(-32,a5),fp1
	fsub.s	(-52,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-20,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-48,a5)
	fmove.s	(-28,a5),fp1
	fsub.s	(-44,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-40,a5)
	fmove.s	(-24,a5),fp0
	fmove.l	fp0,(-56,a5)
for32
if33
	move.l	(-56,a5),d0
	movea.l	(16,a5),a0
	cmp.l	(4,a0),d0
	blt	end33
	moveq	#0,d0
	bra	DrawTrianglefinish
end33
if35
	move.l	(-56,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	blt	end35
	movea.l	(16,a5),a0
	fmove.s	(-52,a5),fp0
	fmove.l	fp0,d0
	fmove.s	(-44,a5),fp0
	fmove.l	fp0,d1
	move.l	(-56,a5),d2
	move.l	(8,a5),d3
	jsr	_HLine		; HLine
end35
	fmove.s	(-52,a5),fp0
	fadd.s	(-48,a5),fp0
	fmove.s	fp0,(-52,a5)
	fmove.s	(-44,a5),fp0
	fadd.s	(-40,a5),fp0
	fmove.s	fp0,(-44,a5)
nextfor32
	addq.l	#1,(-56,a5)
	fmove.s	(-20,a5),fp0
	fsub.w	#1,fp0
	fmove.l	(-56,a5),fp1
	fcmp.x	fp0,fp1
	fble	for32
end32
	fmove.s	(-28,a5),fp1
	fsub.s	(-52,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-20,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-48,a5)
	fmove.s	(-20,a5),fp0
	fmove.l	fp0,(-56,a5)
for37
if38
	move.l	(-56,a5),d0
	movea.l	(16,a5),a0
	cmp.l	(4,a0),d0
	blt	end38
	moveq	#0,d0
	bra	DrawTrianglefinish
end38
if40
	move.l	(-56,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	blt	end40
	movea.l	(16,a5),a0
	fmove.s	(-52,a5),fp0
	fmove.l	fp0,d0
	fmove.s	(-44,a5),fp0
	fmove.l	fp0,d1
	move.l	(-56,a5),d2
	move.l	(8,a5),d3
	jsr	_HLine		; HLine
end40
	fmove.s	(-52,a5),fp0
	fadd.s	(-48,a5),fp0
	fmove.s	fp0,(-52,a5)
	fmove.s	(-44,a5),fp0
	fadd.s	(-40,a5),fp0
	fmove.s	fp0,(-44,a5)
nextfor37
	addq.l	#1,(-56,a5)
	fmove.s	(-16,a5),fp0
	fsub.w	#1,fp0
	fmove.l	(-56,a5),fp1
	fcmp.x	fp0,fp1
	fble	for37
end37
	bra	end16
elseif16_3
	move.l	(-36,a5),(-44,a5)
	move.l	(-44,a5),(-52,a5)
	fmove.s	(-28,a5),fp1
	fsub.s	(-52,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-48,a5)
	fmove.s	(-32,a5),fp1
	fsub.s	(-44,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-20,a5),fp1
	fsub.s	(-24,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-40,a5)
	fmove.s	(-24,a5),fp0
	fmove.l	fp0,(-56,a5)
for44
if45
	move.l	(-56,a5),d0
	movea.l	(16,a5),a0
	cmp.l	(4,a0),d0
	blt	end45
	moveq	#0,d0
	bra	DrawTrianglefinish
end45
if47
	move.l	(-56,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	blt	end47
	movea.l	(16,a5),a0
	fmove.s	(-52,a5),fp0
	fmove.l	fp0,d0
	fmove.s	(-44,a5),fp0
	fmove.l	fp0,d1
	move.l	(-56,a5),d2
	move.l	(8,a5),d3
	jsr	_HLine		; HLine
end47
	fmove.s	(-52,a5),fp0
	fadd.s	(-48,a5),fp0
	fmove.s	fp0,(-52,a5)
	fmove.s	(-44,a5),fp0
	fadd.s	(-40,a5),fp0
	fmove.s	fp0,(-44,a5)
nextfor44
	addq.l	#1,(-56,a5)
	fmove.s	(-20,a5),fp0
	fsub.w	#1,fp0
	fmove.l	(-56,a5),fp1
	fcmp.x	fp0,fp1
	fble	for44
end44
	fmove.s	(-28,a5),fp1
	fsub.s	(-44,a5),fp1
	fmove.x	fp1,fp0
	fmove.s	(-16,a5),fp1
	fsub.s	(-20,a5),fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,(-40,a5)
	fmove.s	(-20,a5),fp0
	fmove.l	fp0,(-56,a5)
for49
if50
	move.l	(-56,a5),d0
	movea.l	(16,a5),a0
	cmp.l	(4,a0),d0
	blt	end50
	moveq	#0,d0
	bra	DrawTrianglefinish
end50
if52
	move.l	(-56,a5),d0
	moveq	#0,d1
	cmp.l	d1,d0
	blt	end52
	movea.l	(16,a5),a0
	fmove.s	(-52,a5),fp0
	fmove.l	fp0,d0
	fmove.s	(-44,a5),fp0
	fmove.l	fp0,d1
	move.l	(-56,a5),d2
	move.l	(8,a5),d3
	jsr	_HLine		; HLine
end52
	fmove.s	(-52,a5),fp0
	fadd.s	(-48,a5),fp0
	fmove.s	fp0,(-52,a5)
	fmove.s	(-44,a5),fp0
	fadd.s	(-40,a5),fp0
	fmove.s	fp0,(-44,a5)
nextfor49
	addq.l	#1,(-56,a5)
	fmove.s	(-16,a5),fp0
	fsub.w	#1,fp0
	fmove.l	(-56,a5),fp1
	fcmp.x	fp0,fp1
	fble	for49
end49
end16
DrawTriangleend
	moveq	#0,d0
DrawTrianglefinish
	movem.l	(a7)+,d2-d6
	unlk	a5
	rts
*******************************************************************************
* name      	 offset
* args
* y1        	 24
* y2        	 20
* y3        	 16
* x1        	 12
* x2        	 8
	xdef	_GetXLine
_GetXLine
	link	a5,#0
	fmovem.x	fp2,-(a7)
	fmove.s	(12,a5),fp2
	fsub.s	(8,a5),fp2
	fmove.x	fp2,fp1
	fmove.s	(20,a5),fp2
	fsub.s	(16,a5),fp2
	fmul.x	fp2,fp1
	fmove.s	(20,a5),fp2
	fsub.s	(24,a5),fp2
	fdiv.x	fp2,fp1
	fmove.x	fp1,fp0
	fadd.s	(8,a5),fp0
GetXLineend
GetXLinefinish
	fmovem.x	(a7)+,fp2
	unlk	a5
	rts
	xref	_HLine
	section	".tocd",data
list0	dc.s	0
	dc.s	0
	dc.s	0
	dc.s	0
	dc.s	0
	dc.s	0
	cnop	0,2
