#include<ultra64.h>

extern Vtx d_hip_v[];
extern Vtx d_hip_vmcur[];
extern Tri d_hip_tri[];
extern Lights1 d_hip_material[];
extern Mtx d_hip_matrix[];

extern unsigned short d_body1_txt[];
extern unsigned short d_body2_txt[];
extern unsigned short d_body3_txt[];
extern unsigned short d_body4_txt[];
extern unsigned short d_eye_txt[];
extern unsigned short d_hand_txt[];
extern unsigned short d_tail_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 */


/* ======== d_hip ======== */


/* ======== db ======== */

Gfx d_hip_model[]={

	gsSPTexture(65535, 65535,0, 0, 1),
	gsDPPipeSync(),
	gsDPSetCombineMode(G_CC_MODULATERGBDECALA,G_CC_PASS2),

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,64,8,0,0,G_TX_WRAP,6,0,G_TX_CLAMP,3,0),
	gs_Nin_LoadTextureImage(d_body1_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,64,8,0,7),

	gsSPVertex(&d_hip_v[0], 7, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(3, 2, 1, 0),
	gsSP1Triangle(2, 4, 0, 0),
	gsSP1Triangle(3, 4, 2, 0),
	gsSP1Triangle(0, 4, 5, 0),
	gsSP1Triangle(3, 5, 4, 0),
	gsSP1Triangle(0, 5, 6, 0),
	gsSP1Triangle(3, 6, 5, 0),

	gs_Nin_SetUpTileDescrip(G_IM_FMT_RGBA,G_IM_SIZ_16b,8,8,0,0,G_TX_CLAMP,3,0,G_TX_CLAMP,3,0),
	gs_Nin_LoadTextureImage(d_body4_txt,G_IM_FMT_RGBA,G_IM_SIZ_16b,8,8,0,7),

	gsSPVertex(&d_hip_v[7], 5, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSP1Triangle(0, 3, 1, 0),
	gsSP1Triangle(3, 4, 1, 0),
	gsSP1Triangle(2, 1, 4, 0),
	gsSPEndDisplayList(),
}; /* db */ 

Gfx d_hip_modelT[] = {
	gsSPEndDisplayList()
};

#undef G_CC_PRIMSHADE

#undef gs_Nin_LoadTextureImage

#undef gs_Nin_SetUpTileDescrip

/* 12 vertices */
Vtx d_hip_v[]={
	{ -136,2,0,0, 613, 160, -117,20,0,255 },   /* v0 used p86/V3 4 times */
	{ 4,72,-102,0, 1070, 238, 3,62,-102,255 },   /* v1 used p92/V3 2 times */
	{ 0,-40,-116,0, 1064, 113, 5,-50,-108,255 },   /* v2 used p86/V1 4 times */
	{ 606,1,0,0, 2018, 158, 93,-50,56,255 },   /* v3 used p90/V1 4 times */
	{ 0,-134,0,0, 1064, 8, 9,-119,0,255 },   /* v4 used p86/V2 4 times */
	{ 0,-40,116,0, 1064, 113, 5,-50,109,255 },   /* v5 used p90/V3 4 times */
	{ 4,72,102,0, 1070, 238, 3,62,103,255 },   /* v6 used p90/V2 2 times */
	{ 4,72,102,0, -57, -526, 3,62,103,255 },   /* v7 used p91/V1 2 times */
	{ 4,138,1,0, -57, 122, 9,120,0,255 },   /* v8 used p91/V3 4 times */
	{ -136,2,0,0, -200, 125, -117,20,0,255 },   /* v9 used p85/V1 2 times */
	{ 606,1,0,0, 558, 127, 93,-50,56,255 },   /* v10 used p91/V2 2 times */
	{ 4,72,-102,0, -57, 782, 3,62,-102,255 },   /* v11 used p81/V2 2 times */
};


/*   0 vertices */
/* 64 x 8  G_IM_SIZ_16b G_IM_FMT_RGBA  */
unsigned short d_body1_txt[] = {
	0xcfbf, 0xdfff, 0xcf7d, 0xd7ff, 0xcffd, 0xdfff, 0xd77f, 0xcfff, 0xe7ff, 0xe7ff, 0xd77f, 0xdf7f, 0xdfff, 0xdfbf, 0xe7ff, 0xcfbf, 0xcfff, 0xdfff, 0xc7ff, 0xe7bf, 0xcfff, 0xdfff, 0xc7bf, 0xd7bf, 0xc77f, 0xdfff, 0xcfff, 0xd7ff, 0xdfff, 0xdffd, 0xcfbd, 0xcffd, 0xe7bf, 0xd7bf, 0xd7bd, 0xdffd, 0xe77f, 0xcfff, 0xd7ff, 0xdf7f, 0xdfbf, 0xcf7d, 0xbeb7, 0xa5f3, 0x6cab, 0x535f, 0x3a59, 0x29d7, 0x21d3, 0x2193, 0x2195, 0x2995, 0x29d5, 0x2993, 0x2993, 0x2193, 0x2151, 0x2151, 0x2153, 0x2191, 0x2193, 0x2193, 0x2153, 0x2991, 
	0xdfff, 0xd7bf, 0xcfbf, 0xc7bd, 0xc7fd, 0xd7bd, 0xd7ff, 0xdffd, 0xcfff, 0xcfbf, 0xdfff, 0xdffd, 0xd7ff, 0xc7bd, 0xd7ff, 0xdfff, 0xdfbd, 0xd7ff, 0xd7bd, 0xdffd, 0xcf7f, 0xdfff, 0xd7bd, 0xe7bf, 0xc7bf, 0xcfff, 0xdfff, 0xd7fd, 0xd7ff, 0xdfff, 0xd7ff, 0xdfbf, 0xe7bf, 0xd7ff, 0xdfff, 0xdfff, 0xdf7f, 0xcfbb, 0xc77d, 0xc73b, 0xa635, 0x8d6f, 0x74a9, 0x5363, 0x3219, 0x31d5, 0x2993, 0x2191, 0x2191, 0x2193, 0x2193, 0x2191, 0x2193, 0x2193, 0x2193, 0x2193, 0x2191, 0x2151, 0x2953, 0x2153, 0x2193, 0x2153, 0x2193, 0x2193, 
	0xbf7d, 0xc73b, 0xb6fb, 0xbef9, 0xbef9, 0xc739, 0xaefb, 0xc6fb, 0xbf3b, 0xbf7b, 0xcf7b, 0xc77d, 0xdf7b, 0xc7bf, 0xdfff, 0xdfbf, 0xc7bd, 0xd7ff, 0xd7ff, 0xdfbf, 0xe7fd, 0xcfbd, 0xc7bf, 0xdfbf, 0xdf7f, 0xdffd, 0xdfbf, 0xdf7d, 0xc7ff, 0xdfff, 0xcfff, 0xdf7d, 0xcffd, 0xdfff, 0xd7fd, 0xc7bd, 0xb77b, 0xa677, 0x85b1, 0x7469, 0x5361, 0x3a9d, 0x3259, 0x29d5, 0x2195, 0x2193, 0x2193, 0x2193, 0x2993, 0x2993, 0x2153, 0x2193, 0x2193, 0x2193, 0x2151, 0x2153, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2153, 0x2191, 0x2193, 
	0x7cab, 0x5ba5, 0x5361, 0x53a3, 0x5be3, 0x5be5, 0x63e5, 0x5c25, 0x6be7, 0x6c29, 0x6c69, 0x74eb, 0x852f, 0x9571, 0x95f3, 0xa5f5, 0xae75, 0xa677, 0xc6fb, 0xbf3b, 0xbef9, 0xbf3b, 0xd77b, 0xc77f, 0xdfbd, 0xcfff, 0xdfff, 0xd7ff, 0xcfbf, 0xbfbd, 0xc77f, 0xd77d, 0xcf7b, 0xbf3b, 0xb6b7, 0x9df3, 0x7ceb, 0x5363, 0x3a9d, 0x2a17, 0x21d5, 0x2993, 0x2993, 0x2193, 0x2953, 0x2993, 0x2993, 0x2153, 0x2193, 0x2191, 0x2153, 0x2193, 0x2153, 0x2193, 0x2193, 0x2193, 0x2153, 0x2193, 0x2193, 0x2153, 0x2151, 0x2191, 0x2151, 0x2153, 
	0x2a15, 0x2993, 0x2153, 0x2993, 0x2193, 0x2993, 0x2193, 0x2993, 0x2195, 0x29d5, 0x2995, 0x29d5, 0x31d7, 0x3a57, 0x3219, 0x3a59, 0x3a9d, 0x42dd, 0x5321, 0x5361, 0x53a3, 0x5be5, 0x7469, 0x7ced, 0x9d6f, 0x95f3, 0x9df5, 0x9df1, 0x9df3, 0xa5f3, 0x8db1, 0x956f, 0x852d, 0x63e7, 0x5ba3, 0x42df, 0x3259, 0x21d5, 0x2995, 0x2193, 0x2193, 0x2193, 0x2151, 0x2993, 0x2193, 0x2193, 0x2193, 0x2193, 0x2993, 0x2193, 0x2193, 0x2191, 0x2151, 0x2153, 0x2193, 0x2191, 0x2193, 0x2153, 0x2193, 0x2153, 0x2193, 0x2193, 0x2191, 0x2193, 
	0x2193, 0x2153, 0x2153, 0x2193, 0x2153, 0x2193, 0x2193, 0x2993, 0x2153, 0x2193, 0x2193, 0x2151, 0x2193, 0x2153, 0x2193, 0x2193, 0x2193, 0x2153, 0x2193, 0x2153, 0x2193, 0x2993, 0x2995, 0x31d5, 0x3219, 0x3a59, 0x3a59, 0x3259, 0x325b, 0x3a5b, 0x3a59, 0x3a59, 0x3217, 0x31d5, 0x2995, 0x2193, 0x2153, 0x2193, 0x2193, 0x2193, 0x2193, 0x2993, 0x2193, 0x2993, 0x2153, 0x2153, 0x2153, 0x2193, 0x2153, 0x2151, 0x2193, 0x2193, 0x2153, 0x2953, 0x2151, 0x2193, 0x2151, 0x2153, 0x2153, 0x2151, 0x2153, 0x2193, 0x2193, 0x2153, 
	0x2193, 0x2193, 0x2151, 0x2193, 0x2153, 0x2193, 0x2193, 0x2191, 0x2153, 0x2153, 0x2193, 0x2193, 0x2153, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2191, 0x2153, 0x2191, 0x2193, 0x2153, 0x2191, 0x2193, 0x2153, 0x2993, 0x2191, 0x2993, 0x2153, 0x2153, 0x2153, 0x2953, 0x2153, 0x2153, 0x2191, 0x2153, 0x2153, 0x2193, 0x2153, 0x2153, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2193, 0x2151, 0x2153, 0x2153, 0x2193, 0x2153, 0x2153, 0x2193, 0x2191, 0x2953, 0x2193, 0x2193, 0x2151, 0x2193, 0x2153, 0x2193, 
	0x2153, 0x2193, 0x2193, 0x2153, 0x2193, 0x2193, 0x2153, 0x2993, 0x2193, 0x2193, 0x2193, 0x2193, 0x2993, 0x2193, 0x2153, 0x2153, 0x2193, 0x2191, 0x2193, 0x2193, 0x2153, 0x2153, 0x2951, 0x2953, 0x2151, 0x2153, 0x2153, 0x2151, 0x2193, 0x2151, 0x2953, 0x2193, 0x2193, 0x2151, 0x2153, 0x2993, 0x2191, 0x2193, 0x2193, 0x2153, 0x2153, 0x2991, 0x2993, 0x2153, 0x2193, 0x2193, 0x2153, 0x2993, 0x2153, 0x2153, 0x2193, 0x2953, 0x2193, 0x2153, 0x2153, 0x2193, 0x2193, 0x2191, 0x2951, 0x2153, 0x2151, 0x2953, 0x2153, 0x2153, 
};

/* 8 x 8  G_IM_SIZ_16b G_IM_FMT_RGBA  */
unsigned short d_body4_txt[] = {
	0x2151, 0x2151, 0x2153, 0x2191, 0x2193, 0x2193, 0x2153, 0x2991, 
	0x2191, 0x2151, 0x2953, 0x2993, 0x2993, 0x2953, 0x2193, 0x2193, 
	0x2193, 0x2195, 0x3217, 0x429b, 0x4add, 0x31d7, 0x2993, 0x2193, 
	0x2195, 0x3217, 0x5b61, 0x952d, 0xb5f3, 0x63a1, 0x29d5, 0x2153, 
	0x2193, 0x3217, 0x5b61, 0x9d2f, 0xc677, 0x7425, 0x3a17, 0x2195, 
	0x2151, 0x2195, 0x31d7, 0x425b, 0x5b1f, 0x3259, 0x2195, 0x2153, 
	0x2191, 0x2953, 0x2193, 0x2193, 0x2193, 0x2193, 0x2153, 0x2193, 
	0x2193, 0x2191, 0x2951, 0x2153, 0x2151, 0x2953, 0x2153, 0x2153, 
};

