diff options
| author | megazig <megazig@megazig-desktop.(none)> | 2009-09-22 22:09:31 -0500 |
|---|---|---|
| committer | megazig <megazig@megazig-desktop.(none)> | 2009-09-22 22:09:31 -0500 |
| commit | f40a06c2511522311b53ab2ada556bd7572b9ba1 (patch) | |
| tree | 219601538bc51fbc22e827eaab0eaa71931ef839 | |
| parent | bac3c85aa0c9a8e2e440be16446ab843cdafe6b1 (diff) | |
update to origin system and changed pane reading/writing to be seperate
Diffstat (limited to '')
| -rw-r--r-- | brlan.c | 88 | ||||
| -rw-r--r-- | brlyt.c | 1906 | ||||
| -rw-r--r-- | general.h | 2 |
3 files changed, 519 insertions, 1477 deletions
@@ -43,7 +43,7 @@ FILE* xmlanout; void CreateTagTypesLists( ) { - int i, j; + int i; for(i = 0; i < 16; i++) { memset(tag_types_list[i], 0, 24); @@ -227,37 +227,74 @@ void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset, mxml_node_ BRLAN_ReadDataFromMemory(&tagEntryInfo, data, sizeof(tag_entryinfo)); entry = mxmlNewElement(tag, "entry"); mxmlElementSetAttrf(entry, "type1", "%u", tagEntryInfo.type1); - if(tagEntryInfo.type2 < 16) + char type_rlpa[4] = {'R', 'L', 'P', 'A'}; + char type_rlts[4] = {'R', 'L', 'T', 'S'}; + char type_rlvi[4] = {'R', 'L', 'V', 'I'}; + char type_rlvc[4] = {'R', 'L', 'V', 'C'}; + char type_rlmc[4] = {'R', 'L', 'M', 'C'}; + char type_rltp[4] = {'R', 'L', 'T', 'P'}; + char type_rlim[4] = {'R', 'L', 'I', 'M'}; + + if(memcmp(tagHeader.magic, type_rlpa, 4) == 0) { - char type_rlpa[4] = {'R', 'L', 'P', 'A'}; - char type_rlts[4] = {'R', 'L', 'T', 'S'}; - char type_rlvi[4] = {'R', 'L', 'V', 'I'}; - char type_rlvc[4] = {'R', 'L', 'V', 'C'}; - char type_rlmc[4] = {'R', 'L', 'M', 'C'}; - char type_rltp[4] = {'R', 'L', 'T', 'P'}; - char type_rlim[4] = {'R', 'L', 'I', 'M'}; - if(memcmp(tagHeader.magic, type_rlpa, 4) == 0) + if(tagEntryInfo.type2 < 16) { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlpa_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlts, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlts, 4) == 0) { + if(tagEntryInfo.type2 < 5) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlts_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlvi, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlvi, 4) == 0) { + if(tagEntryInfo.type2 < 1) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlvi_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlvc, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlvc, 4) == 0) { + if(tagEntryInfo.type2 < 16) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlvc_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlmc, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlmc, 4) == 0) { + if(tagEntryInfo.type2 < 32) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlmc_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rltp, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rltp, 4) == 0) { + if(tagEntryInfo.type2 < 16) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rltp_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlim, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlim, 4) == 0) { + if(tagEntryInfo.type2 < 5) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlim_list[tagEntryInfo.type2]); } else { - mxmlElementSetAttrf(entry, "type2", "%s",tag_types_list[tagEntryInfo.type2]); + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); } } else { - mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + if(tagEntryInfo.type2 < 16) + { + mxmlElementSetAttrf(entry, "type2", "%s",tag_types_list[tagEntryInfo.type2]); + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } } + for( j = 0; j < short_swap_bytes(tagEntryInfo.coord_count); j++) { if ( tagEntryInfo.data_type == 0x2 ) @@ -341,7 +378,6 @@ void parse_brlan(char* filename, char *filenameout) CreateGlobal_pai1(&pai1_header, pai1_header1, pai1_header2, pai1_header_type); - FILE *xmlFile; xmlFile = fopen(filenameout, "w"); mxml_node_t *xml; @@ -474,7 +510,7 @@ void create_entries_from_xml(mxml_node_t *tree, mxml_node_t *node, brlan_entry * mxml_node_t *subsubnode = NULL; char temp[256]; char temp2[256]; - char temp3[16][24]; + char temp3[32][24]; int i, x; char tag_type[256]; @@ -489,51 +525,61 @@ void create_entries_from_xml(mxml_node_t *tree, mxml_node_t *node, brlan_entry * char rltp_type[5] = {'R', 'L', 'T', 'P'}; char rlim_type[5] = {'R', 'L', 'I', 'M'}; - for(i = 0; i < 16; i++) + for(i = 0; i < 32; i++) memset(temp3[i], 0, 24); for(x = 0; x < 16; x++) + { if(memcmp(tag_type, rlpa_type, 4) == 0) { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_rlpa_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlpa_list[x][i]); } } else if(memcmp(tag_type, rlts_type, 4) == 0) { + if ( x == 5 ) break; for(i = 0; i < strlen(tag_types_rlts_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlts_list[x][i]); } } else if(memcmp(tag_type, rlvi_type, 4) == 0) { + if ( x == 1 ) break; for(i = 0; i < strlen(tag_types_rlvi_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlvi_list[x][i]); } } else if(memcmp(tag_type, rlvc_type, 4) == 0) { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_rlvc_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlvc_list[x][i]); } } else if(memcmp(tag_type, rlmc_type, 4) == 0) { + if ( x == 32 ) break; for(i = 0; i < strlen(tag_types_rlmc_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlmc_list[x][i]); } } else if(memcmp(tag_type, rltp_type, 4) == 0) { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_rltp_list[x]); i++) { temp3[x][i] = toupper(tag_types_rltp_list[x][i]); } } else if(memcmp(tag_type, rlim_type, 4) == 0) { + if ( x == 5 ) break; for(i = 0; i < strlen(tag_types_rlim_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlim_list[x][i]); } } else { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_list[x]); i++) { temp3[x][i] = toupper(tag_types_list[x][i]); } } + } head->entry_count = 0; subnode = node; for (x = 0, subnode = mxmlFindElement(subnode, node, "entry", NULL, NULL, MXML_DESCEND); subnode != NULL; subnode = mxmlFindElement(subnode, node, "entry", NULL, NULL, MXML_DESCEND), x++) { @@ -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" ); + PrintPane( entry , brlyt_file , tag ); - 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" ); - - 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<short_swap_bytes(data2.len2);q++) printf("%02x", texty[q]); // S T U P I D U T F 1 6 T E X T @@ -663,7 +680,8 @@ void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - mxml_node_t *entries, *colors, *forecolor, *backcolor, *unk2, *tev_k, *flags; + mxml_node_t *entries, *colors, *forecolor, *backcolor, *unk2, *tev_k; + // mxml_node_t * flags; brlyt_numoffs_chunk data; BRLYT_fileoffset = entry.data_location; BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); @@ -719,15 +737,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) int tplOffset = short_swap_bytes(data4.tex_offs); texture = mxmlNewElement(entries, "texture"); mxmlElementSetAttrf(texture, "name", "%s", getTexture(tplOffset)); - char wraps[4][20]; - int l; - for ( l = 0 ; l < 4 ; l++ ) - memset( wraps , 0 , 20 ); - strcpy( wraps[0] , "GX_CLAMP" ); - strcpy( wraps[1] , "GX_REPEAT" ); - strcpy( wraps[2] , "GX_MIRROR" ); - strcpy( wraps[3] , "GX_MAXTEXWRAPMODE" ); - wrap_s = mxmlNewElement(texture, "wrap_s"); mxmlNewTextf(wrap_s, 0, "%s", wraps[data4.wrap_s]); wrap_t = mxmlNewElement(texture, "wrap_t"); @@ -752,93 +761,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) //# 4*flags[20-23], followed by for (n=0;n<bit_extract(flaggs, 20,23);n++) { - char tgen_types[11][20]; - int l; - for ( l = 0 ; l < 11 ; l++ ) - memset( tgen_types[l] , 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" ); - - char tgen_src[21][20]; - for ( l = 0 ; l < 21 ; l++ ) - memset( tgen_src[l] , 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" ); - - char mtxsrc[42][20]; - for ( l = 0 ; l < 42 ; l++ ) - memset( mtxsrc[l] , 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 - brlyt_tex_coordgen data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_coordgen)); ua3 = mxmlNewElement(entries, "CoordGen"); @@ -856,13 +778,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) //# 4 * flags[6] for (n=0;n<bit_extract(flaggs, 6,100);n++) { - char matsrc[2][20]; - int l; - for ( l = 0 ; l < 2 ; l++ ) - memset( matsrc[l] , 0 , 20 ); - strcpy( matsrc[0] , "GX_SRC_REG" ); - strcpy( matsrc[1] , "GX_SRC_VTX" ); - brlyt_tex_chanctrl data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_chanctrl)); ua4 = mxmlNewElement(entries, "ChanControl"); @@ -896,15 +811,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) //# 4 * flags[19] for (n=0;n<bit_extract(flaggs, 19,100);n++) { - char tevcolor[4][20]; - int l; - for ( l = 0 ; l < 4 ; l++ ) - memset( tevcolor[l] , 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" ); - brlyt_tev_swapmodetable data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tev_swapmodetable)); @@ -965,21 +871,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) //# 4 * flags[14-16] for (n=0;n<bit_extract(flaggs, 14,16);n++) { - char scale[10][20]; - int l; - for ( l = 0 ; l < 10 ; l++ ) - memset( scale[l] , 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" ); - brlyt_indtex_order data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_indtex_order)); ua8 = mxmlNewElement(entries, "IndTextureOrder"); @@ -1120,28 +1011,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) //# 4 * flags[8] for (n=0;n<bit_extract(flaggs, 8,8);n++) { - char compare[8][20]; - int l; - for ( l = 0 ; l < 8 ; l++ ) - memset( compare[l] , 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" ); - - char aop[5][20]; - for ( l = 0 ; l < 5 ; l++ ) - memset( aop[l] , 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" ); - brlyt_alpha_compare data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_alpha_compare)); uaa = mxmlNewElement(entries, "AlphaCompare"); @@ -1159,48 +1028,6 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) //# 4 * flags[7] for (n=0;n<bit_extract(flaggs, 7,7);n++) { - char blendmode[5][20]; - int l; - for ( l = 0 ; l < 5 ; l++ ) - memset( blendmode[l] , 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" ); - - char blendfactor[8][20]; - for ( l = 0 ; l < 8 ; l++ ) - memset( blendfactor[l] , 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" ); - - char logicop[16][20]; - for ( l = 0 ; l < 16 ; l++ ) - memset( logicop[l] , 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" ); - brlyt_blend_mode data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_blend_mode)); uab = mxmlNewElement(entries, "BlendMode"); @@ -1280,6 +1107,8 @@ void PrintBRLYTEntries(brlyt_entry *entries, int entrycnt, u8* brlyt_file, mxml_ void parse_brlyt(char *filename, char *filenameout) { + SetupConstants(); + materials = (char*)malloc(12); numberOfMaterials = 0; lengthOfMaterials = 0; @@ -1304,6 +1133,7 @@ void parse_brlyt(char *filename, char *filenameout) brlyt_entry *entries; BRLYT_fileoffset = short_swap_bytes(header.lyt_offset); brlyt_entry_header tempentry; + int i; for(i = 0; BRLYT_fileoffset < file_size; i++) { BRLYT_ReadDataFromMemoryX(&tempentry, brlyt_file, sizeof(brlyt_entry_header)); @@ -1342,7 +1172,186 @@ void parse_brlyt(char *filename, char *filenameout) free(textures); } -void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* blobsize, char temp[4], FILE* fp, u32 *fileOffset) +void WritePane( mxml_node_t * tree , mxml_node_t * node , u8** tagblob , u32 * blobsize , FILE * fp , u32 * fileOffset ) +{ + brlyt_pane_chunk chunk; + char temp[256]; + if(mxmlElementGetAttr(node, "name") != NULL) + strcpy(temp, mxmlElementGetAttr(node, "name")); + else{ + printf("No name attribute found!\nQuitting!\n"); + exit(1); + } + memset(chunk.name, 0, 24); + strcpy(chunk.name, temp); + + mxml_node_t *subnode = mxmlFindElement(node, node, "translate", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode; + valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.XTrans = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.YTrans = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.ZTrans = float_swap_bytes(atof(tempCoord)); + } + } + subnode = mxmlFindElement(node, node, "rotate", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode; + valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.XRotate = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.YRotate = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.ZRotate = float_swap_bytes(atof(tempCoord)); + } + } + subnode = mxmlFindElement(node, node, "scale", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode; + valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.XScale = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.YScale = float_swap_bytes(atof(tempCoord)); + } + } + subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode; + valnode = mxmlFindElement(subnode, subnode, "width", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.width = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "height", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.height = float_swap_bytes(atof(tempCoord)); + } + } + + u8 flag1 = 0; + subnode = mxmlFindElement(node, node, "visible", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + flag1 |= strtol(tempCoord, NULL, 16); + } + subnode = mxmlFindElement(node, node, "WidescreenAffected", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + flag1 |= ( strtol(tempCoord, NULL, 16) << 1 ); + } + subnode = mxmlFindElement(node, node, "flag", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + flag1 |= ( strtol(tempCoord, NULL, 16) << 2 ); + } + chunk.flag1 = flag1; + subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + int i; + char originL , originH; + char temp[256]; + memset( temp , 0 , 256 ); + if(mxmlElementGetAttr(subnode, "x") != NULL) + strcpy(temp, mxmlElementGetAttr(subnode, "x")); + else{ + printf("No x attribute found!\nQuitting!\n"); + exit(1); + } + for ( i = 0 ; i < 3 ; i++ ) { + if ( strncmp( originX[i] , temp , 15 ) == 0 ) { + originL = i; + break; + } + } + memset( temp , 0 , 256 ); + if(mxmlElementGetAttr(subnode, "y") != NULL) + strcpy(temp, mxmlElementGetAttr(subnode, "y")); + else{ + printf("No y attribute found!\nQuitting!\n"); + exit(1); + } + for ( i = 0 ; i < 3 ; i++ ) { + if ( strncmp( originY[i] , temp , 15 ) == 0 ) { + originH = i; + break; + } + } + chunk.origin = ( originH * 3 ) + ( originL ); + } + subnode = mxmlFindElement(node, node, "alpha", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + chunk.alpha = strtol(tempCoord, NULL, 16); + } + subnode = mxmlFindElement(node, node, "padding", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + chunk.pad = strtol(tempCoord, NULL, 16); + } + fwrite(&chunk, sizeof(chunk), 1, fp); + *fileOffset = *fileOffset + sizeof(chunk); +} + +void WriteBRLYTEntry( mxml_node_t * tree , mxml_node_t * node , u8** tagblob , u32 * blobsize , char temp[4] , FILE * fp , u32 * fileOffset ) { u32 startOfChunk = *fileOffset; @@ -1671,6 +1680,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_texref_chunk chunkTexRef; for(setnode = mxmlFindElement(subnode, subnode, "texture", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "texture", NULL, NULL, MXML_DESCEND)) { + int l; mxml_node_t *valnode; char temp[256]; if(mxmlElementGetAttr(setnode, "name") != NULL) @@ -1683,15 +1693,6 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl valnode=mxmlFindElement(setnode, setnode, "wrap_s", NULL, NULL, MXML_DESCEND); - char wraps[4][20]; - int l; - for ( l = 0 ; l < 4 ; l++ ) - memset( wraps , 0 , 20 ); - strcpy( wraps[0] , "GX_CLAMP" ); - strcpy( wraps[1] , "GX_REPEAT" ); - strcpy( wraps[2] , "GX_MIRROR" ); - strcpy( wraps[3] , "GX_MAXTEXWRAPMODE" ); - char tempCoord[256]; get_value(valnode, tempCoord, 256); chunkTexRef.wrap_s = strtoul(tempCoord, NULL, 16); @@ -1756,93 +1757,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_tex_coordgen chunkUa3; for(setnode = mxmlFindElement(subnode, subnode, "CoordGen", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "CoordGen", NULL, NULL, MXML_DESCEND)) { - char tgen_types[4][20]; int l; - for ( l = 0 ; l < 4 ; l++ ) - memset( tgen_types , 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" ); - - char tgen_src[21][20]; - for ( l = 0 ; l < 21 ; l++ ) - memset( tgen_src[l] , 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" ); - - char mtxsrc[42][20]; - for ( l = 0 ; l < 42 ; l++ ) - memset( mtxsrc[l] , 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 - mxml_node_t *valnode; char tempCoord[256]; @@ -1897,13 +1812,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_tex_chanctrl chunkUa4; for(setnode = mxmlFindElement(subnode, subnode, "ChanControl", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "ChanControl", NULL, NULL, MXML_DESCEND)) { - char matsrc[2][20]; int l; - for ( l = 0 ; l < 2 ; l++ ) - memset( matsrc[l] , 0 , 20 ); - strcpy( matsrc[0] , "GX_SRC_REG" ); - strcpy( matsrc[1] , "GX_SRC_VTX" ); - mxml_node_t *valnode; char tempCoord[256]; @@ -1985,15 +1894,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_tev_swapmodetable chunkUa6; for(setnode = mxmlFindElement(subnode, subnode, "TevSwapModeTable", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "TevSwapModeTable", NULL, NULL, MXML_DESCEND)) { - char tevcolor[4][20]; int l; - for ( l = 0 ; l < 4 ; l++ ) - memset( tevcolor[l] , 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" ); - mxml_node_t *valnode; char tempCoord[256]; @@ -2237,21 +2138,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_indtex_order chunkUa8; for(setnode = mxmlFindElement(subnode, subnode, "IndTextureOrder", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "IndTextureOrder", NULL, NULL, MXML_DESCEND)) { - char scale[10][20]; int l; - for ( l = 0 ; l < 10 ; l++ ) - memset( scale[l] , 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" ); - mxml_node_t *valnode; char tempCoord[256]; @@ -2506,28 +2393,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_alpha_compare chunkUaa; for(setnode = mxmlFindElement(subnode, subnode, "AlphaCompare", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "AlphaCompare", NULL, NULL, MXML_DESCEND)) { - char compare[8][20]; int l; - for ( l = 0 ; l < 8 ; l++ ) - memset( compare[l] , 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" ); - - char aop[5][20]; - for ( l = 0 ; l < 5 ; l++ ) - memset( aop[l] , 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" ); - mxml_node_t *valnode; char tempCoord[256]; @@ -2584,48 +2450,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_blend_mode chunkUab; for(setnode = mxmlFindElement(subnode, subnode, "BlendMode", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "BlendMode", NULL, NULL, MXML_DESCEND)) { - char blendmode[5][20]; int l; - for ( l = 0 ; l < 5 ; l++ ) - memset( blendmode[l] , 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" ); - - char blendfactor[8][20]; - for ( l = 0 ; l < 8 ; l++ ) - memset( blendfactor[l] , 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" ); - - char logicop[16][20]; - for ( l = 0 ; l < 16 ; l++ ) - memset( logicop[l] , 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" ); - mxml_node_t *valnode; char tempCoord[256]; @@ -2702,522 +2527,19 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl } if ( memcmp(temp, pan1, sizeof(pan1)) == 0) { - brlyt_pane_chunk chunk; - char temp[256]; - if(mxmlElementGetAttr(node, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(node, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - memset(chunk.name, 0, 24); - strcpy(chunk.name, temp); - - mxml_node_t *subnode = mxmlFindElement(node, node, "translate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZTrans = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "rotate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZRotate = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "scale", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XScale = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YScale = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "width", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.width = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "height", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.height = float_swap_bytes(atof(tempCoord)); - } - } - - u8 flag1 = 0; - subnode = mxmlFindElement(node, node, "visible", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "WidescreenAffected", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 1 ); - } - subnode = mxmlFindElement(node, node, "flag", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 2 ); - } - chunk.flag1 = flag1; - subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - 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 tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); - int i; - for ( i = 0 ; i < 9 ; i++ ) { - if ( strncmp( origins[i] , tempCoord , 15 ) == 0 ) { - chunk.origin = i; - break; - } - } - } - subnode = mxmlFindElement(node, node, "alpha", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.alpha = strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "padding", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.pad = strtol(tempCoord, NULL, 16); - } - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); + WritePane( tree, node, tagblob, blobsize, fp, fileOffset ); } if ( memcmp(temp, bnd1, sizeof(bnd1)) == 0) { - brlyt_pane_chunk chunk; - char temp[256]; - if(mxmlElementGetAttr(node, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(node, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - memset(chunk.name, 0, 24 * sizeof(char)); - strcpy(chunk.name, temp); - - mxml_node_t *subnode = mxmlFindElement(node, node, "translate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZTrans = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "rotate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZRotate = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "scale", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XScale = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YScale = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "width", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.width = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "height", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.height = float_swap_bytes(atof(tempCoord)); - } - } - - u8 flag1 = 0; - subnode = mxmlFindElement(node, node, "visible", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "WidescreenAffected", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 1 ); - } - subnode = mxmlFindElement(node, node, "flag", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 2 ); - } - chunk.flag1 = flag1; - subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - 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 tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); - int i; - for ( i = 0 ; i < 9 ; i++ ) { - if ( strncmp( origins[i] , tempCoord , 15 ) == 0 ) { - chunk.origin = i; - break; - } - } - } - subnode = mxmlFindElement(node, node, "alpha", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.alpha = strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "padding", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.pad = strtol(tempCoord, NULL, 16); - } - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); + WritePane( tree, node, tagblob, blobsize, fp, fileOffset ); } if ( memcmp(temp, wnd1, sizeof(wnd1)) == 0) { - brlyt_pane_chunk chunk; - char temp[256]; - if(mxmlElementGetAttr(node, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(node, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - memset(chunk.name, 0, 24 * sizeof(char)); - strcpy(chunk.name, temp); - - mxml_node_t *subnode = mxmlFindElement(node, node, "translate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZTrans = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "rotate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZRotate = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "scale", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XScale = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YScale = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "width", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.width = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "height", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.height = float_swap_bytes(atof(tempCoord)); - } - } - - u8 flag1 = 0; - subnode = mxmlFindElement(node, node, "visible", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "WidescreenAffected", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 1 ); - } - subnode = mxmlFindElement(node, node, "flag", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 2 ); - } - chunk.flag1 = flag1; - subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - 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 tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); - int i; - for ( i = 0 ; i < 9 ; i++ ) { - if ( strncmp( origins[i] , tempCoord , 15 ) == 0 ) { - chunk.origin = i; - break; - } - } - } - subnode = mxmlFindElement(node, node, "alpha", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.alpha = strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "padding", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.pad = strtol(tempCoord, NULL, 16); - } - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); + WritePane( tree, node, tagblob, blobsize, fp, fileOffset ); int i; brlyt_wnd wndy; + mxml_node_t * subnode; subnode = mxmlFindElement(node, node, "wnd", NULL, NULL, MXML_DESCEND); if (subnode != NULL) { @@ -3366,176 +2688,10 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl } if ( memcmp(temp, txt1, sizeof(txt1)) == 0) { - brlyt_pane_chunk chunk; - brlyt_text_chunk chunk2; - char temp[256]; - if(mxmlElementGetAttr(node, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(node, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - memset(chunk.name, 0, 24 * sizeof(char)); - strcpy(chunk.name, temp); - chunk2.mat_num = short_swap_bytes(findMatOffset(temp)); - - mxml_node_t *subnode = mxmlFindElement(node, node, "translate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZTrans = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "rotate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZRotate = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "scale", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XScale = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YScale = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "width", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.width = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "height", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.height = float_swap_bytes(atof(tempCoord)); - } - } - - u8 flag1 = 0; - subnode = mxmlFindElement(node, node, "visible", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "WidescreenAffected", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 1 ); - } - subnode = mxmlFindElement(node, node, "flag", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 2 ); - } - chunk.flag1 = flag1; - subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - 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 tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); - int i; - for ( i = 0 ; i < 9 ; i++ ) { - if ( strncmp( origins[i] , tempCoord , 15 ) == 0 ) { - chunk.origin = i; - break; - } - } - } - subnode = mxmlFindElement(node, node, "alpha", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.alpha = strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "padding", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.pad = strtol(tempCoord, NULL, 16); - } + WritePane( tree, node, tagblob, blobsize, fp, fileOffset ); + brlyt_text_chunk chunk2; + mxml_node_t * subnode; subnode = mxmlFindElement(node, node, "font", NULL, NULL, MXML_DESCEND); if (subnode != NULL) { @@ -3581,30 +2737,36 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl valnode = mxmlFindElement(subnode, subnode, "alignment", NULL, NULL, MXML_DESCEND); if (valnode != NULL) { - char alignments[9][15]; - int o; - 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" ); - - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk2.alignment = strtol(tempCoord, NULL, 16); int i; - for ( i = 0 ; i < 9 ; i++ ) { - if ( strncmp( alignments[i] , tempCoord , 15 ) == 0 ) { - chunk2.alignment = i; + char originL , originH; + char temp[256]; + memset( temp , 0 , 256 ); + if(mxmlElementGetAttr(valnode, "x") != NULL) + strcpy(temp, mxmlElementGetAttr(valnode, "x")); + else{ + printf("No x attribute found!\nQuitting!\n"); + exit(1); + } + for ( i = 0 ; i < 3 ; i++ ) { + if ( strncmp( originX[i] , temp , 15 ) == 0 ) { + originL = i; break; } } + memset( temp , 0 , 256 ); + if(mxmlElementGetAttr(valnode, "y") != NULL) + strcpy(temp, mxmlElementGetAttr(valnode, "y")); + else{ + printf("No y attribute found!\nQuitting!\n"); + exit(1); + } + for ( i = 0 ; i < 3 ; i++ ) { + if ( strncmp( originY[i] , temp , 15 ) == 0 ) { + originH = i; + break; + } + } + chunk2.alignment = ( originH * 3 ) + ( originL ); } } @@ -3653,8 +2815,6 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl texty[w] = (u8)strtoul((char*)temp, NULL, 16); } } - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); chunk2.name_offs=be32(0x74); chunk2.pad[0]= 0;chunk2.pad[1]=0;chunk2.pad[2]=0; @@ -3671,175 +2831,10 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl } if ( memcmp(temp, pic1, sizeof(pic1)) == 0) { - brlyt_pane_chunk chunk; - char temp[256]; - if(mxmlElementGetAttr(node, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(node, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - memset(chunk.name, 0, 24 * sizeof(char)); - strcpy(chunk.name, temp); - - mxml_node_t *subnode = mxmlFindElement(node, node, "translate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YTrans = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZTrans = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "rotate", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YRotate = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "z", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.ZRotate = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "scale", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "x", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.XScale = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "y", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.YScale = float_swap_bytes(atof(tempCoord)); - } - } - subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "width", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.width = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "height", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.height = float_swap_bytes(atof(tempCoord)); - } - } - - u8 flag1 = 0; - subnode = mxmlFindElement(node, node, "visible", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "WidescreenAffected", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 1 ); - } - subnode = mxmlFindElement(node, node, "flag", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - flag1 |= ( strtol(tempCoord, NULL, 16) << 2 ); - } - chunk.flag1 = flag1; - subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - 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 tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); - int i; - for ( i = 0 ; i < 9 ; i++ ) { - if ( strncmp( origins[i] , tempCoord , 15 ) == 0 ) { - chunk.origin = i; - break; - } - } - } - subnode = mxmlFindElement(node, node, "alpha", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.alpha = strtol(tempCoord, NULL, 16); - } - subnode = mxmlFindElement(node, node, "padding", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.pad = strtol(tempCoord, NULL, 16); - } + WritePane( tree, node, tagblob, blobsize, fp, fileOffset ); brlyt_pic_chunk chunk2; + mxml_node_t * subnode; subnode = mxmlFindElement(node, node, "material", NULL, NULL, MXML_DESCEND); if (subnode != NULL) { @@ -3865,31 +2860,32 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl if ( subvalnode != NULL ) { char tempCoord[256]; - get_value(valnode, tempCoord, 256); + get_value(subvalnode, tempCoord, 256); red = strtoul(tempCoord, NULL, 16); } subvalnode = mxmlFindElement( valnode,valnode,"green", NULL, NULL, MXML_DESCEND); if ( subvalnode != NULL ) { char tempCoord[256]; - get_value(valnode, tempCoord, 256); + get_value(subvalnode, tempCoord, 256); green = strtoul(tempCoord, NULL, 16); } subvalnode = mxmlFindElement( valnode, valnode, "blue",NULL, NULL, MXML_DESCEND); if ( subvalnode != NULL ) { char tempCoord[256]; - get_value(valnode, tempCoord, 256); + get_value(subvalnode, tempCoord, 256); blue = strtoul(tempCoord, NULL, 16); } subvalnode = mxmlFindElement( valnode, valnode, "alpha",NULL,NULL, MXML_DESCEND); if ( subvalnode != NULL ) { char tempCoord[256]; - get_value(valnode, tempCoord, 256); + get_value(subvalnode, tempCoord, 256); alpha = strtoul(tempCoord, NULL, 16); } chunk2.vtx_colors[i] = ( red << 24 ) | ( green << 16 ) | ( blue << 8 ) | alpha; + chunk2.vtx_colors[i] = int_swap_bytes( chunk2.vtx_colors[i] ); i++; } } @@ -3918,8 +2914,6 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl sets++; } } - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); chunk2.num_texcoords = (sets - 1); chunk2.padding = 0; fwrite(&chunk2, sizeof(chunk2), 1, fp); @@ -4008,6 +3002,8 @@ void WriteBRLYTHeader(brlyt_header rlythead, FILE* fp) void write_brlyt(char *infile, char *outfile) { + SetupConstants(); + u32 fileOffset = 0; FILE* fpx = fopen(infile, "r"); if(fpx == NULL) { @@ -7,7 +7,7 @@ #define BENZIN_VERSION_MAJOR 1 #define BENZIN_VERSION_MINOR 9 -#define BENZIN_VERSION_BUILD 2 +#define BENZIN_VERSION_BUILD 3 #define BENZIN_VERSION_OTHER "BETA" #define INFORMATION_TEXT \ |
