#include<ultra64.h>

extern Vtx JT_kaifuku_v[];
extern Lights1 JT_kaifuku_material[];

extern unsigned char JT_kaifuku_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 */


/* ======== g19 ======== */

Gfx JT_kaifuku[]={

	gsDPPipeSync(),
	gsDPSetTextureLUT(G_TT_RGBA16),
	gsDPLoadTLUT_pal256(&JT_kaifuku_CI8_txt[1024]),
	gsDPLoadTextureBlock(JT_kaifuku_CI8_txt,G_IM_FMT_CI,G_IM_SIZ_8b,32,32,0,G_TX_WRAP,G_TX_CLAMP,5,5,0,0),

	gsSPVertex(&JT_kaifuku_v[0], 15, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 3, 1, 0),
	gsSP1Triangle(4, 5, 1, 0),
	gsSP1Triangle(1, 6, 7, 0),
	gsSP1Triangle(1, 5, 8, 0),
	gsSP1Triangle(2, 1, 7, 0),
	gsSP1Triangle(6, 9, 3, 0),
	gsSP1Triangle(6, 10, 9, 0),
	gsSP1Triangle(11, 6, 3, 0),
	gsSP1Triangle(11, 12, 6, 0),
	gsSP1Triangle(13, 14, 7, 0),
	gsSP1Triangle(13, 7, 0, 0),
	gsSPVertex(&JT_kaifuku_v[4], 2, 0),
	gsSPVertex(&JT_kaifuku_v[8], 1, 2),
	gsSPVertex(&JT_kaifuku_v[11], 1, 3),
	gsSPVertex(&JT_kaifuku_v[13], 11, 4),
	gsSPVertex(&JT_kaifuku_v[25], 1, 15),
	gsSP1Triangle(0, 6, 1, 0),
	gsSP1Triangle(1, 7, 2, 0),
	gsSP1Triangle(8, 4, 3, 0),
	gsSP1Triangle(8, 13, 4, 0),
	gsSP1Triangle(4, 9, 10, 0),
	gsSP1Triangle(4, 10, 5, 0),
	gsSP1Triangle(11, 15, 10, 0),
	gsSP1Triangle(11, 10, 9, 0),
	gsSP1Triangle(12, 10, 14, 0),
	gsSP1Triangle(5, 13, 8, 0),
	gsSPVertex(&JT_kaifuku_v[9], 2, 0),
	gsSPVertex(&JT_kaifuku_v[12], 1, 2),
	gsSPVertex(&JT_kaifuku_v[14], 1, 3),
	gsSPVertex(&JT_kaifuku_v[17], 2, 4),
	gsSPVertex(&JT_kaifuku_v[20], 2, 6),
	gsSPVertex(&JT_kaifuku_v[23], 6, 8),
	gsSP1Triangle(0, 1, 8, 0),
	gsSP1Triangle(1, 9, 11, 0),
	gsSP1Triangle(10, 1, 11, 0),
	gsSP1Triangle(11, 9, 0, 0),
	gsSP1Triangle(11, 0, 6, 0),
	gsSP1Triangle(0, 8, 12, 0),
	gsSP1Triangle(12, 5, 7, 0),
	gsSP1Triangle(12, 7, 13, 0),
	gsSP1Triangle(13, 7, 8, 0),
	gsSP1Triangle(2, 3, 4, 0),
	gsSPVertex(&JT_kaifuku_v[22], 1, 0),
	gsSPVertex(&JT_kaifuku_v[29], 5, 1),
	gsSP1Triangle(0, 2, 3, 0),
	gsSP1Triangle(1, 2, 0, 0),
	gsSP1Triangle(1, 4, 2, 0),
	gsSP1Triangle(2, 5, 3, 0),

	gsDPPipeSync(),
	gsDPSetTextureLUT(G_TT_NONE),

	gsSPEndDisplayList(),
}; /* g19 */ 

/* 34 vertices */
Vtx JT_kaifuku_v[]={
	{ 0,-106,38,0, 1024, 1587, -19,-83,83,255 },   /* v0 used p488/V1 3 times */
	{ -125,-72,0,0, 358, 1407, -44,-78,-79,255 },   /* v1 used p509/V1 6 times */
	{ 0,-144,0,0, 1024, 1791, -44,-78,-79,255 },   /* v2 used p510/V1 2 times */
	{ -92,-53,38,0, 536, 1305, 104,60,0,255 },   /* v3 used p502/V3 3 times */
	{ -92,-53,38,0, 536, 1305, -81,-24,83,255 },   /* v4 used p490/V1 2 times */
	{ -125,72,0,0, 358, 639, -91,58,-50,255 },   /* v5 used p508/V2 4 times */
	{ -92,-53,-38,0, 536, 1305, -81,-24,-84,255 },   /* v6 used p509/V2 5 times */
	{ 0,-106,-38,0, 1024, 1587, -19,-83,-84,255 },   /* v7 used p509/V3 4 times */
	{ -92,-53,-38,0, 536, 1305, -81,-24,-84,255 },   /* v8 used p508/V3 2 times */
	{ -92,53,38,0, 536, 742, 104,-59,0,255 },   /* v9 used p503/V3 6 times */
	{ -92,53,-38,0, 536, 742, 104,-59,0,255 },   /* v10 used p503/V2 4 times */
	{ 0,-106,38,0, 1023, 1587, 23,118,0,255 },   /* v11 used p502/V1 3 times */
	{ 0,-106,-38,0, 1023, 1587, -19,-83,-84,255 },   /* v12 used p511/V1 2 times */
	{ 92,-53,38,0, 1511, 1305, -103,60,0,255 },   /* v13 used p506/V1 6 times */
	{ 92,-53,-38,0, 1511, 1305, -103,60,0,255 },   /* v14 used p506/V3 4 times */
	{ -92,53,38,0, 536, 742, -62,59,83,255 },   /* v15 used p489/V2 2 times */
	{ -92,53,-38,0, 536, 742, -62,59,-84,255 },   /* v16 used p507/V2 2 times */
	{ 0,-144,0,0, 1023, 1791, 36,-111,24,255 },   /* v17 used p511/V3 4 times */
	{ 92,53,38,0, 1511, 742, -103,-59,0,255 },   /* v18 used p505/V2 3 times */
	{ 92,53,-38,0, 1511, 742, -103,-59,0,255 },   /* v19 used p506/V2 5 times */
	{ 0,106,38,0, 1024, 460, -22,-117,0,255 },   /* v20 used p496/V1 3 times */
	{ 125,72,0,0, 1689, 640, 86,75,-37,255 },   /* v21 used p516/V2 4 times */
	{ 125,-72,0,0, 1689, 1407, 108,-36,-37,255 },   /* v22 used p512/V2 4 times */
	{ 0,106,-38,0, 1023, 460, 20,84,-84,255 },   /* v23 used p516/V3 4 times */
	{ -125,72,0,0, 358, 640, -91,58,-50,255 },   /* v24 used p518/V2 2 times */
	{ 0,106,-38,0, 1024, 460, 20,84,-84,255 },   /* v25 used p517/V1 2 times */
	{ 0,144,0,0, 1024, 256, 4,109,-50,255 },   /* v26 used p518/V3 4 times */
	{ 0,106,38,0, 1023, 460, -22,-117,0,255 },   /* v27 used p498/V3 3 times */
	{ 0,144,0,0, 1023, 256, 4,109,-50,255 },   /* v28 used p516/V1 2 times */
	{ 92,-53,-38,0, 1511, 1305, 73,-41,-85,255 },   /* v29 used p513/V1 4 times */
	{ 125,72,0,0, 1689, 639, 86,75,-37,255 },   /* v30 used p513/V2 4 times */
	{ 92,-53,38,0, 1511, 1305, 73,-41,84,255 },   /* v31 used p483/V3 4 times */
	{ 92,53,-38,0, 1511, 742, 73,42,-85,255 },   /* v32 used p514/V2 2 times */
	{ 92,53,38,0, 1511, 742, 73,42,84,255 },   /* v33 used p483/V2 2 times */
};

/* 32 x 32  G_IM_SIZ_16b G_IM_FMT_RGBA  */
unsigned char JT_kaifuku_CI8_txt[] = {
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x5, 0x0, 0x0, 0x1, 0x6, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x7, 0x8, 0x9, 0x0, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x9, 0x9, 0xa, 0xb, 0xb, 0x7, 0xc, 0x4, 0x4, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xa, 0x9, 0x5, 0x5, 0x5, 0x9, 0x8, 0xb, 0x7, 0x5, 0x0, 0x6, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xb, 0xa, 0xc, 0x5, 0x0, 0x0, 0x0, 0x0, 0x5, 0x9, 0xd, 0x8, 0x9, 0x5, 0x6, 0xe, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xb, 0xf, 0x10, 0xd, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0x9, 0x9, 0x7, 0xa, 0x9, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x8, 0x11, 0xf, 0x11, 0xb, 0x10, 0x10, 0x12, 0x12, 0x12, 0x10, 0x10, 0x12, 0xa, 0x1, 0x3, 0x3, 0x2, 0x9, 0xa, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0x5, 0xa, 0x13, 0x14, 0xf, 0xf, 0x15, 0x11, 0x15, 0x12, 0x12, 0x12, 0x10, 0xd, 0xa, 0xa, 0x0, 0x2, 0x3, 0x3, 0x3, 0x2, 0x7, 0x7, 0xc, 0x3, 0x3, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0xc, 0xf, 0x10, 0x10, 0xf, 0xf, 0x10, 0xf, 0x10, 0x12, 0xf, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x3, 0x3, 0x3, 0x3, 0xc, 0xb, 0xf, 0x4, 0xe, 0x3, 0x3, 
	0x0, 0x0, 0x0, 0xc, 0x14, 0x10, 0x10, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x13, 0x5, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x3, 0x3, 0x3, 0x5, 0x8, 0xf, 0xc, 0x0, 0x4, 0x1, 
	0x0, 0x0, 0x0, 0xc, 0xf, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0xf, 0xa, 0x5, 0x0, 0x0, 0x0, 0x0, 0x4, 0x6, 0x6, 0x6, 0x6, 0xa, 0x15, 0x5, 0x4, 0x1, 0x1, 
	0x0, 0x0, 0x0, 0xc, 0x15, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x15, 0xb, 0xa, 0x1, 0x6, 0x1, 0x4, 0xc, 0x0, 0x6, 0x3, 0xc, 0x15, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x12, 0x10, 0x15, 0x8, 0x2, 0x3, 0x3, 0x4, 0x7, 0x0, 0x4, 0x1, 0xa, 0x15, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x12, 0x12, 0x10, 0xf, 0x13, 0x12, 0xc, 0x2, 0x16, 0x13, 0x0, 0x0, 0x0, 0xa, 0x11, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0xf, 0x12, 0x12, 0x10, 0x7, 0x9, 0x8, 0x12, 0x17, 0xa, 0xf, 0x15, 0xf, 0x13, 0x0, 0x9, 0x13, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0xf, 0xf, 0x7, 0x0, 0x2, 0x1, 0xb, 0xf, 0x10, 0xf, 0x12, 0x12, 0x0, 0x9, 0x11, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x11, 0xc, 0x3, 0x3, 0x2, 0xd, 0xf, 0x10, 0x10, 0x12, 0x12, 0x0, 0x9, 0x11, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0xd, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x2, 0x3, 0x2, 0xc, 0x7, 0x13, 0x10, 0x12, 0x12, 0x0, 0x9, 0x15, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0xc, 0xd, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0xa, 0x7, 0xb, 0x7, 0x7, 0x13, 0x12, 0xf, 0x5, 0xb, 0x15, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x4, 0x4, 0x5, 0x13, 0x10, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x13, 0xd, 0xb, 0xd, 0xf, 0x10, 0xf, 0x8, 0xd, 0xf, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x1, 0xe, 0x6, 0xa, 0x15, 0x10, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x15, 0x12, 0x9, 0x0, 0x0, 0x0, 
	0x0, 0x6, 0xe, 0x3, 0x3, 0x0, 0x17, 0x14, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x14, 0x15, 0xa, 0x5, 0x0, 0x0, 0x0, 
	0x0, 0x4, 0x6, 0x6, 0x6, 0xe, 0x3, 0xc, 0x13, 0x10, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x14, 0x15, 0x8, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x4, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x7, 0x15, 0x10, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x15, 0xb, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x4, 0x1, 0x1, 0x6, 0x2, 0x3, 0x6, 0x8, 0x15, 0x14, 0x10, 0x12, 0x12, 0x12, 0x12, 0x12, 0x14, 0xb, 0x7, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x1, 0x1, 0x6, 0x2, 0xe, 0x1, 0x7, 0x15, 0x12, 0x12, 0x12, 0x14, 0x8, 0x7, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1, 0x1, 0x1, 0x6, 0xe, 0x2, 0x0, 0x13, 0xf, 0xb, 0xa, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1, 0x1, 0x2, 0xe, 0x2, 0x1, 0x5, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1, 0x6, 0x2, 0x6, 0x1, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1, 0x2, 0x2, 0x6, 0x1, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 

/* 24colors */
0xC6, 0x79, 0xDE, 0xFF, 0xEF, 0xBF, 0xFF, 0xFF, 0xD6, 0xBD, 0xBE, 0x37, 0xE7, 0x3F, 0x9C, 0xED, 0x94, 0xAB, 0xAD, 0x73, 0xA5, 0x2F, 0x8C, 0x67, 0xB5, 0xB5, 0x7B, 0xE5, 0xF7, 0xFF, 0x5A, 0xDB, 
0x52, 0x97, 0x6B, 0x5F, 0x4A, 0x57, 0x73, 0xA1, 0x52, 0x99, 0x63, 0x1D, 0x8C, 0x69, 0x84, 0x27, };

