
; rotazione VECTRO executor....


	lea	OBJCOORDS(pc),a5
	move.l	(a5),a5
	
	lea	OBJPOS(pc),a0
	lea	matsin(pc),a1
	lea	OBJTABLE1(pc),a6
	lea	OBJTABLE2(pc),a3
	
masterrotaction:
	move.w	(a0),d0	
	add.w	d0,d0
	lea	(a1,d0.w),a4	; sin(x)

	move.w	2(a0),d0
	add.w	d0,d0
	LEA	(A1,D0.W),A2	; sin(y)

	move.w	4(a0),d0
	add.w	d0,d0
	LEA	(a1,d0.w),A1	; sin(z)
	
	move.w	10(a0),d7
	
convloop:
	move.w	(a5)+,d1	; x
	asl.w	#2,d1
	move.w	(a5)+,d2	; y
	asl.w	#2,d2
	move.w	(a5)+,d3	; z
	asl.w	#2,d3

rotxz:  tst.w	(a0)
	beq.s	rotxy
	move.w	d1,d4		;x
	move.w	d3,d6		;z
	muls	180(a4),d4	;x*cos(x)
	muls	(a4),d6		;z*cos(x)
	sub.l	d6,d4		;x*cos(x)-z*cos(x)
	add.l	d4,d4
	swap	d4		;x
	muls	(a4),d1		;x*sin(x)
	muls	180(a4),d3	;z*cos(x)
	add.l	d1,d3		;x*sin(x)+z*cos(x)
	add.l	d3,d3
	swap	d3		;z
	move.w	d4,d1

rotxy:  tst.w	2(a0)
	beq.s	rotyz
	move.w	d1,d4		;x
	move.w	d2,d6		;y
	muls	180(a2),d4	;x*cos(y)
	muls	(a2),d6		;y*sin(y)
	sub.l	d6,d4		;x*cos(y)-y*sin(y)
	add.l	d4,d4
	swap	d4		;x
	muls	(a2),d1		;x*sin(y)
	muls	180(a2),d2	;y*cos(y)
	add.l	d1,d2		;x*sin(y)+y*cos(y)
	add.l	d2,d2
	swap	d2		;y
	move.w	d4,d1

rotyz:  tst.w	4(a0)
	beq.s	rotend
	move.w	d2,d4		;y
	move.w	d3,d6		;z
	muls	180(a1),d4	;y*cos(z)
	muls	(a1),d6		;z*sin(z)
	sub.l	d6,d4		;y*cos(z)-z*sin(z)
	add.l	d4,d4
	swap	d4		;y
	muls	(a1),d2		;y*sin(z)
	muls	180(a1),d3	;z*cos(z)
	add.l	d2,d3		;y*sin(z)+z*cos(z)
	add.l	d3,d3
	swap	d3		;z
	move.w	d4,d2
rotend:
	move.w	d3,(a6)+
	add.w	d7,d3
	ext.l	d1
	ext.l	d2
	ext.l	d3
	asl.l	#8,d1
	asl.l	#8,d2
	divs	d3,d1
	divs	d3,d2		
	movem.w	d1-d2,(a3)
	lea	4(a3),a3
	cmp.w	#$7fff,(a5)
	bne.w	convloop
	move.w	#$7fff,(a3)
	rts


**************************************************


;OBJECT DATA STRUCTURE------------------------------------------------

	
OBJCOORDS:
	dc.l	0,0
;	points,faces

OBJPOS:
	dc.w	100,50,100		;xrot,yrot,zrot
	dc.w	160,100,-200		;xpos,ypos,zpos
	dc.w	0,0,0
	dc.w	0,0,0
	
OBJCOLOR:
	dc.l	0
	
OBJTABLE1:
	blk.b	1024,0
OBJTABLE2:
	blk.b	1024,0

FACETABLE:
	blk.w	100,0
FACETABLE2:
	blk.w	100,0

VEKTDATA1:
	dc.l	FACEBASE-VEKTDATA1
	
	dc.w 0,130,0
	dc.w -20,100,0
	dc.w 0,90,-10
	dc.w 0,90,10
	dc.w 20,100,0
	dc.w -10,-50,0
	dc.w 0,-50,-5
	dc.w 0,-50,5
	dc.w 10,-50,0
	dc.w 40,-50,-10
	dc.w -40,-50,-10
	dc.w -40,-70,-10
	dc.w 40,-70,-10
	dc.w 40,-50,10
	dc.w -40,-50,10
	dc.w -40,-70,10
	dc.w 40,-70,10
	dc.w 10,-70,-10
	dc.w -10,-70,-10
	dc.w -10,-120,-10
	dc.w 10,-120,-10
	dc.w 10,-70,10
	dc.w -10,-70,10
	dc.w -10,-120,10
	dc.w 10,-120,10
	dc.w	$7fff
	
	FACEBASE:
	dc.w 18
	dc.l	FACE1-VEKTDATA1
	dc.l	FACE2-VEKTDATA1
	dc.l	FACE3-VEKTDATA1
	dc.l	FACE4-VEKTDATA1
	dc.l	FACE5-VEKTDATA1
	dc.l	FACE6-VEKTDATA1
	dc.l	FACE7-VEKTDATA1
	dc.l	FACE8-VEKTDATA1
	dc.l	FACE9-VEKTDATA1
	dc.l	FACE10-VEKTDATA1
	dc.l	FACE11-VEKTDATA1
	dc.l	FACE12-VEKTDATA1
	dc.l	FACE13-VEKTDATA1
	dc.l	FACE14-VEKTDATA1
	dc.l	FACE15-VEKTDATA1
	dc.l	FACE16-VEKTDATA1
	dc.l	FACE17-VEKTDATA1
	dc.l	FACE18-VEKTDATA1
	dc.l	FACE19-VEKTDATA1

FACE1:	dc.w 3,2,0,1,2,0
FACE2:	dc.w 3,1,0,3,1,0
FACE3:	dc.w 3,1,0,2,4,0
FACE4:	dc.w 3,2,0,4,3,0
FACE5:	dc.w 4,1,2,1,5,6,2
FACE6:	dc.w 4,2,3,7,5,1,3
FACE7:	dc.w 4,2,4,2,6,8,4
FACE8:	dc.w 4,1,4,8,7,3,4
FACE9:	dc.w 4,11,9,10,11,12,9
FACE10:	dc.w 4,11,13,16,15,14,13
FACE11:	dc.w 4,12,10,9,13,14,10
FACE12:	dc.w 4,13,11,10,14,15,11
FACE13:	dc.w 4,12,12,11,15,16,12
FACE14:	dc.w 4,13,9,12,16,13,9
FACE15:	dc.w 4,5,17,18,19,20,17
FACE16:	dc.w 4,5,21,24,23,22,21
FACE17:	dc.w 4,7,19,18,22,23,19
FACE18:	dc.w 4,6,20,19,23,24,20
FACE19:	dc.w 4,7,17,20,24,21,17

VEKTDATA2:
VEK:
	dc.l	FBASE-VEK
	dc.w 110,-60,20
	dc.w 120,-40,20
	dc.w 110,-20,20
	dc.w 120,0,20
	dc.w 110,20,20
	dc.w 120,40,20
	dc.w 110,60,20
	dc.w 120,80,20
	dc.w 110,100,20
	dc.w 60,100,20
	dc.w 40,90,20
	dc.w 30,80,20
	dc.w 20,60,20
	dc.w 30,40,20
	dc.w 40,30,20
	dc.w 60,20,20
	dc.w 20,-60,20
	dc.w -10,100,-20
	dc.w -160,100,-20
	dc.w -110,80,-20
	dc.w -100,60,-20
	dc.w -110,40,-20
	dc.w -100,20,-20
	dc.w -110,0,-20
	dc.w -100,-20,-20
	dc.w -110,-40,-20
	dc.w -90,-60,-20
	dc.w -10,-60,-20
	dc.w -10,20,-20
	dc.w -40,20,-20
	dc.w -20,-40,-20
	dc.w -80,-30,-20
	dc.w -80,80,-20
	dc.w 110,-60,-20
	dc.w 120,-40,-20
	dc.w 110,-20,-20
	dc.w 120,0,-20
	dc.w 110,20,-20
	dc.w 120,40,-20
	dc.w 110,60,-20
	dc.w 120,80,-20
	dc.w 110,100,-20
	dc.w 60,100,-20
	dc.w 40,90,-20
	dc.w 30,80,-20
	dc.w 20,60,-20
	dc.w 30,40,-20
	dc.w 40,30,-20
	dc.w 60,20,-20
	dc.w 20,-60,-20
	dc.w -10,100,20
	dc.w -160,100,20
	dc.w -110,80,20
	dc.w -100,60,20
	dc.w -110,40,20
	dc.w -100,20,20
	dc.w -110,0,20
	dc.w -100,-20,20
	dc.w -110,-40,20
	dc.w -90,-60,20
	dc.w -10,-60,20
	dc.w -10,20,20
	dc.w -40,20,20
	dc.w -20,-40,20
	dc.w -80,-30,20
	dc.w -80,80,20
	dc.w	$7fff

FBASE:
	dc.w	36
	dc.l	FAC1-VEK
	dc.l	FAC2-VEK
	dc.l	FAC3-VEK
	dc.l	FAC4-VEK
	dc.l	FAC5-VEK
	dc.l	FAC6-VEK
	dc.l	FAC7-VEK
	dc.l	FAC8-VEK
	dc.l	FAC9-VEK
	dc.l	FAC10-VEK
	dc.l	FAC11-VEK
	dc.l	FAC12-VEK
	dc.l	FAC13-VEK
	dc.l	FAC14-VEK
	dc.l	FAC15-VEK
	dc.l	FAC16-VEK
	dc.l	FAC17-VEK
	dc.l	FAC18-VEK
	dc.l	FAC19-VEK
	dc.l	FAC20-VEK
	dc.l	FAC21-VEK
	dc.l	FAC22-VEK
	dc.l	FAC23-VEK
	dc.l	FAC24-VEK
	dc.l	FAC25-VEK
	dc.l	FAC26-VEK
	dc.l	FAC27-VEK
	dc.l	FAC28-VEK
	dc.l	FAC29-VEK
	dc.l	FAC30-VEK
	dc.l	FAC31-VEK
	dc.l	FAC32-VEK
	dc.l	FAC33-VEK
	dc.l	FAC34-VEK
	dc.l	FAC35-VEK
	dc.l	FAC36-VEK
	dc.l	FAC37-VEK

FAC1:	dc.w 17,10,0,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
FAC2:	dc.w 16,9,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,17
FAC3:	dc.w 17,9,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,33
FAC4:	dc.w 4,2,1,34,33,0,1
FAC5:	dc.w 4,3,2,35,34,1,2
FAC6:	dc.w 4,4,3,36,35,2,3
FAC7:	dc.w 4,5,4,37,36,3,4
FAC8:	dc.w 4,6,5,38,37,4,5
FAC9:	dc.w 4,7,6,39,38,5,6
FAC10:	dc.w 4,6,7,40,39,6,7
FAC11:	dc.w 4,5,8,41,40,7,8
FAC12:	dc.w 4,4,9,42,41,8,9
FAC13:	dc.w 4,3,10,43,42,9,10
FAC14:	dc.w 4,2,11,44,43,10,11
FAC15:	dc.w 4,3,12,45,44,11,12
FAC16:	dc.w 4,4,13,46,45,12,13
FAC17:	dc.w 4,5,14,47,46,13,14
FAC18:	dc.w 4,6,15,48,47,14,15
FAC19:	dc.w 4,7,16,49,48,15,16
FAC20:	dc.w 4,6,0,33,49,16,0
FAC21:	dc.w 4,2,18,17,50,51,18
FAC22:	dc.w 4,3,19,18,51,52,19
FAC23:	dc.w 4,4,20,19,52,53,20
FAC24:	dc.w 4,5,21,20,53,54,21
FAC25:	dc.w 4,6,22,21,54,55,22
FAC26:	dc.w 4,7,23,22,55,56,23
FAC27:	dc.w 4,6,24,23,56,57,24
FAC28:	dc.w 4,5,25,24,57,58,25
FAC29:	dc.w 4,4,26,25,58,59,26
FAC30:	dc.w 4,3,27,26,59,60,27
FAC31:	dc.w 4,2,28,27,60,61,28
FAC32:	dc.w 4,3,29,28,61,62,29
FAC33:	dc.w 4,4,30,29,62,63,30
FAC34:	dc.w 4,5,31,30,63,64,31
FAC35:	dc.w 4,6,32,31,64,65,32
FAC36:	dc.w 4,7,17,32,65,50,17
FAC37:	dc.w 16,9,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,50,51

objpalette:
	dc.w $000,$f00,$c00,$a00,$800,$0f0,$0c0,$080
objpalette2:
	dc.w $000,$fff,$ccc,$aaa,$888,$666,$444,$222
objpalette3:
	dc.w $000,$f00,$c00,$a00,$800,$0f0,$0c0,$080


matsin:
	dc.w	0,572,1144,1715,2286,2856
	dc.w	3425,3993,4560,5126,5690,6252
	dc.w	6813,7371,7927,8481,9032,9580
	dc.w	10126,10668,11207,11743,12275,12803
	dc.w	13328,13848,14364,14876,15383,15886
	dc.w	16383,16876,17364,17846,18323,18794
	dc.w	19260,19720,20173,20621,21062,21497,21925
	dc.w	22347,22762,23170,23571,23964
	dc.w	24351,24730,25101,25465,25821,26169
	dc.w	26509,26841,27165,27481,27788,28087
	dc.w	28377,28659,28932,29196,29451,29697
	dc.w	29934,30162,30381,30591,30791,30982
	dc.w	31163,31335,31498,31650,31794,31927
	dc.w	32051,32165,32269,32364,32448,32523
	dc.w	32588,32642,32687,32722,32747,32762
	dc.w	32767,32762,32747,32722,32687,32642
	dc.w	32588,32523,32448,32364,32269,32165
	dc.w	32051,31927,31794,31650,31498,31335
	dc.w	31163,30982,30791,30591,30381,30162
	dc.w	29934,29697,29451,29196,28932,28659
	dc.w	28377,28087,27788,27481,27165,26841
	dc.w	26509,26169,25821,25465,25101,24730
	dc.w	24351,23964,23571,23170,22762,22347
	dc.w	21925,21497,21062,20621,20173,19720
	dc.w	19260,18794,18323,17846,17364,16876
	dc.w	16384,15886,15383,14876,14364,13848
	dc.w	13328,12803,12275,11743,11207,10668
	dc.w	10126,9580,9032,8481,7927,7371
	dc.w	6813,6252,5690,5126,4560,3993
	dc.w	3425,2856,2286,1715,1144,572
	dc.w	0,-571,-1143,-1714,-2285,-2855
	dc.w	-3425,-3993,-4560,-5125,-5689,-6252
	dc.w	-6812,-7370,-7927,-8480,-9031,-9580
	dc.w	-10125,-10667,-11206,-11742,-12274,-12803
	dc.w	-13327,-13847,-14364,-14875,-15383,-15885
	dc.w	-16383,-16876,-17363,-17846,-18323,-18794
	dc.w	-19259,-19719,-20173,-20620,-21062,-21497
	dc.w	-21925,-22347,-22761,-23169,-23570,-23964
	dc.w	-24350,-24729,-25100,-25464,-25820,-26168
	dc.w	-26509,-26841,-27165,-27480,-27787,-28086
	dc.w	-28377,-28658,-28931,-29195,-29450,-29696
	dc.w	-29934,-30162,-30381,-30590,-30790,-30981
	dc.w	-31163,-31335,-31497,-31650,-31793,-31927
	dc.w	-32050,-32164,-32269,-32363,-32448,-32522
	dc.w	-32587,-32642,-32687,-32722,-32747,-32762
	dc.w	-32767,-32762,-32747,-32722,-32687,-32642
	dc.w	-32587,-32522,-32448,-32363,-32269,-32164
	dc.w	-32050,-31927,-31793,-31650,-31497,-31335
	dc.w	-31163,-30981,-30790,-30590,-30381,-30162
	dc.w	-29934,-29696,-29450,-29195,-28931,-28658
	dc.w	-28377,-28086,-27787,-27480,-27165,-26841
	dc.w	-26509,-26168,-25820,-25464,-25100,-24729
	dc.w	-24350,-23964,-23570,-23169,-22761,-22347
	dc.w	-21925,-21497,-21062,-20620,-20173,-19719
	dc.w	-19259,-18794,-18323,-17846,-17363,-16876
	dc.w	-16383,-15885,-15383,-14875,-14364,-13847
	dc.w	-13327,-12803,-12274,-11742,-11206,-10667
	dc.w	-10125,-9580,-9031,-8480,-7927,-7370
	dc.w	-6812,-6252,-5689,-5125,-4560,-3993
	dc.w	-3425,-2855,-2285,-1714,-1143,-571
	dc.w	0,572,1144,1715,2286,2856
	dc.w	3425,3993,4560,5126,5690,6252
	dc.w	6813,7371,7927,8481,9032,9580
	dc.w	10126,10668,11207,11743,12275,12803
	dc.w	13328,13848,14364,14876,15383,15886
	dc.w	16383,16876,17364,17846,18323,18794
	dc.w	19260,19720,20173,20621,21062,21497
	dc.w	21925,22347,22762,23170,23571,23964
	dc.w	24351,24730,25101,25465,25821,26169
	dc.w	26509,26841,27165,27481,27788,28087
	dc.w	28377,28659,28932,29196,29451,29697
	dc.w	29934,30162,30381,30591,30791,30982
	dc.w	31163,31335,31498,31650,31794,31927
	dc.w	32051,32165,32269,32364,32448,32523
	dc.w	32588,32642,32687,32722,32747,32762
	dc.w	32767,32762,32747,32722,32687,32642
	dc.w	32588,32523,32448,32364,32269,32165
	dc.w	32051,31927,31794,31650,31498,31335
	dc.w	31163,30982,30791,30591,30381,30162
	dc.w	29934,29697,29451,29196,28932,28659
	dc.w	28377,28087,27788,27481,27165,26841
	dc.w	26509,26169,25821,25465,25101,24730
	dc.w	24351,23964,23571,23170,22762,22347
	dc.w	21925,21497,21062,20621,20173,19720
	dc.w	19260,18794,18323,17846,17364,16876
	dc.w	16384,15886,15383,14876,14364,13848
	dc.w	13328,12803,12275,11743,11207,10668
	dc.w	10126,9580,9032,8481,7927,7371
	dc.w	6813,6252,5690,5126,4560,3993
	dc.w	3425,2856,2286,1715,1144,572
	dc.w	0,-571,-1143,-1714,-2285,-2855
	dc.w	-3425,-3993,-4560,-5125,-5689,-6252
	dc.w	-6812,-7370,-7927,-8480,-9031,-9580
	dc.w	-10125,-10667,-11206,-11742,-12274,-12803
	dc.w	-13327,-13847,-14364,-14875,-15383,-15885
	dc.w	-16383,-16876,-17363,-17846,-18323,-18794
	dc.w	-19259,-19719,-20173,-20620,-21062,-21497
	dc.w	-21925,-22347,-22761,-23169,-23570,-23964
	dc.w	-24350,-24729,-25100,-25464,-25820,-26168
	dc.w	-26509,-26841,-27165,-27480,-27787,-28086
	dc.w	-28377,-28658,-28931,-29195,-29450,-29696
	dc.w	-29934,-30162,-30381,-30590,-30790,-30981
	dc.w	-31163,-31335,-31497,-31650,-31793,-31927
	dc.w	-32050,-32164,-32269,-32363,-32448,-32522
	dc.w	-32587,-32642,-32687,-32722,-32747,-32762
	dc.w	-32767,-32762,-32747,-32722,-32687,-32642
	dc.w	-32587,-32522,-32448,-32363,-32269,-32164
	dc.w	-32050,-31927,-31793,-31650,-31497,-31335
	dc.w	-31163,-30981,-30790,-30590,-30381,-30162
	dc.w	-29934,-29696,-29450,-29195,-28931,-28658
	dc.w	-28377,-28086,-27787,-27480,-27165,-26841
	dc.w	-26509,-26168,-25820,-25464,-25100,-24729
	dc.w	-24350,-23964,-23570,-23169,-22761,-22347
	dc.w	-21925,-21497,-21062,-20620,-20173,-19719
	dc.w	-19259,-18794,-18323,-17846,-17363,-16876
	dc.w	-16383,-15885,-15383,-14875,-14364,-13847
	dc.w	-13327,-12803,-12274,-11742,-11206,-10667
	dc.w	-10125,-9580,-9031,-8480,-7927,-7370
	dc.w	-6812,-6252,-5689,-5125,-4560,-3993
	dc.w	-3425,-2855,-2285,-1714,-1143,-571
	CNOP	0,4
