*-----------------------------------------------------------------------------*
	INCDIR	DF0:Include/
	INCLUDE	CUSTOM.i
	INCLUDE	CIA.i
	INCLUDE	OFFSETS.i

	INCLUDE	MACROS.i

*-----------------------------------------------------------------------------*
ScWidth 	= 40
ScHeigth	= 200
ScSize		= ScWidth*ScHeigth

PlaneWidth 	= 2
PlaneHeigth	= 16
PlaneSize	= PlaneWidth*PlaneHeigth
Planes		= 4

*-----------------------------------------------------------------------------*
START	movem.l	d0-a6,-(sp)

	move.l	$4.w,a6
	jsr	_LVOForbid(a6)

	moveq	#0,d0
	lea	GfxName(pc),a1
	jsr	_LVOOpenLibrary(a6)
	tst.l	d0
	beq.w	.Error

	move.l	d0,GfxBase
	move.l	d0,a6
	move.l	$22(a6),Temp_ActiView
	move.l	$26(a6),Temp_CopList1
	move.l	$32(a6),Temp_CopList2

	sub.l	a1,a1
	jsr	_LVOLoadView(a6)

	jsr	_LVOWaitTOF(a6)
	jsr	_LVOWaitTOF(a6)

	lea	$dff000,a6
	move.w	$02(a6),Temp_DMACON
	move.w	$10(a6),Temp_ADKCON
	move.w	$1c(a6),Temp_INTENA
	move.l	$6c.w,Temp_Lev3Int

	move.w	#$7fff,$96(a6)
	move.w	#$7fff,$9a(a6)
	move.w	#$7fff,$9c(a6)
	move.w	#$7f00,$9e(a6)

	move.w	$a(a6),OldY

	lea	LEV3_INTERRUPT(pc),a0
	move.l	a0,$6c.w

	lea	COPPERLIST(pc),a0
	move.l	a0,$80(a6)
	tst.w	$88(a6)

	bsr.w	Calc_Tables

	move.w	#%1000001111000000,$96(a6)
	move.w	#%1100000000100000,$9a(a6)

*-----------------------------------------------------------------------------*
.Main	Frame	311

;	move.w	#$fff,$dff180
	bsr.w	Rotate
;	move.w	#$777,$dff180

	addq.l	#1,Frames

	btst	#6,$bfe001
	bne.w	.Main

*-----------------------------------------------------------------------------*
	move.l	Temp_ActiView(pc),a1
	move.l	GfxBase(pc),a6
	jsr	_LVOLoadView(a6)

	lea	$dff000,a6
	move.w	#$7fff,$96(a6)
	move.w	#$7fff,$9a(a6)
	move.w	#$7fff,$9e(a6)

	move.l	Temp_CopList1(pc),$80(a6)
	move.l	Temp_CopList2(pc),$84(a6)
	move.l	Temp_Lev3Int(pc),$6c.w

	move.w	Temp_ADKCON(pc),d0
	or.w	#$8000,d0
	move.w	d0,$9e(a6)

	move.w	Temp_DMACON(pc),d0
	or.w	#$8000,d0
	move.w	d0,$96(a6)

	move.w	Temp_INTENA(pc),d0
	or.w	#$c000,d0
	move.w	d0,$9a(a6)

	move.l	$4.w,a6
	move.l	GfxBase(pc),a1
	jsr	_LVOCloseLibrary(a6)

.Error	jsr	_LVOPermit(a6)

	movem.l	(sp)+,d0-a6
	moveq	#0,d0

	move.l	Time(pc),d0
	move.l	Frames(pc),d1
	move.l	d0,d2
	divs.w	d1,d2
	rts

*-----------------------------------------------------------------------------*
Temp_ADKCON	dc.w	0
Temp_DMACON	dc.w	0
Temp_INTENA	dc.w	0
Temp_CopList1	dc.l	0
Temp_CopList2	dc.l	0
Temp_Lev3Int	dc.l	0
Temp_ActiView	dc.l	0

Time		dc.l	0
Frames		dc.l	0

GfxBase		dc.l	0

GfxName		dc.b	'graphics.library',0
		even

*-----------------------------------------------------------------------------*
LEV3_INTERRUPT
	movem.l	d0-a6,-(SP)

	bsr.w	Mouse

	addq.l	#1,Time

	movem.l	(SP)+,d0-a6
	move.w	#%0000000000100000,$dff09c
	rte

*-----------------------------------------------------------------------------*
MOUSE	lea	$dff000,a6

	move.b	$a(a6),d0
	sub.b	OldY(pc),d0
	ext.w	d0
	sub.w	d0,Zview

	move.b	$b(a6),d0
	sub.b	OldX(pc),d0
	ext.w	d0
	add.w	d0,Xview

	btst	#10,$16(a6)
	bne.s	.out

	move.b	$a(a6),d0
	sub.b	OldY(pc),d0
	ext.w	d0
	add.w	d0,d0
	sub.w	d0,Ax
	and.w	#511,Ax

	move.b	$b(a6),d0
	sub.b	OldX(pc),d0
	ext.w	d0
	add.w	d0,d0
	add.w	d0,Ky
	and.w	#511,Ky

.out	move.w	$a(a6),OldY
	rts

OldY	dc.b	0
OldX	dc.b	0

*-----------------------------------------------------------------------------*
CALC_TABLES
	lea	MulsTab(pc),a0
	moveq	#0,d0
	move.w	#ScHeigth-1,d1
.Loop	move.w	d0,(a0)+
	add.w	#ScWidth*Planes,d0
	dbf	d1,.Loop

CALC_COLOR
	lea	ColTab(pc),a0
	lea	Uncle(pc),a1
	move.w	#PlaneHeigth-1,d3

.Loop3	moveq	#PlaneWidth-1,d2

.Loop2	moveq	#7,d1

.Loop1	moveq	#0,d0
	btst	d1,0*4*32(a1)
	beq.s	.B0
	bset	#0,d0
.B0	btst	d1,1*4*32(a1)
	beq.s	.B1
	bset	#1,d0
.B1	btst	d1,2*4*32(a1)
	beq.s	.B2
	bset	#2,d0
.B2	btst	d1,3*4*32(a1)
	beq.s	.B3
	bset	#3,d0
.B3	move.w	d0,(a0)+
	dbf	d1,.Loop1

	addq.l	#1,a1
	dbf	d2,.Loop2		

	lea	16-PlaneWidth(a1),a1
	dbf	d3,.Loop3

CALC_COORD
	lea	Coords(pc),a0

	move.w	#-400,d0
	move.w	#-150,d1
	move.w	#+400,d2
	bsr.w	CalcBox
	move.w	#-400,d0
	move.w	#-050,d1
	move.w	#0000,d2
	bsr.w	CalcBox
	move.w	#-400,d0
	move.w	#-100,d1
	move.w	#-400,d2
	bsr.w	CalcBox

	move.w	#0000,d0
	move.w	#-200,d1
	move.w	#+400,d2
	bsr.w	CalcBox
	move.w	#0000,d0
	move.w	#-050,d1
	move.w	#0000,d2
	bsr.s	CalcBox
	move.w	#0000,d0
	move.w	#-150,d1
	move.w	#-400,d2
	bsr.s	CalcBox

	move.w	#+400,d0
	move.w	#-200,d1
	move.w	#+400,d2
	bsr.s	CalcBox
	move.w	#+400,d0
	move.w	#-000,d1
	move.w	#0000,d2
	bsr.s	CalcBox
	move.w	#+400,d0
	move.w	#-250,d1
	move.w	#-400,d2
	bsr.s	CalcBox

	move.w	#9999,(a0)+

CALC_OBJECT
	lea	Ctrl(pc),a0
	moveq	#0,d0
	moveq	#9-1,d3

.lp2	lea	BoxCtrl(pc),a1
	moveq	#6-1,d2
.lp1	move.l	#0,(a0)+
	move.w	(a1)+,d1
	add.w	d0,d1
	move.w	d1,(a0)+
	move.w	(a1)+,d1
	add.w	d0,d1
	move.w	d1,(a0)+
	move.w	(a1)+,d1
	add.w	d0,d1
	move.w	d1,(a0)+
	move.w	(a1)+,d1
	add.w	d0,d1
	move.w	d1,(a0)+
	dbf	d2,.lp1

	addq.w	#8,d0
	dbf	d3,.lp2

	move.w	#9999,(a0)+
	rts

CalcBox	lea	BoxCrds(pc),a1
	moveq	#8-1,d3
.lp1	move.w	(a1)+,d4
	add.w	d0,d4
	move.w	d4,(a0)+
	move.w	(a1)+,d4
	tst.w	d4
	beq.s	.skip
	add.w	d1,d4
.skip	move.w	d4,(a0)+
	move.w	(a1)+,d4
	add.w	d2,d4
	move.w	d4,(a0)+
	dbf	d3,.lp1
	rts
	
*-----------------------------------------------------------------------------*
SWAP_PLANES
	lea	BplPtrs(pc),a0

	movem.l	ShowPL(pc),d0-d2
	exg.l	d0,d1
	exg.l	d1,d2
	movem.l	d0-d2,ShowPL

	move.l	ShowPL(pc),d0
	moveq	#Planes-1,d1

.Loop	move.w	d0,6(a0)
	swap.w	d0
	move.w	d0,2(a0)
	swap.w	d0
	add.l	#ScWidth,d0
	addq.l	#8,a0
	dbf	d1,.Loop
	rts

ShowPL	dc.l	Pic1
WorkPL	dc.l	Pic2
ClrPL	dc.l	Pic3

*-----------------------------------------------------------------------------*
CLEAR_PLANES
	lea	$dff000,a6
	move.l	ClrPL(pc),a0
	WBLIT
	move.l	a0,$54(a6)
	move.l	#$01000000,$40(a6)
	move.w	#0,$66(a6)
	move.w	#ScHeigth*Planes<<6+ScWidth/2,$58(a6)
	rts	

*-----------------------------------------------------------------------------*
CALC_COORDS
	lea	Sin(pc),a0
	lea	Cos(pc),a1
	lea	Coords(pc),a2
	lea	Coords2(pc),a3

.loop1	movem.w	(a2)+,d0-d2		;x1,y1,z1

	move.w	Ky(pc),d7
	move.w	(a1,d7.w),d3
	move.w	d3,d4
	move.w	(a0,d7.w),d5
	move.w	d5,d6
	muls.w	d0,d3
	muls.w	d2,d5
	add.l	d3,d5
	asr.l	#8,d5			;x2

	muls.w	d0,d6
	muls.w	d2,d4
	sub.l	d6,d4
	asr.l	#8,d4			;z2

	move.w	Kx(pc),d7
	move.w	(a1,d7.w),d0
	move.w	d0,d2
	move.w	(a0,d7.w),d3
	move.w	d3,d6
	muls.w	d1,d0
	muls.w	d4,d3
	sub.l	d3,d0
	asr.l	#8,d0			;y3

	muls.w	d1,d6
	muls.w	d4,d2
	add.l	d6,d2
	asr.l	#8,d2			;z3

	move.w	Kz(pc),d7
	move.w	(a1,d7.w),d1
	move.w	d1,d3
	move.w	(a0,d7.w),d4
	move.w	d4,d6		
	muls.w	d5,d1
	muls.w	d0,d4
	sub.l	d4,d1
	asr.l	#8,d1
	move.w	d1,(a3)+

	muls.w	d5,d6
	muls.w	d0,d3
	add.l	d6,d3
	asr.l	#8,d3
	move.w	d3,(a3)+

	move.w	d2,(a3)+

	cmp.w	#9999,(a2)
	bne.w	.loop1

	move.w	#9999,(a3)+


	lea	Sin(pc),a0
	lea	Cos(pc),a1
	lea	Coords2(pc),a2
	lea	XYcoord(pc),a3
	lea	Zcoords(pc),a4

.loop2	movem.w	(a2)+,d0-d2		;x1,y1,z1
	sub.w	Xview(pc),d0
	sub.w	Yview(pc),d1
	sub.w	Zview(pc),d2

	move.w	Ay(pc),d7
	move.w	(a1,d7.w),d3
	move.w	d3,d4
	move.w	(a0,d7.w),d5
	move.w	d5,d6
	muls.w	d0,d3
	muls.w	d2,d5
	add.l	d3,d5
	asr.l	#8,d5			;x2

	muls.w	d0,d6
	muls.w	d2,d4
	sub.l	d6,d4
	asr.l	#8,d4			;z2

	move.w	Ax(pc),d7
	move.w	(a1,d7.w),d0
	move.w	d0,d2
	move.w	(a0,d7.w),d3
	move.w	d3,d6
	muls.w	d1,d0
	muls.w	d4,d3
	sub.l	d3,d0
	asr.l	#8,d0			;y3

	muls.w	d1,d6
	muls.w	d4,d2
	add.l	d6,d2
	asr.l	#8,d2			;z3
	move.w	d2,(a4)+

	move.w	Az(pc),d7
	move.w	(a1,d7.w),d1
	move.w	d1,d3
	move.w	(a0,d7.w),d4
	move.w	d4,d6		
	muls.w	d5,d1
	muls.w	d0,d4
	sub.l	d4,d1

	muls.w	d5,d6
	muls.w	d0,d3
	add.l	d6,d3

	add.w	Dist(pc),d2

	tst.w	d2
	ble.s	.Zok
	divs.w	d2,d1
	divs.w	d2,d3
.Zok	add.w	Xcentre(pc),d1
	add.w	Ycentre(pc),d3
	move.w	d1,(a3)+		;X
	move.w	d3,(a3)+		;Y

	cmp.w	#9999,(a2)
	bne.w	.loop2

	
	movem.w	Kx(pc),d0-d2
	add.w	#Xspd*2,d0
	add.w	#Yspd*2,d1
	add.w	#Zspd*2,d2
	and.w	#511,d0
	and.w	#511,d1
	and.w	#511,d2
	movem.w	d0-d2,Kx
	rts

*-----------------------------------------------------------------------------*
CALC_VISIBLITY
	lea	Ctrl(pc),a0
	lea	XYcoord(pc),a1
	
.Loop	lea	4(a0),a2

	move.w	(a2)+,d7
	add.w	d7,d7
	add.w	d7,d7
	movem.w	(a1,d7.w),d0/d1		;x,y

	move.w	(a2)+,d7
	add.w	d7,d7
	add.w	d7,d7
	movem.w	(a1,d7.w),d2/d3		;x1,y1

	move.w	(a2)+,d7
	add.w	d7,d7
	add.w	d7,d7
	movem.w	(a1,d7.w),d4/d5		;x2,y2

	sub.w	d2,d4
	move.w	d1,d6
	sub.w	d3,d6
	muls.w	d4,d6
	sub.w	d3,d5
	sub.w	d2,d0
	muls.w	d5,d0
	sub.l	d0,d6
	asr.l	#4,d6
	move.w	d6,2(a0)

	lea	12(a0),a0
	cmp.w	#9999,(a0)
	bne.s	.Loop
	rts

Spt	dc.w	0,0,0

*-----------------------------------------------------------------------------*
ROTATE	lea	Sin(pc),a0

	movem.w	Spt(pc),d0-d2
	addq.w	#4,d0
	addq.w	#2,d1
	addq.w	#2,d2
	and.w	#511,d0
	and.w	#511,d1
	and.w	#511,d2
	movem.w	d0-d2,Spt

	move.w	(a0,d0.w),d0
	asl.w	#1,d0
;	move.w	d0,Zview

	move.w	(a0,d1.w),d1
	asl.w	#1,d1
;	move.w	d1,Xview

*-----------------------------------------------------------------------------*
	bsr.w	Swap_Planes
	bsr.w	Clear_Planes
	bsr.w	Calc_Coords
	bsr.w	Calc_Visiblity

	lea	Ctrl(pc),a5

.Loop	tst.w	2(a5)
	ble.s	.Skip

	movem.l	a5-a6,-(SP)
	bsr.s	Draw
	movem.l	(SP)+,a5-a6

.Skip	lea	12(a5),a5
	cmp.w	#9999,(a5)
	bne.s	.Loop
	rts

*-----------------------------------------------------------------------------*
DRAW	movem.w	4(a5),d4-d7
	add.w	d4,d4
	add.w	d5,d5
	add.w	d6,d6
	add.w	d7,d7

	lea	Zcoords(pc),a6
	move.w	(a6,d4.w),d0
	add.w	(a6,d5.w),d0
	add.w	(a6,d6.w),d0
	add.w	(a6,d7.w),d0
	asr.w	#2,d0
	cmp.w	#-350,d0
	blt.w	.Out
	cmp.w	#650,d0
	bgt.w	.Out

	add.w	#150,d0
	asr.w	#6,d0
	move.w	d0,Col

	lea	XYcoord(pc),a6
	add.w	d4,d4
	add.w	d5,d5
	add.w	d6,d6
	add.w	d7,d7

	movem.w	(a6,d4.w),d0-d1
	movem.w	(a6,d7.w),d2-d3
	
	sub.w	d0,d2
	muls.w	#256,d2
	divs.w	#PlaneWidth*8,d2
	move.w	d2,Xadd1

	sub.w	d1,d3
	muls.w	#256,d3
	divs.w	#PlaneWidth*8,d3
	move.w	d3,Yadd1

	movem.w	(a6,d5.w),d0-d1
	movem.w	(a6,d6.w),d2-d3
	
	sub.w	d0,d2
	muls.w	#256,d2
	divs.w	#PlaneWidth*8,d2
	move.w	d2,Xadd2

	sub.w	d1,d3
	muls.w	#256,d3
	divs.w	#PlaneWidth*8,d3
	move.w	d3,Yadd2

	movem.w	(a6,d4.w),d0-d1
	movem.w	(a6,d5.w),d2-d3
	muls.w	#256,d0
	muls.w	#256,d1
	muls.w	#256,d2
	muls.w	#256,d3
	move.l	d0,a3
	move.l	d1,a4
	move.l	d2,a5
	move.l	d3,a6
	

	move.l	WorkPL(pc),a0
	lea	ColTab(pc),a1
	lea	MulsTab(pc),a2

	move.w	#PlaneHeigth,Ycount

.Loop1	move.l	a3,d0
	move.l	a4,d1
	move.l	a5,d2
	move.l	a6,d3
	
	sub.l	d0,d2
	asr.l	#4,d2
	sub.l	d1,d3
	asr.l	#4,d3


	move.w	#PlaneWidth*8,Xcount

.Loop2	move.l	d0,d4
	lsr.l	#8,d4
	cmp.w	#64,d4
	ble.s	.Back
	cmp.w	#ScWidth*8,d4
	bhs.s	.Back

	move.l	d1,d5
	lsr.l	#8,d5
	cmp.w	#ScHeigth,d5
	bhs.s	.Back

	move.b	d4,d6
	not.b	d6
	lsr.w	#3,d4
	add.w	d5,d5
	add.w	(a2,d5.w),d4

	move.w	(a1),d5
	add.w	Col(pc),d5
	cmp.w	#15,d5
	ble.s	.Ok1
	moveq	#15,d5
.Ok1	cmp.w	#1,d5
	bge.s	.Ok2
	moveq	#1,d5
.Ok2	add.w	d5,d5
	move.w	.OrTab(PC,d5.w),d5
	jmp	.OrTab(PC,d5.w)

.Back	addq.w	#2,a1
	add.l	d2,d0
	add.l	d3,d1
	subq.w	#1,Xcount
	bgt.s	.Loop2


	add.w	Xadd1(pc),a3
	add.w	Yadd1(pc),a4
	add.w	Xadd2(pc),a5
	add.w	Yadd2(pc),a6
	subq.w	#1,Ycount
	bgt.w	.Loop1
.Out	rts
			
.OrTab	dc.w	.A00-.OrTab,.A01-.OrTab,.A02-.OrTab,.A03-.OrTab
	dc.w	.A04-.OrTab,.A05-.OrTab,.A06-.OrTab,.A07-.OrTab
	dc.w	.A08-.OrTab,.A09-.OrTab,.A10-.OrTab,.A11-.OrTab
	dc.w	.A12-.OrTab,.A13-.OrTab,.A14-.OrTab,.A15-.OrTab
;	dc.w	.A16-.OrTab,.A17-.OrTab,.A18-.OrTab,.A19-.OrTab
;	dc.w	.A20-.OrTab,.A21-.OrTab,.A22-.OrTab,.A23-.OrTab
;	dc.w	.A24-.OrTab,.A25-.OrTab,.A26-.OrTab,.A27-.OrTab
;	dc.w	.A28-.OrTab,.A29-.OrTab,.A30-.OrTab,.A31-.OrTab

.A00	bclr.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.s	.Back

.A01	bset.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.s	.Back

.A02	bclr.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A03	bset.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A04	bclr.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A05	bset.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A06	bclr.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A07	bset.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bclr.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A08	bclr.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A09	bset.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A10	bclr.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A11	bset.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bclr.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A12	bclr.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A13	bset.b	d6,0*ScWidth(a0,d4.w)
	bclr.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A14	bclr.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

.A15	bset.b	d6,0*ScWidth(a0,d4.w)
	bset.b	d6,1*ScWidth(a0,d4.w)
	bset.b	d6,2*ScWidth(a0,d4.w)
	bset.b	d6,3*ScWidth(a0,d4.w)
	bra.w	.Back

*-----------------------------------------------------------------------------*
Col	dc.w	0

Xcount	dc.w	0
Ycount	dc.w	0

Xadd1	dc.w	0
Yadd1	dc.w	0
Xadd2	dc.w	0
Yadd2	dc.w	0

Xview	dc.w	0
Yview	dc.w	-160
Zview	dc.w	-00

Kx	dc.w	0*2
Ky	dc.w	0*2
Kz	dc.w	0*2

Ax	dc.w	0*2
Ay	dc.w	0*2
Az	dc.w	0*2

Xspd	= 0
Yspd	= 0
Zspd	= 0

Dist	dc.w	512
XCentre	dc.w	ScWidth*4-1
YCentre	dc.w	ScHeigth/2-1

BoxCtrl	dc.w	00,01,02,03
	dc.w	07,06,05,04
	dc.w	01,05,06,02
	dc.w	00,03,07,04
	dc.w	04,05,01,00
	dc.w	03,02,06,07

BoxCrds	dc.w	-060,-120,-060
	dc.w	+060,-120,-060
	dc.w	+060,0000,-060
	dc.w	-060,0000,-060
	dc.w	-060,-120,+060
	dc.w	+060,-120,+060
	dc.w	+060,0000,+060
	dc.w	-060,0000,+060

Ctrl	blk.w	6*6*32,0
Coords	blk.w	8*3*32,0

Coords2	blk.w	8*3*32,0
XYcoord	blk.w	8*2*32,0
Zcoords	blk.w	8*32,0
MulsTab	blk.w	ScHeigth,0

Sin	DC.W	$0000,$0006,$000C,$0012,$0019,$001F,$0025,$002B
	DC.W	$0031,$0037,$003E,$0044,$004A,$0050,$0056,$005B
	DC.W	$0061,$0067,$006D,$0072,$0078,$007D,$0083,$0088
	DC.W	$008D,$0093,$0098,$009D,$00A2,$00A6,$00AB,$00B0
	DC.W	$00B4,$00B9,$00BD,$00C1,$00C5,$00C9,$00CD,$00D0
	DC.W	$00D4,$00D7,$00DB,$00DE,$00E1,$00E4,$00E6,$00E9
	DC.W	$00EC,$00EE,$00F0,$00F2,$00F4,$00F6,$00F7,$00F9
	DC.W	$00FA,$00FB,$00FC,$00FD,$00FE,$00FE,$00FF,$00FF
Cos	DC.W	$00FF,$00FF,$00FF,$00FE,$00FE,$00FD,$00FC,$00FB
	DC.W	$00FA,$00F9,$00F7,$00F6,$00F4,$00F2,$00F0,$00EE
	DC.W	$00EC,$00E9,$00E6,$00E4,$00E1,$00DE,$00DB,$00D7
	DC.W	$00D4,$00D0,$00CD,$00C9,$00C5,$00C1,$00BD,$00B9
	DC.W	$00B4,$00B0,$00AB,$00A6,$00A2,$009D,$0098,$0093
	DC.W	$008D,$0088,$0083,$007D,$0078,$0072,$006D,$0067
	DC.W	$0061,$005B,$0056,$0050,$004A,$0044,$003E,$0037
	DC.W	$0031,$002B,$0025,$001F,$0019,$0012,$000C,$0006
	DC.W	$0000,$FFF9,$FFF3,$FFED,$FFE6,$FFE0,$FFDA,$FFD4
	DC.W	$FFCE,$FFC8,$FFC1,$FFBB,$FFB5,$FFAF,$FFA9,$FFA4
	DC.W	$FF9E,$FF98,$FF92,$FF8D,$FF87,$FF82,$FF7C,$FF77
	DC.W	$FF72,$FF6C,$FF67,$FF62,$FF5D,$FF59,$FF54,$FF4F
	DC.W	$FF4B,$FF46,$FF42,$FF3E,$FF3A,$FF36,$FF32,$FF2F
	DC.W	$FF2B,$FF28,$FF24,$FF21,$FF1E,$FF1B,$FF19,$FF16
	DC.W	$FF13,$FF11,$FF0F,$FF0D,$FF0B,$FF09,$FF08,$FF06
	DC.W	$FF05,$FF04,$FF03,$FF02,$FF01,$FF01,$FF00,$FF00
	DC.W	$FF00,$FF00,$FF00,$FF01,$FF01,$FF02,$FF03,$FF04
	DC.W	$FF05,$FF06,$FF08,$FF09,$FF0B,$FF0D,$FF0F,$FF11
	DC.W	$FF13,$FF16,$FF19,$FF1B,$FF1E,$FF21,$FF24,$FF28
	DC.W	$FF2B,$FF2F,$FF32,$FF36,$FF3A,$FF3E,$FF42,$FF46
	DC.W	$FF4B,$FF4F,$FF54,$FF59,$FF5D,$FF62,$FF67,$FF6C
	DC.W	$FF72,$FF77,$FF7C,$FF82,$FF87,$FF8D,$FF92,$FF98
	DC.W	$FF9E,$FFA4,$FFA9,$FFAF,$FFB5,$FFBB,$FFC1,$FFC8
	DC.W	$FFCE,$FFD4,$FFDA,$FFE0,$FFE6,$FFED,$FFF3,$FFF9
	DC.W	$0000,$0006,$000C,$0012,$0019,$001F,$0025,$002B
	DC.W	$0031,$0037,$003E,$0044,$004A,$0050,$0056,$005B
	DC.W	$0061,$0067,$006D,$0072,$0078,$007D,$0083,$0088
	DC.W	$008D,$0093,$0098,$009D,$00A2,$00A6,$00AB,$00B0
	DC.W	$00B4,$00B9,$00BD,$00C1,$00C5,$00C9,$00CD,$00D0
	DC.W	$00D4,$00D7,$00DB,$00DE,$00E1,$00E4,$00E6,$00E9
	DC.W	$00EC,$00EE,$00F0,$00F2,$00F4,$00F6,$00F7,$00F9
	DC.W	$00FA,$00FB,$00FC,$00FD,$00FE,$00FE,$00FF,$00FF
	DC.W	$00FF,$00FF,$00FF,$00FE,$00FE,$00FD,$00FC,$00FB

*-----------------------------------------------------------------------------*
COPPERLIST
	dc.w	$0001,$fffe,$0100,$0000

SprPtrs	dc.w	$0120,$0000,$0122,$0000,$0124,$0000,$0126,$0000
	dc.w	$0128,$0000,$012a,$0000,$012c,$0000,$012e,$0000
	dc.w	$0130,$0000,$0132,$0000,$0134,$0000,$0136,$0000
	dc.w	$0138,$0000,$013a,$0000,$013c,$0000,$013e,$0000

	dc.w	$008e,$4881,$0090,$10c1
	dc.w	$0092,$0038,$0094,$00d0
	dc.w	$0108,[Planes-1]*ScWidth
	dc.w	$010a,[Planes-1]*ScWidth
	dc.w	$0102,$0000,$0104,$0000
	dc.w	$0100,$4200

	dc.w	$0180,$0011,$0182,$0eff,$0184,$0dee,$0186,$0cdd
	dc.w	$0188,$0bcc,$018a,$0abb,$018c,$09aa,$018e,$0899
	dc.w	$0190,$0788,$0192,$0677,$0194,$0566,$0196,$0455
	dc.w	$0198,$0344,$019a,$0233,$019c,$0122,$019e,$0011

BplPtrs	dc.w	$00e0,$0000,$00e2,$0000,$00e4,$0000,$00e6,$0000
	dc.w	$00e8,$0000,$00ea,$0000,$00ec,$0000,$00ee,$0000

	dc.w	$475d,$fffe,$0180,$0233,$47d9,$fffe,$0180,$0011
	dc.w	$ffdd,$fffe
	dc.w	$105d,$fffe,$0180,$0233,$10d9,$fffe,$0180,$0011

	dc.w	$ffff,$fffe

*-----------------------------------------------------------------------------*
	incdir	DF1:
Uncle	incbin	laatta32.raw

ColTab	blk.w	PlaneWidth*8*PlaneHeigth,0
RotTab	blk.l	PlaneWidth*8*PlaneHeigth,0

Pic1	blk.b	ScSize*Planes,0
Pic2	blk.b	ScSize*Planes,0
Pic3	blk.b	ScSize*Planes,0


