#include<ultra64.h>
extern Vtx TR_Ring_v[];
extern Lights1 TR_Ring_material[];

extern unsigned short TR_Ring01_txt[];
extern unsigned short TR_Ring02_txt[];



#define gs_Nin_LoadTextureImage(timg,fmt,siz,width,height,tmem,tt)	\
	gsDPSetTextureImage(fmt,siz,1,timg),	\
	gsDPTileSync(),	\
	gsDPSetTile(fmt,siz,0,tmem,tt,0,0,0,0,0,0,0),	\
	gsDPLoadSync(),	\
	gsDPLoadBlock(tt,0,0,width*height-1,CALC_DXT(width,siz##_BYTES))

#define gs_Nin_SetUpTileDescrip(fmt,siz,width,height,tmem,tt,cs,ms,ss,ct,mt,st)	\
	gsDPTileSync(),	\
	gsDPSetTile(fmt,siz,((((width)*siz##_LINE_BYTES)+7)>>3),tmem,tt,0,ct,mt,st,cs,ms,ss),	\
	gsDPSetTileSize(tt,0,0,(width-1)<<G_TEXTURE_IMAGE_FRAC,(height-1)<<G_TEXTURE_IMAGE_FRAC)

#define G_CC_PRIMSHADE PRIMITIVE,0,SHADE,0,0,0,0,SHADE


/* ======== o1 ======== */

Gfx TR_Ring[]={

	gsDPLoadTextureBlock(TR_Ring01_txt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, G_TX_MIRROR, G_TX_MIRROR, 3, 3, G_TX_NOLOD, G_TX_NOLOD ),


	gsSPVertex(&TR_Ring_v[0], 32, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 2, 3, 0),
	gsSP1Triangle(4, 5, 1, 0),
	gsSP1Triangle(4, 1, 6, 0),
	gsSP1Triangle(7, 8, 5, 0),
	gsSP1Triangle(7, 5, 4, 0),
	gsSP1Triangle(9, 10, 11, 0),
	gsSP1Triangle(9, 11, 12, 0),
	gsSP1Triangle(13, 14, 10, 0),
	gsSP1Triangle(13, 10, 9, 0),
	gsSP1Triangle(15, 16, 17, 0),
	gsSP1Triangle(15, 17, 13, 0),
	gsSP1Triangle(18, 19, 20, 0),
	gsSP1Triangle(18, 20, 21, 0),
	gsSP1Triangle(22, 23, 24, 0),
	gsSP1Triangle(22, 24, 25, 0),
	gsSP1Triangle(26, 27, 23, 0),
	gsSP1Triangle(26, 23, 28, 0),
	gsSP1Triangle(29, 24, 30, 0),
	gsSP1Triangle(29, 30, 31, 0),
	gsSPVertex(&TR_Ring_v[16], 1, 0),
	gsSPVertex(&TR_Ring_v[26], 2, 1),
	gsSPVertex(&TR_Ring_v[30], 1, 3),
	gsSPVertex(&TR_Ring_v[32], 17, 4),
	gsSP1Triangle(4, 3, 2, 0),
	gsSP1Triangle(4, 2, 1, 0),
	gsSP1Triangle(5, 10, 11, 0),
	gsSP1Triangle(5, 11, 12, 0),
	gsSP1Triangle(6, 13, 14, 0),
	gsSP1Triangle(6, 14, 15, 0),
	gsSP1Triangle(7, 16, 17, 0),
	gsSP1Triangle(7, 17, 6, 0),
	gsSP1Triangle(8, 18, 16, 0),
	gsSP1Triangle(8, 16, 7, 0),
	gsSP1Triangle(9, 19, 0, 0),
	gsSP1Triangle(9, 0, 20, 0),



	gsDPLoadTextureBlock(TR_Ring02_txt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, G_TX_MIRROR, G_TX_MIRROR, 3, 3, G_TX_NOLOD, G_TX_NOLOD ),


	gsSPVertex(&TR_Ring_v[49], 32, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 2, 3, 0),
	gsSP1Triangle(4, 5, 1, 0),
	gsSP1Triangle(4, 1, 0, 0),
	gsSP1Triangle(3, 2, 6, 0),
	gsSP1Triangle(3, 6, 7, 0),
	gsSP1Triangle(8, 9, 10, 0),
	gsSP1Triangle(8, 10, 11, 0),
	gsSP1Triangle(12, 13, 14, 0),
	gsSP1Triangle(12, 14, 15, 0),
	gsSP1Triangle(16, 17, 13, 0),
	gsSP1Triangle(16, 13, 18, 0),
	gsSP1Triangle(19, 14, 20, 0),
	gsSP1Triangle(19, 20, 21, 0),
	gsSP1Triangle(22, 6, 23, 0),
	gsSP1Triangle(22, 23, 24, 0),
	gsSP1Triangle(25, 26, 27, 0),
	gsSP1Triangle(25, 27, 28, 0),
	gsSP1Triangle(29, 30, 26, 0),
	gsSP1Triangle(29, 26, 31, 0),
	gsSPVertex(&TR_Ring_v[76], 4, 0),
	gsSPVertex(&TR_Ring_v[81], 15, 4),
	gsSP1Triangle(1, 0, 4, 0),
	gsSP1Triangle(1, 4, 10, 0),
	gsSP1Triangle(5, 11, 3, 0),
	gsSP1Triangle(5, 3, 2, 0),
	gsSP1Triangle(6, 12, 13, 0),
	gsSP1Triangle(6, 13, 8, 0),
	gsSP1Triangle(7, 14, 15, 0),
	gsSP1Triangle(7, 15, 6, 0),
	gsSP1Triangle(8, 13, 16, 0),
	gsSP1Triangle(8, 16, 17, 0),
	gsSP1Triangle(9, 16, 18, 0),
	gsSP1Triangle(9, 18, 7, 0),
	gsSPEndDisplayList(),
}; /* o1 */ 

#undef G_CC_PRIMSHADE
#undef gs_Nin_LoadTextureImage
#undef gs_Nin_SetUpTileDescrip
/*  96 vertices */
Vtx TR_Ring_v[]={
	{  -182,0,0,0,-157,148,81,34,-81,255 },   /* v0 used p19/V1 1 times */ 
	{  -129,-129,0,0,-157,-3,90,69,36,255 },   /* v1 used p19/V2 2 times */ 
	{  -147,-147,-26,0,-196,16,37,16,-112,255 },   /* v2 used p19/V3 1 times */ 
	{  -208,0,-26,0,-196,190,81,34,-81,255 },   /* v3 used p19/V4 1 times */ 
	{  -208,0,26,0,-196,128,-36,16,111,255 },   /* v4 used p18/V1 2 times */ 
	{  -147,-147,26,0,-196,-45,-15,-36,111,255 },   /* v5 used p18/V2 2 times */ 
	{  -182,0,0,0,-157,148,112,-15,36,255 },   /* v6 used p18/V4 1 times */ 
	{  -234,0,0,0,-235,170,-80,-33,80,255 },   /* v7 used p17/V1 1 times */ 
	{  -165,-165,0,0,-235,-25,-80,-33,80,255 },   /* v8 used p17/V2 1 times */ 
	{  0,208,-26,0,240,312,-15,-36,-112,255 },   /* v9 used p12/V1 2 times */ 
	{  -147,147,-26,0,-15,312,-36,16,-112,255 },   /* v10 used p12/V2 2 times */ 
	{  -165,165,0,0,-31,308,-33,81,-81,255 },   /* v11 used p12/V3 1 times */ 
	{  0,234,0,0,256,308,16,112,-37,255 },   /* v12 used p12/V4 1 times */ 
	{  0,182,0,0,224,256,16,-111,36,255 },   /* v13 used p11/V1 2 times */ 
	{  -129,129,0,0,0,256,34,-80,-81,255 },   /* v14 used p11/V2 1 times */ 
	{  0,208,26,0,240,251,16,-36,111,255 },   /* v15 used p10/V1 1 times */ 
	{  -147,147,26,0,-15,251,-36,16,111,255 },   /* v16 used p9/V3 2 times */ 
	{  -129,129,0,0,0,256,90,-68,36,255 },   /* v17 used p10/V3 1 times */ 
	{  -208,0,-26,0,-196,190,-36,-15,-112,255 },   /* v18 used p20/V1 1 times */ 
	{  -147,-147,-26,0,-196,16,-80,-33,-81,255 },   /* v19 used p20/V2 1 times */ 
	{  -165,-165,0,0,-235,-25,-68,-89,-37,255 },   /* v20 used p20/V3 1 times */ 
	{  -234,0,0,0,-235,170,-111,16,-37,255 },   /* v21 used p20/V4 1 times */ 
	{  0,-208,-26,0,-15,-106,16,-36,-112,255 },   /* v22 used p28/V1 1 times */ 
	{  147,-147,-26,0,240,-106,-36,16,-112,255 },   /* v23 used p28/V2 2 times */ 
	{  165,-165,0,0,256,-163,69,-89,36,255 },   /* v24 used p28/V3 2 times */ 
	{  0,-234,0,0,-31,-163,34,-80,-81,255 },   /* v25 used p28/V4 1 times */ 
	{  0,-182,0,0,0,-110,-15,112,36,255 },   /* v26 used p27/V1 2 times */ 
	{  129,-129,0,0,224,-110,-68,90,-37,255 },   /* v27 used p27/V2 2 times */ 
	{  0,-208,-26,0,-15,-106,-33,81,-81,255 },   /* v28 used p27/V4 1 times */ 
	{  0,-234,0,0,-31,-163,-15,-111,36,255 },   /* v29 used p25/V1 1 times */ 
	{  147,-147,26,0,240,-167,37,-15,111,255 },   /* v30 used p26/V2 2 times */ 
	{  0,-208,26,0,-15,-167,34,-80,80,255 },   /* v31 used p25/V4 1 times */ 
	{  0,-208,26,0,-15,-167,-15,37,111,255 },   /* v32 used p26/V1 1 times */ 
	{  208,0,-26,0,421,16,81,34,-81,255 },   /* v33 used p4/V1 1 times */ 
	{  182,0,0,0,382,-3,-111,-15,-37,255 },   /* v34 used p3/V1 2 times */ 
	{  208,0,26,0,421,-45,-36,16,111,255 },   /* v35 used p2/V1 2 times */ 
	{  234,0,0,0,460,-25,112,-15,36,255 },   /* v36 used p1/V1 1 times */ 
	{  0,234,0,0,256,308,-33,81,80,255 },   /* v37 used p9/V1 1 times */ 
	{  147,147,-26,0,421,190,37,16,-112,255 },   /* v38 used p4/V2 1 times */ 
	{  165,165,0,0,460,170,69,90,-37,255 },   /* v39 used p4/V3 1 times */ 
	{  234,0,0,0,460,-25,81,34,-81,255 },   /* v40 used p4/V4 1 times */ 
	{  129,129,0,0,382,148,-68,-89,-37,255 },   /* v41 used p3/V2 1 times */ 
	{  147,147,-26,0,421,190,-80,-33,-81,255 },   /* v42 used p3/V3 1 times */ 
	{  208,0,-26,0,421,16,-36,-15,-112,255 },   /* v43 used p3/V4 1 times */ 
	{  147,147,26,0,421,128,-15,-36,111,255 },   /* v44 used p2/V2 2 times */ 
	{  129,129,0,0,382,148,-80,-33,80,255 },   /* v45 used p2/V3 1 times */ 
	{  165,165,0,0,460,170,81,34,80,255 },   /* v46 used p1/V2 1 times */ 
	{  -165,165,0,0,-31,308,-89,69,36,255 },   /* v47 used p9/V2 1 times */ 
	{  0,208,26,0,240,251,-33,81,80,255 },   /* v48 used p9/V4 1 times */ 
	{  -147,-147,-26,0,579,275,37,16,-112,255 },   /* v49 used p24/V1 2 times */ 
	{  0,-208,-26,0,579,449,16,-36,-112,255 },   /* v50 used p24/V2 2 times */ 
	{  0,-234,0,0,618,429,-15,-111,36,255 },   /* v51 used p24/V3 2 times */ 
	{  -165,-165,0,0,618,234,-68,-89,-37,255 },   /* v52 used p24/V4 2 times */ 
	{  -129,-129,0,0,541,256,34,81,-81,255 },   /* v53 used p23/V1 1 times */ 
	{  0,-182,0,0,541,408,34,81,-81,255 },   /* v54 used p23/V2 1 times */ 
	{  0,-208,26,0,579,388,-15,37,111,255 },   /* v55 used p22/V2 2 times */ 
	{  -147,-147,26,0,579,214,-15,-36,111,255 },   /* v56 used p21/V4 1 times */ 
	{  147,-147,26,0,398,510,-80,34,80,255 },   /* v57 used p30/V1 1 times */ 
	{  208,0,26,0,142,510,-36,16,111,255 },   /* v58 used p30/V2 1 times */ 
	{  182,0,0,0,158,515,-80,34,80,255 },   /* v59 used p30/V3 1 times */ 
	{  129,-129,0,0,382,515,-80,34,80,255 },   /* v60 used p30/V4 1 times */ 
	{  147,-147,-26,0,398,572,81,-33,-81,255 },   /* v61 used p32/V1 1 times */ 
	{  208,0,-26,0,142,572,-36,-15,-112,255 },   /* v62 used p32/V2 2 times */ 
	{  234,0,0,0,126,567,112,-15,36,255 },   /* v63 used p32/V3 2 times */ 
	{  165,-165,0,0,414,567,81,-33,-81,255 },   /* v64 used p32/V4 1 times */ 
	{  129,-129,0,0,382,515,-68,90,-37,255 },   /* v65 used p31/V1 1 times */ 
	{  182,0,0,0,158,515,-111,-15,-37,255 },   /* v66 used p31/V2 1 times */ 
	{  147,-147,-26,0,398,572,-36,16,-112,255 },   /* v67 used p31/V4 1 times */ 
	{  165,-165,0,0,414,567,69,-89,36,255 },   /* v68 used p29/V1 1 times */ 
	{  208,0,26,0,142,510,81,-33,80,255 },   /* v69 used p29/V3 1 times */ 
	{  147,-147,26,0,398,510,37,-15,111,255 },   /* v70 used p29/V4 1 times */ 
	{  -147,-147,26,0,579,214,34,81,80,255 },   /* v71 used p22/V1 1 times */ 
	{  0,-182,0,0,541,408,-15,112,36,255 },   /* v72 used p22/V3 1 times */ 
	{  -129,-129,0,0,541,256,90,69,36,255 },   /* v73 used p22/V4 1 times */ 
	{  -147,147,-26,0,142,153,-36,16,-112,255 },   /* v74 used p16/V1 1 times */ 
	{  -208,0,-26,0,398,153,-36,-15,-112,255 },   /* v75 used p16/V2 2 times */ 
	{  -234,0,0,0,414,96,-111,16,-37,255 },   /* v76 used p16/V3 2 times */ 
	{  -165,165,0,0,126,96,-89,69,36,255 },   /* v77 used p16/V4 2 times */ 
	{  -129,129,0,0,158,148,90,-68,36,255 },   /* v78 used p15/V1 2 times */ 
	{  -182,0,0,0,382,148,112,-15,36,255 },   /* v79 used p15/V2 2 times */ 
	{  -147,147,-26,0,142,153,81,-33,-81,255 },   /* v80 used p15/V4 1 times */ 
	{  -208,0,26,0,398,91,-36,16,111,255 },   /* v81 used p13/V3 1 times */ 
	{  -147,147,26,0,142,91,81,-33,80,255 },   /* v82 used p14/V1 1 times */ 
	{  147,147,-26,0,-38,449,37,16,-112,255 },   /* v83 used p8/V1 2 times */ 
	{  129,129,0,0,0,408,-68,-89,-37,255 },   /* v84 used p6/V4 2 times */ 
	{  165,165,0,0,-76,429,69,90,-37,255 },   /* v85 used p8/V4 2 times */ 
	{  147,147,26,0,-38,388,-15,-36,111,255 },   /* v86 used p6/V1 1 times */ 
	{  -147,147,26,0,142,91,-36,16,111,255 },   /* v87 used p13/V4 1 times */ 
	{  -208,0,26,0,398,91,81,-33,80,255 },   /* v88 used p14/V2 1 times */ 
	{  0,208,-26,0,-38,275,34,81,-81,255 },   /* v89 used p8/V2 1 times */ 
	{  0,234,0,0,-76,234,16,112,-37,255 },   /* v90 used p8/V3 2 times */ 
	{  0,182,0,0,0,255,-33,-80,-81,255 },   /* v91 used p7/V2 1 times */ 
	{  0,208,-26,0,-38,275,-15,-36,-112,255 },   /* v92 used p7/V3 1 times */ 
	{  0,208,26,0,-38,214,16,-36,111,255 },   /* v93 used p5/V3 2 times */ 
	{  147,147,26,0,-38,388,34,81,80,255 },   /* v94 used p5/V4 1 times */ 
	{  0,182,0,0,0,255,16,-111,36,255 },   /* v95 used p6/V3 1 times */ 
};




unsigned short TR_Ring01_txt[] = {
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
	0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 0x19f7, 
};

unsigned short TR_Ring02_txt[] = {
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
	0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 0xff19, 
};

