
/**********************************************************************
                                                                       
   ultra64 displaylist C source file ( sankaku )
                                                                       
**********************************************************************/

#ifdef HMS_SHAPE

extern Gfx gfx_sankaku_0[];
extern Gfx gfx_sankaku_1[];
extern Gfx gfx_sankaku_2[];
extern Gfx gfx_sankaku_3[];
extern Gfx gfx_sankaku_4[];

extern Gfx gfx_hoshi_0[];
extern Gfx gfx_hoshi_1[];
extern Gfx gfx_hoshi_2[];
extern Gfx gfx_hoshi_3[];
extern Gfx gfx_hoshi_4[];

extern Gfx gfx_kakera[];


/**********************************************************************
	<< sankaku >>
**********************************************************************/

Hierarchy RCP_HmsSankaku[] = {
	hmsHeader(300)
	hmsBegin()
    	hmsSelect(6, ControlShapeAnime)
		hmsBegin()
	 		hmsGfx(RM_SURF, gfx_sankaku_0)
	 		hmsGfx(RM_SURF, gfx_sankaku_1)
	 		hmsGfx(RM_SURF, gfx_sankaku_2)
	 		hmsGfx(RM_SPRITE, gfx_kakera)
	 		hmsGfx(RM_SURF, gfx_sankaku_3)
	 		hmsGfx(RM_SURF, gfx_sankaku_4)
		hmsEnd()
	hmsEnd()
    hmsExit()
};

/**********************************************************************
	<< hoshi >>
**********************************************************************/

Hierarchy RCP_HmsHoshi[] = {
	hmsHeader(300)
	hmsBegin()
    	hmsSelect(5, ControlShapeAnime)
		hmsBegin()
	 		hmsGfx(RM_SURF, gfx_hoshi_0)
	 		hmsGfx(RM_SURF, gfx_hoshi_1)
	 		hmsGfx(RM_SURF, gfx_hoshi_2)
	 		hmsGfx(RM_SURF, gfx_hoshi_3)
	 		hmsGfx(RM_SURF, gfx_hoshi_4)
		hmsEnd()
	hmsEnd()
    hmsExit()
};


#endif



#ifdef	GFX_SHAPE

/*---------------------------------------------------------------------
   Light Data                                                          
---------------------------------------------------------------------*/

static Lights1 light_sankaku[] = {
	ShapeColor( 255,100,100 ),
	ShapeColor( 100,255,100 ),
	ShapeColor( 100,100,255 ),
	ShapeColor( 255,255,100 ),
};



/***************************************************************************************************
		Convert from NINGEN		(kakera) 																
****************************************************************************************************/
static Vtx vtx_kakera_0[] = {
	{   -101,    -60,      0,     0,  -130,   467,    0,   0,   127,  255}, 
	{    102,    -60,      0,     0,   599,   467,    0,   0,   127,  255}, 
	{      0,     92,      0,     0,   234,   -81,    0,   0,   127,  255}, 
};

static unsigned short hahen_txt[] = {
    0x30c2,  0x30c2,  0x30c2,  0x30c2,  0x4102,  0xab44,  0xf508,  0xfd88,  0xdcc8,  0x92c4,  0x69c2,  0x4942,  0x30c2,  0x30c2,  0x30c2,  0x30c2,  
    0x30c2,  0x30c2,  0x30c2,  0x30c2,  0x6182,  0xab44,  0xf54a,  0xfd88,  0xf548,  0xe4c6,  0xc3c6,  0x92c4,  0x69c2,  0x30c2,  0x30c2,  0x30c2,  
    0x30c2,  0x30c2,  0x30c2,  0x38c2,  0x5942,  0x9284,  0xe54e,  0xfe12,  0xfdcb,  0xfd88,  0xed08,  0xc406,  0x9b04,  0x8ac4,  0x61c2,  0x30c2,  
    0x30c2,  0x30c2,  0x30c2,  0x38c2,  0x8a84,  0xab04,  0xd4cc,  0xee59,  0xf613,  0xf58b,  0xf548,  0xecc6,  0xbbc6,  0x9b04,  0x7204,  0x5182,  
    0x30c2,  0x30c2,  0x30c2,  0x38c2,  0x7a42,  0xa304,  0xd447,  0xc3c5,  0xeea1,  0xff5f,  0xf547,  0xe4c6,  0xc408,  0x9b08,  0x6a04,  0x5182,  
    0x30c2,  0x4942,  0xa346,  0x8a84,  0x8242,  0x9ac4,  0xb385,  0xc407,  0xe551,  0xf763,  0xf5cf,  0xedd3,  0xdd0e,  0xc44a,  0xa348,  0x7a86,  
    0x4942,  0x9ac4,  0xd488,  0x8a44,  0x8a84,  0x9285,  0xab05,  0xd489,  0xed4d,  0xf69b,  0xfe99,  0xfe97,  0xfe51,  0xdd0e,  0xabca,  0x7a46,  
    0xab44,  0xa304,  0xab04,  0x9ac4,  0x9ac4,  0xab45,  0x9285,  0x8245,  0xb3c9,  0xdccd,  0xf699,  0xfe97,  0xdcc9,  0xcc48,  0xb3c6,  0x7204,  
    0x9ac4,  0xa304,  0xb384,  0x92c4,  0xb385,  0xd4cd,  0xb3cb,  0x71c3,  0x8243,  0xa307,  0xcc8d,  0xe54b,  0xcc47,  0xdc87,  0xecc6,  0x92c4,  
    0x9284,  0xc3c4,  0xdc87,  0xab45,  0x8a87,  0xcc8d,  0xed91,  0xd44b,  0xf5d1,  0xc515,  0x8a83,  0xc3c5,  0xc3c5,  0xdc87,  0xed4b,  0xf548,  
    0x8a84,  0xc407,  0xd447,  0xe54d,  0xc44b,  0x8a43,  0xb345,  0xc3c7,  0xd4cd,  0xf659,  0xbbc7,  0xb385,  0xd489,  0xed8f,  0xff63,  0xf612,  
    0x92c4,  0xab45,  0xbb85,  0xe5d3,  0xfed9,  0xb3c7,  0xb385,  0xb387,  0x9ac5,  0xa307,  0xbbc7,  0xb3c7,  0xd4cd,  0xdccd,  0xe619,  0xe550,  
    0xb384,  0xbbc5,  0xc407,  0xe50b,  0xdc89,  0xc3c7,  0xb3c7,  0xab47,  0x7203,  0x8a83,  0x8a85,  0x9ac5,  0xa307,  0xbbc7,  0xcc46,  0xcc06,  
    0x8a84,  0x9ac4,  0xc3c7,  0xcc49,  0xd447,  0xcc07,  0xbbc7,  0xa305,  0x9ac4,  0xab86,  0xab47,  0xb3c9,  0xbbc6,  0xc3c6,  0xc448,  0xc3c6,  
    0x5982,  0x7202,  0x92c4,  0x8a82,  0xbbc7,  0xb385,  0x9b05,  0x9284,  0x92c4,  0xc408,  0xab46,  0xa304,  0xb384,  0xb384,  0xa304,  0xab44,  
    0x5142,  0x71c2,  0x7a44,  0x8242,  0xab44,  0x9ac4,  0x8a84,  0x8a84,  0x8244,  0x8244,  0x8244,  0x7a02,  0x8244,  0x92c4,  0x8a42,  0x5142,  
};

static Gfx gfx_kakera_0[] = {
	gs_Tani_LoadTextureImage2(hahen_txt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, 7),
	gsSPVertex(&vtx_kakera_0[0],  3, 0), 
	gsSP1Triangle( 0, 1, 2, 0),
	gsSPEndDisplayList() 
};

Gfx gfx_kakera[] = {
	gsDPPipeSync(),
	gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
//	gsSPClearGeometryMode(G_LIGHTING|G_CULL_BACK), 
	gsSPClearGeometryMode(G_CULL_BACK), 
	gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 7, 0,  0,0,0, 0,0,0),

	gsSPTexture(0xffff,0xffff, 0, 0, G_ON),

	gs_Tani_SetUpTileDescrip(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16,  0, 0, G_TX_CLAMP|G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_CLAMP|G_TX_NOMIRROR, 4, G_TX_NOLOD),

		gsSPDisplayList(gfx_kakera_0),

	gsSPTexture(0xffff, 0xffff, 0, 0, G_OFF),

	gsDPPipeSync(),
	gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
//	gsSPSetGeometryMode(G_LIGHTING|G_CULL_BACK), 
	gsSPSetGeometryMode(G_CULL_BACK), 
	gsSPEndDisplayList() 
};

/*---------------------------------------------------------------------
   Vtx Data                                                            
---------------------------------------------------------------------*/

static Vtx vtx_sankaku[] = {
	{    -10,     0,     10,0,0,0,   0, 127,   0,0 },
	{     10,     0,     10,0,0,0,   0, 127,   0,0 },
	{      0,     0,    -10,0,0,0,   0, 127,   0,0 },
};

static Vtx vtx_sankaku2[] = {
	{    -10,     10,    0,0,0,0,   255, 255,   0, 255 },
	{     10,     10,    0,0,0,0,   255, 255,   0, 255 },
	{      0,    -10,    0,0,0,0,   255, 255,   0, 255 },
};

static Vtx vtx_particl_star0[]={
	{0,-8,0,0,0,0,0,0,-127,0},
	{-32,80,0,0,0,0,0,0,-127,0},
	{32,80,0,0,0,0,0,0,-127,0},
	{-52,28,0,0,0,0,0,0,-127,255},
	{-116,80,0,0,0,0,0,0,-127,255},
	{-84,-52,0,0,0,0,0,0,-127,255},
	{52,28,0,0,0,0,0,0,-127,255},
	{84,-52,0,0,0,0,0,0,-127,255},
	{116,80,0,0,0,0,0,0,-127,255},
	{0,160,0,0,0,0,0,0,-127,255},
};

static Vtx vtx_particl_star1[]={
	{0,-8,0,0,0,0,     255,255,0,255},
	{-32,80,0,0,0,0,   255,255,0,255},
	{32,80,0,0,0,0,    255,255,0,255},
	{-52,28,0,0,0,0,   255,255,0,255},
	{-116,80,0,0,0,0,  255,255,0,255},
	{-84,-52,0,0,0,0,  255,255,0,255},
	{52,28,0,0,0,0,    255,255,0,255},
	{84,-52,0,0,0,0,   255,255,0,255},
	{116,80,0,0,0,0,   255,255,0,255},
	{0,160,0,0,0,0,    255,255,0,255},
};

/*---------------------------------------------------------------------
	particl star
---------------------------------------------------------------------*/

static Gfx	gfx_pstar[]={
	gsSPClearGeometryMode( G_CULL_BACK ), 
	gsSPVertex(&vtx_particl_star0[0],10,0),
	gsSP1Triangle(0,1,2,0),
	gsSP1Triangle(3,4,1,0),
	gsSP1Triangle(0,5,3,0),
	gsSP1Triangle(6,7,0,0),
	gsSP1Triangle(2,8,6,0),
	gsSP1Triangle(1,9,2,0),
	gsSP1Triangle(0,3,1,0),
	gsSP1Triangle(2,6,0,0),
	gsSPSetGeometryMode( G_CULL_BACK ), 
	gsSPEndDisplayList()
};

Gfx gfx_hoshi_0[]={
	gsSPLight((&light_sankaku[0].l[0]),1),
	gsSPLight((&light_sankaku[0].a),2),
	gsSPDisplayList(gfx_pstar),
	gsSPEndDisplayList() 
};
Gfx gfx_hoshi_1[]={
	gsSPLight((&light_sankaku[1].l[0]),1),
	gsSPLight((&light_sankaku[1].a),2),
	gsSPDisplayList(gfx_pstar),
	gsSPEndDisplayList() 
};
Gfx gfx_hoshi_2[]={
	gsSPLight((&light_sankaku[2].l[0]),1),
	gsSPLight((&light_sankaku[2].a),2),
	gsSPDisplayList(gfx_pstar),
	gsSPEndDisplayList() 
};
Gfx gfx_hoshi_3[]={
	gsSPLight((&light_sankaku[3].l[0]),1),
	gsSPLight((&light_sankaku[3].a),2),
	gsSPDisplayList(gfx_pstar),
	gsSPEndDisplayList() 
};

Gfx gfx_hoshi_4[]={
	gsSPClearGeometryMode( G_LIGHTING | G_CULL_BACK ), 
	gsSPVertex(&vtx_particl_star1[0],10,0),
	gsSP1Triangle(0,1,2,0),
	gsSP1Triangle(3,4,1,0),
	gsSP1Triangle(0,5,3,0),
	gsSP1Triangle(6,7,0,0),
	gsSP1Triangle(2,8,6,0),
	gsSP1Triangle(1,9,2,0),
	gsSP1Triangle(0,3,1,0),
	gsSP1Triangle(2,6,0,0),
	gsSPSetGeometryMode( G_LIGHTING | G_CULL_BACK ), 
	gsSPEndDisplayList()
};


/*---------------------------------------------------------------------
   Gfx Data                                                            
---------------------------------------------------------------------*/

Gfx gfx_sankaku_0[] = {
	gsSPLight((&light_sankaku[0].l[0]),1),
	gsSPLight((&light_sankaku[0].a),2),
	gsSPClearGeometryMode( G_CULL_BACK ), 
	gsSPVertex(&vtx_sankaku[0], 3, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSPSetGeometryMode( G_CULL_BACK ), 
	gsSPEndDisplayList()
};

Gfx gfx_sankaku_1[] = {
	gsSPLight((&light_sankaku[1].l[0]),1),
	gsSPLight((&light_sankaku[1].a),2),
	gsSPClearGeometryMode( G_CULL_BACK ), 
	gsSPVertex(&vtx_sankaku[0], 3, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSPSetGeometryMode( G_CULL_BACK ), 
	gsSPEndDisplayList()
};

Gfx gfx_sankaku_2[] = {
	gsSPLight((&light_sankaku[2].l[0]),1),
	gsSPLight((&light_sankaku[2].a),2),
	gsSPClearGeometryMode( G_CULL_BACK ), 
	gsSPVertex(&vtx_sankaku[0], 3, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSPSetGeometryMode( G_CULL_BACK ), 
	gsSPEndDisplayList()
};

Gfx gfx_sankaku_3[] = {
	gsSPLight((&light_sankaku[3].l[0]),1),
	gsSPLight((&light_sankaku[3].a),2),
	gsSPClearGeometryMode( G_CULL_BACK ), 
	gsSPVertex(&vtx_sankaku[0], 3, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSPSetGeometryMode( G_CULL_BACK ), 
	gsSPEndDisplayList()
};

Gfx gfx_sankaku_4[] = {
	gsSPClearGeometryMode( G_LIGHTING | G_CULL_BACK ), 
	gsSPVertex(&vtx_sankaku2[0], 3, 0),
	gsSP1Triangle(0, 1, 2, 0),
	gsSPSetGeometryMode( G_LIGHTING | G_CULL_BACK ), 
	gsSPEndDisplayList()
};

#endif
