#include<ultra64.h>

extern Vtx ZO_Boss_Periscope_v[];

extern unsigned short ZO_BossTX04_txt[];
extern unsigned char ZO_MeganeTZ01_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 */


/* ======== senbou ======== */

Gfx ZO_Boss_Periscope_[]={

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,0,G_TX_CLAMP,4,0,G_TX_WRAP,4,0),
	gs_Nin_LoadTextureImage(ZO_BossTX04_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,16,16,0,7),


	gsSPVertex(&ZO_Boss_Periscope_v[0],31,0),
	gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0),
	gsSP2Triangles(1, 0, 3, 0, 5, 2, 1, 0),
	gsSP2Triangles(1, 6, 5, 0, 3, 6, 1, 0),
	gsSP2Triangles(4, 7, 3, 0, 6, 3, 7, 0),
	gsSP2Triangles(8, 9, 10, 0, 11, 12, 13, 0),
	gsSP2Triangles(14, 15, 16, 0, 16, 17, 14, 0),
	gsSP2Triangles(16, 15, 18, 0, 15, 19, 18, 0),
	gsSP2Triangles(20, 17, 16, 0, 18, 21, 16, 0),
	gsSP2Triangles(22, 23, 24, 0, 24, 23, 17, 0),
	gsSP2Triangles(23, 25, 20, 0, 25, 23, 22, 0),
	gsSP2Triangles(23, 21, 17, 0, 26, 17, 20, 0),
	gsSP2Triangles(17, 21, 27, 0, 27, 21, 28, 0),
	gsSP2Triangles(28, 21, 18, 0, 18, 19, 28, 0),
	gsSP2Triangles(29, 26, 20, 0, 25, 30, 29, 0),
	gsSP2Triangles(29, 20, 25, 0, 22, 30, 25, 0),
	gsSPVertex(&ZO_Boss_Periscope_v[31],11,0),
	gsSP2Triangles(0, 1, 2, 0, 3, 1, 4, 0),
	gsSP2Triangles(1, 0, 5, 0, 3, 6, 1, 0),
	gsSP2Triangles(6, 7, 2, 0, 7, 6, 3, 0),
	gsSP2Triangles(1, 6, 2, 0, 7, 0, 2, 0),
	gsSP2Triangles(5, 0, 7, 0, 7, 8, 5, 0),
	gsSP2Triangles(5, 4, 1, 0, 5, 8, 9, 0),
	gsSP2Triangles(9, 4, 5, 0, 8, 7, 3, 0),
	gsSP2Triangles(3, 10, 8, 0, 9, 8, 10, 0),
	gsSP2Triangles(4, 10, 3, 0, 10, 4, 9, 0),
	gsDPLoadTLUT_pal256(&ZO_MeganeTZ01_CI8_txt[256]),
	gsDPLoadTextureBlock(ZO_MeganeTZ01_CI8_txt,G_IM_FMT_CI,G_IM_SIZ_8b,16,16,0,G_TX_CLAMP,G_TX_CLAMP,4,4,0,0),
	gsDPSetTextureLUT(G_TT_RGBA16),

	gsSPVertex(&ZO_Boss_Periscope_v[42],12,0),
	gsSP1Quadrangle(0, 1, 2, 3, 0),
	gsSP1Quadrangle(2, 4, 5, 3, 0),
	gsSP1Quadrangle(6, 7, 8, 9, 0),
	gsSP1Quadrangle(9, 8, 10, 11, 0),
	gsDPPipeSync(),
        gsDPSetTextureLUT(G_TT_NONE),
	gsSPEndDisplayList(),
}; /* senbou */ 

#undef G_CC_PRIMSHADE

#undef gs_Nin_LoadTextureImage

#undef gs_Nin_SetUpTileDescrip

/* 54 vertices */
Vtx ZO_Boss_Periscope_v[]={
	{    55,    37,   -17,     0,   365,   320,     0,   -50,  -109,   255},	/* 0 */
	{    41,    44,     0,     0,   382,   512,   -99,   -65,     0,   255},	/* 1 */
	{    28,    87,   -26,     0,   485,   210,   -66,   -46,   -88,   255},	/* 2 */
	{    66,    42,     0,     0,   376,   512,    99,   -67,     0,   255},	/* 3 */
	{    81,    87,   -26,     0,   485,   210,   105,   -20,   -54,   255},	/* 4 */
	{    28,    87,    26,     0,   485,   813,  -119,     2,    -7,   255},	/* 5 */
	{    55,    37,    17,     0,   365,   703,    -3,  -106,    53,   255},	/* 6 */
	{    81,    87,    26,     0,   485,   813,   120,     2,     7,   255},	/* 7 */
	{    81,    87,    26,     0,   344,   528,     0,   -51,   107,   255},	/* 8 */
	{    28,    87,    26,     0,   344,   240,   -24,   -37,   110,   255},	/* 9 */
	{    55,    37,    17,     0,   134,   384,     0,   -22,   117,   255},	/* 10 */
	{    28,    87,   -26,     0,   344,   240,   -66,   -46,   -88,   255},	/* 11 */
	{    81,    87,   -26,     0,   344,   528,   105,   -20,   -54,   255},	/* 12 */
	{    55,    37,   -17,     0,   134,   384,     0,   -50,  -109,   255},	/* 13 */
	{    73,   138,    12,     0,     0,   648,   103,     0,   -62,   255},	/* 14 */
	{    73,   138,    31,     0,     0,   865,    80,    74,    50,   255},	/* 15 */
	{    81,    87,    26,     0,   476,   813,   120,     2,     7,   255},	/* 16 */
	{    55,   138,     0,     0,     0,   512,  -108,    41,    30,   255},	/* 17 */
	{    56,   111,    52,     0,   251,  1099,     0,   -21,   117,   255},	/* 18 */
	{    55,   138,    43,     0,     0,   999,     0,    73,    95,   255},	/* 19 */
	{    81,    87,   -26,     0,   476,   210,   105,   -20,   -54,   255},	/* 20 */
	{    28,    87,    26,     0,   476,   813,  -119,     2,    -7,   255},	/* 21 */
	{    36,   138,   -31,     0,     0,   158,   -78,    71,   -56,   255},	/* 22 */
	{    28,    87,   -26,     0,   476,   210,  -111,    36,    24,   255},	/* 23 */
	{    36,   138,   -12,     0,     0,   375,   -63,   -17,    99,   255},	/* 24 */
	{    56,   111,   -52,     0,   251,   -75,     0,   -21,  -118,   255},	/* 25 */
	{    73,   138,   -12,     0,     0,   375,   103,     0,    61,   255},	/* 26 */
	{    36,   138,    12,     0,     0,   648,   -63,   -17,  -100,   255},	/* 27 */
	{    36,   138,    31,     0,     0,   865,   -86,    54,    62,   255},	/* 28 */
	{    73,   138,   -31,     0,     0,   158,    89,    57,   -57,   255},	/* 29 */
	{    55,   138,   -43,     0,     0,    24,     0,    73,   -96,   255},	/* 30 */
	{    35,    22,     0,     0,   433,   469,   -15,    79,    88,   255},	/* 31 */
	{    50,     0,    22,     0,   493,   479,    13,    15,   117,   255},	/* 32 */
	{    53,    86,     0,     0,   366,   299,    10,    30,   115,   255},	/* 33 */
	{    53,   -33,     0,     0,   547,   539,     5,   -98,    67,   255},	/* 34 */
	{    -2,     0,    18,     0,   402,   603,   -30,   -35,   109,   255},	/* 35 */
	{    -2,    15,     0,     0,   379,   573,   -27,   117,     0,   255},	/* 36 */
	{    73,    10,     0,     0,   517,   406,    85,     0,    84,   255},	/* 37 */
	{    50,     0,   -23,     0,   493,   479,    -1,    25,  -117,   255},	/* 38 */
	{    -2,     0,   -18,     0,   402,   603,   -20,     0,  -118,   255},	/* 39 */
	{   -17,     1,     0,     0,   376,   635,  -110,   -34,    29,   255},	/* 40 */
	{    -2,   -15,     0,     0,   425,   633,   -51,  -107,     0,   255},	/* 41 */
	{    36,   138,   -12,     0,   397,   511,   -70,    96,     0,   255},	/* 42 */
	{    55,   138,     0,     0,   568,   259,   107,    54,     0,   255},	/* 43 */
	{    73,   138,   -12,     0,   397,     7,     0,   120,     0,   255},	/* 44 */
	{    36,   138,   -31,     0,   126,   511,   -78,    71,   -56,   255},	/* 45 */
	{    73,   138,   -31,     0,   126,     7,    89,    57,   -57,   255},	/* 46 */
	{    55,   138,   -43,     0,   -40,   259,     0,    73,   -96,   255},	/* 47 */
	{    73,   138,    12,     0,   124,     7,     0,   120,     0,   255},	/* 48 */
	{    55,   138,     0,     0,   -41,   259,   107,    54,     0,   255},	/* 49 */
	{    36,   138,    12,     0,   124,   512,   -51,   108,     0,   255},	/* 50 */
	{    73,   138,    31,     0,   387,     7,    80,    74,    50,   255},	/* 51 */
	{    36,   138,    31,     0,   387,   512,   -86,    54,    62,   255},	/* 52 */
	{    55,   138,    43,     0,   550,   259,     0,    73,    95,   255},	/* 53 */
};


/*   0 vertices */
/*   1 Materials */

#define	LDIRX	0
#define	LDIRY	0
#define	LDIRZ	120
#define	AMBDIV	1
/* 16 x 16  G_IM_SIZ_16b G_IM_FMT_RGBA  */
unsigned char ZO_MeganeTZ01_CI8_txt[] = {
	0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, 0x4, 0x4, 0x4, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x1, 0x5, 0x6, 0x7, 0x8, 0x8, 0x9, 0xa, 0x4, 0x2, 0x1, 0x0, 0x0, 
	0x0, 0x0, 0x1, 0x4, 0xb, 0xc, 0xd, 0xe, 0xf, 0xe, 0x10, 0x11, 0x12, 0x1, 0x0, 0x0, 
	0x0, 0x1, 0x13, 0x14, 0x15, 0xe, 0x16, 0x17, 0x18, 0x17, 0x19, 0xd, 0x8, 0x12, 0x2, 0x1a, 
	0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x22, 0x23, 0x18, 0x24, 0x25, 0x8, 0x6, 0x2, 
	0x0, 0x0, 0x0, 0x1e, 0x1c, 0x18, 0x21, 0x22, 0x22, 0x21, 0x26, 0x1c, 0x1e, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x27, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2a, 0x2f, 0x28, 0x27, 0x27, 0x0, 
	0x0, 0x27, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2a, 0x2f, 0x28, 0x27, 0x27, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x30, 0x31, 0x32, 0x33, 0x0, 0x3, 0x1d, 0x34, 0x34, 0xa, 0x3, 0x0, 0x33, 0x31, 0x35, 0x36, 
	0x37, 0x37, 0x37, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x37, 0x37, 0x37, 
	0x38, 0x38, 0x39, 0x3a, 0x0, 0x3, 0xa, 0x34, 0x34, 0xa, 0x3, 0x0, 0x3a, 0x37, 0x38, 0x38, 
	0x38, 0x38, 0x39, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x39, 0x38, 0x38, 
	0x38, 0x38, 0x3b, 0x3c, 0x0, 0x5, 0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x0, 0x3c, 0x39, 0x38, 0x38, 
	0x38, 0x38, 0x38, 0x3f, 0x30, 0x40, 0x3a, 0x31, 0x31, 0x3a, 0x40, 0x30, 0x3f, 0x38, 0x38, 0x38, 

/* 72colors */
0x0, 0x1, 0x8, 0x43, 0x10, 0x85, 0x18, 0xC7, 0x21, 0x9, 0x20, 0xC7, 0x31, 0x8D, 0x4A, 0x53, 0x52, 0x95, 0x52, 0x93, 0x39, 0xCF, 0x41, 0xCF, 0x5A, 0xD7, 0x7B, 0xDF, 0x8C, 0x63, 0x94, 0xA3, 
0x6B, 0x5B, 0x42, 0x11, 0x29, 0x4B, 0x21, 0x7, 0x4A, 0x11, 0x6B, 0x59, 0xB5, 0x6B, 0xC6, 0x31, 0xCE, 0x73, 0xB5, 0xAB, 0x8, 0x41, 0x10, 0x83, 0x29, 0x9, 0x39, 0xCD, 0x63, 0x17, 0x9C, 0xE5, 
0xBD, 0xEF, 0xEF, 0x7B, 0xFF, 0xFF, 0xF7, 0xBD, 0xB5, 0xAD, 0x84, 0x21, 0xE7, 0x39, 0x7, 0xF3, 0x17, 0xF5, 0x27, 0xF7, 0x37, 0xF9, 0x5F, 0xFD, 0x77, 0xFF, 0x77, 0xFD, 0x57, 0xFB, 0x1F, 0xF7, 
0x52, 0x51, 0x6B, 0x15, 0x73, 0x15, 0x73, 0x57, 0x73, 0x9D, 0x6A, 0xD5, 0x5A, 0x91, 0x29, 0x7, 0x39, 0x8B, 0x31, 0x49, 0x62, 0xD3, 0x39, 0x89, 0x52, 0x4F, 0x20, 0xC5, 0x18, 0xC5, 0x4A, 0xF, 
0x62, 0x93, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, };

unsigned short ZO_BossTX03_txt[] = {
	0x9081, 0x6801, 0x4001, 0x2801, 0x1801, 0x2001, 0x7101, 0x8001, 0x7841, 0x7181, 0x3001, 0x1001, 0x2001, 0x5001, 0x6843, 0x4801, 
	0x9001, 0x6801, 0x6841, 0xc5ed, 0xc5ed, 0xfffd, 0xffff, 0xffff, 0xffbb, 0xef37, 0xdeb1, 0xc5e9, 0xffff, 0x7001, 0x6843, 0x7041, 
	0x8883, 0x7843, 0xc5ed, 0x4a0d, 0x5251, 0x5ad5, 0x4a51, 0x6b59, 0x945f, 0xc5e9, 0xef33, 0xe6af, 0xcde9, 0xffff, 0x4001, 0x5801, 
	0x8001, 0xc5eb, 0x524d, 0x2905, 0xffff, 0x83dd, 0xbdeb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xef33, 0xbd65, 0xffff, 0x6801, 
	0x5801, 0x628f, 0x3989, 0x1881, 0x1, 0x94e5, 0x5293, 0x3149, 0x4a51, 0x845f, 0xffff, 0x1, 0xfffd, 0xc5e7, 0xe737, 0x4801, 
	0x3001, 0x6b13, 0x3989, 0x3989, 0x9ce7, 0x1905, 0xc9, 0x33a5, 0xc73d, 0x6ce9, 0x6317, 0xffff, 0xfff9, 0xb563, 0xc62f, 0x3801, 
	0x1801, 0x83d9, 0x41cd, 0x8c1b, 0x420f, 0x45, 0x87, 0x7c65, 0xffff, 0xb6f9, 0x191, 0xada7, 0xf733, 0x8397, 0xad27, 0x2801, 
	0x1001, 0x5a91, 0xffff, 0xbda9, 0x21cf, 0x8c9, 0x1, 0x18c9, 0x9ce9, 0x53a1, 0x1d5, 0x351, 0xf775, 0xffff, 0x841d, 0x1801, 
	0x2801, 0x4189, 0x1, 0xc5e9, 0x94b, 0x85, 0x1, 0x1, 0x1, 0x1, 0x87, 0x293, 0xf775, 0x1, 0x62d3, 0x2001, 
	0x1, 0x3147, 0x20c3, 0x8c9f, 0x3b55, 0x949, 0x43, 0x1, 0x1, 0x43, 0x107, 0x3311, 0xbda7, 0x20c3, 0x520d, 0x1, 
	0x801, 0x20c3, 0x1041, 0x39cb, 0xd733, 0x3ad3, 0x105, 0x107, 0xc5, 0x98b, 0x183, 0x8c5d, 0x4a4d, 0x1881, 0x5a8f, 0x4801, 
	0x3001, 0x28c5, 0x1041, 0x1001, 0x4a4f, 0xe6f1, 0x3b55, 0x1c9, 0xa8f, 0x128f, 0x849d, 0x5ad1, 0x2947, 0x20c3, 0x62d1, 0x4801, 
	0x1801, 0x3105, 0x1883, 0x1041, 0xffff, 0x2907, 0x5a93, 0xfffb, 0xe6f1, 0x6b15, 0x3149, 0xffff, 0x20c3, 0x20c3, 0x5a8f, 0x5801, 
	0x1801, 0x1001, 0x3105, 0x20c3, 0x1, 0x801, 0x1041, 0x1041, 0x801, 0x1041, 0x1041, 0x1, 0x1881, 0x4a0b, 0x2801, 0x3001, 
	0x5841, 0x3801, 0x2801, 0x3947, 0x3149, 0x41cd, 0x5a91, 0x7357, 0x7b97, 0x62d3, 0x4a0d, 0x3147, 0x5a8f, 0x1001, 0x1001, 0x4801, 
	0x7083, 0x5843, 0x4001, 0x1001, 0x1, 0x1, 0x5041, 0x5001, 0x3001, 0x58c1, 0x2001, 0x1, 0x1, 0x1801, 0x3801, 0x5043, 
};

