#include<ultra64.h>

extern Vtx DEMO_Fox_kosi_v[];
extern Vtx DEMO_Fox_kosi_vmcur[];
extern Tri DEMO_Fox_kosi_tri[];
extern Mtx DEMO_Fox_kosi_matrix[];

extern unsigned short DEMO_Belt_txt[];
extern unsigned short DEMO_Foxgreen02_txt[];
extern unsigned short DEMO_FOXwhite_txt[];
extern unsigned short DEMO_Fox_yellow_txt[];
extern unsigned short DEMO_Foxgreen_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)

/* main display list */


/* ======== o1 ======== */

Gfx DEMO_Fox_kosi[]={

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,0,G_TX_CLAMP,4,0,G_TX_CLAMP,4,0),
	gs_Nin_LoadTextureImage(DEMO_Belt_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),

	gsSPVertex(&DEMO_Fox_kosi_v[0], 6, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(2, 3, 4, 0),
	gsSP1Triangle(2, 4, 0, 0),
	gsSP1Triangle(3, 5, 4, 0),

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,0,G_TX_MIRROR,4,0,G_TX_MIRROR,4,0),
	gs_Nin_LoadTextureImage(DEMO_FOXwhite_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),

	gsSPVertex(&DEMO_Fox_kosi_v[6], 5, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 1, 0, 0),
	gsSP1Triangle(4, 1, 3, 0),
	gsSP1Triangle(2, 1, 4, 0),

	gs_Nin_LoadTextureImage(DEMO_Fox_yellow_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),

	gsSPVertex(&DEMO_Fox_kosi_v[11], 7, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 3, 1, 0),
	gsSP1Triangle(4, 5, 0, 0),
	gsSP1Triangle(5, 3, 0, 0),
	gsSP1Triangle(2, 1, 6, 0),
	gsSP1Triangle(6, 5, 4, 0),

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,32,32,0,0,G_TX_MIRROR,5,0,G_TX_MIRROR,5,0),
	gs_Nin_LoadTextureImage(DEMO_Foxgreen02_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,32,32,0,7),

	gsSPVertex(&DEMO_Fox_kosi_v[18], 16, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 4, 0, 0),
	gsSP1Triangle(2, 1, 5, 0),
	gsSP1Triangle(6, 2, 5, 0),
	gsSP1Triangle(5, 7, 6, 0),
	gsSP1Triangle(7, 3, 6, 0),
	gsSP1Triangle(4, 3, 7, 0),
	gsSP1Triangle(8, 9, 10, 0),
	gsSP1Triangle(8, 11, 9, 0),
	gsSP1Triangle(12, 13, 14, 0),
	gsSP1Triangle(14, 15, 12, 0),
	gsSPVertex(&DEMO_Fox_kosi_v[31], 16, 0),
	gsSP1Triangle(3, 0, 9, 0),
	gsSP1Triangle(1, 0, 3, 0),
	gsSP1Triangle(1, 4, 6, 0),
	gsSP1Triangle(5, 4, 1, 0),
	gsSP1Triangle(6, 2, 1, 0),
	gsSP1Triangle(4, 5, 10, 0),
	gsSP1Triangle(7, 11, 12, 0),
	gsSP1Triangle(8, 13, 14, 0),
	gsSP1Triangle(8, 15, 13, 0),
	gsSPEndDisplayList(),
}; /* o1 */ 

/* 47 vertices */
Vtx DEMO_Fox_kosi_v[]={
	{ 38,-21,30,0, 511, 511, 11, -19, 117, 0 },   /* v0 p33/V4 used 2 times */ 
	{ 57,-33,13,0, 651, -87, 44, -100, 47, 0 },   /* v1 p32/V2 used 1 times */ 
	{ 58,-16,22,0, 451, 13, 49, -18, 107, 0 },   /* v2 p33/V1 used 2 times */ 
	{ 58,17,22,0, 49, 13, 50, 18, 107, 0 },   /* v3 p33/V2 used 2 times */ 
	{ 39,22,30,0, 0, 511, 11, 19, 117, 0 },   /* v4 p33/V3 used 2 times */ 
	{ 58,33,13,0, -152, -87, 43, 109, 24, 0 },   /* v5 p10/V2 used 1 times */ 
	{ -25,1,-67,0, 255, 568, -64, -95, 30, 0 },   /* v6 p30/V1 used 2 times */ 
	{ -23,1,-105,0, 255, 102, -72, -94, -4, 0 },   /* v7 p30/V2 used 4 times */ 
	{ 3,-20,-70,0, 0, 511, -68, -93, 25, 0 },   /* v8 p30/V3 used 2 times */ 
	{ 3,22,-70,0, 512, 511, -66, 96, 25, 0 },   /* v9 p31/V1 used 2 times */ 
	{ 38,0,-36,0, 256, 914, 81, 0, -89, 0 },   /* v10 p4/V1 used 2 times */ 
	{ -25,1,-67,0, 255, -293, -62, 98, 30, 0 },   /* v11 p25/V1 used 4 times */ 
	{ 29,18,-36,0, 512, 512, -56, 95, 44, 0 },   /* v12 p25/V3 used 3 times */ 
	{ 3,22,-70,0, 554, -106, -66, 96, 25, 0 },   /* v13 p29/V3 used 2 times */ 
	{ 1,1,-30,0, 255, 362, -115, 1, -32, 0 },   /* v14 p25/V2 used 2 times */ 
	{ 3,-20,-70,0, -42, -106, -68, -93, 25, 0 },   /* v15 p28/V1 used 2 times */ 
	{ 28,-17,-36,0, 0, 512, -58, -93, 44, 0 },   /* v16 p28/V2 used 3 times */ 
	{ 38,0,-36,0, 256, 592, 81, 0, -89, 0 },   /* v17 p17/V1 used 2 times */ 
	{ 1,1,-30,0, 512, 191, -115, 1, -32, 0 },   /* v18 p16/V1 used 2 times */ 
	{ 8,50,-33,0, -252, 303, -114, 20, -29, 0 },   /* v19 p16/V2 used 2 times */ 
	{ 29,18,-36,0, 239, 624, 31, 25, -113, 0 },   /* v20 p16/V3 used 3 times */ 
	{ 28,-17,-36,0, 784, 624, 31, -25, -113, 0 },   /* v21 p14/V2 used 3 times */ 
	{ 7,-49,-33,0, 1276, 303, 42, -104, -41, 0 },   /* v22 p14/V1 used 2 times */ 
	{ 58,33,-22,0, 0, 1024, 58, 60, -86, 0 },   /* v23 p15/V3 used 3 times */ 
	{ 38,0,-36,0, 512, 772, 81, 0, -89, 0 },   /* v24 p15/V1 used 3 times */ 
	{ 57,-33,-22,0, 1024, 1024, 53, -90, -57, 0 },   /* v25 p14/V3 used 3 times */ 
	{ 7,-49,24,0, 0, 1024, 31, -102, 52, 0 },   /* v26 p13/V1 used 2 times */ 
	{ 57,-33,-22,0, 1024, 0, 53, -90, -57, 0 },   /* v27 p13/V2 used 2 times */ 
	{ 57,-33,13,0, 386, -4, 44, -100, 47, 0 },   /* v28 p13/V3 used 1 times */ 
	{ 7,-49,-33,0, 1024, 1024, 42, -104, -41, 0 },   /* v29 p12/V2 used 1 times */ 
	{ 7,-49,-33,0, 444, 6754, -114, -16, -29, 0 },   /* v30 p22/V1 used 2 times */ 
	{ 7,-49,24,0, 1378, 5416, -117, -23, -1, 0 },   /* v31 p22/V2 used 3 times */ 
	{ -3,1,26,0, 1235, 4092, -109, 1, 46, 0 },   /* v32 p22/V3 used 6 times */ 
	{ 1,1,-30,0, 452, 4087, -115, 1, -32, 0 },   /* v33 p3/V2 used 2 times */ 
	{ 38,-21,30,0, 1840, 4675, 11, -19, 117, 0 },   /* v34 p18/V3 used 2 times */ 
	{ 8,50,24,0, 1396, 2772, -36, 96, 61, 0 },   /* v35 p21/V2 used 3 times */ 
	{ 39,22,30,0, 1846, 3536, 11, 19, 117, 0 },   /* v36 p1/V1 used 2 times */ 
	{ 8,50,-33,0, 497, 1397, -114, 20, -29, 0 },   /* v37 p21/V3 used 2 times */ 
	{ 39,22,30,0, 0, 1024, 11, 19, 117, 0 },   /* v38 p19/V1 used 1 times */ 
	{ 58,33,13,0, 386, -4, 43, 109, 24, 0 },   /* v39 p6/V1 used 2 times */ 
	{ 57,-33,13,0, 2197, 5037, 44, -100, 47, 0 },   /* v40 p11/V3 used 1 times */ 
	{ 58,33,13,0, 2206, 3188, 43, 109, 24, 0 },   /* v41 p9/V3 used 1 times */ 
	{ -3,1,26,0, 511, 2044, -109, 1, 46, 0 },   /* v42 p19/V2 used 1 times */ 
	{ 38,-21,30,0, 1024, 1024, 11, -19, 117, 0 },   /* v43 p19/V3 used 1 times */ 
	{ 8,50,-33,0, 1024, 1024, 43, 109, -27, 0 },   /* v44 p6/V3 used 2 times */ 
	{ 8,50,24,0, 0, 1024, -36, 96, 61, 0 },   /* v45 p7/V3 used 1 times */ 
	{ 58,33,-22,0, 1023, 0, 58, 60, -86, 0 },   /* v46 p6/V2 used 1 times */ 
};


/*   0 vertices */
/*   1 Materials */

#define	LDIRX	0
#define	LDIRY	0
#define	LDIRZ	120
#define	AMBDIV	1
