diff options
| author | megazig <megazig@megazig-desktop.(none)> | 2009-09-20 14:16:12 -0500 |
|---|---|---|
| committer | megazig <megazig@megazig-desktop.(none)> | 2009-09-20 14:16:12 -0500 |
| commit | ac684b6c6b64d093b65069d2692c38b42fbdc0c1 (patch) | |
| tree | 4ec7c50fe645ca22770d71f115a76cb0490489f8 /brlyt.c | |
| parent | 955dca65b0b526b1e79adb23cff6617d2436014c (diff) | |
added lots of cleanup and changed vtx to color pieces and cleaned up main
Diffstat (limited to '')
| -rw-r--r-- | brlyt.c | 4579 |
1 files changed, 2308 insertions, 2271 deletions
@@ -18,12 +18,12 @@ #include "endian.h" #ifdef DEBUGBRLYT -#define dbgprintf printf +#define dbgprintf printf #else -#define dbgprintf // +#define dbgprintf // #endif //DEBUGBRLYT -#define MAXIMUM_TAGS_SIZE (0x1000) +#define MAXIMUM_TAGS_SIZE (0x1000) char pic1_magic[] = "pic1"; char pan1_magic[] = "pan1"; @@ -51,124 +51,124 @@ int lengthOfTextures; static int FourCCsMatch(fourcc cc1, fourcc cc2) { - int ret[4]; - ret[0] = (cc1[0] == cc2[0]); - ret[1] = (cc1[1] == cc2[1]); - ret[2] = (cc1[2] == cc2[2]); - ret[3] = (cc1[3] == cc2[3]); - int retval; - if(ret[0] && ret[1] && ret[2] && ret[3]) - retval = 1; - else - retval = 0; - return retval; + int ret[4]; + ret[0] = (cc1[0] == cc2[0]); + ret[1] = (cc1[1] == cc2[1]); + ret[2] = (cc1[2] == cc2[2]); + ret[3] = (cc1[3] == cc2[3]); + int retval; + if(ret[0] && ret[1] && ret[2] && ret[3]) + retval = 1; + else + retval = 0; + return retval; } static void BRLYT_ReadDataFromMemoryX(void* destination, void* input, size_t size) { - u8* out = (u8*)destination; - u8* in = ((u8*)input) + BRLYT_fileoffset; - memcpy(out, in, size); + u8* out = (u8*)destination; + u8* in = ((u8*)input) + BRLYT_fileoffset; + memcpy(out, in, size); } static void BRLYT_ReadDataFromMemory(void* destination, void* input, size_t size) { - BRLYT_ReadDataFromMemoryX(destination, input, size); - BRLYT_fileoffset += size; + BRLYT_ReadDataFromMemoryX(destination, input, size); + BRLYT_fileoffset += size; } float float_swap_bytes(float float1) { - u8 *float1c; float1c = (u8*)&float1; + u8 *float1c; float1c = (u8*)&float1; - u8 charTemp = 0x00; - charTemp = float1c[0]; float1c[0] = float1c[3]; float1c[3] = charTemp; - charTemp = 0x00; - charTemp = float1c[1]; float1c[1] = float1c[2]; float1c[2] = charTemp; + u8 charTemp = 0x00; + charTemp = float1c[0]; float1c[0] = float1c[3]; float1c[3] = charTemp; + charTemp = 0x00; + charTemp = float1c[1]; float1c[1] = float1c[2]; float1c[2] = charTemp; - float *newFloat; newFloat = (float*)float1c; - return *newFloat; + float *newFloat; newFloat = (float*)float1c; + return *newFloat; } u32 bit_extract(u32 num, u32 start, u32 end) { - if (end == 100) end = start; - u32 mask; - int first; - int firstMask = 1; - for (first=0;first<31-start+1;first++) - { - firstMask *= 2; - } - firstMask -= 1; - int secondMask = 1; + if (end == 100) end = start; + u32 mask; + int first; + int firstMask = 1; + for (first=0;first<31-start+1;first++) + { + firstMask *= 2; + } + firstMask -= 1; + int secondMask = 1; - for (first=0;first< 31-end;first++) - { - secondMask *=2; - } - secondMask -= 1; - mask = firstMask - secondMask; - int ret = (num & mask) >> (31 - end); - return ret; + for (first=0;first< 31-end;first++) + { + secondMask *=2; + } + secondMask -= 1; + mask = firstMask - secondMask; + int ret = (num & mask) >> (31 - end); + return ret; } char* getMaterial(u16 offset) { - if (offset == 0) return materials; - char *mat = materials + strlen(materials) + 1; + if (offset == 0) return materials; + char *mat = materials + strlen(materials) + 1; - if (offset > 1) - { - int n; - for (n=1; n<offset;n++) - mat = mat + strlen(mat) + 1; - } - return mat; + if (offset > 1) + { + int n; + for (n=1; n<offset;n++) + mat = mat + strlen(mat) + 1; + } + return mat; } 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; - for (n=1; n<offset;n++) - tex = tex + strlen(tex) + 1; - } - return tex; + if (offset > 1) + { + int n; + for (n=1; n<offset;n++) + tex = tex + strlen(tex) + 1; + } + return tex; } u16 findMatOffset(char *mats) { - int isEqual = 1; - char* mat = materials; - int i; - for (i = 0; isEqual != 0; ) - { - isEqual = strcmp(mats, mat); - if (isEqual != 0) i++; - mat = mat + strlen(mat) + 1; - } - return i; + int isEqual = 1; + char* mat = materials; + int i; + for (i = 0; isEqual != 0; ) + { + isEqual = strcmp(mats, mat); + if (isEqual != 0) i++; + mat = mat + strlen(mat) + 1; + } + return i; } 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) @@ -178,128 +178,128 @@ int BRLYT_ReadEntries(u8* brlyt_file, size_t file_size, brlyt_header header, brl void BRLYT_CheckHeaderSanity(brlyt_header header, size_t filesize) { - if((header.magic[0] != 'R') || (header.magic[1] != 'L') || (header.magic[2] != 'Y') || (header.magic[3] != 'T')) { - printf("BRLYT magic doesn't match! %.4s\n", header.magic); + if((header.magic[0] != 'R') || (header.magic[1] != 'L') || (header.magic[2] != 'Y') || (header.magic[3] != 'T')) { + printf("BRLYT magic doesn't match! %.4s\n", header.magic); printf("magic: %.4s\n", header.magic); - exit(1); - } + exit(1); + } if(header.version != be32(0xfeff0008) ){ printf("BRLYT version not right\n"); printf("version: %08x\n", be32(header.version) ); exit(1); } - if(filesize != be32(header.filesize)) { - printf("BRLYT filesize doesn't match!\n"); - exit(1); - } + if(filesize != be32(header.filesize)) { + printf("BRLYT filesize doesn't match!\n"); + exit(1); + } } 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)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - a = mxmlNewElement(tag, "drawnFromMiddle"); mxmlNewTextf(a, 0, "%02x", data.drawnFromMiddle); - 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 *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)); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + a = mxmlNewElement(tag, "drawnFromMiddle"); mxmlNewTextf(a, 0, "%02x", data.drawnFromMiddle); + 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, mxml_node_t *tag) { - mxml_node_t *subs, *sub; - brlyt_group_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_group_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); + mxml_node_t *subs, *sub; + brlyt_group_chunk data; + BRLYT_fileoffset = entry.data_location; + BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_group_chunk)); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + mxmlElementSetAttrf(tag, "name", "%s", data.name); - if (short_swap_bytes(data.numsubs) > 0) subs = mxmlNewElement(tag, "subs"); + if (short_swap_bytes(data.numsubs) > 0) subs = mxmlNewElement(tag, "subs"); - int n; - for (n=0;n<short_swap_bytes(data.numsubs);n++) - { - char subb[16]; - memset(subb, 0x00, 16); - BRLYT_ReadDataFromMemory(subb, brlyt_file, sizeof(subb)); - sub = mxmlNewElement(subs, "sub"); mxmlNewTextf(sub, 0, "%.16s", subb); - } + int i; + for (i=0;i<short_swap_bytes(data.numsubs);i++) + { + char subb[16]; + memset(subb, 0x00, 16); + BRLYT_ReadDataFromMemory(subb, brlyt_file, sizeof(subb)); + sub = mxmlNewElement(subs, "sub"); mxmlNewTextf(sub, 0, "%.16s", subb); + } } 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)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - entries = mxmlNewElement(tag, "entries"); - int pos = 4; - pos += data.offs; - int bpos = pos; - int n; - for (n=0;n<short_swap_bytes(data.num);n++) - { - 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)); + 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", "%.4s", entry.magic); + entries = mxmlNewElement(tag, "entries"); + int pos = 4; + pos += data.offs; + int bpos = pos; + int n; + for (n=0;n<short_swap_bytes(data.num);n++) + { + 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)); - naame = mxmlNewElement(entries, "name"); mxmlNewTextf(naame, 0, "%s", name); - BRLYT_fileoffset = tempLocation; - int newSize = lengthOfTextures+sizeof(name); - textures = realloc(textures, newSize); - numberOfTextures += 1; - memcpy(textures+lengthOfTextures, name, sizeof(name)); - lengthOfTextures = newSize; - } + 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; + int newSize = lengthOfTextures+sizeof(name); + textures = realloc(textures, newSize); + numberOfTextures += 1; + memcpy(textures+lengthOfTextures, name, sizeof(name)); + lengthOfTextures = newSize; + } } void PrintBRLYTEntry_fnl1(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)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - entries = mxmlNewElement(tag, "entries"); - int pos = 4; - pos += data.offs; - int bpos = pos; - int n; - for (n=0;n<short_swap_bytes(data.num);n++) - { - 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)); + 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", "%.4s", entry.magic); + entries = mxmlNewElement(tag, "entries"); + int pos = 4; + pos += data.offs; + int bpos = pos; + int n; + for (n=0;n<short_swap_bytes(data.num);n++) + { + 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)); - naame = mxmlNewElement(entries, "name"); mxmlNewTextf(naame, 0, "%s", name); - BRLYT_fileoffset = tempLocation; - } + 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, mxml_node_t *tag) @@ -316,36 +316,36 @@ void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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); + 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); + 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"); + 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)); + 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) @@ -362,64 +362,64 @@ void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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); + 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); + 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)); + 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 *wndd, *unkk, *count, *offset1, *offset2; - int i, j; - brlyt_wnd wndy; - BRLYT_ReadDataFromMemory(&wndy, brlyt_file, sizeof(brlyt_wnd)); - wndd = mxmlNewElement(tag, "wnd"); - for(i=0;i<4;i++) - { - unkk = mxmlNewElement(wndd, "coordinate"); mxmlNewTextf(unkk, 0, "%f", float_swap_bytes(wndy.coords[i])); - } - count = mxmlNewElement(wndd, "FrameCount"); mxmlNewTextf(count, 0, "%02x", wndy.frame_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 *wndd, *unkk, *count, *offset1, *offset2; + int i, j; + brlyt_wnd wndy; + BRLYT_ReadDataFromMemory(&wndy, brlyt_file, sizeof(brlyt_wnd)); + wndd = mxmlNewElement(tag, "wnd"); + for(i=0;i<4;i++) + { + unkk = mxmlNewElement(wndd, "coordinate"); mxmlNewTextf(unkk, 0, "%f", float_swap_bytes(wndy.coords[i])); + } + count = mxmlNewElement(wndd, "FrameCount"); mxmlNewTextf(count, 0, "%02x", wndy.frame_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, *colors, *material; - brlyt_wnd1 wndy1; - BRLYT_ReadDataFromMemory(&wndy1, brlyt_file, sizeof(brlyt_wnd1)); - wnddd = mxmlNewElement(tag, "wnd1"); - for(i=0;i<4;i++) - { - colors = mxmlNewElement(wnddd, "color"); mxmlNewTextf(colors, 0, "%08x", int_swap_bytes(wndy1.colors[i])); - } + mxml_node_t *wnddd, *colors, *material; + brlyt_wnd1 wndy1; + BRLYT_ReadDataFromMemory(&wndy1, brlyt_file, sizeof(brlyt_wnd1)); + wnddd = mxmlNewElement(tag, "wnd1"); + for(i=0;i<4;i++) + { + colors = mxmlNewElement(wnddd, "color"); mxmlNewTextf(colors, 0, "%08x", int_swap_bytes(wndy1.colors[i])); + } - material = mxmlNewElement(wnddd, "material"); mxmlNewTextf(material, 0, "%04x", short_swap_bytes(wndy1.material)); - count = mxmlNewElement(wnddd, "CoordinateCount"); mxmlNewTextf(count, 0, "%02x", short_swap_bytes(wndy1.coordinate_count)); - padding = mxmlNewElement(wnddd, "padding"); mxmlNewTextf(padding, 0, "%02x", short_swap_bytes(wndy1.padding)); + material = mxmlNewElement(wnddd, "material"); mxmlNewTextf(material, 0, "%04x", short_swap_bytes(wndy1.material)); + count = mxmlNewElement(wnddd, "CoordinateCount"); mxmlNewTextf(count, 0, "%02x", short_swap_bytes(wndy1.coordinate_count)); + padding = mxmlNewElement(wnddd, "padding"); mxmlNewTextf(padding, 0, "%02x", short_swap_bytes(wndy1.padding)); - mxml_node_t *wnddddd, *texcoord; + mxml_node_t *wnddddd, *texcoord; for ( i = 0 ; i < wndy1.coordinate_count ; i++ ){ brlyt_wnd3 wndy3; BRLYT_ReadDataFromMemory(&wndy3, brlyt_file, sizeof(brlyt_wnd3)); @@ -430,25 +430,25 @@ void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) } - mxml_node_t *wndddddd, *offsett; - brlyt_wnd4 wndy4; - for(i=0;i<wndy.frame_count;i++) - { - BRLYT_ReadDataFromMemory(&wndy4, brlyt_file, sizeof(brlyt_wnd4)); - wndddddd = mxmlNewElement(tag, "wnd4"); - offsett = mxmlNewElement(wndddddd, "offset"); mxmlNewTextf(offsett, 0, "%08x", be32(wndy4.offset)); - } + mxml_node_t *wndddddd, *offsett; + brlyt_wnd4 wndy4; + for(i=0;i<wndy.frame_count;i++) + { + BRLYT_ReadDataFromMemory(&wndy4, brlyt_file, sizeof(brlyt_wnd4)); + 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.frame_count;i++) - { - BRLYT_ReadDataFromMemory(&wndy4mat, brlyt_file, sizeof(brlyt_wnd4_mat)); - wndmat = mxmlNewElement(tag, "wnd4mat"); - matrl = mxmlNewElement(wndmat, "material"); mxmlNewTextf(matrl, 0, "%04x", be16(wndy4mat.material)); - matrl = mxmlNewElement(wndmat, "index"); mxmlNewTextf(matrl, 0, "%02x", wndy4mat.index); - matrl = mxmlNewElement(wndmat, "padding"); mxmlNewTextf(matrl, 0, "%02x", wndy4mat.padding); - } + mxml_node_t *wndmat, *matrl; + brlyt_wnd4_mat wndy4mat; + for(i=0;i<wndy.frame_count;i++) + { + BRLYT_ReadDataFromMemory(&wndy4mat, brlyt_file, sizeof(brlyt_wnd4_mat)); + wndmat = mxmlNewElement(tag, "wnd4mat"); + matrl = mxmlNewElement(wndmat, "material"); mxmlNewTextf(matrl, 0, "%04x", be16(wndy4mat.material)); + matrl = mxmlNewElement(wndmat, "index"); mxmlNewTextf(matrl, 0, "%02x", wndy4mat.index); + matrl = mxmlNewElement(wndmat, "padding"); mxmlNewTextf(matrl, 0, "%02x", wndy4mat.padding); + } } void PrintBRLYTEntry_bnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) @@ -465,36 +465,36 @@ void PrintBRLYTEntry_bnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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); + 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); + 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)); + 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)); } void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) @@ -511,58 +511,67 @@ void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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)); - 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); + 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); + 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 + 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, *coordinates, *set, *coord; - material = mxmlNewElement(tag, "material"); mxmlElementSetAttrf(material, "name", "%s", getMaterial(short_swap_bytes(data2.mat_num))); - 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=0;n<data2.num_texcoords;n++) - { - float texcoords[8]; - BRLYT_ReadDataFromMemory(texcoords, brlyt_file, sizeof(texcoords)); - int i; - set = mxmlNewElement(coordinates, "set"); - for(i = 0; i < 8; i++) - { - coord = mxmlNewElement(set, "coord"); mxmlNewTextf(coord, 0, "%f", float_swap_bytes(texcoords[i])); - } - } + 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"); + int n; for (n=0;n<4;n++) + { + vtx = mxmlNewElement(color, "vtx"); + attr = mxmlNewElement(color, "red"); + mxmlNewTextf( attr , 0 , "%02x" , ( be32(data2.vtx_colors[n]) >> 24 ) & 0xff ); + attr = mxmlNewElement(color, "red"); + mxmlNewTextf( attr , 0 , "%02x" , ( be32(data2.vtx_colors[n]) >> 16 ) & 0xff ); + attr = mxmlNewElement(color, "red"); + mxmlNewTextf( attr , 0 , "%02x" , ( be32(data2.vtx_colors[n]) >> 8 ) & 0xff ); + attr = mxmlNewElement(color, "red"); + mxmlNewTextf( attr , 0 , "%02x" , ( be32(data2.vtx_colors[n]) >> 0 ) & 0xff ); + + } + coordinates = mxmlNewElement(tag, "coordinates"); + for (n=0;n<data2.num_texcoords;n++) + { + float texcoords[8]; + BRLYT_ReadDataFromMemory(texcoords, brlyt_file, sizeof(texcoords)); + int i; + set = mxmlNewElement(coordinates, "set"); + for(i = 0; i < 8; i++) + { + coord = mxmlNewElement(set, "coord"); mxmlNewTextf(coord, 0, "%f", float_swap_bytes(texcoords[i])); + } + } } void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) @@ -591,113 +600,113 @@ void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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); + 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); + 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)); - u8 texty[short_swap_bytes(data2.len2)]; - memcpy(texty, &brlyt_file[BRLYT_fileoffset], short_swap_bytes(data2.len2)); - 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, "index", "%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)); - 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]); - 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 - u8 textbuffer[4096]; - int q; for(q=0;q<short_swap_bytes(data2.len2);q++) sprintf((char*)&textbuffer[q*2], "%02x", texty[q]); - text = mxmlNewElement(tag, "text"); mxmlNewTextf(text, 0, "%s", textbuffer); + 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)); + u8 texty[short_swap_bytes(data2.len2)]; + memcpy(texty, &brlyt_file[BRLYT_fileoffset], short_swap_bytes(data2.len2)); + 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, "index", "%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)); + 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]); + 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 + u8 textbuffer[4096]; + int q; for(q=0;q<short_swap_bytes(data2.len2);q++) sprintf((char*)&textbuffer[q*2], "%02x", texty[q]); + text = mxmlNewElement(tag, "text"); mxmlNewTextf(text, 0, "%s", textbuffer); } void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - mxml_node_t *entries, *colors, *forecolor, *backcolor, *unk2, *tev_k, *flags; - brlyt_numoffs_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - int n = 0; - for (n=0;n<short_swap_bytes(data.num);n++) - { - int offset; - BRLYT_ReadDataFromMemory(&offset, brlyt_file, sizeof(offset)); - int tempDataLocation = BRLYT_fileoffset; - BRLYT_fileoffset = entry.data_location + be32(offset) - 8; - brlyt_material_chunk data3; - BRLYT_ReadDataFromMemory(&data3, brlyt_file, sizeof(brlyt_material_chunk)); + mxml_node_t *entries, *colors, *forecolor, *backcolor, *unk2, *tev_k, *flags; + brlyt_numoffs_chunk data; + BRLYT_fileoffset = entry.data_location; + BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_numoffs_chunk)); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + int n = 0; + for (n=0;n<short_swap_bytes(data.num);n++) + { + int offset; + BRLYT_ReadDataFromMemory(&offset, brlyt_file, sizeof(offset)); + int tempDataLocation = BRLYT_fileoffset; + BRLYT_fileoffset = entry.data_location + be32(offset) - 8; + brlyt_material_chunk data3; + BRLYT_ReadDataFromMemory(&data3, brlyt_file, sizeof(brlyt_material_chunk)); - u32 flaggs = be32(data3.flags); - entries = mxmlNewElement(tag, "entries"); mxmlElementSetAttrf(entries, "name", "%s", data3.name); - colors = mxmlNewElement(entries, "colors"); - int i; for (i=0;i<4;i++) - { - forecolor = mxmlNewElement(colors, "forecolor"); - mxmlNewTextf(forecolor, 0, "%d", short_swap_bytes(data3.forecolor[i])); - } - for (i=0;i<4;i++) - { - backcolor = mxmlNewElement(colors, "backcolor"); - mxmlNewTextf(backcolor, 0, "%d", short_swap_bytes(data3.backcolor[i])); - } - for (i=0;i<4;i++) - { - unk2 = mxmlNewElement(colors, "colorReg3"); - mxmlNewTextf(unk2, 0, "%d", short_swap_bytes(data3.colorReg3[i])); - } - for (i=0;i<4;i++) - { - tev_k = mxmlNewElement(colors, "tev_k"); - mxmlNewTextf(tev_k, 0, "%08x", be32(data3.tev_kcolor[i])); - } + u32 flaggs = be32(data3.flags); + entries = mxmlNewElement(tag, "entries"); mxmlElementSetAttrf(entries, "name", "%s", data3.name); + colors = mxmlNewElement(entries, "colors"); + int i; for (i=0;i<4;i++) + { + forecolor = mxmlNewElement(colors, "forecolor"); + mxmlNewTextf(forecolor, 0, "%d", short_swap_bytes(data3.forecolor[i])); + } + for (i=0;i<4;i++) + { + backcolor = mxmlNewElement(colors, "backcolor"); + mxmlNewTextf(backcolor, 0, "%d", short_swap_bytes(data3.backcolor[i])); + } + for (i=0;i<4;i++) + { + unk2 = mxmlNewElement(colors, "colorReg3"); + mxmlNewTextf(unk2, 0, "%d", short_swap_bytes(data3.colorReg3[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(entries, "flags"); mxmlNewTextf(flags, 0, "%08x", be32(data3.flags)); + //flags = mxmlNewElement(entries, "flags"); mxmlNewTextf(flags, 0, "%08x", be32(data3.flags)); - int newSize = lengthOfMaterials+strlen(data3.name)+1; - materials = realloc(materials, newSize); - numberOfMaterials += 1; - memcpy(materials+lengthOfMaterials, data3.name, 1+strlen(data3.name)); - lengthOfMaterials = newSize; + int newSize = lengthOfMaterials+strlen(data3.name)+1; + materials = realloc(materials, newSize); + numberOfMaterials += 1; + memcpy(materials+lengthOfMaterials, data3.name, 1+strlen(data3.name)); + lengthOfMaterials = newSize; - mxml_node_t *texture, *wrap_t, *wrap_s; - int n; - for (n=0;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); - texture = mxmlNewElement(entries, "texture"); mxmlElementSetAttrf(texture, "name", "%s", getTexture(tplOffset)); + mxml_node_t *texture, *wrap_t, *wrap_s; + int n; + for (n=0;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); + texture = mxmlNewElement(entries, "texture"); mxmlElementSetAttrf(texture, "name", "%s", getTexture(tplOffset)); char wraps[4][20]; int l; @@ -708,30 +717,30 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) strcpy( wraps[2] , "GX_MIRROR" ); strcpy( wraps[3] , "GX_MAXTEXWRAPMODE" ); - wrap_s = mxmlNewElement(texture, "wrap_s"); + wrap_s = mxmlNewElement(texture, "wrap_s"); mxmlNewTextf(wrap_s, 0, "%s", wraps[data4.wrap_s]); - wrap_t = mxmlNewElement(texture, "wrap_t"); + wrap_t = mxmlNewElement(texture, "wrap_t"); mxmlNewTextf(wrap_t, 0, "%s", wraps[data4.wrap_t]); - } + } - mxml_node_t *tex_coords, *dataa; -// # 0x14 * flags[24-27], followed by - for (n=0;n<bit_extract(flaggs, 24,27);n++) - { - brlyt_tex_srt data4; - BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_srt)); - tex_coords = mxmlNewElement(entries, "TextureSRT"); - dataa = mxmlNewElement(tex_coords, "XTrans"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.XTrans)); - dataa = mxmlNewElement(tex_coords, "YTrans"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.YTrans)); - dataa = mxmlNewElement(tex_coords, "Rotate"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.Rotate)); - dataa = mxmlNewElement(tex_coords, "XScale"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.XScale)); - dataa = mxmlNewElement(tex_coords, "YScale"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.YScale)); - } - - mxml_node_t *ua3; - //# 4*flags[20-23], followed by - for (n=0;n<bit_extract(flaggs, 20,23);n++) - { + mxml_node_t *tex_coords, *dataa; +// # 0x14 * flags[24-27], followed by + for (n=0;n<bit_extract(flaggs, 24,27);n++) + { + brlyt_tex_srt data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_srt)); + tex_coords = mxmlNewElement(entries, "TextureSRT"); + dataa = mxmlNewElement(tex_coords, "XTrans"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.XTrans)); + dataa = mxmlNewElement(tex_coords, "YTrans"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.YTrans)); + dataa = mxmlNewElement(tex_coords, "Rotate"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.Rotate)); + dataa = mxmlNewElement(tex_coords, "XScale"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.XScale)); + dataa = mxmlNewElement(tex_coords, "YScale"); mxmlNewTextf(dataa, 0, "%.10f", float_swap_bytes(data4.YScale)); + } + + mxml_node_t *ua3; + //# 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++ ) @@ -819,9 +828,9 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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"); + brlyt_tex_coordgen data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_coordgen)); + ua3 = mxmlNewElement(entries, "CoordGen"); dataa = mxmlNewElement(ua3, "tgen_type"); mxmlNewTextf(dataa, 0, "%s", tgen_types[data4.tgen_type]); @@ -830,12 +839,12 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) dataa = mxmlNewElement(ua3, "MatrixSource"); mxmlNewTextf(dataa, 0, "%s", mtxsrc[data4.mtxsrc/3]); dataa = mxmlNewElement(ua3, "padding"); mxmlNewTextf(dataa, 0, "%02x", data4.padding); - } + } - mxml_node_t *ua4; - //# 4 * flags[6] - for (n=0;n<bit_extract(flaggs, 6,100);n++) - { + mxml_node_t *ua4; + //# 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++ ) @@ -843,9 +852,9 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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"); + brlyt_tex_chanctrl data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_chanctrl)); + ua4 = mxmlNewElement(entries, "ChanControl"); dataa = mxmlNewElement(ua4, "ColorMatSource"); mxmlNewTextf(dataa, 0, "%s", matsrc[data4.color_matsrc]); @@ -856,26 +865,26 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) dataa = mxmlNewElement(ua4, "Padding2"); mxmlNewTextf(dataa, 0, "%02x", data4.padding2); - } - - mxml_node_t *ua5; - //# 4 * flags[4] - for (n=0;n<bit_extract(flaggs, 4,100);n++) - { - brlyt_tex_matcol data4; - BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_matcol)); - ua5 = mxmlNewElement(entries, "MaterialColor"); + } + + mxml_node_t *ua5; + //# 4 * flags[4] + for (n=0;n<bit_extract(flaggs, 4,100);n++) + { + brlyt_tex_matcol data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tex_matcol)); + ua5 = mxmlNewElement(entries, "MaterialColor"); dataa = mxmlNewElement(ua5, "red"); mxmlNewTextf(dataa, 0, "%02x", data4.red); dataa = mxmlNewElement(ua5, "green"); mxmlNewTextf(dataa, 0, "%02x", data4.green); dataa = mxmlNewElement(ua5, "blue"); mxmlNewTextf(dataa, 0, "%02x", data4.blue); dataa = mxmlNewElement(ua5, "alpha"); mxmlNewTextf(dataa, 0, "%02x", data4.alpha); - } - - mxml_node_t *ua6; - //# 4 * flags[19] - for (n=0;n<bit_extract(flaggs, 19,100);n++) - { + } + + mxml_node_t *ua6; + //# 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++ ) @@ -885,10 +894,10 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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)); + brlyt_tev_swapmodetable data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_tev_swapmodetable)); - ua6 = mxmlNewElement(entries, "TevSwapModeTable"); + ua6 = mxmlNewElement(entries, "TevSwapModeTable"); dataa = mxmlNewElement(ua6, "OneRed"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.one & 0x03) >> 0] ); @@ -898,7 +907,7 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.one & 0x30) >> 4] ); dataa = mxmlNewElement(ua6, "OneAlpha"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.one & 0xC0) >> 6] ); - + dataa = mxmlNewElement(ua6, "TwoRed"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.two & 0x03) >> 0] ); dataa = mxmlNewElement(ua6, "TwoGreen"); @@ -907,7 +916,7 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.two & 0x30) >> 4] ); dataa = mxmlNewElement(ua6, "TwoAlpha"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.two & 0xC0) >> 6] ); - + dataa = mxmlNewElement(ua6, "ThreeRed"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.three & 0x03) >> 0] ); dataa = mxmlNewElement(ua6, "ThreeGreen"); @@ -916,7 +925,7 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.three & 0x30) >> 4] ); dataa = mxmlNewElement(ua6, "ThreeAlpha"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.three & 0xC0) >> 6] ); - + dataa = mxmlNewElement(ua6, "FourRed"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.four & 0x03) >> 0] ); dataa = mxmlNewElement(ua6, "FourGreen"); @@ -925,26 +934,26 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.four & 0x30) >> 4] ); dataa = mxmlNewElement(ua6, "FourAlpha"); mxmlNewTextf(dataa, 0, "%s", tevcolor[(data4.four & 0xC0) >> 6] ); - - } - - mxml_node_t *ua7, *a, *b, *c, *d, *e; - for (n=0;n<bit_extract(flaggs, 17,18);n++) - { - brlyt_indtex_srt data4; - BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_indtex_srt)); - ua7 = mxmlNewElement(entries, "IndTextureSRT"); - a = mxmlNewElement(ua7, "XTrans"); mxmlNewTextf(a, 0, "%f", float_swap_bytes(data4.XTrans)); - b = mxmlNewElement(ua7, "YTrans"); mxmlNewTextf(b, 0, "%f", float_swap_bytes(data4.YTrans)); - c = mxmlNewElement(ua7, "Rotate"); mxmlNewTextf(c, 0, "%f", float_swap_bytes(data4.Rotate)); - d = mxmlNewElement(ua7, "XScale"); mxmlNewTextf(d, 0, "%f", float_swap_bytes(data4.XScale)); - e = mxmlNewElement(ua7, "YScale"); mxmlNewTextf(e, 0, "%f", float_swap_bytes(data4.YScale)); - } - - mxml_node_t *ua8; - //# 4 * flags[14-16] - for (n=0;n<bit_extract(flaggs, 14,16);n++) - { + + } + + mxml_node_t *ua7, *a, *b, *c, *d, *e; + for (n=0;n<bit_extract(flaggs, 17,18);n++) + { + brlyt_indtex_srt data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_indtex_srt)); + ua7 = mxmlNewElement(entries, "IndTextureSRT"); + a = mxmlNewElement(ua7, "XTrans"); mxmlNewTextf(a, 0, "%f", float_swap_bytes(data4.XTrans)); + b = mxmlNewElement(ua7, "YTrans"); mxmlNewTextf(b, 0, "%f", float_swap_bytes(data4.YTrans)); + c = mxmlNewElement(ua7, "Rotate"); mxmlNewTextf(c, 0, "%f", float_swap_bytes(data4.Rotate)); + d = mxmlNewElement(ua7, "XScale"); mxmlNewTextf(d, 0, "%f", float_swap_bytes(data4.XScale)); + e = mxmlNewElement(ua7, "YScale"); mxmlNewTextf(e, 0, "%f", float_swap_bytes(data4.YScale)); + } + + mxml_node_t *ua8; + //# 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++ ) @@ -960,9 +969,9 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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"); + brlyt_indtex_order data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_indtex_order)); + ua8 = mxmlNewElement(entries, "IndTextureOrder"); dataa = mxmlNewElement(ua8, "TextureCoordinate"); mxmlNewTextf(dataa, 0, "%02x", data4.tex_coord); dataa = mxmlNewElement(ua8, "TextureMap"); mxmlNewTextf(dataa, 0, "%02x", data4.tex_map); @@ -970,15 +979,15 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) mxmlNewTextf(dataa, 0, "%s", scale[data4.scale_s]); dataa = mxmlNewElement(ua8, "ScaleT"); mxmlNewTextf(dataa, 0, "%s", scale[data4.scale_t]); - } - - mxml_node_t *ua9; - //# 0x10 * flags[9-13] - for (n=0;n<bit_extract(flaggs, 9,13);n++) - { + } + + mxml_node_t *ua9; + //# 0x10 * flags[9-13] + for (n=0;n<bit_extract(flaggs, 9,13);n++) + { TevStages data4; - BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(TevStages)); - ua9 = mxmlNewElement(entries, "TevStage"); + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(TevStages)); + ua9 = mxmlNewElement(entries, "TevStage"); dataa = mxmlNewElement(ua9, "TextureCoordinate"); mxmlNewTextf(dataa, 0, "%02x", data4.texcoord); @@ -1094,12 +1103,12 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) dataa = mxmlNewElement(ua9, "Padding4"); mxmlNewTextf(dataa, 0, "%01x", data4.empty4); - } - - mxml_node_t *uaa; - //# 4 * flags[8] - for (n=0;n<bit_extract(flaggs, 8,8);n++) - { + } + + mxml_node_t *uaa; + //# 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++ ) @@ -1122,9 +1131,9 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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"); + brlyt_alpha_compare data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_alpha_compare)); + uaa = mxmlNewElement(entries, "AlphaCompare"); dataa = mxmlNewElement(uaa, "comp0"); mxmlNewTextf(dataa, 0, "%s", compare[data4.comp0]); dataa = mxmlNewElement(uaa, "comp1"); @@ -1133,12 +1142,12 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) mxmlNewTextf(dataa, 0, "%s", aop[data4.aop]); dataa = mxmlNewElement(uaa, "ref0"); mxmlNewTextf(dataa, 0, "%02x", data4.ref0); dataa = mxmlNewElement(uaa, "ref1"); mxmlNewTextf(dataa, 0, "%02x", data4.ref1); - } + } - mxml_node_t *uab; - //# 4 * flags[7] - for (n=0;n<bit_extract(flaggs, 7,7);n++) - { + mxml_node_t *uab; + //# 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++ ) @@ -1181,9 +1190,9 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) 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"); + brlyt_blend_mode data4; + BRLYT_ReadDataFromMemory(&data4, brlyt_file, sizeof(brlyt_blend_mode)); + uab = mxmlNewElement(entries, "BlendMode"); dataa = mxmlNewElement(uab, "type"); mxmlNewTextf(dataa, 0, "%s", blendmode[data4.type]); @@ -1194,449 +1203,449 @@ void PrintBRLYTEntry_mat1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) dataa = mxmlNewElement(uab, "op"); mxmlNewTextf(dataa, 0, "%s", logicop[data4.op]); - } - BRLYT_fileoffset = tempDataLocation; - } + } + BRLYT_fileoffset = tempDataLocation; + } } void PrintBRLYTEntry_gre1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); } void PrintBRLYTEntry_grs1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); } void PrintBRLYTEntry_pae1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); } void PrintBRLYTEntry_pas1(brlyt_entry entry, u8* brlyt_file, mxml_node_t* tag) { - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); + mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); } void PrintBRLYTEntries(brlyt_entry *entries, int entrycnt, u8* brlyt_file, mxml_node_t *xmlyt) { - int i; - mxml_node_t *tag; - for(i = 0; i < entrycnt; i++) { - tag = mxmlNewElement(xmlyt, "tag"); - if((FourCCsMatch(entries[i].magic, pan1_magic) == 1)) { - PrintBRLYTEntry_pan1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, txt1_magic) == 1)) { - PrintBRLYTEntry_txt1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, pic1_magic) == 1)) { - PrintBRLYTEntry_pic1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, wnd1_magic) == 1)) { - PrintBRLYTEntry_wnd1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, bnd1_magic) == 1)) { - PrintBRLYTEntry_bnd1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, lyt1_magic) == 1)) { - PrintBRLYTEntry_lyt1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, grp1_magic) == 1)) { - PrintBRLYTEntry_grp1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, txl1_magic) == 1)) { - PrintBRLYTEntry_txl1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, fnl1_magic) == 1)) { - PrintBRLYTEntry_fnl1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, mat1_magic) == 1)) { - PrintBRLYTEntry_mat1(entries[i], brlyt_file, tag); - }else if((FourCCsMatch(entries[i].magic, gre1_magic) == 1)) { - 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{ - } - } + int i; + mxml_node_t *tag; + for(i = 0; i < entrycnt; i++) { + tag = mxmlNewElement(xmlyt, "tag"); + if((FourCCsMatch(entries[i].magic, pan1_magic) == 1)) { + PrintBRLYTEntry_pan1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, txt1_magic) == 1)) { + PrintBRLYTEntry_txt1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, pic1_magic) == 1)) { + PrintBRLYTEntry_pic1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, wnd1_magic) == 1)) { + PrintBRLYTEntry_wnd1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, bnd1_magic) == 1)) { + PrintBRLYTEntry_bnd1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, lyt1_magic) == 1)) { + PrintBRLYTEntry_lyt1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, grp1_magic) == 1)) { + PrintBRLYTEntry_grp1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, txl1_magic) == 1)) { + PrintBRLYTEntry_txl1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, fnl1_magic) == 1)) { + PrintBRLYTEntry_fnl1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, mat1_magic) == 1)) { + PrintBRLYTEntry_mat1(entries[i], brlyt_file, tag); + }else if((FourCCsMatch(entries[i].magic, gre1_magic) == 1)) { + 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{ + } + } } void parse_brlyt(char *filename, char *filenameout) { - materials = (char*)malloc(12); - numberOfMaterials = 0; - lengthOfMaterials = 0; - textures = (char*)malloc(12); - numberOfTextures = 0; - lengthOfTextures = 0; - FILE* fp = fopen(filename, "rb"); - if(fp == NULL) { - printf("Error! Couldn't open %s!\n", filename); - exit(1); - } - fseek(fp, 0, SEEK_END); - size_t file_size = ftell(fp); - u8* brlyt_file = (u8*)malloc(file_size); - fseek(fp, 0, SEEK_SET); - fread(brlyt_file, file_size, 1, fp); - fclose(fp); - BRLYT_fileoffset = 0; - brlyt_header header; - BRLYT_ReadDataFromMemory(&header, brlyt_file, sizeof(brlyt_header)); - BRLYT_CheckHeaderSanity(header, file_size); - 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)); - BRLYT_fileoffset += be32(tempentry.length); - } - int entrycount = i; - entries = (brlyt_entry*)calloc(entrycount, sizeof(brlyt_entry)); - 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++) { - BRLYT_ReadDataFromMemoryX(&tempentry, brlyt_file, sizeof(brlyt_entry_header)); - memcpy(entries[i].magic, tempentry.magic, 4); - entries[i].length = tempentry.length; - entries[i].data_location = BRLYT_fileoffset + sizeof(brlyt_entry_header); - BRLYT_fileoffset += be32(tempentry.length); - } + materials = (char*)malloc(12); + numberOfMaterials = 0; + lengthOfMaterials = 0; + textures = (char*)malloc(12); + numberOfTextures = 0; + lengthOfTextures = 0; + FILE* fp = fopen(filename, "rb"); + if(fp == NULL) { + printf("Error! Couldn't open %s!\n", filename); + exit(1); + } + fseek(fp, 0, SEEK_END); + size_t file_size = ftell(fp); + u8* brlyt_file = (u8*)malloc(file_size); + fseek(fp, 0, SEEK_SET); + fread(brlyt_file, file_size, 1, fp); + fclose(fp); + BRLYT_fileoffset = 0; + brlyt_header header; + BRLYT_ReadDataFromMemory(&header, brlyt_file, sizeof(brlyt_header)); + BRLYT_CheckHeaderSanity(header, file_size); + 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)); + BRLYT_fileoffset += be32(tempentry.length); + } + int entrycount = i; + entries = (brlyt_entry*)calloc(entrycount, sizeof(brlyt_entry)); + 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++) { + BRLYT_ReadDataFromMemoryX(&tempentry, brlyt_file, sizeof(brlyt_entry_header)); + memcpy(entries[i].magic, tempentry.magic, 4); + entries[i].length = tempentry.length; + entries[i].data_location = BRLYT_fileoffset + sizeof(brlyt_entry_header); + BRLYT_fileoffset += be32(tempentry.length); + } - FILE *xmlFile; - xmlFile = fopen(filenameout, "w"); - mxml_node_t *xml; - mxml_node_t *xmlyt; - xml = mxmlNewXML("1.0"); - xmlyt = mxmlNewElement(xml, "xmlyt"); - mxmlElementSetAttrf(xmlyt, "version", "%d.%d.%d%s", BENZIN_VERSION_MAJOR, BENZIN_VERSION_MINOR, BENZIN_VERSION_BUILD, BENZIN_VERSION_OTHER); - PrintBRLYTEntries(entries, entrycount, brlyt_file, xmlyt); - mxmlSaveFile(xml, xmlFile, whitespace_cb); - fclose(xmlFile); - mxmlDelete(xml); - free(entries); - free(brlyt_file); - free(materials); - free(textures); + FILE *xmlFile; + xmlFile = fopen(filenameout, "w"); + mxml_node_t *xml; + mxml_node_t *xmlyt; + xml = mxmlNewXML("1.0"); + xmlyt = mxmlNewElement(xml, "xmlyt"); + mxmlElementSetAttrf(xmlyt, "version", "%d.%d.%d%s", BENZIN_VERSION_MAJOR, BENZIN_VERSION_MINOR, BENZIN_VERSION_BUILD, BENZIN_VERSION_OTHER); + PrintBRLYTEntries(entries, entrycount, brlyt_file, xmlyt); + mxmlSaveFile(xml, xmlFile, whitespace_cb); + fclose(xmlFile); + mxmlDelete(xml); + free(entries); + free(brlyt_file); + free(materials); + free(textures); } void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* blobsize, char temp[4], FILE* fp, u32 *fileOffset) { - u32 startOfChunk = *fileOffset; + u32 startOfChunk = *fileOffset; - char lyt1[4] = {'l', 'y', 't', '1'}; - char txl1[4] = {'t', 'x', 'l', '1'}; - char fnl1[4] = {'f', 'n', 'l', '1'}; - char mat1[4] = {'m', 'a', 't', '1'}; - char pan1[4] = {'p', 'a', 'n', '1'}; - char wnd1[4] = {'w', 'n', 'd', '1'}; - char bnd1[4] = {'b', 'n', 'd', '1'}; - char pic1[4] = {'p', 'i', 'c', '1'}; - char txt1[4] = {'t', 'x', 't', '1'}; - char grp1[4] = {'g', 'r', 'p', '1'}; - char grs1[4] = {'g', 'r', 's', '1'}; - char gre1[4] = {'g', 'r', 'e', '1'}; - char pas1[4] = {'p', 'a', 's', '1'}; - char pae1[4] = {'p', 'a', 'e', '1'}; + char lyt1[4] = {'l', 'y', 't', '1'}; + char txl1[4] = {'t', 'x', 'l', '1'}; + char fnl1[4] = {'f', 'n', 'l', '1'}; + char mat1[4] = {'m', 'a', 't', '1'}; + char pan1[4] = {'p', 'a', 'n', '1'}; + char wnd1[4] = {'w', 'n', 'd', '1'}; + char bnd1[4] = {'b', 'n', 'd', '1'}; + char pic1[4] = {'p', 'i', 'c', '1'}; + char txt1[4] = {'t', 'x', 't', '1'}; + char grp1[4] = {'g', 'r', 'p', '1'}; + char grs1[4] = {'g', 'r', 's', '1'}; + char gre1[4] = {'g', 'r', 'e', '1'}; + char pas1[4] = {'p', 'a', 's', '1'}; + char pae1[4] = {'p', 'a', 'e', '1'}; - if ( memcmp(temp, lyt1, sizeof(lyt1)) == 0) - { - brlyt_lytheader_chunk lytheader; + if ( memcmp(temp, lyt1, sizeof(lyt1)) == 0) + { + brlyt_lytheader_chunk lytheader; - mxml_node_t *subnode = mxmlFindElement(node , node , "drawnFromMiddle", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempChar[4]; - get_value(subnode, tempChar, 256); - lytheader.drawnFromMiddle = atoi(tempChar); - lytheader.pad[0]=0;lytheader.pad[1]=0;lytheader.pad[2]=0; - } - subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode = mxmlFindElement(subnode , subnode , "width", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempChar[4]; - get_value(valnode, tempChar, 256); - *(float*)(&(lytheader.width)) = atof(tempChar); - } - valnode = mxmlFindElement(subnode , subnode ,"height", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempChar[4]; - get_value(valnode, tempChar, 256); - - *(float*)(&(lytheader.height)) = atof(tempChar); - } - } - lytheader.pad[0] = 0; lytheader.pad[1] = 0; lytheader.pad[2] = 0; - lytheader.width = float_swap_bytes(lytheader.width); - lytheader.height = float_swap_bytes(lytheader.height); - fwrite(&lytheader, sizeof(brlyt_header), 1, fp); - *fileOffset = *fileOffset + sizeof(lytheader); - } - if ( memcmp(temp, txl1, sizeof(txl1)) == 0) - { - int numoffsOffset = ftell(fp); + mxml_node_t *subnode = mxmlFindElement(node , node , "drawnFromMiddle", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempChar[4]; + get_value(subnode, tempChar, 256); + lytheader.drawnFromMiddle = atoi(tempChar); + lytheader.pad[0]=0;lytheader.pad[1]=0;lytheader.pad[2]=0; + } + subnode = mxmlFindElement(node, node, "size", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode = mxmlFindElement(subnode , subnode , "width", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempChar[4]; + get_value(valnode, tempChar, 256); + *(float*)(&(lytheader.width)) = atof(tempChar); + } + valnode = mxmlFindElement(subnode , subnode ,"height", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempChar[4]; + get_value(valnode, tempChar, 256); + + *(float*)(&(lytheader.height)) = atof(tempChar); + } + } + lytheader.pad[0] = 0; lytheader.pad[1] = 0; lytheader.pad[2] = 0; + lytheader.width = float_swap_bytes(lytheader.width); + lytheader.height = float_swap_bytes(lytheader.height); + fwrite(&lytheader, sizeof(brlyt_header), 1, fp); + *fileOffset = *fileOffset + sizeof(lytheader); + } + if ( memcmp(temp, txl1, sizeof(txl1)) == 0) + { + int numoffsOffset = ftell(fp); + + brlyt_numoffs_chunk chunk; + chunk.num = 0; + chunk.offs = 0; + fwrite(&chunk, sizeof(chunk), 1, fp); + *fileOffset = *fileOffset + sizeof(chunk); + + char *names; + names = malloc(sizeof(names)); + int lengthOfNames = 0; + mxml_node_t *subnode = mxmlFindElement(node, node, "entries", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + int numEntries = 0; - brlyt_numoffs_chunk chunk; - chunk.num = 0; - chunk.offs = 0; - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); + int oldNameLength; + int baseOffset = 0; - char *names; - names = malloc(sizeof(names)); - int lengthOfNames = 0; - mxml_node_t *subnode = mxmlFindElement(node, node, "entries", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - int numEntries = 0; - - int oldNameLength; - int baseOffset = 0; + u32 *offsunks; - u32 *offsunks; + offsunks = malloc(sizeof(u32)); - offsunks = malloc(sizeof(u32)); + 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); - 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); + oldNameLength = lengthOfNames; + lengthOfNames += strlen(tempSub); - oldNameLength = lengthOfNames; - lengthOfNames += strlen(tempSub); + offsunks = realloc(offsunks, (numEntries + 1)*(2 * sizeof(u32))); + if (offsunks == NULL) printf("NULLed by a realloc\n"); + + offsunks[(numEntries*2)+0] = baseOffset; + offsunks[(numEntries*2)+1] = 0; + + *fileOffset = *fileOffset + sizeof(chunk2); + numEntries++; + + baseOffset += (strlen(tempSub) + 1); + + names = realloc(names, 1 + sizeof(char) * lengthOfNames); + strcpy(&names[oldNameLength], tempSub); + char nuller = '\0'; + memcpy(&names[lengthOfNames], &nuller, sizeof(char)); + lengthOfNames += 1; + } + } + chunk.num = short_swap_bytes(numEntries); + chunk.offs = 0; + fseek(fp, numoffsOffset, SEEK_SET); + fwrite(&chunk, sizeof(chunk), 1, fp); - offsunks = realloc(offsunks, (numEntries + 1)*(2 * sizeof(u32))); - if (offsunks == NULL) printf("NULLed by a realloc\n"); + int i; + for(i=0;i<numEntries;i++) { + offsunks[(i*2)+0] = be32(offsunks[(i*2)+0] + (numEntries * 8)); + offsunks[i*2+1] = 0; - offsunks[(numEntries*2)+0] = baseOffset; - offsunks[(numEntries*2)+1] = 0; + fwrite(&offsunks[i*2], sizeof(u32), 1, fp); + fwrite(&offsunks[i*2+1], sizeof(u32), 1, fp); + } + free(offsunks); + } + fseek(fp, *fileOffset, SEEK_SET); + fwrite(names, lengthOfNames, 1, fp); + *fileOffset = *fileOffset + lengthOfNames; + if ((*fileOffset % 4) > 0) + { + u8 toAdd = 4-(*fileOffset % 4); + char nuller[3] = {'\0', '\0', '\0'}; + fwrite(&nuller, sizeof(char), toAdd, fp); + *fileOffset = *fileOffset + toAdd; + } + textures = malloc(lengthOfNames * sizeof(char)); + memcpy(textures, names, lengthOfNames * sizeof(char)); + free(names); + } + if ( memcmp(temp, fnl1, sizeof(fnl1)) == 0) + { + brlyt_numoffs_chunk chunk; + chunk.num = 0; + chunk.offs = 0; + fwrite(&chunk, sizeof(chunk), 1, fp); + *fileOffset = *fileOffset + sizeof(chunk); - *fileOffset = *fileOffset + sizeof(chunk2); - numEntries++; - - baseOffset += (strlen(tempSub) + 1); + char *names; + names = malloc(sizeof(char)); + int lengthOfNames = 0; + mxml_node_t *subnode = mxmlFindElement(node, node, "entries", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + int numEntries = 0; - names = realloc(names, 1 + sizeof(char) * lengthOfNames); - strcpy(&names[oldNameLength], tempSub); - char nuller = '\0'; - memcpy(&names[lengthOfNames], &nuller, sizeof(char)); - lengthOfNames += 1; - } - } - chunk.num = short_swap_bytes(numEntries); - chunk.offs = 0; - fseek(fp, numoffsOffset, SEEK_SET); - fwrite(&chunk, sizeof(chunk), 1, fp); + int oldNameLength; + int baseOffset = 0; + int numoffsOffset = *fileOffset - 4; - int i; - for(i=0;i<numEntries;i++) { - offsunks[(i*2)+0] = be32(offsunks[(i*2)+0] + (numEntries * 8)); - offsunks[i*2+1] = 0; + u32 *offsunks; + offsunks = malloc(sizeof(u32)); - fwrite(&offsunks[i*2], sizeof(u32), 1, fp); - fwrite(&offsunks[i*2+1], sizeof(u32), 1, fp); - } - free(offsunks); - } - fseek(fp, *fileOffset, SEEK_SET); - fwrite(names, lengthOfNames, 1, fp); - *fileOffset = *fileOffset + lengthOfNames; - if ((*fileOffset % 4) > 0) - { - u8 toAdd = 4-(*fileOffset % 4); - char nuller[3] = {'\0', '\0', '\0'}; - fwrite(&nuller, sizeof(char), toAdd, fp); - *fileOffset = *fileOffset + toAdd; - } - textures = malloc(lengthOfNames * sizeof(char)); - memcpy(textures, names, lengthOfNames * sizeof(char)); - free(names); - } - if ( memcmp(temp, fnl1, sizeof(fnl1)) == 0) - { - brlyt_numoffs_chunk chunk; - chunk.num = 0; - chunk.offs = 0; - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); + 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); - char *names; - names = malloc(sizeof(char)); - int lengthOfNames = 0; - mxml_node_t *subnode = mxmlFindElement(node, node, "entries", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - int numEntries = 0; + oldNameLength = lengthOfNames; + lengthOfNames += strlen(tempSub); - int oldNameLength; - int baseOffset = 0; - int numoffsOffset = *fileOffset - 4; + offsunks = realloc(offsunks, (numEntries + 1)*(2 * sizeof(u32))); + offsunks[(numEntries*2)+0] = baseOffset; + offsunks[(numEntries*2)+1] = 0; - u32 *offsunks; - offsunks = malloc(sizeof(u32)); + *fileOffset = *fileOffset + sizeof(chunk2); + numEntries++; - 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); + baseOffset += (strlen(tempSub) + 1); + names = realloc(names, 1 + sizeof(char) * lengthOfNames); + memcpy(&names[oldNameLength], tempSub, strlen(tempSub)); + char nuller = '\0'; + memcpy(&names[lengthOfNames], &nuller, sizeof(char)); + lengthOfNames += 1; + } + } + chunk.num = short_swap_bytes(numEntries); + chunk.offs = 0; + fseek(fp, numoffsOffset, SEEK_SET); + fwrite(&chunk, sizeof(chunk), 1, fp); - oldNameLength = lengthOfNames; - lengthOfNames += strlen(tempSub); + int i; + for(i=0;i<numEntries;i++) { + offsunks[(i*2)+0] = be32(offsunks[(i*2)+0] + (numEntries * 8)); + offsunks[i*2+1] = 0; - offsunks = realloc(offsunks, (numEntries + 1)*(2 * sizeof(u32))); - offsunks[(numEntries*2)+0] = baseOffset; - offsunks[(numEntries*2)+1] = 0; + fwrite(&offsunks[i*2], sizeof(u32), 1, fp); + fwrite(&offsunks[i*2+1], sizeof(u32), 1, fp); + } + free(offsunks); + } + fseek(fp, *fileOffset, SEEK_SET); + fwrite(names, lengthOfNames, 1, fp); + *fileOffset = *fileOffset + lengthOfNames; + if ((*fileOffset % 4) > 0) + { + u8 toAdd = 4-(*fileOffset % 4); + char nuller[3] = {'\0', '\0', '\0'}; + fwrite(&nuller, sizeof(char), toAdd, fp); + *fileOffset = *fileOffset + toAdd; + } + free(names); + } + if ( memcmp(temp, mat1, sizeof(mat1)) == 0) + { + int numberOfEntries = 0; + int actualNumber = 0; + brlyt_numoffs_chunk numchunk; + brlyt_material_chunk chunk; + mxml_node_t *subnode; + for(subnode=mxmlFindElement(node, node, "entries", NULL, NULL, MXML_DESCEND);subnode!=NULL;subnode=mxmlFindElement(subnode, node, "entries", NULL, NULL, MXML_DESCEND)) + numberOfEntries++; - *fileOffset = *fileOffset + sizeof(chunk2); - numEntries++; - - baseOffset += (strlen(tempSub) + 1); - names = realloc(names, 1 + sizeof(char) * lengthOfNames); - memcpy(&names[oldNameLength], tempSub, strlen(tempSub)); - char nuller = '\0'; - memcpy(&names[lengthOfNames], &nuller, sizeof(char)); - lengthOfNames += 1; - } - } - chunk.num = short_swap_bytes(numEntries); - chunk.offs = 0; - fseek(fp, numoffsOffset, SEEK_SET); - fwrite(&chunk, sizeof(chunk), 1, fp); + numchunk.num = short_swap_bytes(numberOfEntries); + numchunk.offs = 0; + fwrite(&numchunk, sizeof(numchunk), 1, fp); + *fileOffset = *fileOffset + sizeof(numchunk); - int i; - for(i=0;i<numEntries;i++) { - offsunks[(i*2)+0] = be32(offsunks[(i*2)+0] + (numEntries * 8)); - offsunks[i*2+1] = 0; + int *offsets = calloc(numberOfEntries, sizeof(int)); + int offsetsOffset = ftell(fp); + int materialOffset = 0; + actualNumber = numberOfEntries; + numberOfEntries = 0; + int matSize = 0; + int initialOffset = sizeof(numchunk) + 8 + (actualNumber * sizeof(int)); - fwrite(&offsunks[i*2], sizeof(u32), 1, fp); - fwrite(&offsunks[i*2+1], sizeof(u32), 1, fp); - } - free(offsunks); - } - fseek(fp, *fileOffset, SEEK_SET); - fwrite(names, lengthOfNames, 1, fp); - *fileOffset = *fileOffset + lengthOfNames; - if ((*fileOffset % 4) > 0) - { - u8 toAdd = 4-(*fileOffset % 4); - char nuller[3] = {'\0', '\0', '\0'}; - fwrite(&nuller, sizeof(char), toAdd, fp); - *fileOffset = *fileOffset + toAdd; - } - free(names); - } - if ( memcmp(temp, mat1, sizeof(mat1)) == 0) - { - int numberOfEntries = 0; - int actualNumber = 0; - brlyt_numoffs_chunk numchunk; - brlyt_material_chunk chunk; - mxml_node_t *subnode; - for(subnode=mxmlFindElement(node, node, "entries", NULL, NULL, MXML_DESCEND);subnode!=NULL;subnode=mxmlFindElement(subnode, node, "entries", NULL, NULL, MXML_DESCEND)) - numberOfEntries++; + offsets[numberOfEntries] = be32(matSize + initialOffset); + fwrite(&offsets[0], sizeof(int), actualNumber, fp); + *fileOffset = *fileOffset + (actualNumber * 4); - numchunk.num = short_swap_bytes(numberOfEntries); - numchunk.offs = 0; - fwrite(&numchunk, sizeof(numchunk), 1, fp); - *fileOffset = *fileOffset + sizeof(numchunk); + for(subnode=mxmlFindElement(node,node,"entries",NULL,NULL,MXML_DESCEND);subnode!=NULL;subnode=mxmlFindElement(subnode,node,"entries",NULL,NULL,MXML_DESCEND)) + { + numberOfEntries += 1; + char temp[256]; + if(mxmlElementGetAttr(subnode, "name") != NULL) + strcpy(temp, mxmlElementGetAttr(subnode, "name")); + else{ + printf("No name attribute found!\nQuitting!\n"); + exit(1); + } + memset(chunk.name, 0, 20); + strcpy(chunk.name, temp); - int *offsets = calloc(numberOfEntries, sizeof(int)); - int offsetsOffset = ftell(fp); - int materialOffset = 0; - actualNumber = numberOfEntries; - numberOfEntries = 0; - int matSize = 0; - int initialOffset = sizeof(numchunk) + 8 + (actualNumber * sizeof(int)); + materials = realloc(materials, lengthOfMaterials + strlen(chunk.name) + 1); + memcpy(&materials[lengthOfMaterials], chunk.name, strlen(chunk.name) + 1); + lengthOfMaterials += (1 + strlen(chunk.name)); + numberOfMaterials += 1; - offsets[numberOfEntries] = be32(matSize + initialOffset); - fwrite(&offsets[0], sizeof(int), actualNumber, fp); - *fileOffset = *fileOffset + (actualNumber * 4); + mxml_node_t *setnode; + setnode = mxmlFindElement(subnode, subnode, "colors", NULL, NULL, MXML_DESCEND); + if (setnode != NULL) + { + mxml_node_t *valnode; + int colorNumber = 0; + for (valnode=mxmlFindElement(setnode, setnode, "forecolor", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "forecolor", NULL, NULL, MXML_DESCEND) ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); - for(subnode=mxmlFindElement(node,node,"entries",NULL,NULL,MXML_DESCEND);subnode!=NULL;subnode=mxmlFindElement(subnode,node,"entries",NULL,NULL,MXML_DESCEND)) - { - numberOfEntries += 1; - char temp[256]; - if(mxmlElementGetAttr(subnode, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(subnode, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - memset(chunk.name, 0, 20); - strcpy(chunk.name, temp); + chunk.forecolor[colorNumber] = strtol(tempCoord, NULL, 10); + chunk.forecolor[colorNumber] = short_swap_bytes(chunk.forecolor[colorNumber]); - materials = realloc(materials, lengthOfMaterials + strlen(chunk.name) + 1); - memcpy(&materials[lengthOfMaterials], chunk.name, strlen(chunk.name) + 1); - lengthOfMaterials += (1 + strlen(chunk.name)); - numberOfMaterials += 1; + colorNumber+=1; + } + colorNumber = 0; + for (valnode=mxmlFindElement(setnode, setnode, "backcolor", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "backcolor", NULL, NULL, MXML_DESCEND) ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); - mxml_node_t *setnode; - setnode = mxmlFindElement(subnode, subnode, "colors", NULL, NULL, MXML_DESCEND); - if (setnode != NULL) - { - mxml_node_t *valnode; - int colorNumber = 0; - for (valnode=mxmlFindElement(setnode, setnode, "forecolor", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "forecolor", NULL, NULL, MXML_DESCEND) ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - - chunk.forecolor[colorNumber] = strtol(tempCoord, NULL, 10); - chunk.forecolor[colorNumber] = short_swap_bytes(chunk.forecolor[colorNumber]); + chunk.backcolor[colorNumber] = strtol(tempCoord, NULL, 10); + chunk.backcolor[colorNumber] = short_swap_bytes(chunk.backcolor[colorNumber]); - colorNumber+=1; - } - colorNumber = 0; - for (valnode=mxmlFindElement(setnode, setnode, "backcolor", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "backcolor", NULL, NULL, MXML_DESCEND) ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - - chunk.backcolor[colorNumber] = strtol(tempCoord, NULL, 10); - chunk.backcolor[colorNumber] = short_swap_bytes(chunk.backcolor[colorNumber]); + colorNumber+=1; + } + colorNumber = 0; + for (valnode=mxmlFindElement(setnode, setnode, "colorReg3", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "colorReg3", NULL, NULL, MXML_DESCEND) ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); - colorNumber+=1; - } - colorNumber = 0; - for (valnode=mxmlFindElement(setnode, setnode, "colorReg3", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "colorReg3", NULL, NULL, MXML_DESCEND) ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - - chunk.colorReg3[colorNumber] = strtol(tempCoord, NULL, 10); - chunk.colorReg3[colorNumber] = short_swap_bytes(chunk.colorReg3[colorNumber]); + chunk.colorReg3[colorNumber] = strtol(tempCoord, NULL, 10); + chunk.colorReg3[colorNumber] = short_swap_bytes(chunk.colorReg3[colorNumber]); - colorNumber+=1; - } - colorNumber = 0; - for (valnode=mxmlFindElement(setnode, setnode, "tev_k", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "tev_k", NULL, NULL, MXML_DESCEND) ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk.tev_kcolor[colorNumber] = be32(strtoul(tempCoord, NULL, 16)); - colorNumber+=1; - } - } + colorNumber+=1; + } + colorNumber = 0; + for (valnode=mxmlFindElement(setnode, setnode, "tev_k", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "tev_k", NULL, NULL, MXML_DESCEND) ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk.tev_kcolor[colorNumber] = be32(strtoul(tempCoord, NULL, 16)); + colorNumber+=1; + } + } /* - setnode = mxmlFindElement(subnode,subnode,"flags",NULL,NULL,MXML_DESCEND); - if (setnode != NULL) - { - char tempCoord[256]; - get_value(setnode, tempCoord, 256); - chunk.flags = be32(strtoul(tempCoord, NULL, 16)); - } + setnode = mxmlFindElement(subnode,subnode,"flags",NULL,NULL,MXML_DESCEND); + if (setnode != NULL) + { + char tempCoord[256]; + get_value(setnode, tempCoord, 256); + chunk.flags = be32(strtoul(tempCoord, NULL, 16)); + } */ u32 tempFileOffset = ftell(fp); @@ -1644,24 +1653,24 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flags = 0; chunk.flags = 0; - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); - matSize += sizeof(chunk); + fwrite(&chunk, sizeof(chunk), 1, fp); + *fileOffset = *fileOffset + sizeof(chunk); + matSize += sizeof(chunk); - 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)) - { - mxml_node_t *valnode; - char temp[256]; - if(mxmlElementGetAttr(setnode, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(setnode, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - chunkTexRef.tex_offs = short_swap_bytes(findTexOffset(temp)); + 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)) + { + mxml_node_t *valnode; + char temp[256]; + if(mxmlElementGetAttr(setnode, "name") != NULL) + strcpy(temp, mxmlElementGetAttr(setnode, "name")); + else{ + printf("No name attribute found!\nQuitting!\n"); + exit(1); + } + chunkTexRef.tex_offs = short_swap_bytes(findTexOffset(temp)); - valnode=mxmlFindElement(setnode, setnode, "wrap_s", NULL, NULL, MXML_DESCEND); + valnode=mxmlFindElement(setnode, setnode, "wrap_s", NULL, NULL, MXML_DESCEND); char wraps[4][20]; int l; @@ -1672,8 +1681,8 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( wraps[2] , "GX_MIRROR" ); strcpy( wraps[3] , "GX_MAXTEXWRAPMODE" ); - char tempCoord[256]; - get_value(valnode, tempCoord, 256); + char tempCoord[256]; + get_value(valnode, tempCoord, 256); chunkTexRef.wrap_s = strtoul(tempCoord, NULL, 16); for ( l = 0 ; l < 4 ; l++ ) { if ( strncmp( wraps[l] , tempCoord , 17 ) == 0 ) { @@ -1682,9 +1691,9 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl } } - valnode=mxmlFindElement(setnode, setnode, "wrap_t", NULL, NULL, MXML_DESCEND); + valnode=mxmlFindElement(setnode, setnode, "wrap_t", NULL, NULL, MXML_DESCEND); - get_value(valnode, tempCoord, 256); + get_value(valnode, tempCoord, 256); chunkTexRef.wrap_t = strtoul(tempCoord, NULL, 16); for ( l = 0 ; l < 4 ; l++ ) { if ( strncmp( wraps[l] , tempCoord , 17 ) == 0 ) { @@ -1695,47 +1704,47 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.Texture++; - fwrite(&chunkTexRef, sizeof(chunkTexRef), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkTexRef); - matSize += sizeof(chunkTexRef); - } + fwrite(&chunkTexRef, sizeof(chunkTexRef), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkTexRef); + matSize += sizeof(chunkTexRef); + } - brlyt_tex_srt chunkTexCoords; - for(setnode = mxmlFindElement(subnode, subnode, "TextureSRT", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "TextureSRT", NULL, NULL, MXML_DESCEND)) - { - char tempCoord[256]; - mxml_node_t *valnode; - valnode=mxmlFindElement(setnode, setnode, "XTrans", NULL, NULL, MXML_DESCEND); + brlyt_tex_srt chunkTexCoords; + for(setnode = mxmlFindElement(subnode, subnode, "TextureSRT", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "TextureSRT", NULL, NULL, MXML_DESCEND)) + { + char tempCoord[256]; + mxml_node_t *valnode; + valnode=mxmlFindElement(setnode, setnode, "XTrans", NULL, NULL, MXML_DESCEND); memset(tempCoord, 0, 256); - get_value(valnode, tempCoord, 256); - chunkTexCoords.XTrans = float_swap_bytes(atof(tempCoord)); - valnode=mxmlFindElement(setnode, setnode, "YTrans", NULL, NULL, MXML_DESCEND); + get_value(valnode, tempCoord, 256); + chunkTexCoords.XTrans = float_swap_bytes(atof(tempCoord)); + valnode=mxmlFindElement(setnode, setnode, "YTrans", NULL, NULL, MXML_DESCEND); memset(tempCoord, 0, 256); - get_value(valnode, tempCoord, 256); - chunkTexCoords.YTrans = float_swap_bytes(atof(tempCoord)); - valnode=mxmlFindElement(setnode, setnode, "Rotate", NULL, NULL, MXML_DESCEND); + get_value(valnode, tempCoord, 256); + chunkTexCoords.YTrans = float_swap_bytes(atof(tempCoord)); + valnode=mxmlFindElement(setnode, setnode, "Rotate", NULL, NULL, MXML_DESCEND); memset(tempCoord, 0, 256); - get_value(valnode, tempCoord, 256); - chunkTexCoords.Rotate = float_swap_bytes(atof(tempCoord)); - valnode=mxmlFindElement(setnode, setnode, "XScale", NULL, NULL, MXML_DESCEND); + get_value(valnode, tempCoord, 256); + chunkTexCoords.Rotate = float_swap_bytes(atof(tempCoord)); + valnode=mxmlFindElement(setnode, setnode, "XScale", NULL, NULL, MXML_DESCEND); memset(tempCoord, 0, 256); - get_value(valnode, tempCoord, 256); - chunkTexCoords.XScale = float_swap_bytes(atof(tempCoord)); - valnode=mxmlFindElement(setnode, setnode, "YScale", NULL, NULL, MXML_DESCEND); + get_value(valnode, tempCoord, 256); + chunkTexCoords.XScale = float_swap_bytes(atof(tempCoord)); + valnode=mxmlFindElement(setnode, setnode, "YScale", NULL, NULL, MXML_DESCEND); memset(tempCoord, 0, 256); - get_value(valnode, tempCoord, 256); - chunkTexCoords.YScale = float_swap_bytes(atof(tempCoord)); + get_value(valnode, tempCoord, 256); + chunkTexCoords.YScale = float_swap_bytes(atof(tempCoord)); flags.flag.TexSRT++; - fwrite(&chunkTexCoords, sizeof(chunkTexCoords), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkTexCoords); - matSize += sizeof(chunkTexCoords); - } + fwrite(&chunkTexCoords, sizeof(chunkTexCoords), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkTexCoords); + matSize += sizeof(chunkTexCoords); + } - 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)) - { + 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++ ) @@ -1823,7 +1832,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( mtxsrc[40] , "GX_DTTMTX19" ); strcpy( mtxsrc[41] , "GX_DTTIDENTITY" ); // actually 125 not 124 - mxml_node_t *valnode; + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "tgen_type", NULL, NULL, MXML_DESCEND); @@ -1869,14 +1878,14 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.TexCoord++; - fwrite(&chunkUa3, sizeof(chunkUa3), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa3); - matSize += sizeof(chunkUa3); - } + fwrite(&chunkUa3, sizeof(chunkUa3), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa3); + matSize += sizeof(chunkUa3); + } - 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)) - { + 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++ ) @@ -1884,7 +1893,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( matsrc[0] , "GX_SRC_REG" ); strcpy( matsrc[1] , "GX_SRC_VTX" ); - mxml_node_t *valnode; + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "ColorMatSource", NULL, NULL, MXML_DESCEND); @@ -1925,15 +1934,15 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.ua4++; - fwrite(&chunkUa4, sizeof(chunkUa4), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa4); - matSize += sizeof(chunkUa4); - } + fwrite(&chunkUa4, sizeof(chunkUa4), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa4); + matSize += sizeof(chunkUa4); + } - brlyt_tex_matcol chunkUa5; - for(setnode = mxmlFindElement(subnode, subnode, "MaterialColor", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "MaterialColor", NULL, NULL, MXML_DESCEND)) - { - mxml_node_t *valnode; + brlyt_tex_matcol chunkUa5; + for(setnode = mxmlFindElement(subnode, subnode, "MaterialColor", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "MaterialColor", NULL, NULL, MXML_DESCEND)) + { + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "red", NULL, NULL, MXML_DESCEND); @@ -1958,13 +1967,13 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.ua5++; - fwrite(&chunkUa5, sizeof(chunkUa5), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa5); - matSize += sizeof(chunkUa5); - } - 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)) - { + fwrite(&chunkUa5, sizeof(chunkUa5), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa5); + matSize += sizeof(chunkUa5); + } + 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++ ) @@ -1974,7 +1983,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( tevcolor[2] , "GX_CH_BLUE" ); strcpy( tevcolor[3] , "GX_CH_ALPHA" ); - mxml_node_t *valnode; + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "OneRed", NULL, NULL, MXML_DESCEND); @@ -2163,60 +2172,60 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.ua6++; - fwrite(&chunkUa6, sizeof(chunkUa6), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa6); - matSize += sizeof(chunkUa6); - } + fwrite(&chunkUa6, sizeof(chunkUa6), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa6); + matSize += sizeof(chunkUa6); + } - brlyt_indtex_srt chunkUa7; - for(setnode = mxmlFindElement(subnode, subnode, "IndTextureSRT", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "IndTextureSRT", NULL, NULL, MXML_DESCEND)) - { - mxml_node_t *valnode; - valnode=mxmlFindElement(setnode, setnode, "XTrans", NULL, NULL, MXML_DESCEND); - if ( valnode != NULL ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunkUa7.XTrans = float_swap_bytes(atof(tempCoord)); - } - valnode=mxmlFindElement(setnode, setnode, "YTrans", NULL, NULL, MXML_DESCEND); - if ( valnode != NULL ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunkUa7.YTrans = float_swap_bytes(atof(tempCoord)); - } - valnode=mxmlFindElement(setnode, setnode, "Rotate", NULL, NULL, MXML_DESCEND); - if ( valnode != NULL ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunkUa7.Rotate = float_swap_bytes(atof(tempCoord)); - } - valnode=mxmlFindElement(setnode, setnode, "XScale", NULL, NULL, MXML_DESCEND); - if ( valnode != NULL ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunkUa7.XScale = float_swap_bytes(atof(tempCoord)); - } - valnode=mxmlFindElement(setnode, setnode, "YScale", NULL, NULL, MXML_DESCEND); - if ( valnode != NULL ) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunkUa7.YScale = float_swap_bytes(atof(tempCoord)); - } + brlyt_indtex_srt chunkUa7; + for(setnode = mxmlFindElement(subnode, subnode, "IndTextureSRT", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "IndTextureSRT", NULL, NULL, MXML_DESCEND)) + { + mxml_node_t *valnode; + valnode=mxmlFindElement(setnode, setnode, "XTrans", NULL, NULL, MXML_DESCEND); + if ( valnode != NULL ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunkUa7.XTrans = float_swap_bytes(atof(tempCoord)); + } + valnode=mxmlFindElement(setnode, setnode, "YTrans", NULL, NULL, MXML_DESCEND); + if ( valnode != NULL ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunkUa7.YTrans = float_swap_bytes(atof(tempCoord)); + } + valnode=mxmlFindElement(setnode, setnode, "Rotate", NULL, NULL, MXML_DESCEND); + if ( valnode != NULL ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunkUa7.Rotate = float_swap_bytes(atof(tempCoord)); + } + valnode=mxmlFindElement(setnode, setnode, "XScale", NULL, NULL, MXML_DESCEND); + if ( valnode != NULL ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunkUa7.XScale = float_swap_bytes(atof(tempCoord)); + } + valnode=mxmlFindElement(setnode, setnode, "YScale", NULL, NULL, MXML_DESCEND); + if ( valnode != NULL ) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunkUa7.YScale = float_swap_bytes(atof(tempCoord)); + } flags.flag.ua7++; - fwrite(&chunkUa7, sizeof(chunkUa7), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa7); - matSize += sizeof(chunkUa7); - } - 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)) - { + fwrite(&chunkUa7, sizeof(chunkUa7), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa7); + matSize += sizeof(chunkUa7); + } + 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++ ) @@ -2232,7 +2241,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( scale[8] , "GX_ITS_256" ); strcpy( scale[9] , "GX_MAX_ITSCALE" ); - mxml_node_t *valnode; + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "TextureCoordinate", NULL, NULL, MXML_DESCEND); @@ -2269,15 +2278,15 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.ua8++; - fwrite(&chunkUa8, sizeof(chunkUa8), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa8); - matSize += sizeof(chunkUa8); - } + fwrite(&chunkUa8, sizeof(chunkUa8), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa8); + matSize += sizeof(chunkUa8); + } TevStages chunkUa9; - for (setnode = mxmlFindElement(subnode, subnode, "TevStage", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "TevStage", NULL, NULL, MXML_DESCEND)) - { - mxml_node_t *valnode; + for (setnode = mxmlFindElement(subnode, subnode, "TevStage", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "TevStage", NULL, NULL, MXML_DESCEND)) + { + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "TextureCoordinate", NULL, NULL, MXML_DESCEND); @@ -2478,14 +2487,14 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.ua9++; - fwrite(&chunkUa9, sizeof(chunkUa9), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUa9); - matSize += sizeof(chunkUa9); - } + fwrite(&chunkUa9, sizeof(chunkUa9), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUa9); + matSize += sizeof(chunkUa9); + } - 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)) - { + 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++ ) @@ -2508,7 +2517,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( aop[3] , "GX_AOP_XNOR" ); strcpy( aop[4] , "GX_MAX_ALPHAOP" ); - mxml_node_t *valnode; + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "comp0", NULL, NULL, MXML_DESCEND); @@ -2556,14 +2565,14 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.uaa++; - fwrite(&chunkUaa, sizeof(chunkUaa), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUaa); - matSize += sizeof(chunkUaa); - } + fwrite(&chunkUaa, sizeof(chunkUaa), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUaa); + matSize += sizeof(chunkUaa); + } - 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)) - { + 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++ ) @@ -2606,7 +2615,7 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( logicop[14] , "GX_LO_NAND" ); strcpy( logicop[15] , "GX_LO_SET" ); - mxml_node_t *valnode; + mxml_node_t *valnode; char tempCoord[256]; valnode=mxmlFindElement(setnode, setnode, "type", NULL, NULL, MXML_DESCEND); @@ -2655,161 +2664,161 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl flags.flag.uab++; - fwrite(&chunkUab, sizeof(chunkUab), 1, fp); - *fileOffset = *fileOffset + sizeof(chunkUab); - matSize += sizeof(chunkUab); - } + fwrite(&chunkUab, sizeof(chunkUab), 1, fp); + *fileOffset = *fileOffset + sizeof(chunkUab); + matSize += sizeof(chunkUab); + } // write mat1_header with flags chunk.flags = be32( flags.flags ); u32 end = ftell(fp); fseek( fp , tempFileOffset , SEEK_SET ); - fwrite(&chunk, sizeof(chunk), 1, fp); + fwrite(&chunk, sizeof(chunk), 1, fp); fseek( fp , end , SEEK_SET ); - if (numberOfEntries < actualNumber) - { - offsets[numberOfEntries] = be32(matSize + initialOffset); - materialOffset = ftell(fp); - fseek(fp, offsetsOffset+(numberOfEntries * sizeof(int)), SEEK_SET); - fwrite(&offsets[numberOfEntries], sizeof(int), 1, fp); - fseek(fp, materialOffset, SEEK_SET); - initialOffset += matSize; - matSize = 0; - } - } - free(offsets); - } - 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); + if (numberOfEntries < actualNumber) + { + offsets[numberOfEntries] = be32(matSize + initialOffset); + materialOffset = ftell(fp); + fseek(fp, offsetsOffset+(numberOfEntries * sizeof(int)), SEEK_SET); + fwrite(&offsets[numberOfEntries], sizeof(int), 1, fp); + fseek(fp, materialOffset, SEEK_SET); + initialOffset += matSize; + matSize = 0; + } + } + free(offsets); + } + 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)); + } + } - 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 ); - } + 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) - { + subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { char origins[9][15]; memset( origins , 0 , 8 * 20 ); strcpy( origins[0] , "TOP LEFT" ); @@ -2822,9 +2831,9 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( origins[7] , "BOTTOM CENTER" ); strcpy( origins[8] , "BOTTOM RIGHT" ); - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); + 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 ) { @@ -2832,154 +2841,154 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl 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); - } - 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); + } + 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); + } + 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)); + } + } - 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 ); - } + 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) - { + subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { char origins[9][15]; memset( origins , 0 , 8 * 20 ); strcpy( origins[0] , "TOP LEFT" ); @@ -2992,9 +3001,9 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( origins[7] , "BOTTOM CENTER" ); strcpy( origins[8] , "BOTTOM RIGHT" ); - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); + 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 ) { @@ -3002,154 +3011,154 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl 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); - } - 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); + } + 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); + } + 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)); + } + } - 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 ); - } + 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) - { + subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { char origins[9][15]; memset( origins , 0 , 8 * 20 ); strcpy( origins[0] , "TOP LEFT" ); @@ -3162,9 +3171,9 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( origins[7] , "BOTTOM CENTER" ); strcpy( origins[8] , "BOTTOM RIGHT" ); - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); + 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 ) { @@ -3172,304 +3181,304 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl 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); + } + 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); - int i; - brlyt_wnd wndy; - subnode = mxmlFindElement(node, node, "wnd", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - i = 0; - mxml_node_t *subsubnode; - for(subsubnode = mxmlFindElement(subnode, subnode, "coordinate", NULL, NULL, MXML_DESCEND); subsubnode != NULL; subsubnode = mxmlFindElement(subsubnode, subnode, "coordinate", NULL, NULL, MXML_DESCEND)) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy.coords[i] = float_swap_bytes(atof(tempCoord)); - i++; - } - subsubnode = mxmlFindElement(subnode, subnode, "FrameCount", NULL, NULL, MXML_DESCEND); - if(subsubnode != NULL) - { - - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy.frame_count = (u8)(strtoul(tempCoord, NULL, 16)); - } - wndy.padding[0] = 0x0; - wndy.padding[1] = 0x0; - wndy.padding[2] = 0x0; + int i; + brlyt_wnd wndy; + subnode = mxmlFindElement(node, node, "wnd", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + i = 0; + mxml_node_t *subsubnode; + for(subsubnode = mxmlFindElement(subnode, subnode, "coordinate", NULL, NULL, MXML_DESCEND); subsubnode != NULL; subsubnode = mxmlFindElement(subsubnode, subnode, "coordinate", NULL, NULL, MXML_DESCEND)) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy.coords[i] = float_swap_bytes(atof(tempCoord)); + i++; + } + subsubnode = mxmlFindElement(subnode, subnode, "FrameCount", NULL, NULL, MXML_DESCEND); + if(subsubnode != NULL) + { - subsubnode = mxmlFindElement(subnode, subnode, "offset1", NULL, NULL, MXML_DESCEND); - if(subsubnode != NULL) - { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy.frame_count = (u8)(strtoul(tempCoord, NULL, 16)); + } + wndy.padding[0] = 0x0; + wndy.padding[1] = 0x0; + wndy.padding[2] = 0x0; - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy.offset1 = be32(strtoul(tempCoord, NULL, 16)); - } - subsubnode = mxmlFindElement(subnode, subnode, "offset2", NULL, NULL, MXML_DESCEND); - if(subsubnode != NULL) - { + subsubnode = mxmlFindElement(subnode, subnode, "offset1", NULL, NULL, MXML_DESCEND); + if(subsubnode != NULL) + { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy.offset2 = be32(strtoul(tempCoord, NULL, 16)); - } - fwrite(&wndy, sizeof(brlyt_wnd), 1, fp); - *fileOffset = *fileOffset + sizeof(brlyt_wnd); - } + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy.offset1 = be32(strtoul(tempCoord, NULL, 16)); + } + subsubnode = mxmlFindElement(subnode, subnode, "offset2", NULL, NULL, MXML_DESCEND); + if(subsubnode != NULL) + { + + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy.offset2 = be32(strtoul(tempCoord, NULL, 16)); + } + fwrite(&wndy, sizeof(brlyt_wnd), 1, fp); + *fileOffset = *fileOffset + sizeof(brlyt_wnd); + } + + brlyt_wnd1 wndy1; + subnode = mxmlFindElement(node, node, "wnd1", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + i=0; + mxml_node_t *subsubnode; + for(subsubnode = mxmlFindElement(subnode, subnode, "color", NULL, NULL, MXML_DESCEND); subsubnode != NULL; subsubnode = mxmlFindElement(subsubnode, subnode, "color", NULL, NULL, MXML_DESCEND)) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy1.colors[i] = be32(strtoul(tempCoord, NULL, 16)); + i++; + } + subsubnode = mxmlFindElement(subnode, subnode, "material", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy1.material = short_swap_bytes(strtoul(tempCoord, NULL, 16)); + } + subsubnode = mxmlFindElement(subnode, subnode, "CoordinateCount", NULL, NULL, MXML_DESCEND); + if (subsubnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy1.coordinate_count = short_swap_bytes(strtoul(tempCoord, NULL, 16)); + } + subsubnode = mxmlFindElement(subnode, subnode, "padding", NULL, NULL, MXML_DESCEND); + if (subsubnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy1.padding = short_swap_bytes(strtoul(tempCoord, NULL, 16)); + } + fwrite(&wndy1, sizeof(brlyt_wnd1), 1, fp); + *fileOffset = *fileOffset + sizeof(brlyt_wnd1); + } - brlyt_wnd1 wndy1; - subnode = mxmlFindElement(node, node, "wnd1", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - i=0; - mxml_node_t *subsubnode; - for(subsubnode = mxmlFindElement(subnode, subnode, "color", NULL, NULL, MXML_DESCEND); subsubnode != NULL; subsubnode = mxmlFindElement(subsubnode, subnode, "color", NULL, NULL, MXML_DESCEND)) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy1.colors[i] = be32(strtoul(tempCoord, NULL, 16)); - i++; - } - subsubnode = mxmlFindElement(subnode, subnode, "material", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy1.material = short_swap_bytes(strtoul(tempCoord, NULL, 16)); - } - subsubnode = mxmlFindElement(subnode, subnode, "CoordinateCount", NULL, NULL, MXML_DESCEND); - if (subsubnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy1.coordinate_count = short_swap_bytes(strtoul(tempCoord, NULL, 16)); - } - subsubnode = mxmlFindElement(subnode, subnode, "padding", NULL, NULL, MXML_DESCEND); - if (subsubnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy1.padding = short_swap_bytes(strtoul(tempCoord, NULL, 16)); - } - fwrite(&wndy1, sizeof(brlyt_wnd1), 1, fp); - *fileOffset = *fileOffset + sizeof(brlyt_wnd1); - } + brlyt_wnd3 wndy3; + subnode = mxmlFindElement(node, node, "Coords", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + i=0; + mxml_node_t *subsubnode; + for(subsubnode = mxmlFindElement(subnode, subnode, "texcoord", NULL, NULL, MXML_DESCEND); subsubnode != NULL; subsubnode = mxmlFindElement(subsubnode, subnode, "texcoord", NULL, NULL, MXML_DESCEND)) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy3.texcoords[i] = float_swap_bytes(atof(tempCoord)); + i++; + } + fwrite(&wndy3, sizeof(brlyt_wnd3), 1, fp); + *fileOffset = *fileOffset + sizeof(brlyt_wnd3); + } - brlyt_wnd3 wndy3; - subnode = mxmlFindElement(node, node, "Coords", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - i=0; - mxml_node_t *subsubnode; - for(subsubnode = mxmlFindElement(subnode, subnode, "texcoord", NULL, NULL, MXML_DESCEND); subsubnode != NULL; subsubnode = mxmlFindElement(subsubnode, subnode, "texcoord", NULL, NULL, MXML_DESCEND)) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy3.texcoords[i] = float_swap_bytes(atof(tempCoord)); - i++; - } - fwrite(&wndy3, sizeof(brlyt_wnd3), 1, fp); - *fileOffset = *fileOffset + sizeof(brlyt_wnd3); - } + brlyt_wnd4 wndy4; + for(subnode = mxmlFindElement(node, node, "wnd4", NULL, NULL, MXML_DESCEND); subnode != NULL; subnode = mxmlFindElement(subnode, node, "wnd4", NULL, NULL, MXML_DESCEND)) + { + i=0; + mxml_node_t *subsubnode; + subsubnode = mxmlFindElement(subnode, subnode, "offset", NULL, NULL, MXML_DESCEND); + if (subsubnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy4.offset = be32(strtoul(tempCoord, NULL, 16)); + i++; + } + fwrite(&wndy4, sizeof(brlyt_wnd4), 1, fp); + *fileOffset = *fileOffset + sizeof(brlyt_wnd4); + } + brlyt_wnd4_mat wndy4mat; + for(subnode = mxmlFindElement(node, node, "wnd4mat", NULL, NULL, MXML_DESCEND); subnode != NULL; subnode = mxmlFindElement(subnode, node, "wnd4mat", NULL, NULL, MXML_DESCEND)) + { + i=0; + mxml_node_t *subsubnode; + subsubnode = mxmlFindElement(subnode, subnode, "material", NULL, NULL, MXML_DESCEND); + if (subsubnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy4mat.material = be16(strtoul(tempCoord, NULL, 16)); + i++; + } + subsubnode = mxmlFindElement(subnode, subnode, "index", NULL, NULL, MXML_DESCEND); + if (subsubnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy4mat.index = strtoul(tempCoord, NULL, 16); + } + subsubnode = mxmlFindElement(subnode, subnode, "padding", NULL, NULL, MXML_DESCEND); + if (subsubnode != NULL) + { + char tempCoord[256]; + get_value(subsubnode, tempCoord, 256); + wndy4mat.padding = strtoul(tempCoord, NULL, 16); + } + fwrite(&wndy4mat, sizeof(brlyt_wnd4_mat), 1, fp); + *fileOffset = *fileOffset + sizeof(brlyt_wnd4_mat); + } + } + 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)); - brlyt_wnd4 wndy4; - for(subnode = mxmlFindElement(node, node, "wnd4", NULL, NULL, MXML_DESCEND); subnode != NULL; subnode = mxmlFindElement(subnode, node, "wnd4", NULL, NULL, MXML_DESCEND)) - { - i=0; - mxml_node_t *subsubnode; - subsubnode = mxmlFindElement(subnode, subnode, "offset", NULL, NULL, MXML_DESCEND); - if (subsubnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy4.offset = be32(strtoul(tempCoord, NULL, 16)); - i++; - } - fwrite(&wndy4, sizeof(brlyt_wnd4), 1, fp); - *fileOffset = *fileOffset + sizeof(brlyt_wnd4); - } - brlyt_wnd4_mat wndy4mat; - for(subnode = mxmlFindElement(node, node, "wnd4mat", NULL, NULL, MXML_DESCEND); subnode != NULL; subnode = mxmlFindElement(subnode, node, "wnd4mat", NULL, NULL, MXML_DESCEND)) - { - i=0; - mxml_node_t *subsubnode; - subsubnode = mxmlFindElement(subnode, subnode, "material", NULL, NULL, MXML_DESCEND); - if (subsubnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy4mat.material = be16(strtoul(tempCoord, NULL, 16)); - i++; - } - subsubnode = mxmlFindElement(subnode, subnode, "index", NULL, NULL, MXML_DESCEND); - if (subsubnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy4mat.index = strtoul(tempCoord, NULL, 16); + 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)); } - subsubnode = mxmlFindElement(subnode, subnode, "padding", NULL, NULL, MXML_DESCEND); - if (subsubnode != NULL) - { - char tempCoord[256]; - get_value(subsubnode, tempCoord, 256); - wndy4mat.padding = strtoul(tempCoord, NULL, 16); + 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)); } - fwrite(&wndy4mat, sizeof(brlyt_wnd4_mat), 1, fp); - *fileOffset = *fileOffset + sizeof(brlyt_wnd4_mat); - } - } - 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 ); - } + 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) - { + subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { char origins[9][15]; memset( origins , 0 , 8 * 20 ); strcpy( origins[0] , "TOP LEFT" ); @@ -3482,9 +3491,9 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( origins[7] , "BOTTOM CENTER" ); strcpy( origins[8] , "BOTTOM RIGHT" ); - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); + 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 ) { @@ -3492,67 +3501,67 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl 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); - } + } + 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); + } - subnode = mxmlFindElement(node, node, "font", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char temp[256]; - if(mxmlElementGetAttr(subnode, "index") != NULL) - strcpy(temp, mxmlElementGetAttr(subnode, "index")); - else{ - printf("No index attribute found!\nQuitting!\n"); - exit(1); - } - chunk2.font_idx = atoi(temp); - chunk2.font_idx = short_swap_bytes(chunk2.font_idx); + subnode = mxmlFindElement(node, node, "font", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char temp[256]; + if(mxmlElementGetAttr(subnode, "index") != NULL) + strcpy(temp, mxmlElementGetAttr(subnode, "index")); + else{ + printf("No index attribute found!\nQuitting!\n"); + exit(1); + } + chunk2.font_idx = atoi(temp); + chunk2.font_idx = short_swap_bytes(chunk2.font_idx); - mxml_node_t *valnode; - valnode = mxmlFindElement(subnode, subnode, "xsize", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk2.font_size_x = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "ysize", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk2.font_size_y = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "charsize", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk2.char_space = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "linesize", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk2.line_space = float_swap_bytes(atof(tempCoord)); - } - valnode = mxmlFindElement(subnode, subnode, "alignment", NULL, NULL, MXML_DESCEND); - if (valnode != NULL) - { + mxml_node_t *valnode; + valnode = mxmlFindElement(subnode, subnode, "xsize", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk2.font_size_x = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "ysize", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk2.font_size_y = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "charsize", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk2.char_space = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "linesize", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { + char tempCoord[256]; + get_value(valnode, tempCoord, 256); + chunk2.line_space = float_swap_bytes(atof(tempCoord)); + } + valnode = mxmlFindElement(subnode, subnode, "alignment", NULL, NULL, MXML_DESCEND); + if (valnode != NULL) + { char alignments[9][15]; memset( alignments , 0 , 8 * 20 ); strcpy( alignments[0] , "TOP LEFT" ); @@ -3575,200 +3584,200 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl break; } } - } - } + } + } - subnode = mxmlFindElement(node, node, "length", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk2.len1 = strtoul(tempCoord, NULL, 16); - chunk2.len1 = short_swap_bytes(chunk2.len1); - chunk2.len2 = strtoul(tempCoord+5, NULL, 16); - chunk2.len2 = short_swap_bytes(chunk2.len2); - } - subnode = mxmlFindElement(node, node, "color1", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk2.color1 = be32(strtoul(tempCoord, NULL, 16)); - } - subnode = mxmlFindElement(node, node, "color2", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk2.color2 = be32(strtoul(tempCoord, NULL, 16)); - } - u16 textyLength = short_swap_bytes(chunk2.len2); - if ((textyLength % 4) != 0) - textyLength += (4 - (textyLength % 4)); + subnode = mxmlFindElement(node, node, "length", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + chunk2.len1 = strtoul(tempCoord, NULL, 16); + chunk2.len1 = short_swap_bytes(chunk2.len1); + chunk2.len2 = strtoul(tempCoord+5, NULL, 16); + chunk2.len2 = short_swap_bytes(chunk2.len2); + } + subnode = mxmlFindElement(node, node, "color1", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + chunk2.color1 = be32(strtoul(tempCoord, NULL, 16)); + } + subnode = mxmlFindElement(node, node, "color2", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char tempCoord[256]; + get_value(subnode, tempCoord, 256); + chunk2.color2 = be32(strtoul(tempCoord, NULL, 16)); + } + u16 textyLength = short_swap_bytes(chunk2.len2); + if ((textyLength % 4) != 0) + textyLength += (4 - (textyLength % 4)); u8 texty[textyLength + 1]; u8 tempy[textyLength*2]; - subnode = mxmlFindElement(node, node, "text", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - u8 tempCoord[8184]; - get_value(subnode, tempCoord, 8184); - memcpy(tempy, tempCoord, short_swap_bytes(chunk2.len2)*2); - u32 w; for (w=0;w<short_swap_bytes(chunk2.len2);w++) - { - u8 temp[3]; - temp[0] = tempy[w*2+0]; - temp[1] = tempy[w*2+1]; - temp[2] = 0x0; - //printf("w: %d, temp: %s\n", w, temp); - texty[w] = (u8)strtoul((char*)temp, NULL, 16); - } - } - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); + subnode = mxmlFindElement(node, node, "text", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + u8 tempCoord[8184]; + get_value(subnode, tempCoord, 8184); + memcpy(tempy, tempCoord, short_swap_bytes(chunk2.len2)*2); + u32 w; for (w=0;w<short_swap_bytes(chunk2.len2);w++) + { + u8 temp[3]; + temp[0] = tempy[w*2+0]; + temp[1] = tempy[w*2+1]; + temp[2] = 0x0; + //printf("w: %d, temp: %s\n", w, temp); + 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; - fwrite(&chunk2, sizeof(chunk2), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk2); + chunk2.name_offs=be32(0x74); + chunk2.pad[0]= 0;chunk2.pad[1]=0;chunk2.pad[2]=0; + fwrite(&chunk2, sizeof(chunk2), 1, fp); + *fileOffset = *fileOffset + sizeof(chunk2); - int q;for (q=short_swap_bytes(chunk2.len2);q<textyLength;q++) - { - q++; - texty[q] = 0x00; - } - fwrite(texty, textyLength, 1, fp); - *fileOffset = *fileOffset + textyLength; - } - 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); + int q;for (q=short_swap_bytes(chunk2.len2);q<textyLength;q++) + { + q++; + texty[q] = 0x00; + } + fwrite(texty, textyLength, 1, fp); + *fileOffset = *fileOffset + textyLength; + } + 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)); + } + } - 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 ); - } + 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) - { + subnode = mxmlFindElement(node, node, "origin", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { char origins[9][15]; memset( origins , 0 , 8 * 20 ); strcpy( origins[0] , "TOP LEFT" ); @@ -3781,9 +3790,9 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl strcpy( origins[7] , "BOTTOM CENTER" ); strcpy( origins[8] , "BOTTOM RIGHT" ); - char tempCoord[256]; - get_value(subnode, tempCoord, 256); - chunk.origin = strtol(tempCoord, NULL, 16); + 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 ) { @@ -3791,256 +3800,284 @@ void WriteBRLYTEntry(mxml_node_t *tree, mxml_node_t *node, u8** tagblob, u32* bl 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); - } + } + 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); + } + + brlyt_pic_chunk chunk2; + subnode = mxmlFindElement(node, node, "material", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + char temp[256]; + if(mxmlElementGetAttr(subnode, "name") != NULL) + strcpy(temp, mxmlElementGetAttr(subnode, "name")); + else{ + printf("No name attribute found!\nQuitting!\n"); + exit(1); + } + chunk2.mat_num = short_swap_bytes(findMatOffset(temp)); + } + subnode = mxmlFindElement(node, node, "colors", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode; + int i=0; + for(valnode = mxmlFindElement(subnode, subnode, "vtx", NULL, NULL, MXML_DESCEND); valnode != NULL; valnode = mxmlFindElement(valnode, subnode, "vtx", NULL, NULL, MXML_DESCEND)) + { + u32 red, green, blue, alpha; + mxml_node_t *subvalnode; + subvalnode = mxmlFindElement( valnode, valnode, "red", NULL, NULL, MXML_DESCEND); + if ( subvalnode != NULL ) { + + char tempCoord[256]; + get_value(valnode, 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); + 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); + 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); + alpha = strtoul(tempCoord, NULL, 16); + } + chunk2.vtx_colors[i] = ( red << 24 ) | ( green << 16 ) | ( blue << 8 ) | alpha; + i++; + } + } + u32 numberOfPicCoords = 0; + u32 sets = 1; + float* picCoords = malloc(8 * sizeof(float)); + subnode = mxmlFindElement(node, node, "coordinates", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *setnode; + for (setnode = mxmlFindElement(subnode, subnode, "set", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "set", NULL, NULL, MXML_DESCEND)) + { + picCoords = realloc(picCoords, sizeof(float) * 8 * sets); + mxml_node_t *valnode; + for (valnode=mxmlFindElement(setnode, setnode, "coord", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "coord", NULL, NULL, MXML_DESCEND) ) + { - brlyt_pic_chunk chunk2; - subnode = mxmlFindElement(node, node, "material", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - char temp[256]; - if(mxmlElementGetAttr(subnode, "name") != NULL) - strcpy(temp, mxmlElementGetAttr(subnode, "name")); - else{ - printf("No name attribute found!\nQuitting!\n"); - exit(1); - } - chunk2.mat_num = short_swap_bytes(findMatOffset(temp)); - } - subnode = mxmlFindElement(node, node, "colors", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - int i=0; - for(valnode = mxmlFindElement(subnode, subnode, "vtx", NULL, NULL, MXML_DESCEND); valnode != NULL; valnode = mxmlFindElement(valnode, subnode, "vtx", NULL, NULL, MXML_DESCEND)) - { - char tempCoord[256]; - get_value(valnode, tempCoord, 256); - chunk2.vtx_colors[i] = be32(strtoul(tempCoord, NULL, 16)); - i++; - } - } - u32 numberOfPicCoords = 0; - u32 sets = 1; - float* picCoords = malloc(8 * sizeof(float)); - subnode = mxmlFindElement(node, node, "coordinates", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *setnode; - for (setnode = mxmlFindElement(subnode, subnode, "set", NULL, NULL, MXML_DESCEND); setnode != NULL; setnode = mxmlFindElement(setnode, subnode, "set", NULL, NULL, MXML_DESCEND)) - { - picCoords = realloc(picCoords, sizeof(float) * 8 * sets); - mxml_node_t *valnode; - for (valnode=mxmlFindElement(setnode, setnode, "coord", NULL, NULL, MXML_DESCEND) ; valnode != NULL ; valnode=mxmlFindElement(valnode, setnode, "coord", NULL, NULL, MXML_DESCEND) ) - { - - char tempCoord[256]; - int j; for (j=0;j<256;j++) tempCoord[j]=0; - get_value(valnode, tempCoord, 256); - float tempCoordGotten = atof(tempCoord); - float coordGotten = float_swap_bytes(tempCoordGotten); - memcpy(&picCoords[numberOfPicCoords], &coordGotten, sizeof(float)); - numberOfPicCoords++; - } - 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); - *fileOffset = *fileOffset + sizeof(chunk2); - fwrite(picCoords, numberOfPicCoords * sizeof(float), 1, fp); - *fileOffset = *fileOffset + (sizeof(float) * numberOfPicCoords); - free(picCoords); - } - if ( memcmp(temp, grp1, sizeof(grp1)) == 0) - { - brlyt_group_chunk chunk; - chunk.unk = 0; - 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, 16 * sizeof(char)); - strcpy(chunk.name, temp); - int numSubs = 0; - char *subs; + char tempCoord[256]; + int j; for (j=0;j<256;j++) tempCoord[j]=0; + get_value(valnode, tempCoord, 256); + float tempCoordGotten = atof(tempCoord); + float coordGotten = float_swap_bytes(tempCoordGotten); + memcpy(&picCoords[numberOfPicCoords], &coordGotten, sizeof(float)); + numberOfPicCoords++; + } + 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); + *fileOffset = *fileOffset + sizeof(chunk2); + fwrite(picCoords, numberOfPicCoords * sizeof(float), 1, fp); + *fileOffset = *fileOffset + (sizeof(float) * numberOfPicCoords); + free(picCoords); + } + if ( memcmp(temp, grp1, sizeof(grp1)) == 0) + { + brlyt_group_chunk chunk; + chunk.unk = 0; + 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, 16 * sizeof(char)); + strcpy(chunk.name, temp); + int numSubs = 0; + char *subs; subs = malloc(0 * sizeof(char)); - u32 subsLength = 0; + u32 subsLength = 0; - mxml_node_t *subnode = mxmlFindElement(node, node, "subs", NULL, NULL, MXML_DESCEND); - if (subnode != NULL) - { - mxml_node_t *valnode; - for(valnode = mxmlFindElement(subnode, subnode, "sub", NULL, NULL, MXML_DESCEND); valnode != NULL; valnode = mxmlFindElement(valnode, subnode, "sub", NULL, NULL, MXML_DESCEND)) { - if (valnode != NULL) - { - u32 oldSubsLength = subsLength; - char tempSub[256]; - get_value(valnode, tempSub, 256); - subsLength += 16; - subs = realloc(subs, 1 + sizeof(char) * subsLength); - memset(&subs[oldSubsLength], 0x00, 16); - strcpy(&subs[oldSubsLength], tempSub); - numSubs++; - } - } - } - chunk.numsubs = short_swap_bytes(numSubs); - fwrite(&chunk, sizeof(chunk), 1, fp); - *fileOffset = *fileOffset + sizeof(chunk); - fwrite(subs, sizeof(char) * subsLength, 1, fp); - *fileOffset = *fileOffset + subsLength; - free(subs); - } - if ( memcmp(temp, grs1, sizeof(grs1)) == 0) - { + mxml_node_t *subnode = mxmlFindElement(node, node, "subs", NULL, NULL, MXML_DESCEND); + if (subnode != NULL) + { + mxml_node_t *valnode; + for(valnode = mxmlFindElement(subnode, subnode, "sub", NULL, NULL, MXML_DESCEND); valnode != NULL; valnode = mxmlFindElement(valnode, subnode, "sub", NULL, NULL, MXML_DESCEND)) { + if (valnode != NULL) + { + u32 oldSubsLength = subsLength; + char tempSub[256]; + get_value(valnode, tempSub, 256); + subsLength += 16; + subs = realloc(subs, 1 + sizeof(char) * subsLength); + memset(&subs[oldSubsLength], 0x00, 16); + strcpy(&subs[oldSubsLength], tempSub); + numSubs++; + } + } + } + chunk.numsubs = short_swap_bytes(numSubs); + fwrite(&chunk, sizeof(chunk), 1, fp); + *fileOffset = *fileOffset + sizeof(chunk); + fwrite(subs, sizeof(char) * subsLength, 1, fp); + *fileOffset = *fileOffset + subsLength; + free(subs); + } + if ( memcmp(temp, grs1, sizeof(grs1)) == 0) + { - } - if ( memcmp(temp, gre1, sizeof(gre1)) == 0) - { + } + if ( memcmp(temp, gre1, sizeof(gre1)) == 0) + { - } - if ( memcmp(temp, pas1, sizeof(pas1)) == 0) - { + } + if ( memcmp(temp, pas1, sizeof(pas1)) == 0) + { - } - if ( memcmp(temp, pae1, sizeof(pae1)) == 0) - { + } + if ( memcmp(temp, pae1, sizeof(pae1)) == 0) + { - } + } - *blobsize = *fileOffset - startOfChunk; + *blobsize = *fileOffset - startOfChunk; } void WriteBRLYTHeader(brlyt_header rlythead, FILE* fp) { - brlyt_header writehead; - writehead.magic[0] = rlythead.magic[0]; - writehead.magic[1] = rlythead.magic[1]; - writehead.magic[2] = rlythead.magic[2]; - writehead.magic[3] = rlythead.magic[3]; - writehead.version = be32(rlythead.version); - writehead.filesize = be32(rlythead.filesize); - writehead.lyt_offset = short_swap_bytes(rlythead.lyt_offset); - writehead.sections = short_swap_bytes(rlythead.sections); + brlyt_header writehead; + writehead.magic[0] = rlythead.magic[0]; + writehead.magic[1] = rlythead.magic[1]; + writehead.magic[2] = rlythead.magic[2]; + writehead.magic[3] = rlythead.magic[3]; + writehead.version = be32(rlythead.version); + writehead.filesize = be32(rlythead.filesize); + writehead.lyt_offset = short_swap_bytes(rlythead.lyt_offset); + writehead.sections = short_swap_bytes(rlythead.sections); - fwrite(&writehead, sizeof(brlyt_header), 1, fp); + fwrite(&writehead, sizeof(brlyt_header), 1, fp); } void write_brlyt(char *infile, char *outfile) { - u32 fileOffset = 0; - FILE* fpx = fopen(infile, "r"); - if(fpx == NULL) { - printf("xmlyt couldn't be opened!\n"); - exit(1); - } - mxml_node_t *hightree = mxmlLoadFile(NULL, fpx, MXML_TEXT_CALLBACK); - if(hightree == NULL) { - printf("Couldn't open hightree!\n"); - exit(1); - } - mxml_node_t *tree = mxmlFindElement(hightree, hightree, "xmlyt", NULL, NULL, MXML_DESCEND); - if(tree == NULL) { - printf("Couldn't get tree!\n"); - exit(1); - } - mxml_node_t *node; - FILE* fp = fopen(outfile, "wb+"); - if(fp == NULL) { - printf("destination brlyt couldn't be opened!\n"); - exit(1); - } + u32 fileOffset = 0; + FILE* fpx = fopen(infile, "r"); + if(fpx == NULL) { + printf("xmlyt couldn't be opened!\n"); + exit(1); + } + mxml_node_t *hightree = mxmlLoadFile(NULL, fpx, MXML_TEXT_CALLBACK); + if(hightree == NULL) { + printf("Couldn't open hightree!\n"); + exit(1); + } + mxml_node_t *tree = mxmlFindElement(hightree, hightree, "xmlyt", NULL, NULL, MXML_DESCEND); + if(tree == NULL) { + printf("Couldn't get tree!\n"); + exit(1); + } + mxml_node_t *node; + FILE* fp = fopen(outfile, "wb+"); + if(fp == NULL) { + printf("destination brlyt couldn't be opened!\n"); + exit(1); + } - u8* tagblob; - u32 blobsize; - u16 blobcount = 0; - brlyt_header rlythead; - rlythead.magic[0] = 'R'; - rlythead.magic[1] = 'L'; - rlythead.magic[2] = 'Y'; - rlythead.magic[3] = 'T'; - rlythead.version = 0xFEFF0008; - rlythead.filesize = 0; - rlythead.lyt_offset = sizeof(brlyt_header); - rlythead.sections = 1; - WriteBRLYTHeader(rlythead, fp); + u8* tagblob; + u32 blobsize; + u16 blobcount = 0; + brlyt_header rlythead; + rlythead.magic[0] = 'R'; + rlythead.magic[1] = 'L'; + rlythead.magic[2] = 'Y'; + rlythead.magic[3] = 'T'; + rlythead.version = 0xFEFF0008; + rlythead.filesize = 0; + rlythead.lyt_offset = sizeof(brlyt_header); + rlythead.sections = 1; + WriteBRLYTHeader(rlythead, fp); - fileOffset += sizeof(brlyt_header); + fileOffset += sizeof(brlyt_header); - u32 numberOfEntries; + u32 numberOfEntries; - for(node = mxmlFindElement(tree, tree, "tag", NULL, NULL, MXML_DESCEND); node != NULL; node = mxmlFindElement(node, tree, "tag", NULL, NULL, MXML_DESCEND)) { + for(node = mxmlFindElement(tree, tree, "tag", NULL, NULL, MXML_DESCEND); node != NULL; node = mxmlFindElement(node, tree, "tag", NULL, NULL, MXML_DESCEND)) { - char tempType[4]; - if(mxmlElementGetAttr(node, "type") != NULL) - strcpy(tempType, mxmlElementGetAttr(node, "type")); - else{ - printf("No type attribute found!\n"); - exit(1); - } + char tempType[4]; + if(mxmlElementGetAttr(node, "type") != NULL) + strcpy(tempType, mxmlElementGetAttr(node, "type")); + else{ + printf("No type attribute found!\n"); + exit(1); + } - u32 chunkHeaderOffset = fileOffset; + u32 chunkHeaderOffset = fileOffset; - brlyt_entry_header chunk; - chunk.magic[0]=tempType[0]; - chunk.magic[1]=tempType[1]; - chunk.magic[2]=tempType[2]; - chunk.magic[3]=tempType[3]; - chunk.length = 0; + brlyt_entry_header chunk; + chunk.magic[0]=tempType[0]; + chunk.magic[1]=tempType[1]; + chunk.magic[2]=tempType[2]; + chunk.magic[3]=tempType[3]; + chunk.length = 0; - fwrite(&chunk, sizeof(chunk), 1, fp); + fwrite(&chunk, sizeof(chunk), 1, fp); - fileOffset += sizeof(chunk); + fileOffset += sizeof(chunk); - WriteBRLYTEntry(tree, node, &tagblob, &blobsize, tempType, fp, &fileOffset); + WriteBRLYTEntry(tree, node, &tagblob, &blobsize, tempType, fp, &fileOffset); - chunk.length = be32(blobsize + sizeof(chunk)); + chunk.length = be32(blobsize + sizeof(chunk)); - fseek(fp, chunkHeaderOffset, SEEK_SET); - fwrite(&chunk, sizeof(chunk), 1, fp); - fseek(fp, fileOffset, SEEK_SET); + fseek(fp, chunkHeaderOffset, SEEK_SET); + fwrite(&chunk, sizeof(chunk), 1, fp); + fseek(fp, fileOffset, SEEK_SET); - numberOfEntries++; + numberOfEntries++; - blobcount++; + blobcount++; - } + } - rlythead.filesize = fileOffset; - rlythead.sections = blobcount; - fseek(fp, 0, SEEK_SET); - WriteBRLYTHeader(rlythead, fp); + rlythead.filesize = fileOffset; + rlythead.sections = blobcount; + fseek(fp, 0, SEEK_SET); + WriteBRLYTHeader(rlythead, fp); - fclose(fpx); - fclose(fp); + fclose(fpx); + fclose(fp); } void make_brlyt(char* infile, char* outfile) { - printf("\x1b[33mParsing XMLYT @ \x1b[0m%s.\n", infile); - write_brlyt(infile, outfile); - free(materials); - free(textures); - printf("\x1b[34mParsing XMLYT @ \x1b[0m%s complete.\n", infile); + printf("\x1b[33mParsing XMLYT @ \x1b[0m%s.\n", infile); + write_brlyt(infile, outfile); + free(materials); + free(textures); + printf("\x1b[34mParsing XMLYT @ \x1b[0m%s complete.\n", infile); } |
