diff options
| -rw-r--r-- | brlan.c | 100 | ||||
| -rw-r--r-- | brlyt.c | 1141 |
2 files changed, 516 insertions, 725 deletions
@@ -85,11 +85,13 @@ static int FourCCInList(fourcc cc) return 0; } -void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset) +void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset, mxml_node_t *pane) { BRLAN_fileoffset = offset; BRLAN_ReadDataFromMemory(&tagHeader, data, sizeof(tag_header)); + mxml_node_t *tag; + tag = mxmlNewElement(pane, "tag"); mxmlElementSetAttrf(tag, "type", "%c%c%c%c", tagHeader.magic[0], tagHeader.magic[1], tagHeader.magic[2], tagHeader.magic[3]); printf("\t\t<tag type=\"%c%c%c%c\">\n", tagHeader.magic[0], tagHeader.magic[1], tagHeader.magic[2], tagHeader.magic[3]); tag_entryinfo tagEntryInfo; @@ -98,6 +100,7 @@ void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset) u32 i, j; for ( i = 0; i < tagHeader.entry_count; i++) { + mxml_node_t *entry; BRLAN_fileoffset = offset + be32(tagentrylocations[i]); BRLAN_ReadDataFromMemory(&tagEntryInfo, data, sizeof(tag_entryinfo)); if(short_swap_bytes(tagEntryInfo.type) < 16) @@ -105,38 +108,58 @@ void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset) char type_rlmc[4] = {'R', 'L', 'M', 'C'}; if(memcmp(tagHeader.magic, type_rlmc, 4) == 0) { + entry = mxmlNewElement(tag, "entry"); mxmlElementSetAttrf(entry, "type", "%s", tag_types_rlmc_list[short_swap_bytes(tagEntryInfo.type)]); printf("\t\t\t<entry type=\"%s\">\n", tag_types_rlmc_list[short_swap_bytes(tagEntryInfo.type)]); } else { + entry = mxmlNewElement(tag, "entry"); mxmlElementSetAttrf(entry, "type", "%s", tag_types_list[short_swap_bytes(tagEntryInfo.type)]); printf("\t\t\t<entry type=\"%s\">\n", tag_types_list[short_swap_bytes(tagEntryInfo.type)]); } - } else + } else { + entry = mxmlNewElement(tag, "entry"); mxmlElementSetAttrf(entry, "type", "%u", short_swap_bytes(tagEntryInfo.type)); printf("\t\t\t<entry type=\"%u\">\n", short_swap_bytes(tagEntryInfo.type)); + } for( j = 0; j < short_swap_bytes(tagEntryInfo.coord_count); j++) { if ( tagEntryInfo.unk1 == 0x2 ) { + mxml_node_t *triplet; + mxml_node_t *frame; + mxml_node_t *value; + mxml_node_t *blend; tag_data tagData; BRLAN_ReadDataFromMemory(&tagData, data, sizeof(tag_data)); u32 p1 = be32(tagData.part1); u32 p2 = be32(tagData.part2); u32 p3 = be32(tagData.part3); + triplet = mxmlNewElement(entry, "triplet"); printf("\t\t\t\t<triplet>\n"); + frame = mxmlNewElement(triplet, "frame"); mxmlNewTextf(frame, 0, "%.15f", *(f32*)(&p1)); printf("\t\t\t\t\t<frame>%.15f</frame>\n", *(f32*)(&p1)); + value = mxmlNewElement(triplet, "value"); mxmlNewTextf(value, 0, "%.15f", *(f32*)(&p2)); printf("\t\t\t\t\t<value>%.15f</value>\n", *(f32*)(&p2)); + blend = mxmlNewElement(triplet, "blend"); mxmlNewTextf(blend, 0, "%.15f", *(f32*)(&p3)); printf("\t\t\t\t\t<blend>%.15f</blend>\n", *(f32*)(&p3)); printf("\t\t\t\t</triplet>\n"); } else { tag_data2 tagData2; BRLAN_ReadDataFromMemory(&tagData2, data, sizeof(tag_data2)); + mxml_node_t *pair; + mxml_node_t *data1; + mxml_node_t *data2; + mxml_node_t *padding; u32 p1 = be32(tagData2.part1); u16 p2 = short_swap_bytes(tagData2.part2); u16 p3 = short_swap_bytes(tagData2.padding); + pair = mxmlNewElement(entry, "pair"); printf("\t\t\t\t<pair>\n"); + data1 = mxmlNewElement(pair, "data1"); mxmlNewTextf(data1, 0, "%.15f", *(f32*)(&p1)); printf("\t\t\t\t\t<data1>%.15f</data1>\n", *(f32*)(&p1)); + data2 = mxmlNewElement(pair, "data2"); mxmlNewTextf(data2, 0, "%.15f", *(f32*)(&p2)); printf("\t\t\t\t\t<data2>%04x</data2>\n", p2); + padding = mxmlNewElement(pair, "padding"); mxmlNewTextf(padding, 0, "%04x", p3); printf("\t\t\t\t\t<padding>%04x</padding>\n", p3); printf("\t\t\t\t</pair>\n"); } @@ -223,6 +246,68 @@ void parse_brlan(char* filename) CreateGlobal_pai1(&pai1_header, pai1_header1, pai1_header2, pai1_header_type); + const char *whitespace_cb(mxml_node_t *node, int where) + { + const char *name; + name = node->value.element.name; + + if (!strcmp(name, "xmlan")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return("\n"); + } + if (!strcmp(name, "timg")) + { + if (where == MXML_WS_BEFORE_OPEN) + return("\n"); + } + else if (!strcmp(name, "pane")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return ("\n\t"); + } + else if (!strcmp(name, "tag")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return ("\n\t\t"); + } + else if (!strcmp(name, "entry")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return ("\n\t\t\t"); + } + else if (!strcmp(name, "triplet") || + !strcmp(name, "pair")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return ("\n\t\t\t\t"); + } + else if (!strcmp(name, "frame") || + !strcmp(name, "value") || + !strcmp(name, "blend") || + !strcmp(name, "data1") || + !strcmp(name, "data2") || + !strcmp(name, "padding")) + { + if (where == MXML_WS_BEFORE_OPEN) + return ("\n\t\t\t\t\t"); + } + + /* + * Return NULL for no added whitespace... + */ + return (NULL); + } + + FILE *xmlFile; + xmlFile = fopen("testy.xmlan", "w"); + mxml_node_t *xml; + mxml_node_t *xmlan; + xml = mxmlNewXML("1.0"); + xmlan = mxmlNewElement(xml, "xmlan"); + mxmlElementSetAttrf(xmlan, "framesize", "%lu", (long unsigned int)short_swap_bytes(pai1_header.framesize)); + mxmlElementSetAttrf(xmlan, "flags", "%02x", pai1_header.flags); + printf("<?xml version=\"1.0\"?>\n" \ "<xmlan framesize=\"%lu\" flags=\"%02x\">\n", (long unsigned int)short_swap_bytes(pai1_header.framesize), pai1_header.flags); @@ -233,6 +318,7 @@ void parse_brlan(char* filename) int tableoff = BRLAN_fileoffset; int currtableoff = BRLAN_fileoffset; + mxml_node_t *timg; for( i = 0; i < timgs; i++) { u32 curr_timg_off = 0; BRLAN_ReadDataFromMemory(&curr_timg_off, data, 4); @@ -240,7 +326,11 @@ void parse_brlan(char* filename) memset(timgname, 0, 256); int z = tableoff + be32(curr_timg_off); for( j = 0; data[z] != 0; timgname[j++] = data[z], z++); + { printf("\t<timg name=\"%s\" />\n", timgname); + timg = mxmlNewElement(xmlan, "timg"); + mxmlElementSetAttrf(timg, "name", "%s", timgname); + } currtableoff += 4; } @@ -258,17 +348,21 @@ void parse_brlan(char* filename) u32 brlanEntryOffset = BRLAN_fileoffset; BRLAN_ReadDataFromMemory(&brlanEntry, data, sizeof(brlan_entry)); + mxml_node_t *pane; + pane = mxmlNewElement(xmlan, "pane"); mxmlElementSetAttrf(pane, "name", "%s", brlanEntry.name); mxmlElementSetAttrf(pane, "type", "%u", brlanEntry.is_material); printf("\t<pane name=\"%s\" type=\"%u\">\n", brlanEntry.name, brlanEntry.is_material); u32 entrylocations[brlanEntry.num_tags]; BRLAN_ReadDataFromMemory(entrylocations, data, brlanEntry.num_tags * sizeof(u32)); for ( j = 0; j < brlanEntry.num_tags; j++) { - BRLAN_CreateXMLTag(tagHeader, data, brlanEntryOffset + be32(entrylocations[j])); + BRLAN_CreateXMLTag(tagHeader, data, brlanEntryOffset + be32(entrylocations[j]), pane); } printf("\t</pane>\n"); } printf("</xmlan>\n"); + mxmlSaveFile(xml, xmlFile, whitespace_cb); + fclose(xmlFile); fclose(fp); } @@ -90,7 +90,7 @@ float float_swap_bytes(float float1) { unsigned char *float1c; float1c = (unsigned char*)&float1; - unsigned char charTemp = 0x00; + unsigned char charTemp = 0x00; charTemp = float1c[0]; float1c[0] = float1c[3]; float1c[3] = charTemp; charTemp = 0x00; charTemp = float1c[1]; float1c[1] = float1c[2]; float1c[2] = charTemp; @@ -143,16 +143,16 @@ char* getMaterial(u16 offset) char* getTexture(u16 offset) { - if (offset == 0) return textures; - char *tex = textures + strlen(textures) + 1; + if (offset == 0) return textures; + char *tex = textures + strlen(textures) + 1; - if (offset > 1) - { - int n = 1; - for (n; n<offset;n++) - tex = tex + strlen(tex) + 1; - } - return tex; + if (offset > 1) + { + int n = 1; + for (n; n<offset;n++) + tex = tex + strlen(tex) + 1; + } + return tex; } u16 findMatOffset(char *mats) @@ -171,16 +171,16 @@ u16 findMatOffset(char *mats) u16 findTexOffset(char *tex) { - int isEqual = 1; - char* texs = textures; - int i; - for (i = 0; isEqual != 0; ) - { - isEqual = strcmp(tex, texs); - if (isEqual != 0) i++; - texs = texs + strlen(texs) + 1; - } - return i; + int isEqual = 1; + char* texs = textures; + int i; + for (i = 0; isEqual != 0; ) + { + isEqual = strcmp(tex, texs); + if (isEqual != 0) i++; + texs = texs + strlen(texs) + 1; + } + return i; } int BRLYT_ReadEntries(u8* brlyt_file, size_t file_size, brlyt_header header, brlyt_entry* entries) @@ -199,550 +199,356 @@ void BRLYT_CheckHeaderSanity(brlyt_header header, size_t filesize) } } -void PrintBRLYTEntry_lyt1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_lyt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { + mxml_node_t *a; + mxml_node_t *size; + mxml_node_t *width; + mxml_node_t *height; brlyt_lytheader_chunk data; BRLYT_fileoffset = entry.data_location; BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_lytheader_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" a: %08x\n", data.a); - printf(" width: %f\n", float_swap_bytes(data.width)); - printf(" height: %f\n", float_swap_bytes(data.height)); -#else - printf("type=\"%c%c%c%c\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" <a>%08x</a>\n", data.a); - printf(" <size>\n"); - printf(" <width>%f</width>\n", float_swap_bytes(data.width)); - printf(" <height>%f</height>\n", float_swap_bytes(data.height)); - printf(" </size>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + a = mxmlNewElement(tag, "a"); mxmlNewTextf(a, 0, "%08x", data.a); + 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_grp1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_grp1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { + mxml_node_t *subs; + mxml_node_t *sub; brlyt_group_chunk data; BRLYT_fileoffset = entry.data_location; BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_group_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" Name: %s\n", data.name); - printf(" Number of subs: %08x\n", be16(data.numsubs)); - printf(" unk: %08x\n", be16(data.unk)); -#else - printf("type=\"%c%c%c%c\" name=\"%s\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], data.name); - printf(" <subs>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + subs = mxmlNewElement(tag, "subs"); int offset; offset = 20; int n = 0; for (n;n<short_swap_bytes(data.numsubs);n++) { - char sub[16]; + char subb[16]; BRLYT_ReadDataFromMemory(sub, brlyt_file, sizeof(sub)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" sub: %s\n", sub); -#else - printf(" <sub>%s</sub>\n", sub); -#endif //OLD_BRLYT_OUTSTYLE + sub = mxmlNewElement(subs, "sub"); mxmlNewTextf(sub, 0, "%s", subb); offset += 16; } -#ifndef OLD_BRLYT_OUTSTYLE - printf(" </subs>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE } -void PrintBRLYTEntry_txl1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_txl1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { + mxml_node_t *entries; + mxml_node_t *naame; brlyt_numoffs_chunk data; BRLYT_fileoffset = entry.data_location; BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" num: %08x\n", be16(data.num)); - printf(" offs: %08x\n", be16(data.offs)); -#else - printf("type=\"%c%c%c%c\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" <entries>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + entries = mxmlNewElement(tag, "entries"); int pos = 4; pos += data.offs; int bpos = pos; int n = 0; for (n;n<short_swap_bytes(data.num);n++) { - brlyt_offsunk_chunk data2; - BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_offsunk_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" offset: %08x\n", be32(data2.offset)); - printf(" unk: %08x\n", be32(data2.unk)); -#else -#endif //OLD_BRLYT_OUTSTYLE - int tempLocation = BRLYT_fileoffset; - BRLYT_fileoffset = entry.data_location + bpos + be32(data2.offset); + brlyt_offsunk_chunk data2; + BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_offsunk_chunk)); + int tempLocation = BRLYT_fileoffset; + BRLYT_fileoffset = entry.data_location + bpos + be32(data2.offset); int toRead = (be32(entry.length) + entry.data_location - 8) - BRLYT_fileoffset; char nameRead[toRead]; - BRLYT_ReadDataFromMemory(nameRead, brlyt_file, sizeof(nameRead)); + BRLYT_ReadDataFromMemory(nameRead, brlyt_file, sizeof(nameRead)); char tpl = 0; char *ending = memchr(nameRead, tpl, toRead); int end = ending - nameRead; char name[end+1]; memcpy(name, nameRead, sizeof(name)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" name: %s\n", name); -#else - printf(" <name>%s</name>\n", name); -#endif //OLD_BRLYT_OUTSTYLE - BRLYT_fileoffset = tempLocation; + naame = mxmlNewElement(entries, "name"); mxmlNewTextf(naame, 0, "%s", name); + BRLYT_fileoffset = tempLocation; int oldsize = sizeof(name); - dbgprintf("size of textures before: %08x\n", sizeof(textures)); int newSize = lengthOfTextures+sizeof(name); textures = realloc(textures, newSize); numberOfTextures += 1; memcpy(textures+lengthOfTextures, name, sizeof(name)); - dbgprintf("tex: %s\tnamsize: %08x\ttexsize: %08x\tnewsize: %08x\n", textures+lengthOfMaterials, sizeof(name), lengthOfTextures, newSize); lengthOfTextures = newSize; } -#ifndef OLD_BRLYT_OUTSTYLE - printf(" </entries>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE } -void PrintBRLYTEntry_fnl1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_fnl1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - brlyt_numoffs_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" num: %08x\n", be16(data.num)); - printf(" offs: %08x\n", be16(data.offs)); -#else - printf("type=\"%c%c%c%c\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" <entries>\n"); -#endif //OLD_BRLYT_OUTSTYLE - int pos = 4; - pos += data.offs; - int bpos = pos; - int n = 0; + mxml_node_t *entries; + mxml_node_t *naame; + brlyt_numoffs_chunk data; + BRLYT_fileoffset = entry.data_location; + BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + entries = mxmlNewElement(tag, "entries"); + int pos = 4; + pos += data.offs; + int bpos = pos; + int n = 0; for (n;n<short_swap_bytes(data.num);n++) - { - brlyt_offsunk_chunk data2; - BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_offsunk_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" offset: %08x\n", be32(data2.offset)); - printf(" unk: %08x\n", be32(data2.unk)); -#else -#endif //OLD_BRLYT_OUTSTYLE - int tempLocation = BRLYT_fileoffset; - BRLYT_fileoffset = entry.data_location + bpos + be32(data2.offset); - int toRead = (be32(entry.length) + entry.data_location - 8) - BRLYT_fileoffset; - char nameRead[toRead]; - BRLYT_ReadDataFromMemory(nameRead, brlyt_file, sizeof(nameRead)); + { + brlyt_offsunk_chunk data2; + BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_offsunk_chunk)); + int tempLocation = BRLYT_fileoffset; + BRLYT_fileoffset = entry.data_location + bpos + be32(data2.offset); + int toRead = (be32(entry.length) + entry.data_location - 8) - BRLYT_fileoffset; + char nameRead[toRead]; + BRLYT_ReadDataFromMemory(nameRead, brlyt_file, sizeof(nameRead)); - char tpl = 0; - char *ending = memchr(nameRead, tpl, toRead); - int end = ending - nameRead; - char name[end+1]; - memcpy(name, nameRead, sizeof(name)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" name: %s\n", name); -#else - printf(" <name>%s</name>\n", name); -#endif //OLD_BRLYT_OUTSTYLE - BRLYT_fileoffset = tempLocation; - } -#ifndef OLD_BRLYT_OUTSTYLE - printf(" </entries>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE + char tpl = 0; + char *ending = memchr(nameRead, tpl, toRead); + int end = ending - nameRead; + char name[end+1]; + memcpy(name, nameRead, sizeof(name)); + naame = mxmlNewElement(entries, "name"); mxmlNewTextf(naame, 0, "%s", name); + BRLYT_fileoffset = tempLocation; + } } -void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { + mxml_node_t *flags1, *flags2, *alpha1, *alpha2; + mxml_node_t *coords, *x, *y, *z; + mxml_node_t *flip, *rotate, *zoom; + mxml_node_t *size, *width, *height; brlyt_pane_chunk data; BRLYT_fileoffset = entry.data_location; BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" flag1: %08x\n", data.flag1); - printf(" flag2: %08x\n", data.flag2); - printf(" alpha: %08x\n", data.alpha); - printf(" alpha2: %08x\n", data.alpha2); - printf(" name: %s\n", data.name); - printf(" x: %.16f\n", float_swap_bytes(data.x)); - printf(" y: %.16f\n", float_swap_bytes(data.y)); - printf(" z: %.16f\n", float_swap_bytes(data.z)); - printf(" flip_x: %f\n", float_swap_bytes(data.flip_x)); - printf(" flip_y: %f\n", float_swap_bytes(data.flip_y)); - printf(" angle: %f\n", float_swap_bytes(data.angle)); - printf(" xmag: %f\n", float_swap_bytes(data.xmag)); - printf(" ymag: %f\n", float_swap_bytes(data.ymag)); - printf(" width: %f\n", float_swap_bytes(data.width)); - printf(" height: %f\n", float_swap_bytes(data.height)); -#else - printf("type=\"%c%c%c%c\" name=\"%s\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], data.name); - printf(" <flags>%02x-%02x</flags>\n", data.flag1, data.flag2); - printf(" <alpha>%02x-%02x</alpha>\n", data.alpha, data.alpha2); - printf(" <coords>\n"); - printf(" <x>%.16f</x>\n", float_swap_bytes(data.x)); - printf(" <y>%.16f</y>\n", float_swap_bytes(data.y)); - printf(" <z>%.16f</z>\n", float_swap_bytes(data.z)); - printf(" </coords>\n"); - printf(" <flip>\n"); - printf(" <x>%f</x>\n", float_swap_bytes(data.flip_x)); - printf(" <y>%f</y>\n", float_swap_bytes(data.flip_y)); - printf(" </flip>\n"); - printf(" <rotate>%f</rotate>\n", float_swap_bytes(data.angle)); - printf(" <zoom>\n"); - printf(" <x>%.10f</x>\n", float_swap_bytes(data.xmag)); - printf(" <y>%.10f</y>\n", float_swap_bytes(data.ymag)); - printf(" </zoom>\n"); - printf(" <size>\n"); - printf(" <width>%f</width>\n", float_swap_bytes(data.width)); - printf(" <height>%f</height>\n", float_swap_bytes(data.height)); - printf(" </size>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + flags1 = mxmlNewElement(tag, "flags"); mxmlNewTextf(flags1, 0, "%02x-%02x", data.flag1, data.flag2); + alpha1 = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha1, 0, "%02x-%02x", data.alpha, data.alpha2); + coords = mxmlNewElement(tag, "coords"); + x = mxmlNewElement(coords, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.x)); + y = mxmlNewElement(coords, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.y)); + z = mxmlNewElement(coords, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.z)); + flip = mxmlNewElement(tag, "flip"); + x = mxmlNewElement(flip, "x"); mxmlNewTextf(x, 0, "%f", float_swap_bytes(data.flip_x)); + y = mxmlNewElement(flip, "y"); mxmlNewTextf(y, 0, "%f", float_swap_bytes(data.flip_y)); + rotate = mxmlNewElement(tag, "rotate"); mxmlNewTextf(rotate, 0, "%f", float_swap_bytes(data.angle)); + zoom = mxmlNewElement(tag, "zoom"); + x = mxmlNewElement(zoom, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.xmag)); + y = mxmlNewElement(zoom, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.ymag)); + 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) +void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" flag1: %08x\n", data.flag1); - printf(" flag2: %08x\n", data.flag2); - printf(" alpha: %08x\n", data.alpha); - printf(" alpha2: %08x\n", data.alpha2); - printf(" name: %s\n", data.name); - printf(" x: %f\n", float_swap_bytes(data.x)); - printf(" y: %f\n", float_swap_bytes(data.y)); - printf(" z: %f\n", float_swap_bytes(data.z)); - printf(" flip_x: %f\n", float_swap_bytes(data.flip_x)); - printf(" flip_y: %f\n", float_swap_bytes(data.flip_y)); - printf(" angle: %f\n", float_swap_bytes(data.angle)); - printf(" xmag: %f\n", float_swap_bytes(data.xmag)); - printf(" ymag: %f\n", float_swap_bytes(data.ymag)); - printf(" width: %f\n", float_swap_bytes(data.width)); - printf(" height: %f\n", float_swap_bytes(data.height)); -#else - printf("type=\"%c%c%c%c\" name=\"%s\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], data.name); - printf(" <flags>%02x-%02x</flags>\n", data.flag1, data.flag2); - printf(" <alpha>%02x-%02x</alpha>\n", data.alpha, data.alpha2); - printf(" <coords>\n"); - printf(" <x>%.12f</x>\n", float_swap_bytes(data.x)); - printf(" <y>%.12f</y>\n", float_swap_bytes(data.y)); - printf(" <z>%.12f</z>\n", float_swap_bytes(data.z)); - printf(" </coords>\n"); - printf(" <flip>\n"); - printf(" <x>%f</x>\n", float_swap_bytes(data.flip_x)); - printf(" <y>%f</y>\n", float_swap_bytes(data.flip_y)); - printf(" </flip>\n"); - printf(" <rotate>%f</rotate>\n", float_swap_bytes(data.angle)); - printf(" <zoom>\n"); - printf(" <x>%.10f</x>\n", float_swap_bytes(data.xmag)); - printf(" <y>%.10f</y>\n", float_swap_bytes(data.ymag)); - printf(" </zoom>\n"); - printf(" <size>\n"); - printf(" <width>%f</width>\n", float_swap_bytes(data.width)); - printf(" <height>%f</height>\n", float_swap_bytes(data.height)); - printf(" </size>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxml_node_t *flags1, *flags2, *alpha1, *alpha2; + mxml_node_t *coords, *x, *y, *z; + mxml_node_t *flip, *rotate, *zoom; + 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", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + flags1 = mxmlNewElement(tag, "flags"); mxmlNewTextf(flags1, 0, "%02x-%02x", data.flag1, data.flag2); + alpha1 = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha1, 0, "%02x-%02x", data.alpha, data.alpha2); + coords = mxmlNewElement(tag, "coords"); + x = mxmlNewElement(coords, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.x)); + y = mxmlNewElement(coords, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.y)); + z = mxmlNewElement(coords, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.z)); + flip = mxmlNewElement(tag, "flip"); + x = mxmlNewElement(flip, "x"); mxmlNewTextf(x, 0, "%f", float_swap_bytes(data.flip_x)); + y = mxmlNewElement(flip, "y"); mxmlNewTextf(y, 0, "%f", float_swap_bytes(data.flip_y)); + rotate = mxmlNewElement(tag, "rotate"); mxmlNewTextf(rotate, 0, "%f", float_swap_bytes(data.angle)); + zoom = mxmlNewElement(tag, "zoom"); + x = mxmlNewElement(zoom, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.xmag)); + y = mxmlNewElement(zoom, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.ymag)); + 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 *wndd, *unkk, *count, *offset1, *offset2; int i; brlyt_wnd wndy; BRLYT_ReadDataFromMemory(&wndy, brlyt_file, sizeof(brlyt_wnd)); - printf(" <wnd>\n"); - for(i=0;i<4;i++) printf(" <unk1>%f</unk1>\n", float_swap_bytes(wndy.unk1[i])); - printf(" <count>%02x</count>\n", wndy.count); - printf(" <offset1>%08x</offset1>\n", be32(wndy.offset1)); - printf(" <offset2>%08x</offset2>\n", be32(wndy.offset2)); - printf(" </wnd>\n"); + wndd = mxmlNewElement(tag, "wnd"); + for(i=0;i<4;i++) + { + unkk = mxmlNewElement(wndd, "unk1"); mxmlNewTextf(unkk, 0, "%f", float_swap_bytes(wndy.unk1[i])); + } + count = mxmlNewElement(wndd, "count"); mxmlNewTextf(count, 0, "%02x", wndy.count); + offset1 = mxmlNewElement(wndd, "offset1"); mxmlNewTextf(offset1, 0, "%08x", be32(wndy.offset1)); + offset2 = mxmlNewElement(wndd, "offset2"); mxmlNewTextf(offset2, 0, "%08x", be32(wndy.offset2)); + mxml_node_t *wnddd, *unkkk; brlyt_wnd1 wndy1; BRLYT_ReadDataFromMemory(&wndy1, brlyt_file, sizeof(brlyt_wnd1)); - printf(" <wnd1>\n"); - for(i=0;i<4;i++) printf(" <unk1>%08x</unk1>\n", int_swap_bytes(wndy1.unk1[i])); - printf(" </wnd1>\n"); + wnddd = mxmlNewElement(tag, "wnd1"); + for(i=0;i<4;i++) + { + unkkk = mxmlNewElement(wnddd, "unk1"); mxmlNewTextf(unkkk, 0, "%08x", int_swap_bytes(wndy1.unk1[i])); + } + mxml_node_t *wndddd, *unkkkk, *unkkkk2; brlyt_wnd2 wndy2; BRLYT_ReadDataFromMemory(&wndy2, brlyt_file, sizeof(brlyt_wnd2)); - printf(" <wnd2>\n"); - printf(" <unk1>%04x</unk1>\n", short_swap_bytes(wndy2.unk1)); - printf(" <unk2>%04x</unk2>\n", short_swap_bytes(wndy2.unk2)); - printf(" </wnd2>\n"); + wndddd = mxmlNewElement(tag, "wnd2"); + unkkkk = mxmlNewElement(wndddd, "unk1"); mxmlNewTextf(unkkkk, 0, "%04x", short_swap_bytes(wndy2.unk1)); + unkkkk2 = mxmlNewElement(wndddd, "unk2"); mxmlNewTextf(unkkkk2, 0, "%04x", short_swap_bytes(wndy2.unk2)); + mxml_node_t *wnddddd, *texcoord; if(wndy.offset2 == be32(0x0000009c)) { - brlyt_wnd3 wndy3; - BRLYT_ReadDataFromMemory(&wndy3, brlyt_file, sizeof(brlyt_wnd3)); - printf(" <wnd3>\n"); - for(i=0;i<8;i++) printf(" <texcoord>%f</texcoord>\n", float_swap_bytes(wndy3.texcoords[i])); - printf(" </wnd3>\n"); + brlyt_wnd3 wndy3; + BRLYT_ReadDataFromMemory(&wndy3, brlyt_file, sizeof(brlyt_wnd3)); + wnddddd = mxmlNewElement(tag, "wnd3"); + for(i=0;i<8;i++) + { + texcoord = mxmlNewElement(wnddddd, "texcoord"); mxmlNewTextf(texcoord, 0, "%f", float_swap_bytes(wndy3.texcoords[i])); + } } + mxml_node_t *wndddddd, *offsett; brlyt_wnd4 wndy4; for(i=0;i<wndy.count;i++) { BRLYT_ReadDataFromMemory(&wndy4, brlyt_file, sizeof(brlyt_wnd4)); - printf(" <wnd4>\n"); - printf(" <offset>%08x</offset>\n", be32(wndy4.offset)); - printf(" </wnd4>\n"); + wndddddd = mxmlNewElement(tag, "wnd4"); + offsett = mxmlNewElement(wndddddd, "offset"); mxmlNewTextf(offsett, 0, "%08x", be32(wndy4.offset)); } + mxml_node_t *wndmat, *matrl; brlyt_wnd4_mat wndy4mat; for(i=0;i<wndy.count;i++) { BRLYT_ReadDataFromMemory(&wndy4mat, brlyt_file, sizeof(brlyt_wnd4_mat)); - printf(" <wnd4mat>\n"); - printf(" <material>%08x</material>\n", be32(wndy4mat.unk1)); - printf(" </wnd4mat>\n"); + wndmat = mxmlNewElement(tag, "wnd4mat"); + matrl = mxmlNewElement(wndmat, "material"); mxmlNewTextf(matrl, 0, "%08x", be32(wndy4mat.unk1)); } - - printf(" </tag>\n"); } -void PrintBRLYTEntry_bnd1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_bnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - dbgprintf("entry length: %08x\n", be32(entry.length)); - int w; - for (w=0;w<be32(entry.length);w++) dbgprintf("byte %x: %02x\n", w, brlyt_file[w]); - - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" flag1: %08x\n", data.flag1); - printf(" flag2: %08x\n", data.flag2); - printf(" alpha: %08x\n", data.alpha); - printf(" alpha2: %08x\n", data.alpha2); - printf(" name: %s\n", data.name); - printf(" x: %f\n", float_swap_bytes(data.x)); - printf(" y: %f\n", float_swap_bytes(data.y)); - printf(" z: %f\n", float_swap_bytes(data.z)); - printf(" flip_x: %f\n", float_swap_bytes(data.flip_x)); - printf(" flip_y: %f\n", float_swap_bytes(data.flip_y)); - printf(" angle: %f\n", float_swap_bytes(data.angle)); - printf(" xmag: %f\n", float_swap_bytes(data.xmag)); - printf(" ymag: %f\n", float_swap_bytes(data.ymag)); - printf(" width: %f\n", float_swap_bytes(data.width)); - printf(" height: %f\n", float_swap_bytes(data.height)); -#else - printf("type=\"%c%c%c%c\" name=\"%s\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], data.name); - printf(" <flags>%02x-%02x</flags>\n", data.flag1, data.flag2); - printf(" <alpha>%02x-%02x</alpha>\n", data.alpha, data.alpha2); - printf(" <coords>\n"); - printf(" <x>%.25f</x>\n", float_swap_bytes(data.x)); - printf(" <y>%.25f</y>\n", float_swap_bytes(data.y)); - printf(" <z>%.25f</z>\n", float_swap_bytes(data.z)); - printf(" </coords>\n"); - printf(" <flip>\n"); - printf(" <x>%f</x>\n", float_swap_bytes(data.flip_x)); - printf(" <y>%f</y>\n", float_swap_bytes(data.flip_y)); - printf(" </flip>\n"); - printf(" <rotate>%f</rotate>\n", float_swap_bytes(data.angle)); - printf(" <zoom>\n"); - printf(" <x>%.10f</x>\n", float_swap_bytes(data.xmag)); - printf(" <y>%.10f</y>\n", float_swap_bytes(data.ymag)); - printf(" </zoom>\n"); - printf(" <size>\n"); - printf(" <width>%f</width>\n", float_swap_bytes(data.width)); - printf(" <height>%f</height>\n", float_swap_bytes(data.height)); - printf(" </size>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxml_node_t *flags1, *flags2, *alpha1, *alpha2; + mxml_node_t *coords, *x, *y, *z; + mxml_node_t *flip, *rotate, *zoom; + 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", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + flags1 = mxmlNewElement(tag, "flags"); mxmlNewTextf(flags1, 0, "%02x-%02x", data.flag1, data.flag2); + alpha1 = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha1, 0, "%02x-%02x", data.alpha, data.alpha2); + coords = mxmlNewElement(tag, "coords"); + x = mxmlNewElement(coords, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.x)); + y = mxmlNewElement(coords, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.y)); + z = mxmlNewElement(coords, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.z)); + flip = mxmlNewElement(tag, "flip"); + x = mxmlNewElement(flip, "x"); mxmlNewTextf(x, 0, "%f", float_swap_bytes(data.flip_x)); + y = mxmlNewElement(flip, "y"); mxmlNewTextf(y, 0, "%f", float_swap_bytes(data.flip_y)); + rotate = mxmlNewElement(tag, "rotate"); mxmlNewTextf(rotate, 0, "%f", float_swap_bytes(data.angle)); + zoom = mxmlNewElement(tag, "zoom"); + x = mxmlNewElement(zoom, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.xmag)); + y = mxmlNewElement(zoom, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.ymag)); + 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_pic1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); + mxml_node_t *flags1, *flags2, *alpha1, *alpha2; + mxml_node_t *coords, *x, *y, *z; + mxml_node_t *flip, *rotate, *zoom; + 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)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" flag1: %08x\n", data.flag1); - printf(" flag2: %08x\n", data.flag2); - printf(" alpha: %08x\n", data.alpha); - printf(" alpha2: %08x\n", data.alpha2); - printf(" name: %s\n", data.name); - printf(" x: %f\n", float_swap_bytes(data.x)); - printf(" y: %f\n", float_swap_bytes(data.y)); - printf(" z: %f\n", float_swap_bytes(data.z)); - printf(" flip_x: %f\n", float_swap_bytes(data.flip_x)); - printf(" flip_y: %f\n", float_swap_bytes(data.flip_y)); - printf(" angle: %f\n", float_swap_bytes(data.angle)); - printf(" xmag: %f\n", float_swap_bytes(data.xmag)); - printf(" ymag: %f\n", float_swap_bytes(data.ymag)); - printf(" width: %f\n", float_swap_bytes(data.width)); - printf(" height: %f\n", float_swap_bytes(data.height)); -#else - printf("type=\"%c%c%c%c\" name=\"%s\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], data.name); - printf(" <flags>%02x-%02x</flags>\n", data.flag1, data.flag2); - printf(" <alpha>%02x-%02x</alpha>\n", data.alpha, data.alpha2); - printf(" <coords>\n"); - printf(" <x>%.20f</x>\n", float_swap_bytes(data.x)); - printf(" <y>%.20f</y>\n", float_swap_bytes(data.y)); - printf(" <z>%.20f</z>\n", float_swap_bytes(data.z)); - printf(" </coords>\n"); - printf(" <flip>\n"); - printf(" <x>%f</x>\n", float_swap_bytes(data.flip_x)); - printf(" <y>%f</y>\n", float_swap_bytes(data.flip_y)); - printf(" </flip>\n"); - printf(" <rotate>%f</rotate>\n", float_swap_bytes(data.angle)); - printf(" <zoom>\n"); - printf(" <x>%.10f</x>\n", float_swap_bytes(data.xmag)); - printf(" <y>%.10f</y>\n", float_swap_bytes(data.ymag)); - printf(" </zoom>\n"); - printf(" <size>\n"); - printf(" <width>%f</width>\n", float_swap_bytes(data.width)); - printf(" <height>%f</height>\n", float_swap_bytes(data.height)); - printf(" </size>\n"); -#endif //OLD_BRLYT_OUTSTYLE -#ifdef OLD_BRLYT_OUTSTYLE - printf(" vtx_colors: %u,%u,%u,%u\n", be32(data2.vtx_colors[0]), be32(data2.vtx_colors[1]), be32(data2.vtx_colors[2]), be32(data2.vtx_colors[3])); - printf(" mat_off: %08x\n", short_swap_bytes(data2.mat_off)); - printf(" num_texcoords: %08x\n", data2.num_texcoords); - printf(" padding: %08x\n", data2.padding); -#else - printf(" <tpl name=\"%s\"></tpl>\n", getMaterial(short_swap_bytes(data2.mat_off))); - printf(" <colors>\n"); - printf(" <vtx>0x%08X</vtx>\n", be32(data2.vtx_colors[0])); - printf(" <vtx>0x%08X</vtx>\n", be32(data2.vtx_colors[1])); - printf(" <vtx>0x%08X</vtx>\n", be32(data2.vtx_colors[2])); - printf(" <vtx>0x%08X</vtx>\n", be32(data2.vtx_colors[3])); - printf(" </colors>\n"); - printf(" <coordinates>\n"); -#endif //OLD_BRLYT_OUTSTYLE - int n = 0; + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + flags1 = mxmlNewElement(tag, "flags"); mxmlNewTextf(flags1, 0, "%02x-%02x", data.flag1, data.flag2); + alpha1 = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha1, 0, "%02x-%02x", data.alpha, data.alpha2); + coords = mxmlNewElement(tag, "coords"); + x = mxmlNewElement(coords, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.x)); + y = mxmlNewElement(coords, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.y)); + z = mxmlNewElement(coords, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.z)); + flip = mxmlNewElement(tag, "flip"); + x = mxmlNewElement(flip, "x"); mxmlNewTextf(x, 0, "%f", float_swap_bytes(data.flip_x)); + y = mxmlNewElement(flip, "y"); mxmlNewTextf(y, 0, "%f", float_swap_bytes(data.flip_y)); + rotate = mxmlNewElement(tag, "rotate"); mxmlNewTextf(rotate, 0, "%f", float_swap_bytes(data.angle)); + zoom = mxmlNewElement(tag, "zoom"); + x = mxmlNewElement(zoom, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.xmag)); + y = mxmlNewElement(zoom, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.ymag)); + 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 *tpl, *color, *vtx, *coordinates, *set, *coord; + tpl = mxmlNewElement(tag, "tpl"); mxmlElementSetAttrf(tpl, "name", "%s", getMaterial(short_swap_bytes(data2.mat_off))); + color = mxmlNewElement(tag, "colors"); + int n; for (n=0;n<4;n++) + { + vtx = mxmlNewElement(color, "vtx"); mxmlNewTextf(vtx, 0, "%#08X", be32(data2.vtx_colors[n])); + } + coordinates = mxmlNewElement(tag, "coordinates"); for (n;n<data2.num_texcoords;n++) { float texcoords[8]; BRLYT_ReadDataFromMemory(texcoords, brlyt_file, sizeof(texcoords)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" tex coords: %f,%f,%f,%f,%f,%f,%f,%f\n", float_swap_bytes(texcoords[0]), float_swap_bytes(texcoords[1]), float_swap_bytes(texcoords[2]), float_swap_bytes(texcoords[3]), float_swap_bytes(texcoords[4]), float_swap_bytes(texcoords[5]), float_swap_bytes(texcoords[6]), float_swap_bytes(texcoords[7])); -#else int i; - printf(" <set>\n"); + set = mxmlNewElement(coordinates, "set"); for(i = 0; i < 8; i++) - printf(" <coord>%f</coord>\n", float_swap_bytes(texcoords[i])); - printf(" </set>\n"); -#endif //OLD_BRLYT_OUTSTYLE + { + coord = mxmlNewElement(set, "coord"); mxmlNewTextf(coord, 0, "%f", float_swap_bytes(texcoords[i])); + } } -#ifndef OLD_BRLYT_OUTSTYLE - printf(" </coordinates>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE } -void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" flag1: %08x\n", data.flag1); - printf(" flag2: %08x\n", data.flag2); - printf(" alpha: %08x\n", data.alpha); - printf(" alpha2: %08x\n", data.alpha2); - printf(" name: %s\n", data.name); - printf(" x: %f\n", float_swap_bytes(data.x)); - printf(" y: %f\n", float_swap_bytes(data.y)); - printf(" z: %f\n", float_swap_bytes(data.z)); - printf(" flip_x: %f\n", float_swap_bytes(data.flip_x)); - printf(" flip_y: %f\n", float_swap_bytes(data.flip_y)); - printf(" angle: %f\n", float_swap_bytes(data.angle)); - printf(" xmag: %f\n", float_swap_bytes(data.xmag)); - printf(" ymag: %f\n", float_swap_bytes(data.ymag)); - printf(" width: %f\n", float_swap_bytes(data.width)); - printf(" height: %f\n", float_swap_bytes(data.height)); -#else - printf("type=\"%c%c%c%c\" name=\"%s\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], data.name); - printf(" <flags>%02x-%02x</flags>\n", data.flag1, data.flag2); - printf(" <alpha>%02x-%02x</alpha>\n", data.alpha, data.alpha2); - printf(" <coords>\n"); - printf(" <x>%.16f</x>\n", float_swap_bytes(data.x)); - printf(" <y>%.16f</y>\n", float_swap_bytes(data.y)); - printf(" <z>%.16f</z>\n", float_swap_bytes(data.z)); - printf(" </coords>\n"); - printf(" <flip>\n"); - printf(" <x>%.10f</x>\n", float_swap_bytes(data.flip_x)); - printf(" <y>%.10f</y>\n", float_swap_bytes(data.flip_y)); - printf(" </flip>\n"); - printf(" <rotate>%f</rotate>\n", float_swap_bytes(data.angle)); - printf(" <zoom>\n"); - printf(" <x>%.10f</x>\n", float_swap_bytes(data.xmag)); - printf(" <y>%.10f</y>\n", float_swap_bytes(data.ymag)); - printf(" </zoom>\n"); - printf(" <size>\n"); - printf(" <width>%.10f</width>\n", float_swap_bytes(data.width)); - printf(" <height>%.10f</height>\n", float_swap_bytes(data.height)); - printf(" </size>\n"); -#endif //OLD_BRLYT_OUTSTYLE + mxml_node_t *flags1, *flags2, *alpha1, *alpha2; + mxml_node_t *coords, *x, *y, *z; + mxml_node_t *flip, *rotate, *zoom; + 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", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); + flags1 = mxmlNewElement(tag, "flags"); mxmlNewTextf(flags1, 0, "%02x-%02x", data.flag1, data.flag2); + alpha1 = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha1, 0, "%02x-%02x", data.alpha, data.alpha2); + coords = mxmlNewElement(tag, "coords"); + x = mxmlNewElement(coords, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.x)); + y = mxmlNewElement(coords, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.y)); + z = mxmlNewElement(coords, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.z)); + flip = mxmlNewElement(tag, "flip"); + x = mxmlNewElement(flip, "x"); mxmlNewTextf(x, 0, "%f", float_swap_bytes(data.flip_x)); + y = mxmlNewElement(flip, "y"); mxmlNewTextf(y, 0, "%f", float_swap_bytes(data.flip_y)); + rotate = mxmlNewElement(tag, "rotate"); mxmlNewTextf(rotate, 0, "%f", float_swap_bytes(data.angle)); + zoom = mxmlNewElement(tag, "zoom"); + x = mxmlNewElement(zoom, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.xmag)); + y = mxmlNewElement(zoom, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.ymag)); + 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 *length, *font, *xsize, *ysize, *charsize, *linesize, *unkk, *color; brlyt_text_chunk data2; BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_text_chunk)); unsigned char texty[short_swap_bytes(data2.len2)]; memcpy(texty, &brlyt_file[BRLYT_fileoffset], short_swap_bytes(data2.len2)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" len1: %08x\n", be16(data2.len1)); - printf(" len2: %08x\n", short_swap_bytes(data2.len2)); - printf(" mat_off: %08x\n", be16(data2.mat_off)); - printf(" font_idx: %08x\n", be16(data2.font_idx)); - printf(" unk4: %08x\n", data2.unk4); - printf(" pad[3]: %08x\n", data2.pad[0], data2.pad[1], data2.pad[2]); - printf(" name_offs: %08x\n", be32(data2.name_offs)); - printf(" color1: %08x\n", be32(data2.color1)); - printf(" color2: %08x\n", be32(data2.color2)); - printf(" font_size_x: %f\n", float_swap_bytes(data2.font_size_x)); - printf(" font_size_y: %f\n", float_swap_bytes(data2.font_size_y)); - printf(" char_space: %f\n", float_swap_bytes(data2.char_space)); - printf(" line_space: %f\n", float_swap_bytes(data2.line_space)); - printf(" text: "); - int q; for (q=0;q<short_swap_bytes(data2.len2);q++) - { - printf("%02x", texty[q]); - } - printf("\n"); -#else - printf(" <length>%04x-%04x</length>\n", short_swap_bytes(data2.len1), short_swap_bytes(data2.len2)); - printf(" <font index=\"%d\">\n", short_swap_bytes(data2.font_idx)); - printf(" <xsize>%f</xsize>\n", float_swap_bytes(data2.font_size_x)); - printf(" <ysize>%f</ysize>\n", float_swap_bytes(data2.font_size_y)); - printf(" <charsize>%f</charsize>\n", float_swap_bytes(data2.char_space)); - printf(" <linesize>%f</linesize>\n", float_swap_bytes(data2.line_space)); - printf(" <unk>%02x</unk>\n", data2.unk4); - printf(" </font>\n"); - printf(" <color>%08x-%08x</color>\n", be32(data2.color1), be32(data2.color2)); - printf(" <text>"); - int q; for(q=0;q<short_swap_bytes(data2.len2);q++) printf("%02x", texty[q]); - printf("</text>\n"); - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE + length = mxmlNewElement(tag, "length"); mxmlNewTextf(length, 0, "%04x-%-04x", short_swap_bytes(data2.len2), short_swap_bytes(data2.len2)); + font = mxmlNewElement(tag, "font"); mxmlElementSetAttrf(font, 0, "%d", short_swap_bytes(data2.font_idx)); + xsize = mxmlNewElement(font, "xsize"); mxmlNewTextf(xsize, 0, "%f", float_swap_bytes(data2.font_size_x)); + 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)); + unkk = mxmlNewElement(font, "unk"); mxmlNewTextf(unkk, 0, "%02x", data2.unk4); + color = mxmlNewElement(tag, "color"); mxmlNewTextf(color, 0, "%08x-%08x", be32(data2.color1), 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 } -void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { + mxml_node_t *entries, *colors, *black_color, *white_color, *unk2, *tev_k, *flags; brlyt_numoffs_chunk data; BRLYT_fileoffset = entry.data_location; BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); - printf(" num: %08x\n", be16(data.num)); - printf(" offs: %08x\n", be16(data.offs)); -#else - printf("type=\"%c%c%c%c\" count=\"%d\">\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3], short_swap_bytes(data.num)); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); int n = 0; for (n;n<short_swap_bytes(data.num);n++) { @@ -754,103 +560,75 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file) BRLYT_ReadDataFromMemory(&data3, brlyt_file, sizeof(brlyt_material_chunk)); unsigned int flaggs = be32(data3.flags); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" offset: %08x\n", be32(offset)); - printf(" name: %s\n", data3.name); - printf(" black_color: %#x,%#x,%#x,%#x\n", be16(data3.black_color[0]), be16(data3.black_color[1]), be16(data3.black_color[2]), be16(data3.black_color[3])); - printf(" white_color: %#x,%#x,%#x,%#x\n", be16(data3.white_color[0]), be16(data3.white_color[1]), be16(data3.white_color[2]), be16(data3.white_color[3])); - printf(" unk_color_2: %#x,%#x,%#x,%#x\n", be16(data3.unk_color_2[0]), be16(data3.unk_color_2[1]), be16(data3.unk_color_2[2]), be16(data3.unk_color_2[3])); - printf(" tev_kcolor: %#x,%#x,%#x,%#x\n", be32(data3.tev_kcolor[0]), be32(data3.tev_kcolor[1]), be32(data3.tev_kcolor[2]), be32(data3.tev_kcolor[3])); - printf(" flags: %08x\n", be32(data3.flags)); - printf(" bitmask: %08x\n", bit_extract(flaggs, 28, 31)); -#else - printf(" <entries name=\"%s\">\n", data3.name); - printf(" <colors>\n"); - printf(" <black_color>%d</black_color>\n", short_swap_bytes(data3.black_color[0])); - printf(" <black_color>%d</black_color>\n", short_swap_bytes(data3.black_color[1])); - printf(" <black_color>%d</black_color>\n", short_swap_bytes(data3.black_color[2])); - printf(" <black_color>%d</black_color>\n", short_swap_bytes(data3.black_color[3])); - printf(" <white_color>%d</white_color>\n", short_swap_bytes(data3.white_color[0])); - printf(" <white_color>%d</white_color>\n", short_swap_bytes(data3.white_color[1])); - printf(" <white_color>%d</white_color>\n", short_swap_bytes(data3.white_color[2])); - printf(" <white_color>%d</white_color>\n", short_swap_bytes(data3.white_color[3])); - printf(" <unk2>%d</unk2>\n", short_swap_bytes(data3.unk_color_2[0])); - printf(" <unk2>%d</unk2>\n", short_swap_bytes(data3.unk_color_2[1])); - printf(" <unk2>%d</unk2>\n", short_swap_bytes(data3.unk_color_2[2])); - printf(" <unk2>%d</unk2>\n", short_swap_bytes(data3.unk_color_2[3])); - printf(" <tev_k>%#08x</tev_k>\n", be32(data3.tev_kcolor[0])); - printf(" <tev_k>%#08x</tev_k>\n", be32(data3.tev_kcolor[1])); - printf(" <tev_k>%#08x</tev_k>\n", be32(data3.tev_kcolor[2])); - printf(" <tev_k>%#08x</tev_k>\n", be32(data3.tev_kcolor[3])); - printf(" </colors>\n"); - printf(" <flags>%08x</flags>\n", be32(data3.flags)); -#endif //OLD_BRLYT_OUTSTYLE + entries = mxmlNewElement(tag, "entries"); mxmlElementSetAttrf(entries, "%s", data3.name); + colors = mxmlNewElement(entries, "colors"); + int i; for (i=0;i<4;i++) + { + black_color = mxmlNewElement(colors, "black_color"); + mxmlNewTextf(black_color, 0, "%d", short_swap_bytes(data3.black_color[i])); + } + for (i=0;i<4;i++) + { + white_color = mxmlNewElement(colors, "white_color"); + mxmlNewTextf(white_color, 0, "%d", short_swap_bytes(data3.white_color[i])); + } + for (i=0;i<4;i++) + { + unk2 = mxmlNewElement(colors, "unk2"); + mxmlNewTextf(unk2, 0, "%d", short_swap_bytes(data3.unk_color_2[i])); + } + for (i=0;i<4;i++) + { + tev_k = mxmlNewElement(colors, "tev_k"); + mxmlNewTextf(tev_k, 0, "%#08x", be32(data3.tev_kcolor[i])); + } + flags = mxmlNewElement(tag, "flags"); mxmlNewTextf(flags, 0, "%08x", be32(data3.flags)); int oldsize = 1+strlen(data3.name); - dbgprintf("size of materials before: %08x\n", sizeof(materials)); int newSize = lengthOfMaterials+strlen(data3.name)+1; materials = realloc(materials, newSize); numberOfMaterials += 1; memcpy(materials+lengthOfMaterials, data3.name, 1+strlen(data3.name)); - dbgprintf("mats: %s\tnamsize: %08x\tmatsize: %08x\tnewsize: %08x\n", materials+lengthOfMaterials, strlen(data3.name), lengthOfMaterials, newSize); lengthOfMaterials = newSize; + mxml_node_t *material, *wrap_t, *wrap_s; int n = 0; for (n;n<bit_extract(flaggs, 28,31);n++) { brlyt_texref_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_texref_chunk)); int tplOffset = short_swap_bytes(data4.tex_offs); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" texoffs: %04x\n", be16(data4.tex_offs)); - printf(" wrap_s: %08x\n", data4.wrap_s); - printf(" wrap_t: %08x\n", data4.wrap_t); - printf(" name: %s\n", getTexture(tplOffset)); -#else - printf(" <material name=\"%s\">\n", getTexture(tplOffset)); - printf(" <wrap_s>%02x</wrap_s>\n", data4.wrap_s); - printf(" <wrap_t>%02x</wrap_t>\n", data4.wrap_t); - printf(" </material>\n"); -#endif //OLD_BRLYT_OUTSTYLE + material = mxmlNewElement(tag, "material"); mxmlElementSetAttrf(material, "name", "%s", getTexture(tplOffset)); + wrap_s = mxmlNewElement(material, "wrap_s"); mxmlNewTextf(wrap_s, 0, "%02x", data4.wrap_s); + wrap_t = mxmlNewElement(material, "wrap_t"); mxmlNewTextf(wrap_t, 0, "%02x", data4.wrap_t); } + mxml_node_t *ua2, *dataa; // # 0x14 * flags[24-27], followed by n = 0; for (n;n<bit_extract(flaggs, 24,27);n++) { brlyt_ua2_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_ua2_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua2: %08x, %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3], data4.unk[4]); - int s; for (s=0;s<20;s++) printf("%02x ", brlyt_file[BRLYT_fileoffset + s -20]); printf("\n"); - for (s=0;s<5;s++) printf("%f", float_swap_bytes(data4.unk[s])); - printf("\n"); -#else - printf(" <ua2>\n"); - printf(" <data>%.10f</data>\n", float_swap_bytes(data4.unk[0])); - printf(" <data>%.10f</data>\n", float_swap_bytes(data4.unk[1])); - printf(" <data>%.10f</data>\n", float_swap_bytes(data4.unk[2])); - printf(" <data>%.10f</data>\n", float_swap_bytes(data4.unk[3])); - printf(" <data>%.10f</data>\n", float_swap_bytes(data4.unk[4])); - printf(" </ua2>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua2 = mxmlNewElement(tag, "ua2"); + int j; for (j=0;j<5;j++) + { + dataa = mxmlNewElement(ua2, "data"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.unk[j])); + } } + + mxml_node_t *ua3; //# 4*flags[20-23], followed by n = 0; for (n;n<bit_extract(flaggs, 20,23);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua3: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <ua3>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </ua3>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua3 = mxmlNewElement(tag, "ua3"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(ua3, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } //# Changing ua3 things //# 1st --> disappears. @@ -858,264 +636,177 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file) //# 3rd --> disappears. //# 4th --> no visible effect. + mxml_node_t *ua4; //# 4 * flags[6] n = 0; for (n;n<bit_extract(flaggs, 6,100);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua4: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <ua4>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </ua4>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua4 = mxmlNewElement(tag, "ua4"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(ua4, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } + + mxml_node_t *ua5; //# 4 * flags[4] n = 0; for (n;n<bit_extract(flaggs, 4,100);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua5: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <ua5>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </ua5>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua5 = mxmlNewElement(tag, "ua5"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(ua5, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } + + mxml_node_t *ua6; //# 4 * flags[19] n = 0; for (n;n<bit_extract(flaggs, 19,100);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua6: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <ua6>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </ua6>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua6 = mxmlNewElement(tag, "ua6"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(ua6, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } + + mxml_node_t *ua7, *a, *b, *c, *d, *e; n = 0; for (n;n<bit_extract(flaggs, 17,18);n++) { brlyt_ua7_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_ua7_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua7 a: %08x\n", be32(data4.a)); - printf(" ua7 b: %08x\n", be32(data4.b)); - printf(" ua7 c: %f\n", float_swap_bytes(data4.c)); - printf(" ua7 d: %08x\n", be32(data4.d)); - printf(" ua7 e: %08x\n", be32(data4.e)); -#else - printf(" <ua7>\n"); - printf(" <a>%08x</a>\n", be32(data4.a)); - printf(" <b>%08x</b>\n", be32(data4.b)); - printf(" <c>%f</c>\n", float_swap_bytes(data4.c)); - printf(" <d>%f</d>\n", float_swap_bytes(data4.d)); - printf(" <e>%f</e>\n", float_swap_bytes(data4.e)); - printf(" </ua7>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua7 = mxmlNewElement(tag, "ua7"); + a = mxmlNewElement(ua7, "a"); mxmlNewTextf(a, 0, "%08x", be32(data4.a)); + b = mxmlNewElement(ua7, "b"); mxmlNewTextf(b, 0, "%08x", be32(data4.b)); + c = mxmlNewElement(ua7, "c"); mxmlNewTextf(c, 0, "%f", float_swap_bytes(data4.c)); + d = mxmlNewElement(ua7, "d"); mxmlNewTextf(d, 0, "%f", float_swap_bytes(data4.d)); + e = mxmlNewElement(ua7, "e"); mxmlNewTextf(e, 0, "%f", float_swap_bytes(data4.e)); } + + mxml_node_t *ua8; //# 4 * flags[14-16] n = 0; for (n;n<bit_extract(flaggs, 14,16);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua8: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <ua8>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </ua8>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua8 = mxmlNewElement(tag, "ua8"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(ua8, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } + + mxml_node_t *ua9; //# 0x10 * flags[9-13] n = 0; for (n;n<bit_extract(flaggs, 9,13);n++) { brlyt_10b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_10b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" ua8: %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3], data4.unk[4], data4.unk[5], data4.unk[6], data4.unk[7], data4.unk[8], data4.unk[9], data4.unk[10], data4.unk[11], data4.unk[12], data4.unk[13], data4.unk[14], data4.unk[15]); -#else - printf(" <ua9>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" <data>%02x</data>\n", data4.unk[4]); - printf(" <data>%02x</data>\n", data4.unk[5]); - printf(" <data>%02x</data>\n", data4.unk[6]); - printf(" <data>%02x</data>\n", data4.unk[7]); - printf(" <data>%02x</data>\n", data4.unk[8]); - printf(" <data>%02x</data>\n", data4.unk[9]); - printf(" <data>%02x</data>\n", data4.unk[10]); - printf(" <data>%02x</data>\n", data4.unk[11]); - printf(" <data>%02x</data>\n", data4.unk[12]); - printf(" <data>%02x</data>\n", data4.unk[13]); - printf(" <data>%02x</data>\n", data4.unk[14]); - printf(" <data>%02x</data>\n", data4.unk[15]); - printf(" </ua9>\n"); -#endif //OLD_BRLYT_OUTSTYLE + ua9 = mxmlNewElement(tag, "ua9"); + int j; for (j=0;j<16;j++) + { + dataa = mxmlNewElement(ua9, "data"); + mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } + + mxml_node_t *uaa; //# 4 * flags[8], these are bytes btw n = 0; for (n;n<bit_extract(flaggs, 8,8);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" uaa: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <uaa>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </uaa>\n"); -#endif //OLD_BRLYT_OUTSTYLE + uaa = mxmlNewElement(tag, "uaa"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(uaa, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } + mxml_node_t *uab; //# 4 * flags[7] n = 0; for (n;n<bit_extract(flaggs, 7,7);n++) { brlyt_4b_chunk data4; BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_4b_chunk)); -#ifdef OLD_BRLYT_OUTSTYLE - printf(" uab: %08x, %08x, %08x, %08x\n", data4.unk[0], data4.unk[1], data4.unk[2], data4.unk[3]); -#else - printf(" <uab>\n"); - printf(" <data>%02x</data>\n", data4.unk[0]); - printf(" <data>%02x</data>\n", data4.unk[1]); - printf(" <data>%02x</data>\n", data4.unk[2]); - printf(" <data>%02x</data>\n", data4.unk[3]); - printf(" </uab>\n"); -#endif //OLD_BRLYT_OUTSTYLE + uab = mxmlNewElement(tag, "uab"); + int j; for (j=0;j<4;j++) + { + dataa = mxmlNewElement(uab, "data"); mxmlNewTextf(dataa, 0, "%02x", data4.unk[j]); + } } -#ifndef OLD_BRLYT_OUTSTYLE - printf(" </entries>\n"); -#endif //OLD_BRLYT_OUTSTYLE BRLYT_fileoffset = tempDataLocation; } -#ifndef OLD_BRLYT_OUTSTYLE - printf(" </tag>\n"); -#endif //OLD_BRLYT_OUTSTYLE } -void PrintBRLYTEntry_gre1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_gre1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#else - printf("type=\"%c%c%c%c\" />\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); } -void PrintBRLYTEntry_grs1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_grs1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#else - printf("type=\"%c%c%c%c\" />\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); } -void PrintBRLYTEntry_pae1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_pae1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#else - printf("type=\"%c%c%c%c\" />\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); } -void PrintBRLYTEntry_pas1(brlyt_entry entry, u8* brlyt_file) +void PrintBRLYTEntry_pas1(brlyt_entry entry, u8* brlyt_file, mxml_node_t* tag) { -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Type: %c%c%c%c\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#else - printf("type=\"%c%c%c%c\" />\n", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); -#endif //OLD_BRLYT_OUTSTYLE + mxmlElementSetAttrf(tag, "type", "%c%c%c%c", entry.magic[0], entry.magic[1], entry.magic[2], entry.magic[3]); } -void PrintBRLYTEntries(brlyt_entry *entries, int entrycnt, u8* brlyt_file) +void PrintBRLYTEntries(brlyt_entry *entries, int entrycnt, u8* brlyt_file, mxml_node_t *xmlyt) { - dbgprintf("Printing BRLYT Entries"); int i; - + mxml_node_t *tag; for(i = 0; i < entrycnt; i++) { -#ifdef OLD_BRLYT_OUTSTYLE - printf("\n Index %d (@%08x):\n", i, entries[i].data_location - 8); -#else - printf(" <tag "); -#endif //OLD_BRLYT_OUTSTYLE + tag = mxmlNewElement(xmlyt, "tag"); if((FourCCsMatch(entries[i].magic, pan1_magic) == 1)) { - dbgprintf("pan1\n"); - PrintBRLYTEntry_pan1(entries[i], brlyt_file); + PrintBRLYTEntry_pan1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, txt1_magic) == 1)) { - dbgprintf("txt1\n"); - PrintBRLYTEntry_txt1(entries[i], brlyt_file); + PrintBRLYTEntry_txt1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, pic1_magic) == 1)) { - dbgprintf("pic1\n"); - PrintBRLYTEntry_pic1(entries[i], brlyt_file); + PrintBRLYTEntry_pic1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, wnd1_magic) == 1)) { - dbgprintf("wnd1\n"); - PrintBRLYTEntry_wnd1(entries[i], brlyt_file); + PrintBRLYTEntry_wnd1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, bnd1_magic) == 1)) { - dbgprintf("bnd1\n"); - PrintBRLYTEntry_bnd1(entries[i], brlyt_file); + PrintBRLYTEntry_bnd1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, lyt1_magic) == 1)) { - dbgprintf("lyt1\n"); - PrintBRLYTEntry_lyt1(entries[i], brlyt_file); + PrintBRLYTEntry_lyt1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, grp1_magic) == 1)) { - dbgprintf("grp1\n"); - PrintBRLYTEntry_grp1(entries[i], brlyt_file); + PrintBRLYTEntry_grp1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, txl1_magic) == 1)) { - dbgprintf("txl1\n"); - PrintBRLYTEntry_txl1(entries[i], brlyt_file); + PrintBRLYTEntry_txl1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, fnl1_magic) == 1)) { - dbgprintf("img\n"); - PrintBRLYTEntry_fnl1(entries[i], brlyt_file); + PrintBRLYTEntry_fnl1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, mat1_magic) == 1)) { - dbgprintf("mat1\n"); - PrintBRLYTEntry_mat1(entries[i], brlyt_file); + PrintBRLYTEntry_mat1(entries[i], brlyt_file, tag); }else if((FourCCsMatch(entries[i].magic, gre1_magic) == 1)) { - dbgprintf("gre1\n"); - PrintBRLYTEntry_gre1(entries[i], brlyt_file); - }else if((FourCCsMatch(entries[i].magic, grs1_magic) == 1)) { - dbgprintf("grs1\n"); - PrintBRLYTEntry_grs1(entries[i], brlyt_file); - }else if((FourCCsMatch(entries[i].magic, pae1_magic) == 1)) { - dbgprintf("pae1\n"); - PrintBRLYTEntry_pae1(entries[i], brlyt_file); - }else if((FourCCsMatch(entries[i].magic, pas1_magic) == 1)) { - dbgprintf("pas1\n"); - PrintBRLYTEntry_pas1(entries[i], brlyt_file); + PrintBRLYTEntry_gre1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, grs1_magic) == 1)) { + PrintBRLYTEntry_grs1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, pae1_magic) == 1)) { + PrintBRLYTEntry_pae1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, pas1_magic) == 1)) { + PrintBRLYTEntry_pas1(entries[i], brlyt_file, tag); }else{ -#ifdef OLD_BRLYT_OUTSTYLE - printf(" Unknown tag (%c%c%c%c)!\n",entries[i].magic[0],entries[i].magic[1],entries[i].magic[2],entries[i].magic[3]); -#else - printf("/>\n"); -#endif //OLD_BRLYT_OUTSTYLE } } } @@ -1135,12 +826,9 @@ void parse_brlyt(char *filename) } fseek(fp, 0, SEEK_END); size_t file_size = ftell(fp); - dbgprintf("Filesize is %d\n", file_size); u8* brlyt_file = (u8*)malloc(file_size); - dbgprintf("brlyt_file allocated\n"); fseek(fp, 0, SEEK_SET); fread(brlyt_file, file_size, 1, fp); - dbgprintf("brlyt_file read to.\n"); BRLYT_fileoffset = 0; brlyt_header header; BRLYT_ReadDataFromMemory(&header, brlyt_file, sizeof(brlyt_header)); @@ -1149,22 +837,18 @@ void parse_brlyt(char *filename) BRLYT_fileoffset = short_swap_bytes(header.lyt_offset); brlyt_entry_header tempentry; int i; - dbgprintf("curr %08x max %08x\n", BRLYT_fileoffset, file_size); for(i = 0; BRLYT_fileoffset < file_size; i++) { BRLYT_ReadDataFromMemoryX(&tempentry, brlyt_file, sizeof(brlyt_entry_header)); BRLYT_fileoffset += be32(tempentry.length); - dbgprintf("curr %08x max %08x\n", BRLYT_fileoffset, file_size); } int entrycount = i; entries = (brlyt_entry*)calloc(entrycount, sizeof(brlyt_entry)); - dbgprintf("%08x\n", entries); if(entries == NULL) { printf("Couldn't allocate for entries!\n"); exit(1); } BRLYT_fileoffset = short_swap_bytes(header.lyt_offset); for(i = 0; i < entrycount; i++) { - dbgprintf("&(entries[i]) = %08x\n", &(entries[i])); BRLYT_ReadDataFromMemoryX(&tempentry, brlyt_file, sizeof(brlyt_entry_header)); memcpy(entries[i].magic, tempentry.magic, 4); entries[i].length = tempentry.length; @@ -1172,29 +856,46 @@ void parse_brlyt(char *filename) BRLYT_fileoffset += be32(tempentry.length); } - dbgprintf("%08x\n", entries); -#ifdef OLD_BRLYT_OUTSTYLE - printf("Parsed BRLYT! Information:\n"); - printf("Main header:\n"); - printf(" Magic: %c%c%c%c\n", header.magic[0], header.magic[1], header.magic[2], header.magic[3]); - printf(" Unk1: %08x\n", be32(header.unk1)); - printf(" Filesize: %lu\n", be32(header.filesize)); - printf(" %s real file size!\n", be32(header.filesize) == file_size ? "Matches" : "Does not match"); - printf(" Offset to lyt1: %04x\n", short_swap_bytes(header.lyt_offset)); - printf(" Unk2: %04x\n", short_swap_bytes(header.unk2)); - printf("\nBRLYT Entries:"); -#else - printf("<?xml version=\"1.0\"?>\n" \ - "<xmlyt>\n"); -#endif //OLD_BRLYT_OUTSTYLE - PrintBRLYTEntries(entries, entrycount, brlyt_file); -#ifndef OLD_BRLYT_OUTSTYLE - printf("</xmlyt>\n"); -#endif //OLD_BRLYT_OUTSTYLE + const char *whitespace_cb(mxml_node_t *node, int where) + { + const char *name; + name = node->value.element.name; + if (!strcmp(name, "xmlyt")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return("\n"); + } + else if (!strcmp(name, "tag")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return ("\n\t"); + } + else if (!strcmp(name, "a") || + !strcmp(name, "size") || + !strcmp(name, "entries")) + { + if ((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_BEFORE_CLOSE)) + return ("\n\t\t"); + } + /* + * Return NULL for no added whitespace... + */ + return (NULL); + } + + FILE *xmlFile; + xmlFile = fopen("testy.xmlyt", "w"); + mxml_node_t *xml; + mxml_node_t *xmlyt; + xml = mxmlNewXML("1.0"); + xmlyt = mxmlNewElement(xml, "xmlyt"); + PrintBRLYTEntries(entries, entrycount, brlyt_file, xmlyt); + mxmlSaveFile(xml, xmlFile, whitespace_cb); + fclose(xmlFile); + mxmlDelete(xml); free(materials); free(textures); - } void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* blobsize, char temp[4], FILE* fp, unsigned int *fileOffset) @@ -1282,10 +983,8 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_offsunk_chunk chunk2; mxml_node_t *valnode; for(valnode = mxmlFindElement(subnode, subnode, "name", NULL, NULL, MXML_DESCEND); valnode != NULL; valnode = mxmlFindElement(valnode, subnode, "name", NULL, NULL, MXML_DESCEND)) { - if (valnode != NULL) { - char tempSub[256]; get_value(valnode, tempSub, 256); @@ -1365,7 +1064,6 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl brlyt_offsunk_chunk chunk2; mxml_node_t *valnode; for(valnode = mxmlFindElement(subnode, subnode, "name", NULL, NULL, MXML_DESCEND); valnode != NULL; valnode = mxmlFindElement(valnode, subnode, "name", NULL, NULL, MXML_DESCEND)) { - if (valnode != NULL) { char tempSub[256]; @@ -1418,7 +1116,6 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl } if ( memcmp(temp, mat1, sizeof(mat1)) == 0) { - int numberOfEntries = 0; int actualNumber = 0; brlyt_numoffs_chunk numchunk; @@ -2451,7 +2148,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl if ((textyLength % 4) != 0) textyLength += (4 - (textyLength % 4)); unsigned char texty[textyLength + 1]; - unsigned char tempy[textyLength*2]; + unsigned char tempy[textyLength*2]; subnode = mxmlFindElement(node, node, "text", NULL, NULL, MXML_DESCEND); if (subnode != NULL) { @@ -2476,7 +2173,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl fwrite(&chunk2, sizeof(chunk2), 1, fp); *fileOffset = *fileOffset + sizeof(chunk2); - int q;for (q=short_swap_bytes(chunk2.len2);q<textyLength;q++) + int q;for (q=short_swap_bytes(chunk2.len2);q<textyLength;q++) { q++; texty[q] = 0x00; |
