#include<ultra64.h>

extern Vtx DEMO_Falco_body_v[];
extern Vtx DEMO_Falco_body_vmcur[];
extern Tri DEMO_Falco_body_tri[];
extern Mtx DEMO_Falco_body_matrix[];

extern unsigned short DEMO_Falcoclose_txt[];
extern unsigned short DEMO_Belt_txt[];
extern unsigned short DEMO_Black_txt[];
extern unsigned short DEMO_Falco_blue_txt[];
extern unsigned short DEMO_Foxkubi_txt[];
extern unsigned short DEMO_Jacket_txt[];
extern unsigned short DEMO_Jacket02_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_Falco_body[]={

	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_Falco_body_v[0], 4, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(2, 3, 0, 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_Black_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),

	gsSPVertex(&DEMO_Falco_body_v[4], 4, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(2, 1, 3, 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_Jacket_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,32,32,0,7),

	gsSPVertex(&DEMO_Falco_body_v[8], 16, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 4, 2, 0),
	gsSP1Triangle(5, 6, 2, 0),
	gsSP1Triangle(2, 4, 5, 0),
	gsSP1Triangle(2, 1, 3, 0),
	gsSP1Triangle(6, 0, 2, 0),
	gsSP1Triangle(7, 4, 3, 0),
	gsSP1Triangle(3, 8, 7, 0),
	gsSP1Triangle(9, 5, 4, 0),
	gsSP1Triangle(4, 7, 9, 0),
	gsSP1Triangle(10, 6, 5, 0),
	gsSP1Triangle(5, 9, 10, 0),
	gsSP1Triangle(11, 12, 13, 0),
	gsSP1Triangle(13, 14, 11, 0),
	gsSP1Triangle(13, 12, 15, 0),
	gsSP1Triangle(14, 6, 10, 0),
	gsSPVertex(&DEMO_Falco_body_v[14], 1, 1),
	gsSPVertex(&DEMO_Falco_body_v[19], 11, 2),
	gsSPVertex(&DEMO_Falco_body_v[34], 1, 13),
	gsSP1Triangle(6, 7, 4, 0),
	gsSP1Triangle(5, 8, 9, 0),
	gsSP1Triangle(4, 7, 8, 0),
	gsSP1Triangle(4, 8, 5, 0),
	gsSP1Triangle(1, 5, 9, 0),
	gsSP1Triangle(2, 5, 10, 0),
	gsSP1Triangle(9, 0, 1, 0),
	gsSP1Triangle(11, 12, 3, 0),
	gsSP1Triangle(6, 3, 12, 0),
	gsSP1Triangle(3, 2, 11, 0),
	gsSP1Triangle(12, 13, 6, 0),
	gsSP1Triangle(10, 11, 2, 0),
	gsSPVertex(&DEMO_Falco_body_v[15], 4, 0),
	gsSPVertex(&DEMO_Falco_body_v[22], 1, 4),
	gsSPVertex(&DEMO_Falco_body_v[27], 8, 5),
	gsSP1Triangle(8, 6, 5, 0),
	gsSP1Triangle(3, 5, 4, 0),
	gsSP1Triangle(6, 8, 9, 0),
	gsSP1Triangle(9, 7, 6, 0),
	gsSP1Triangle(3, 2, 10, 0),
	gsSP1Triangle(11, 10, 2, 0),
	gsSP1Triangle(2, 0, 11, 0),
	gsSP1Triangle(0, 1, 11, 0),
	gsSP1Triangle(12, 7, 9, 0),

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,32,32,0,0,G_TX_CLAMP,5,0,G_TX_CLAMP,5,0),
	gs_Nin_LoadTextureImage(DEMO_Foxkubi_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,32,32,0,7),

	gsSPVertex(&DEMO_Falco_body_v[35], 6, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(1, 3, 4, 0),
	gsSP1Triangle(3, 1, 0, 0),
	gsSP1Triangle(5, 3, 0, 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_Jacket02_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),

	gsSPVertex(&DEMO_Falco_body_v[41], 10, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 3, 4, 0),
	gsSP1Triangle(5, 1, 0, 0),
	gsSP1Triangle(0, 4, 5, 0),
	gsSP1Triangle(4, 3, 6, 0),
	gsSP1Triangle(7, 4, 6, 0),
	gsSP1Triangle(6, 8, 7, 0),
	gsSP1Triangle(9, 8, 6, 0),

	gs_Nin_LoadTextureImage(DEMO_Falco_blue_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),

	gsSPVertex(&DEMO_Falco_body_v[51], 6, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(2, 3, 0, 0),
	gsSP1Triangle(1, 0, 4, 0),
	gsSP1Triangle(4, 0, 3, 0),
	gsSP1Triangle(5, 3, 2, 0),
	gsSP1Triangle(3, 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_Falcoclose_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,32,32,0,7),

	gsSPVertex(&DEMO_Falco_body_v[57], 5, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(2, 3, 0, 0),
	gsSP1Triangle(2, 4, 3, 0),
	gsSPEndDisplayList(),
}; /* o1 */ 

/* 62 vertices */
Vtx DEMO_Falco_body_v[]={
	{ 16,19,29,0, 67, 227, -37, 21, 111, 0 },   /* v0 p11/V1 used 2 times */ 
	{ -8,26,16,0, 0, 512, -75, 65, 65, 0 },   /* v1 p11/V2 used 1 times */ 
	{ -8,-24,16,0, 512, 512, -75, -49, 78, 0 },   /* v2 p11/V3 used 2 times */ 
	{ 16,-18,29,0, 444, 227, -32, -25, 112, 0 },   /* v3 p54/V2 used 1 times */ 
	{ 96,32,15,0, 0, 512, 91, -49, 59, 0 },   /* v4 p23/V1 used 1 times */ 
	{ 93,0,34,0, 5, 582, 104, 0, 58, 0 },   /* v5 p23/V2 used 2 times */ 
	{ 96,0,-17,0, 0, 582, 110, 0, 47, 0 },   /* v6 p23/V3 used 2 times */ 
	{ 95,-31,15,0, 1, 652, 92, 49, 59, 0 },   /* v7 p57/V3 used 1 times */ 
	{ 126,-48,-13,0, 1315, 1067, -33, -94, -65, 0 },   /* v8 p26/V2 used 3 times */ 
	{ 126,-64,24,0, 1574, 606, -52, -105, -18, 0 },   /* v9 p29/V2 used 2 times */ 
	{ 86,-43,23,0, 1245, 1066, -34, -112, -21, 0 },   /* v10 p29/V1 used 6 times */ 
	{ 73,-30,38,0, 1024, 1024, 3, -25, 116, 0 },   /* v11 p29/V3 used 4 times */ 
	{ 72,-55,23,0, 1442, 1219, -11, -113, 36, 0 },   /* v12 p30/V2 used 5 times */ 
	{ 85,-55,-14,0, 1442, 1535, 12, -100, -64, 0 },   /* v13 p30/V3 used 5 times */ 
	{ 95,-30,-24,0, 1024, 1555, 113, -37, 9, 0 },   /* v14 p33/V2 used 6 times */ 
	{ 15,-43,14,0, 1239, 1965, -38, -85, 73, 0 },   /* v15 p52/V2 used 5 times */ 
	{ 16,-18,29,0, 821, 1770, -32, -25, 112, 0 },   /* v16 p43/V2 used 2 times */ 
	{ 15,-43,-9,0, 1239, 2258, -38, -110, -24, 0 },   /* v17 p52/V1 used 6 times */ 
	{ -6,-21,-31,0, 873, 2766, 20, -15, -117, 0 },   /* v18 p49/V1 used 5 times */ 
	{ 86,56,-14,0, -418, 1535, 14, 101, -64, 0 },   /* v19 p37/V1 used 5 times */ 
	{ 73,56,23,0, -418, 1219, -9, 114, 36, 0 },   /* v20 p28/V2 used 5 times */ 
	{ 87,44,23,0, -221, 1066, -47, 107, -27, 0 },   /* v21 p31/V1 used 6 times */ 
	{ 95,31,-24,0, 0, 1555, 1, 26, -117, 0 },   /* v22 p31/V3 used 7 times */ 
	{ 73,31,38,0, 0, 1024, 3, 26, 116, 0 },   /* v23 p28/V3 used 4 times */ 
	{ 127,64,24,0, -550, 606, -50, 107, -18, 0 },   /* v24 p27/V2 used 2 times */ 
	{ 127,48,-13,0, -291, 1067, -31, 95, -65, 0 },   /* v25 p31/V2 used 3 times */ 
	{ 127,0,-41,0, 512, 1419, -23, 0, -118, 0 },   /* v26 p24/V3 used 3 times */ 
	{ -6,23,-31,0, 150, 2766, 4, 56, -106, 0 },   /* v27 p37/V3 used 4 times */ 
	{ 16,44,-9,0, -215, 2258, -37, 111, -24, 0 },   /* v28 p48/V2 used 6 times */ 
	{ 16,44,14,0, -215, 1965, -36, 87, 73, 0 },   /* v29 p42/V1 used 5 times */ 
	{ -8,23,-16,0, 141, 2608, -51, 8, 107, 0 },   /* v30 p48/V1 used 2 times */ 
	{ -8,26,16,0, 91, 2213, -75, 65, 65, 0 },   /* v31 p53/V3 used 3 times */ 
	{ -8,-21,-16,0, 882, 2608, -49, -56, 92, 0 },   /* v32 p4/V3 used 2 times */ 
	{ -8,-24,16,0, 932, 2213, -75, -49, 78, 0 },   /* v33 p52/V3 used 3 times */ 
	{ 16,19,29,0, 202, 1770, -37, 21, 111, 0 },   /* v34 p42/V2 used 2 times */ 
	{ 73,-30,38,0, 1026, 693, 3, -25, 116, 0 },   /* v35 p45/V1 used 3 times */ 
	{ 73,31,38,0, -18, 681, 3, 26, 116, 0 },   /* v36 p55/V1 used 3 times */ 
	{ 45,1,34,0, 500, 1418, -17, 0, 118, 0 },   /* v37 p45/V3 used 1 times */ 
	{ 93,0,34,0, 506, 172, 104, 0, 58, 0 },   /* v38 p55/V2 used 3 times */ 
	{ 96,32,15,0, -35, 104, 91, -49, 59, 0 },   /* v39 p55/V3 used 1 times */ 
	{ 95,-31,15,0, 1049, 116, 92, 49, 59, 0 },   /* v40 p58/V1 used 1 times */ 
	{ 96,32,15,0, 0, 512, 91, -49, 59, 0 },   /* v41 p61/V1 used 4 times */ 
	{ 127,64,24,0, -319, 406, 72, -83, 46, 0 },   /* v42 p59/V2 used 2 times */ 
	{ 73,31,38,0, -174, 639, 3, 26, 116, 0 },   /* v43 p10/V3 used 1 times */ 
	{ 96,0,-17,0, 512, 512, 110, 0, 47, 0 },   /* v44 p56/V2 used 2 times */ 
	{ 127,0,-41,0, 704, 406, 87, 0, 82, 0 },   /* v45 p61/V2 used 4 times */ 
	{ 127,48,-13,0, 100, 245, 85, -60, 58, 0 },   /* v46 p61/V3 used 2 times */ 
	{ 95,-31,15,0, 500, 1010, 92, 49, 59, 0 },   /* v47 p62/V3 used 4 times */ 
	{ 126,-48,-13,0, 857, 999, 86, 60, 58, 0 },   /* v48 p62/V1 used 2 times */ 
	{ 126,-64,24,0, 681, 1404, 73, 83, 46, 0 },   /* v49 p60/V2 used 2 times */ 
	{ 73,-30,38,0, 307, 1119, 3, -25, 116, 0 },   /* v50 p34/V1 used 1 times */ 
	{ -103,59,-56,0, 939, -672, 34, 11, -115, 0 },   /* v51 p50/V1 used 4 times */ 
	{ -6,23,-31,0, 511, 512, 30, 0, -116, 0 },   /* v52 p50/V2 used 2 times */ 
	{ -6,-21,-31,0, 0, 512, 20, -15, -117, 0 },   /* v53 p50/V3 used 3 times */ 
	{ -104,-56,-56,0, -427, -672, -45, 0, 110, 0 },   /* v54 p51/V1 used 4 times */ 
	{ -8,23,-16,0, 518, 556, -51, 8, 107, 0 },   /* v55 p51/V3 used 3 times */ 
	{ -8,-21,-16,0, -6, 556, -49, -56, 92, 0 },   /* v56 p51/V2 used 2 times */ 
	{ 16,-18,29,0, 1024, 1024, -32, -25, 112, 0 },   /* v57 p44/V1 used 2 times */ 
	{ 73,-30,38,0, 1396, -613, 3, -25, 116, 0 },   /* v58 p44/V2 used 1 times */ 
	{ 45,1,34,0, 511, 193, -17, 0, 118, 0 },   /* v59 p44/V3 used 3 times */ 
	{ 16,19,29,0, -28, 1006, -37, 21, 111, 0 },   /* v60 p47/V2 used 2 times */ 
	{ 73,31,38,0, -345, -643, 3, 26, 116, 0 },   /* v61 p46/V2 used 1 times */ 
};


/*   0 vertices */
/*   1 Materials */

#define	LDIRX	0
#define	LDIRY	0
#define	LDIRZ	120
#define	AMBDIV	1
