#include<ultra64.h>
extern Vtx DEMO_Slippy_kosi_v[];
extern Lights1 DEMO_Slippy_kosi_material[];

extern unsigned short DEMO_Belt_txt[];
extern unsigned short DEMO_Black_txt[];
extern unsigned short DEMO_Blue_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


Gfx DEMO_Slippy_kosi[]={

	gsDPLoadTextureBlock(DEMO_Blue_txt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_MIRROR, G_TX_MIRROR, 4, 4, G_TX_NOLOD, G_TX_NOLOD ),


	gsSPVertex(&DEMO_Slippy_kosi_v[0], 32, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 0, 2, 0),
	gsSP1Triangle(4, 1, 5, 0),
	gsSP1Triangle(4, 2, 1, 0),
	gsSP1Triangle(2, 4, 6, 0),
	gsSP1Triangle(2, 6, 7, 0),
	gsSP1Triangle(2, 7, 3, 0),
	gsSP1Triangle(8, 9, 10, 0),
	gsSP1Triangle(7, 6, 11, 0),
	gsSP1Triangle(7, 11, 12, 0),
	gsSP1Triangle(11, 6, 13, 0),
	gsSP1Triangle(13, 14, 11, 0),
	gsSP1Triangle(15, 12, 11, 0),
	gsSP1Triangle(11, 14, 15, 0),
	gsSP1Triangle(15, 16, 12, 0),
	gsSP1Triangle(5, 17, 4, 0),
	gsSP1Triangle(4, 17, 13, 0),
	gsSP1Triangle(13, 6, 4, 0),
	gsSP1Triangle(18, 19, 20, 0),
	gsSP1Triangle(18, 21, 19, 0),
	gsSP1Triangle(22, 12, 16, 0),
	gsSP1Triangle(3, 7, 12, 0),
	gsSP1Triangle(12, 22, 3, 0),
	gsSP1Triangle(23, 24, 25, 0),
	gsSP1Triangle(26, 27, 28, 0),
	gsSP1Triangle(29, 30, 31, 0),
	gsSPVertex(&DEMO_Slippy_kosi_v[32], 15, 0),
	gsSP1Triangle(0, 5, 6, 0),
	gsSP1Triangle(0, 6, 7, 0),
	gsSP1Triangle(1, 8, 9, 0),
	gsSP1Triangle(2, 10, 11, 0),
	gsSP1Triangle(3, 11, 10, 0),
	gsSP1Triangle(4, 12, 13, 0),
	gsSP1Triangle(4, 13, 14, 0),



	gsDPLoadTextureBlock(DEMO_Belt_txt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_CLAMP | G_TX_NOMIRROR, G_TX_CLAMP | G_TX_NOMIRROR, 4, 4, G_TX_NOLOD, G_TX_NOLOD ),


	gsSPVertex(&DEMO_Slippy_kosi_v[47], 7, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 4, 5, 0),
	gsSP1Triangle(3, 5, 6, 0),
	gsDPLoadTextureBlock(DEMO_Blue_txt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_MIRROR, G_TX_MIRROR, 4, 4, G_TX_NOLOD, G_TX_NOLOD ),


	gsSPVertex(&DEMO_Slippy_kosi_v[27], 2, 0),
	gsSPVertex(&DEMO_Slippy_kosi_v[54], 1, 2),
	gsSP1Triangle(2, 1, 0, 0),
	gsDPLoadTextureBlock(DEMO_Black_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(&DEMO_Slippy_kosi_v[55], 3, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSPEndDisplayList(),
}; /* o1 */ 

#undef G_CC_PRIMSHADE
#undef gs_Nin_LoadTextureImage
#undef gs_Nin_SetUpTileDescrip
/*  58 vertices */
Vtx DEMO_Slippy_kosi_v[]={
	{  13,-56,17,0,689,223,-90,-75,16,255 },   /* v0 used p29/V1 2 times */ 
	{  24,-33,47,0,512,397,-65,-28,94,255 },   /* v1 used p29/V2 3 times */ 
	{  1,-18,23,0,401,154,-117,-18,-3,255 },   /* v2 used p29/V3 6 times */ 
	{  26,-55,-43,0,679,126,-86,-74,-32,255 },   /* v3 used p38/V3 4 times */ 
	{  1,20,23,0,111,154,-115,24,17,255 },   /* v4 used p26/V3 6 times */ 
	{  25,34,47,0,0,397,-51,31,102,255 },   /* v5 used p26/V1 2 times */ 
	{  14,25,-58,0,72,-9,-111,20,-37,255 },   /* v6 used p8/V2 5 times */ 
	{  14,-24,-58,0,440,-9,-102,-19,-57,255 },   /* v7 used p36/V2 5 times */ 
	{  42,67,17,0,-255,448,30,112,28,255 },   /* v8 used p28/V1 1 times */ 
	{  42,34,47,0,0,512,23,24,114,255 },   /* v9 used p28/V2 1 times */ 
	{  64,34,41,0,0,334,89,72,33,255 },   /* v10 used p28/V3 1 times */ 
	{  42,34,-73,0,0,131,-24,31,-113,255 },   /* v11 used p27/V1 6 times */ 
	{  41,-33,-73,0,512,131,0,-30,-115,255 },   /* v12 used p24/V3 6 times */ 
	{  27,56,-43,0,-166,126,-85,77,-32,255 },   /* v13 used p32/V3 4 times */ 
	{  42,57,-43,0,-172,226,77,89,-20,255 },   /* v14 used p27/V2 2 times */ 
	{  64,34,-62,0,0,319,78,58,-69,255 },   /* v15 used p27/V3 3 times */ 
	{  63,-33,-62,0,512,319,89,-70,-37,255 },   /* v16 used p24/V2 2 times */ 
	{  14,57,17,0,-176,223,-88,78,16,255 },   /* v17 used p26/V2 2 times */ 
	{  63,-33,-62,0,512,511,89,-70,-37,255 },   /* v18 used p22/V1 2 times */ 
	{  41,-67,17,0,768,1069,49,-106,19,255 },   /* v19 used p22/V3 2 times */ 
	{  41,-56,-43,0,685,623,40,-104,-39,255 },   /* v20 used p23/V3 1 times */ 
	{  63,-33,41,0,512,1279,82,-54,67,255 },   /* v21 used p22/V2 1 times */ 
	{  41,-56,-43,0,685,226,40,-104,-39,255 },   /* v22 used p30/V1 2 times */ 
	{  41,-33,47,0,512,512,15,-26,114,255 },   /* v23 used p31/V1 1 times */ 
	{  41,-67,17,0,768,448,49,-106,19,255 },   /* v24 used p31/V2 1 times */ 
	{  63,-33,41,0,512,334,82,-54,67,255 },   /* v25 used p31/V3 1 times */ 
	{  26,-55,-43,0,679,1174,-86,-74,-32,255 },   /* v26 used p33/V1 1 times */ 
	{  41,-67,17,0,768,766,49,-106,19,255 },   /* v27 used p33/V2 2 times */ 
	{  13,-56,17,0,689,707,-90,-75,16,255 },   /* v28 used p33/V3 2 times */ 
	{  42,67,17,0,512,0,30,112,28,255 },   /* v29 used p34/V1 1 times */ 
	{  42,57,-43,0,512,511,77,89,-20,255 },   /* v30 used p34/V2 1 times */ 
	{  27,56,-43,0,0,512,-85,77,-32,255 },   /* v31 used p34/V3 1 times */ 
	{  42,34,47,0,0,511,23,24,114,255 },   /* v32 used p10/V1 2 times */ 
	{  41,-56,-43,0,512,512,40,-104,-39,255 },   /* v33 used p4/V1 1 times */ 
	{  27,56,-43,0,-166,1174,-85,77,-32,255 },   /* v34 used p1/V1 1 times */ 
	{  25,34,47,0,0,511,-51,31,102,255 },   /* v35 used p17/V1 1 times */ 
	{  64,34,41,0,0,1279,89,72,33,255 },   /* v36 used p13/V1 2 times */ 
	{  41,-33,47,0,512,511,15,-26,114,255 },   /* v37 used p9/V2 1 times */ 
	{  63,-33,41,0,512,0,82,-54,67,255 },   /* v38 used p10/V2 2 times */ 
	{  64,34,41,0,0,0,89,72,33,255 },   /* v39 used p10/V3 1 times */ 
	{  41,-67,17,0,512,0,49,-106,19,255 },   /* v40 used p4/V2 1 times */ 
	{  26,-55,-43,0,0,511,-86,-74,-32,255 },   /* v41 used p4/V3 1 times */ 
	{  14,57,17,0,-176,707,-88,78,16,255 },   /* v42 used p1/V2 2 times */ 
	{  42,67,17,0,-255,766,30,112,28,255 },   /* v43 used p1/V3 2 times */ 
	{  64,34,-62,0,0,511,78,58,-69,255 },   /* v44 used p12/V2 1 times */ 
	{  42,57,-43,0,-172,623,77,89,-20,255 },   /* v45 used p13/V2 2 times */ 
	{  42,67,17,0,-255,1069,30,112,28,255 },   /* v46 used p13/V3 1 times */ 
	{  25,34,47,0,-511,512,-51,31,102,255 },   /* v47 used p16/V1 1 times */ 
	{  42,34,47,0,0,511,23,24,114,255 },   /* v48 used p16/V2 1 times */ 
	{  42,67,17,0,0,-875,30,112,28,255 },   /* v49 used p16/V3 1 times */ 
	{  25,34,47,0,-374,509,-51,31,102,255 },   /* v50 used p3/V1 2 times */ 
	{  24,-33,47,0,855,509,-65,-28,94,255 },   /* v51 used p2/V2 1 times */ 
	{  41,-33,47,0,855,-12,15,-26,114,255 },   /* v52 used p3/V2 2 times */ 
	{  42,34,47,0,-374,-12,23,24,114,255 },   /* v53 used p3/V3 1 times */ 
	{  24,-33,47,0,512,511,-65,-28,94,255 },   /* v54 used p39/V1 1 times */ 
	{  41,-33,47,0,0,255,15,-26,114,255 },   /* v55 used p40/V1 1 times */ 
	{  24,-33,47,0,256,255,-65,-28,94,255 },   /* v56 used p40/V2 1 times */ 
	{  41,-67,17,0,0,-437,49,-106,19,255 },   /* v57 used p40/V3 1 times */ 
};




unsigned short DEMO_Belt_txt[] = {
	0x1, 0x739d, 0xd6b5, 0xe739, 0xce73, 0xce73, 0xce73, 0xe739, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x739d, 0x1, 
	0x1, 0x739d, 0xb5ad, 0xd6b5, 0xe739, 0xce73, 0xce73, 0xce73, 0xe739, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x739d, 0x1, 
	0x1, 0x1, 0x739d, 0xb5ad, 0xd6b5, 0xe739, 0xce73, 0xce73, 0xce73, 0xe739, 0xffff, 0xffff, 0xffff, 0x739d, 0x1, 0x1, 
	0x1, 0x1, 0x739d, 0xffff, 0xb5ad, 0xd6b5, 0xe739, 0xce73, 0xce73, 0xce73, 0xe739, 0xffff, 0xffff, 0x739d, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x739d, 0xffff, 0xb5ad, 0xd6b5, 0xe739, 0xce73, 0xce73, 0xce73, 0xe739, 0x739d, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0xb5ad, 0xd6b5, 0xe739, 0xce73, 0xce73, 0xce73, 0x739d, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0xb5ad, 0xd6b5, 0xe739, 0xce73, 0x739d, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0xffff, 0xb5ad, 0xd6b5, 0xe739, 0x739d, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0xffff, 0xb5ad, 0x739d, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0xffff, 0xffff, 0x739d, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0x739d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x739d, 0xffff, 0xffff, 0x739d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x739d, 0x739d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x739d, 0x739d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
};

unsigned short DEMO_Black_txt[] = {
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
	0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 
};

unsigned short DEMO_Blue_txt[] = {
	0x1121, 0x1121, 0x1121, 0x1121, 0x1123, 0x1123, 0x1165, 0x8d9, 0x126d, 0x1165, 0x1167, 0x1167, 0x1167, 0x1167, 0x1165, 0x1123, 
	0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 0x1165, 0x1165, 0x8d9, 0x126d, 0x1165, 0x1165, 0x1165, 0x1165, 0x1165, 0x1165, 0x1165, 
	0x1123, 0x1121, 0x1121, 0x1121, 0x1123, 0x1123, 0x1123, 0x8d7, 0x126b, 0x1121, 0x1121, 0x1121, 0x1123, 0x1123, 0x1123, 0x1123, 
	0x921, 0x91f, 0x91f, 0x91f, 0x91f, 0x91f, 0x91f, 0x895, 0x1267, 0x91d, 0x91d, 0x91d, 0x91f, 0x91f, 0x91f, 0x1121, 
	0x91f, 0x91d, 0x8dd, 0x8db, 0x8db, 0x8db, 0x8d9, 0x891, 0x1223, 0x8d9, 0x8d9, 0x8db, 0x8db, 0x8dd, 0x91f, 0x91f, 
	0x91f, 0x91d, 0x8db, 0x8d9, 0x8d9, 0x8d7, 0x8d7, 0x8f, 0x1223, 0x8d7, 0x8d9, 0x8d9, 0x8db, 0x8dd, 0x91f, 0x91f, 
	0x921, 0x91f, 0x91d, 0x8db, 0x8d9, 0x8d9, 0x8d7, 0x891, 0x1223, 0x8d9, 0x8db, 0x8db, 0x91d, 0x91f, 0x921, 0x1121, 
	0x1123, 0x1123, 0x921, 0x91f, 0x91d, 0x8dd, 0x8db, 0x893, 0x1267, 0x91d, 0x91f, 0x91f, 0x921, 0x1121, 0x1123, 0x1123, 
	0x1125, 0x1125, 0x1125, 0x1123, 0x1121, 0x921, 0x921, 0x8d7, 0x1269, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 0x1125, 
	0x1125, 0x1125, 0x1165, 0x1165, 0x1125, 0x1125, 0x1125, 0x8d9, 0x126b, 0x1165, 0x1125, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 
	0x1123, 0x1125, 0x1125, 0x1165, 0x1165, 0x1165, 0x1165, 0x8d9, 0x126d, 0x1165, 0x1125, 0x1123, 0x1123, 0x1121, 0x1121, 0x1123, 
	0x1121, 0x1121, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 0x8d9, 0x126b, 0x1123, 0x1123, 0x1121, 0x1121, 0x1121, 0x1121, 0x1121, 
	0x91f, 0x91f, 0x91f, 0x91f, 0x91f, 0x1121, 0x1121, 0x8d7, 0x1269, 0x921, 0x921, 0x921, 0x921, 0x91f, 0x91f, 0x91f, 
	0x8dd, 0x8dd, 0x8dd, 0x8dd, 0x91d, 0x91f, 0x91f, 0x895, 0x1269, 0x91f, 0x921, 0x921, 0x1121, 0x1121, 0x91f, 0x91f, 
	0x8dd, 0x8db, 0x8db, 0x8db, 0x91d, 0x91f, 0x91f, 0x8d7, 0x1269, 0x1121, 0x1123, 0x1123, 0x1123, 0x1123, 0x1121, 0x91f, 
	0x91f, 0x91d, 0x91d, 0x91d, 0x111f, 0x1121, 0x1123, 0x8d9, 0x126b, 0x1125, 0x1125, 0x1165, 0x1165, 0x1165, 0x1123, 0x1121, 
};

