#include<ultra64.h>

extern Vtx MC_BossTRAIN_Body_v[];

extern unsigned char MC_BossDuct01_CI8_txt[];
extern unsigned char MC_BossTX01_CI8_txt[];
extern unsigned char MC_BossTX04_CI8_txt[];
extern unsigned char MC_GimicTX02_CI8_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

/* main display list */


/* ======== Body ======== */

Gfx MC_BossTRAIN_Body[]={

	gsDPLoadTLUT_pal256(&MC_BossTX01_CI8_txt[1024]),
	gsDPLoadTextureBlock(MC_BossTX01_CI8_txt,G_IM_FMT_CI,G_IM_SIZ_8b,32,32,0,G_TX_WRAP,G_TX_WRAP,5,5,0,0),
	gsDPSetTextureLUT(G_TT_RGBA16),

	gsSPVertex(&MC_BossTRAIN_Body_v[0], 15, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 3, 4, 0),
	gsSP1Triangle(0, 2, 3, 0),
	gsSP1Triangle(5, 6, 7, 0),
	gsSP1Triangle(7, 8, 5, 0),
	gsSP1Triangle(9, 10, 11, 0),
	gsSP1Triangle(12, 13, 14, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[15], 8, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[32], 8, 8),
	gsSP1Triangle(0, 2, 8, 0),
	gsSP1Triangle(1, 0, 8, 0),
	gsSP1Triangle(2, 9, 8, 0),
	gsSP1Triangle(3, 10, 4, 0),
	gsSP1Triangle(4, 11, 3, 0),
	gsSP1Triangle(5, 12, 6, 0),
	gsSP1Triangle(6, 13, 5, 0),
	gsSP1Triangle(7, 14, 15, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[22], 5, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[39], 9, 5),
	gsSP1Triangle(0, 5, 6, 0),
	gsSP1Triangle(1, 7, 8, 0),
	gsSP1Triangle(1, 9, 7, 0),
	gsSP1Triangle(2, 10, 3, 0),
	gsSP1Triangle(3, 11, 2, 0),
	gsSP1Triangle(4, 12, 13, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[27], 5, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[48], 6, 5),
	gsSP1Triangle(0, 5, 6, 0),
	gsSP1Triangle(1, 7, 2, 0),
	gsSP1Triangle(2, 8, 1, 0),
	gsSP1Triangle(3, 4, 9, 0),
	gsSP1Triangle(4, 10, 9, 0),

	gsDPLoadTLUT_pal256(&MC_BossTX04_CI8_txt[256]),
	gsDPLoadTextureBlock(MC_BossTX04_CI8_txt,G_IM_FMT_CI,G_IM_SIZ_8b,16,16,0,G_TX_WRAP,G_TX_WRAP,4,4,0,0),

	gsSPVertex(&MC_BossTRAIN_Body_v[54], 6, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(1, 3, 2, 0),
	gsSP1Triangle(1, 4, 3, 0),
	gsSP1Triangle(3, 4, 5, 0),

	gsDPLoadTLUT_pal256(&MC_GimicTX02_CI8_txt[1024]),
	gsDPLoadTextureBlock(MC_GimicTX02_CI8_txt,G_IM_FMT_CI,G_IM_SIZ_8b,32,32,0,G_TX_WRAP,G_TX_WRAP,5,5,0,0),

	gsSPVertex(&MC_BossTRAIN_Body_v[60], 14, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 4, 5, 0),
	gsSP1Triangle(6, 7, 8, 0),
	gsSP1Triangle(6, 9, 7, 0),
	gsSP1Triangle(10, 11, 12, 0),
	gsSP1Triangle(10, 12, 13, 0),
	gsSPVertex(&MC_BossTRAIN_Body_v[74], 6, 0),
	gsSP1Triangle(0, 2, 3, 0),
	gsSP1Triangle(1, 4, 5, 0),

	gsDPLoadTLUT_pal256(&MC_BossDuct01_CI8_txt[256]),
	gsDPLoadTextureBlock(MC_BossDuct01_CI8_txt,G_IM_FMT_CI,G_IM_SIZ_8b,16,16,0,G_TX_WRAP,G_TX_CLAMP,4,4,0,0),

	gsSPVertex(&MC_BossTRAIN_Body_v[80], 8, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(2, 1, 3, 0),
	gsSP1Triangle(4, 5, 6, 0),
	gsSP1Triangle(6, 5, 7, 0),
	gsDPPipeSync(),
        gsDPSetTextureLUT(G_TT_NONE),
	gsSPEndDisplayList(),
}; /* Body */ 

#undef G_CC_PRIMSHADE

#undef gs_Nin_LoadTextureImage

#undef gs_Nin_SetUpTileDescrip

/* 88 vertices */
Vtx MC_BossTRAIN_Body_v[]={
	{ -90,100,420,0, 614, 1024, -88,47,65,255 },   /* v0 used p740/V1 3 times */
	{ -120,240,390,0, 0, 1024, -56,10,104,255 },   /* v1 used p741/V2 2 times */
	{ -180,210,360,0, 0, 93, -61,95,40,255 },   /* v2 used p740/V2 4 times */
	{ -190,70,390,0, 1024, 93, -97,-63,25,255 },   /* v3 used p740/V3 2 times */
	{ -140,10,440,0, 1024, 1024, -115,-25,15,255 },   /* v4 used p739/V3 2 times */
	{ -120,240,-10,0, 1047, 1024, -105,55,-8,255 },   /* v5 used p734/V1 2 times */
	{ -60,370,-10,0, 0, 1024, -53,107,-4,255 },   /* v6 used p734/V2 2 times */
	{ -40,370,-300,0, 11, -2, -96,71,-8,255 },   /* v7 used p734/V3 2 times */
	{ -90,240,-300,0, 1028, -4, -118,2,-13,255 },   /* v8 used p733/V2 2 times */
	{ -90,240,-300,0, -1251, 222, -118,2,-13,255 },   /* v9 used p736/V1 2 times */
	{ -60,100,-300,0, 341, 222, -115,-24,-15,255 },   /* v10 used p736/V2 2 times */
	{ -80,100,-140,0, 341, 934, -116,-22,-13,255 },   /* v11 used p736/V3 2 times */
	{ -80,100,-140,0, 864, 544, -116,-22,-13,255 },   /* v12 used p735/V1 2 times */
	{ -120,240,-10,0, 23, 1024, -105,55,-8,255 },   /* v13 used p735/V2 2 times */
	{ -90,240,-300,0, 4, -4, -118,2,-13,255 },   /* v14 used p735/V3 2 times */
	{ 190,70,390,0, 1024, 93, 98,-63,25,255 },   /* v15 used p729/V1 2 times */
	{ 140,10,440,0, 1024, 1024, 116,-25,15,255 },   /* v16 used p728/V1 2 times */
	{ 180,210,360,0, 0, 93, 62,95,40,255 },   /* v17 used p729/V2 4 times */
	{ 120,240,-10,0, 1047, 1024, 106,55,-8,255 },   /* v18 used p710/V3 4 times */
	{ 40,370,-300,0, 11, -2, 77,92,-7,255 },   /* v19 used p710/V1 4 times */
	{ -100,100,620,0, 0, 0, -66,55,82,255 },   /* v20 used p712/V3 4 times */
	{ 100,10,620,0, 1024, 1024, 45,0,110,255 },   /* v21 used p712/V1 4 times */
	{ 40,370,-300,0, 921, 0, 77,92,-7,255 },   /* v22 used p714/V1 4 times */
	{ -120,240,-10,0, 1018, 986, -105,55,-8,255 },   /* v23 used p743/V1 2 times */
	{ -140,10,440,0, 778, 1024, -115,-25,15,255 },   /* v24 used p732/V1 2 times */
	{ -100,100,620,0, 40, 0, -66,55,82,255 },   /* v25 used p732/V3 2 times */
	{ 80,100,-140,0, 341, 934, 117,-22,-13,255 },   /* v26 used p719/V1 2 times */
	{ 90,240,-300,0, 4, -4, 119,2,-13,255 },   /* v27 used p718/V1 2 times */
	{ 100,100,620,0, 40, 0, 89,53,59,255 },   /* v28 used p717/V1 2 times */
	{ 140,10,440,0, 778, 1024, 116,-25,15,255 },   /* v29 used p717/V3 2 times */
	{ 120,240,390,0, 66, 986, -30,111,32,255 },   /* v30 used p716/V1 2 times */
	{ 180,210,360,0, 17, 128, 62,95,40,255 },   /* v31 used p716/V2 4 times */
	{ 90,100,420,0, 614, 1024, 89,47,65,255 },   /* v32 used p729/V3 3 times */
	{ 120,240,390,0, 0, 1024, 57,10,104,255 },   /* v33 used p730/V2 2 times */
	{ 90,240,-300,0, 1028, -4, 119,2,-13,255 },   /* v34 used p711/V2 2 times */
	{ 60,370,-10,0, 0, 1024, 70,97,-5,255 },   /* v35 used p710/V2 2 times */
	{ -100,10,620,0, 0, 1024, -71,0,95,255 },   /* v36 used p724/V2 2 times */
	{ 100,100,620,0, 1024, 0, 89,53,59,255 },   /* v37 used p712/V2 2 times */
	{ -40,370,-300,0, 102, 0, -96,71,-8,255 },   /* v38 used p714/V2 2 times */
	{ -60,370,-10,0, -102, 1024, -53,107,-4,255 },   /* v39 used p714/V3 4 times */
	{ 60,370,-10,0, 1126, 1024, 70,97,-5,255 },   /* v40 used p713/V3 2 times */
	{ -180,210,360,0, 17, 128, -61,95,40,255 },   /* v41 used p743/V3 2 times */
	{ -120,240,390,0, 66, 986, 31,111,32,255 },   /* v42 used p742/V3 2 times */
	{ -180,210,-60,0, 1018, 128, -53,107,0,255 },   /* v43 used p743/V2 2 times */
	{ -100,10,620,0, 40, 1024, -71,0,95,255 },   /* v44 used p732/V2 2 times */
	{ -90,100,420,0, 860, 0, -88,47,65,255 },   /* v45 used p731/V2 2 times */
	{ 60,100,-300,0, 341, 222, 116,-24,-15,255 },   /* v46 used p719/V2 2 times */
	{ 90,240,-300,0, -1251, 222, 119,2,-13,255 },   /* v47 used p719/V3 2 times */
	{ 120,240,-10,0, 23, 1024, 106,55,-8,255 },   /* v48 used p718/V2 2 times */
	{ 80,100,-140,0, 864, 544, 117,-22,-13,255 },   /* v49 used p718/V3 2 times */
	{ 100,10,620,0, 40, 1024, 45,0,110,255 },   /* v50 used p717/V2 2 times */
	{ 90,100,420,0, 860, 0, 89,47,65,255 },   /* v51 used p715/V2 2 times */
	{ 120,240,-10,0, 1018, 986, 106,55,-8,255 },   /* v52 used p716/V3 4 times */
	{ 180,210,-60,0, 1018, 128, 54,107,0,255 },   /* v53 used p725/V2 2 times */
	{ 90,100,420,0, -705, -597, 89,47,65,255 },   /* v54 used p723/V1 2 times */
	{ 80,140,560,0, -15, -512, 110,47,-6,255 },   /* v55 used p723/V2 3 times */
	{ 100,100,620,0, 512, -682, 89,53,59,255 },   /* v56 used p723/V3 2 times */
	{ -100,100,620,0, 512, 1024, -66,55,82,255 },   /* v57 used p727/V1 3 times */
	{ -80,140,560,0, -15, 853, -12,118,18,255 },   /* v58 used p727/V2 2 times */
	{ -90,100,420,0, -705, 938, -88,47,65,255 },   /* v59 used p727/V3 2 times */
	{ -60,160,350,0, 672, -80, 36,-2,113,255 },   /* v60 used p744/V1 2 times */
	{ -120,240,390,0, 73, -188, 31,111,32,255 },   /* v61 used p744/V2 2 times */
	{ -80,140,560,0, 73, 1023, 99,66,15,255 },   /* v62 used p744/V3 2 times */
	{ -100,340,390,0, 73, 408, 11,-23,116,255 },   /* v63 used p745/V1 2 times */
	{ -120,240,390,0, 73, 1154, 31,111,32,255 },   /* v64 used p745/V2 2 times */
	{ -60,160,350,0, 618, 1525, 36,-2,113,255 },   /* v65 used p745/V3 2 times */
	{ 60,160,350,0, -176, -133, 0,119,10,255 },   /* v66 used p746/V1 4 times */
	{ -80,140,560,0, 1023, 489, -12,118,18,255 },   /* v67 used p746/V3 4 times */
	{ 80,140,560,0, 1023, -222, -28,111,33,255 },   /* v68 used p747/V3 2 times */
	{ -60,160,350,0, -176, 400, 0,119,10,255 },   /* v69 used p746/V2 2 times */
	{ 100,340,390,0, 977, 1462, -6,-23,116,255 },   /* v70 used p748/V1 4 times */
	{ -100,340,390,0, 977, 0, 11,-23,116,255 },   /* v71 used p748/V2 2 times */
	{ -60,160,350,0, 119, 292, 36,-2,113,255 },   /* v72 used p748/V3 4 times */
	{ 60,160,350,0, 119, 1170, -65,19,97,255 },   /* v73 used p749/V3 2 times */
	{ 60,160,350,0, 618, 1525, -65,19,97,255 },   /* v74 used p708/V1 2 times */
	{ 80,140,560,0, 73, 1023, -28,111,33,255 },   /* v75 used p709/V1 2 times */
	{ 120,240,390,0, 73, 1154, -30,111,32,255 },   /* v76 used p708/V2 2 times */
	{ 100,340,390,0, 73, 408, -6,-23,116,255 },   /* v77 used p708/V3 2 times */
	{ 120,240,390,0, 73, -188, -30,111,32,255 },   /* v78 used p709/V2 2 times */
	{ 60,160,350,0, 672, -80, -65,19,97,255 },   /* v79 used p709/V3 2 times */
	{ -190,70,-200,0, 3200, 8, -91,-76,0,255 },   /* v80 used p737/V1 2 times */
	{ -140,10,-150,0, 3200, 512, -91,-76,0,255 },   /* v81 used p738/V2 2 times */
	{ -190,70,390,0, -576, 8, -97,-63,25,255 },   /* v82 used p738/V1 2 times */
	{ -140,10,440,0, -576, 512, -115,-25,15,255 },   /* v83 used p738/V3 2 times */
	{ 140,10,440,0, -576, 512, 116,-25,15,255 },   /* v84 used p726/V1 2 times */
	{ 140,10,-150,0, 3200, 512, 92,-76,0,255 },   /* v85 used p726/V2 2 times */
	{ 190,70,390,0, -576, 8, 98,-63,25,255 },   /* v86 used p726/V3 2 times */
	{ 190,70,-200,0, 3200, 8, 92,-76,0,255 },   /* v87 used p720/V3 2 times */
};


/*   0 vertices */
/*   1 Materials */

#define	LDIRX	0
#define	LDIRY	0
#define	LDIRZ	120
#define	AMBDIV	1
