From f40a06c2511522311b53ab2ada556bd7572b9ba1 Mon Sep 17 00:00:00 2001 From: megazig Date: Tue, 22 Sep 2009 22:09:31 -0500 Subject: update to origin system and changed pane reading/writing to be seperate --- brlyt.c | 2168 +++++++++++++++++---------------------------------------------- 1 file changed, 582 insertions(+), 1586 deletions(-) (limited to 'brlyt.c') diff --git a/brlyt.c b/brlyt.c index 7b9f32e..393f4b4 100644 --- a/brlyt.c +++ b/brlyt.c @@ -25,6 +25,7 @@ #define MAXIMUM_TAGS_SIZE (0x1000) +// MAGIC char pic1_magic[] = "pic1"; char pan1_magic[] = "pan1"; char bnd1_magic[] = "bnd1"; @@ -40,6 +41,22 @@ char grs1_magic[] = "grs1"; char pae1_magic[] = "pae1"; char pas1_magic[] = "pas1"; +// CONSTANTS +char originX[3][15]; +char originY[3][15]; +char wraps[4][20]; +char tgen_types[11][20]; +char tgen_src[21][20]; +char mtxsrc[42][20]; +char tevcolor[4][20]; +char matsrc[2][20]; +char scale[10][20]; +char compare[8][20]; +char aop[5][20]; +char blendmode[5][20]; +char logicop[16][20]; +char blendfactor[8][20]; + static size_t BRLYT_fileoffset = 0; char *materials; @@ -49,6 +66,195 @@ char *textures; int numberOfTextures; int lengthOfTextures; +void SetupConstants( ) +{ + int o; + for ( o = 0 ; o < 3 ; o++ ) + memset( originX[o] , 0 , 15 ); + strcpy( originX[0] , "Left" ); + strcpy( originX[1] , "Center" ); + strcpy( originX[2] , "Right" ); + + for ( o = 0 ; o < 3 ; o++ ) + memset( originY[o] , 0 , 15 ); + strcpy( originY[0] , "Top" ); + strcpy( originY[1] , "Center" ); + strcpy( originY[2] , "Bottom" ); + + for ( o = 0 ; o < 4 ; o++ ) + memset( wraps[o] , 0 , 20 ); + strcpy( wraps[0] , "GX_CLAMP" ); + strcpy( wraps[1] , "GX_REPEAT" ); + strcpy( wraps[2] , "GX_MIRROR" ); + strcpy( wraps[3] , "GX_MAXTEXWRAPMODE" ); + + for ( o = 0 ; o < 11 ; o++ ) + memset( tgen_types[o] , 0 , 20 ); + strcpy( tgen_types[0] , "GX_TG_MTX3x4" ); + strcpy( tgen_types[1] , "GX_TG_MTX2x4" ); + strcpy( tgen_types[2] , "GX_TG_BUMP0" ); + strcpy( tgen_types[3] , "GX_TG_BUMP1" ); + strcpy( tgen_types[4] , "GX_TG_BUMP2" ); + strcpy( tgen_types[5] , "GX_TG_BUMP3" ); + strcpy( tgen_types[6] , "GX_TG_BUMP4" ); + strcpy( tgen_types[7] , "GX_TG_BUMP5" ); + strcpy( tgen_types[8] , "GX_TG_BUMP6" ); + strcpy( tgen_types[9] , "GX_TG_BUMP7" ); + strcpy( tgen_types[10] , "GX_TG_SRTG" ); + + for ( o = 0 ; o < 21 ; o++ ) + memset( tgen_src[o] , 0 , 20 ); + strcpy( tgen_src[0] , "GX_TG_POS" ); + strcpy( tgen_src[1] , "GX_TG_NRM" ); + strcpy( tgen_src[2] , "GX_TG_BINRM" ); + strcpy( tgen_src[3] , "GX_TG_TANGEN" ); + strcpy( tgen_src[4] , "GX_TG_TEX0" ); + strcpy( tgen_src[5] , "GX_TG_TEX1" ); + strcpy( tgen_src[6] , "GX_TG_TEX2" ); + strcpy( tgen_src[7] , "GX_TG_TEX3" ); + strcpy( tgen_src[8] , "GX_TG_TEX4" ); + strcpy( tgen_src[9] , "GX_TG_TEX5" ); + strcpy( tgen_src[10] , "GX_TG_TEX6" ); + strcpy( tgen_src[11] , "GX_TG_TEX7" ); + strcpy( tgen_src[12] , "GX_TG_TEXCOORD0" ); + strcpy( tgen_src[13] , "GX_TG_TEXCOORD1" ); + strcpy( tgen_src[14] , "GX_TG_TEXCOORD2" ); + strcpy( tgen_src[15] , "GX_TG_TEXCOORD3" ); + strcpy( tgen_src[16] , "GX_TG_TEXCOORD4" ); + strcpy( tgen_src[17] , "GX_TG_TEXCOORD5" ); + strcpy( tgen_src[18] , "GX_TG_TEXCOORD6" ); + strcpy( tgen_src[19] , "GX_TG_COLOR0" ); + strcpy( tgen_src[20] , "GX_TG_COLOR1" ); + + for ( o = 0 ; o < 42 ; o++ ) + memset( mtxsrc[o] , 0 , 20 ); + strcpy( mtxsrc[0] , "GX_PNMTX0" ); + strcpy( mtxsrc[1] , "GX_PNMTX1" ); + strcpy( mtxsrc[2] , "GX_PNMTX2" ); + strcpy( mtxsrc[3] , "GX_PNMTX3" ); + strcpy( mtxsrc[4] , "GX_PNMTX4" ); + strcpy( mtxsrc[5] , "GX_PNMTX5" ); + strcpy( mtxsrc[6] , "GX_PNMTX6" ); + strcpy( mtxsrc[7] , "GX_PNMTX7" ); + strcpy( mtxsrc[8] , "GX_PNMTX8" ); + strcpy( mtxsrc[9] , "GX_PNMTX9" ); + strcpy( mtxsrc[10] , "GX_TEXMTX0" ); + strcpy( mtxsrc[11] , "GX_TEXMTX1" ); + strcpy( mtxsrc[12] , "GX_TEXMTX2" ); + strcpy( mtxsrc[13] , "GX_TEXMTX3" ); + strcpy( mtxsrc[14] , "GX_TEXMTX4" ); + strcpy( mtxsrc[15] , "GX_TEXMTX5" ); + strcpy( mtxsrc[16] , "GX_TEXMTX6" ); + strcpy( mtxsrc[17] , "GX_TEXMTX7" ); + strcpy( mtxsrc[18] , "GX_TEXMTX8" ); + strcpy( mtxsrc[19] , "GX_TEXMTX9" ); + strcpy( mtxsrc[20] , "GX_IDENTITY" ); + strcpy( mtxsrc[21] , "GX_DTTMTX0" ); + strcpy( mtxsrc[22] , "GX_DTTMTX1" ); + strcpy( mtxsrc[23] , "GX_DTTMTX2" ); + strcpy( mtxsrc[24] , "GX_DTTMTX3" ); + strcpy( mtxsrc[25] , "GX_DTTMTX4" ); + strcpy( mtxsrc[26] , "GX_DTTMTX5" ); + strcpy( mtxsrc[27] , "GX_DTTMTX6" ); + strcpy( mtxsrc[28] , "GX_DTTMTX7" ); + strcpy( mtxsrc[29] , "GX_DTTMTX8" ); + strcpy( mtxsrc[30] , "GX_DTTMTX9" ); + strcpy( mtxsrc[31] , "GX_DTTMTX1" ); + strcpy( mtxsrc[32] , "GX_DTTMTX1" ); + strcpy( mtxsrc[33] , "GX_DTTMTX12" ); + strcpy( mtxsrc[34] , "GX_DTTMTX13" ); + strcpy( mtxsrc[35] , "GX_DTTMTX14" ); + strcpy( mtxsrc[36] , "GX_DTTMTX15" ); + strcpy( mtxsrc[37] , "GX_DTTMTX16" ); + strcpy( mtxsrc[38] , "GX_DTTMTX17" ); + strcpy( mtxsrc[39] , "GX_DTTMTX18" ); + strcpy( mtxsrc[40] , "GX_DTTMTX19" ); + strcpy( mtxsrc[41] , "GX_DTTIDENTITY" ); // actually 125 not 124 + + for ( o = 0 ; o < 4 ; o++ ) + memset( tevcolor[o] , 0 , 20 ); + strcpy( tevcolor[0] , "GX_CH_RED" ); + strcpy( tevcolor[1] , "GX_CH_GREEN" ); + strcpy( tevcolor[2] , "GX_CH_BLUE" ); + strcpy( tevcolor[3] , "GX_CH_ALPHA" ); + + for ( o = 0 ; o < 2 ; o++ ) + memset( matsrc[o] , 0 , 20 ); + strcpy( matsrc[0] , "GX_SRC_REG" ); + strcpy( matsrc[1] , "GX_SRC_VTX" ); + + for ( o = 0 ; o < 10 ; o++ ) + memset( scale[o] , 0 , 20 ); + strcpy( scale[0] , "GX_ITS_1" ); + strcpy( scale[1] , "GX_ITS_2" ); + strcpy( scale[2] , "GX_ITS_4" ); + strcpy( scale[3] , "GX_ITS_8" ); + strcpy( scale[4] , "GX_ITS_16" ); + strcpy( scale[5] , "GX_ITS_32" ); + strcpy( scale[6] , "GX_ITS_64" ); + strcpy( scale[7] , "GX_ITS_128" ); + strcpy( scale[8] , "GX_ITS_256" ); + strcpy( scale[9] , "GX_MAX_ITSCALE" ); + + for ( o = 0 ; o < 8 ; o++ ) + memset( compare[o] , 0 , 20 ); + strcpy( compare[0] , "GX_NEVER" ); + strcpy( compare[1] , "GX_LESS" ); + strcpy( compare[2] , "GX_EQUAL" ); + strcpy( compare[3] , "GX_LEQUAL" ); + strcpy( compare[4] , "GX_GREATER" ); + strcpy( compare[5] , "GX_NEQUAL" ); + strcpy( compare[6] , "GX_GEQUAL" ); + strcpy( compare[7] , "GX_ALWAYS" ); + + for ( o = 0 ; o < 5 ; o++ ) + memset( aop[o] , 0 , 20 ); + strcpy( aop[0] , "GX_AOP_AND" ); + strcpy( aop[1] , "GX_AOP_OR" ); + strcpy( aop[2] , "GX_AOP_XOR" ); + strcpy( aop[3] , "GX_AOP_XNOR" ); + strcpy( aop[4] , "GX_MAX_ALPHAOP" ); + + for ( o = 0 ; o < 5 ; o++ ) + memset( blendmode[o] , 0 , 20 ); + strcpy( blendmode[0] , "GX_BM_NONE" ); + strcpy( blendmode[1] , "GX_BM_BLEND" ); + strcpy( blendmode[2] , "GX_BM_LOGIC" ); + strcpy( blendmode[3] , "GX_BM_SUBTRACT" ); + strcpy( blendmode[4] , "GX_MAX_BLENDMODE" ); + + for ( o = 0 ; o < 8 ; o++ ) + memset( blendfactor[o] , 0 , 20 ); + strcpy( blendfactor[0] , "GX_BL_ZERO" ); + strcpy( blendfactor[1] , "GX_BL_ONE" ); + strcpy( blendfactor[2] , "GX_BL_SRCCLR" ); + strcpy( blendfactor[3] , "GX_BL_INVSRCCLR" ); + strcpy( blendfactor[4] , "GX_BL_SRCALPHA" ); + strcpy( blendfactor[5] , "GX_BL_INVSRCALPHA" ); + strcpy( blendfactor[6] , "GX_BL_DSTALPHA" ); + strcpy( blendfactor[7] , "GX_BL_INVDSTALPHA" ); + + for ( o = 0 ; o < 16 ; o++ ) + memset( logicop[o] , 0 , 20 ); + strcpy( logicop[0] , "GX_LO_CLEAR" ); + strcpy( logicop[1] , "GX_LO_AND" ); + strcpy( logicop[2] , "GX_LO_REVAND" ); + strcpy( logicop[3] , "GX_LO_COPY" ); + strcpy( logicop[4] , "GX_LO_INVAND" ); + strcpy( logicop[5] , "GX_LO_NOOP" ); + strcpy( logicop[6] , "GX_LO_XOR" ); + strcpy( logicop[7] , "GX_LO_OR" ); + strcpy( logicop[8] , "GX_LO_NOR" ); + strcpy( logicop[9] , "GX_LO_EQUIV" ); + strcpy( logicop[10] , "GX_LO_INV" ); + strcpy( logicop[11] , "GX_LO_REVOR" ); + strcpy( logicop[12] , "GX_LO_INVCOPY" ); + strcpy( logicop[13] , "GX_LO_INVOR" ); + strcpy( logicop[14] , "GX_LO_NAND" ); + strcpy( logicop[15] , "GX_LO_SET" ); + +} + static int FourCCsMatch(fourcc cc1, fourcc cc2) { int ret[4]; @@ -302,22 +508,8 @@ void PrintBRLYTEntry_fnl1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) } } -void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) +void PrintPane( brlyt_entry entry , u8* brlyt_file , mxml_node_t * tag ) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); - mxml_node_t *flags, *origin, *alpha, *padding; mxml_node_t *translate, *x, *y, *z; mxml_node_t *rotate, *scale; @@ -331,7 +523,9 @@ void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s",origins[data.origin%9]); + origin = mxmlNewElement(tag, "origin"); + mxmlElementSetAttrf(origin, "x", "%s", originX[data.origin%3]); + mxmlElementSetAttrf(origin, "y", "%s", originY[data.origin/3]); alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); translate = mxmlNewElement(tag, "translate"); @@ -350,54 +544,16 @@ void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); } -void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) +void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); + PrintPane( entry , brlyt_file , tag ); +} - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZTrans)); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); +void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) +{ + PrintPane( entry , brlyt_file , tag ); - mxml_node_t *wndd, *unkk, *count, *offset1, *offset2; + mxml_node_t *wndd, *unkk, *count, *offset1, *offset2, *padding; int i, j; brlyt_wnd wndy; BRLYT_ReadDataFromMemory(&wndy, brlyt_file, sizeof(brlyt_wnd)); @@ -457,101 +613,15 @@ void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) void PrintBRLYTEntry_bnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); - - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.25f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.25f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.25f", float_swap_bytes(data.ZTrans)); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); + PrintPane( entry , brlyt_file , tag ); } void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); + PrintPane( entry , brlyt_file , tag ); - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); brlyt_pic_chunk data2; BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_pic_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZTrans - )); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); mxml_node_t *material, *color, *vtx, *attr, *coordinates, *set, *coord; material = mxmlNewElement(tag, "material"); mxmlElementSetAttrf(material, "name", "%s", getMaterial(short_swap_bytes(data2.mat_num))); color = mxmlNewElement(tag, "colors"); @@ -584,63 +654,8 @@ void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); - - char alignments[9][15]; - for ( o = 0 ; o < 8 ; o++ ) - memset( alignments[o] , 0 , 20 ); - strcpy( alignments[0] , "TOP LEFT" ); - strcpy( alignments[1] , "TOP CENTER" ); - strcpy( alignments[2] , "TOP RIGHT" ); - strcpy( alignments[3] , "MIDDLE LEFT" ); - strcpy( alignments[4] , "MIDDLE CENTER" ); - strcpy( alignments[5] , "MIDDLE RIGHT" ); - strcpy( alignments[6] , "BOTTOM LEFT" ); - strcpy( alignments[7] , "BOTTOM CENTER" ); - strcpy( alignments[8] , "BOTTOM RIGHT" ); + PrintPane( entry , brlyt_file , tag ); - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.ZTrans)); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%.20f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%.20f", float_swap_bytes(data.height)); mxml_node_t *length, *font, *xsize, *ysize, *charsize, *linesize, *alignment, *color1, *color2, *text; brlyt_text_chunk data2; BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_text_chunk)); @@ -652,7 +667,9 @@ void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) ysize = mxmlNewElement(font, "ysize"); mxmlNewTextf(ysize, 0, "%f", float_swap_bytes(data2.font_size_y)); charsize = mxmlNewElement(font, "charsize"); mxmlNewTextf(charsize, 0, "%f", float_swap_bytes(data2.char_space)); linesize = mxmlNewElement(font, "linesize"); mxmlNewTextf(linesize, 0, "%f", float_swap_bytes(data2.line_space)); - alignment = mxmlNewElement(font, "alignment"); mxmlNewTextf(alignment, 0, "%s", alignments[data2.alignment%9]); + alignment = mxmlNewElement(font, "alignment"); + mxmlElementSetAttrf(alignment, "x", "%s", originX[data2.alignment%3]); + mxmlElementSetAttrf(alignment, "y", "%s", originY[data2.alignment/3]); color1 = mxmlNewElement(tag, "color1"); mxmlNewTextf(color1, 0, "%08x", be32(data2.color1) ); color2 = mxmlNewElement(tag, "color2"); mxmlNewTextf(color2, 0, "%08x", be32(data2.color2) ); // int q; for(q=0;q