From bac3c85aa0c9a8e2e440be16446ab843cdafe6b1 Mon Sep 17 00:00:00 2001 From: megazig Date: Tue, 22 Sep 2009 14:58:21 -0500 Subject: started animtypes update --- brlan.c | 342 +++++++++++++++++++++++++--------------------------------------- 1 file changed, 131 insertions(+), 211 deletions(-) (limited to 'brlan.c') diff --git a/brlan.c b/brlan.c index d2b37d8..bc9ded9 100644 --- a/brlan.c +++ b/brlan.c @@ -29,18 +29,137 @@ fourcc tag_FourCCs[] = { "RLPA", "RLTS", "RLVI", "RLVC", "RLMC", "RLTP" , "RLIM" }; -char tag_types_list[15][24]; -char tag_types_rlpa_list[15][24]; -char tag_types_rlts_list[15][24]; -char tag_types_rlvi_list[15][24]; -char tag_types_rlvc_list[15][24]; -char tag_types_rlmc_list[15][24]; -char tag_types_rltp_list[15][24]; -char tag_types_rlim_list[15][24]; +char tag_types_list[16][24]; +char tag_types_rlpa_list[16][24]; +char tag_types_rlts_list[16][24]; +char tag_types_rlvi_list[16][24]; +char tag_types_rlvc_list[16][24]; +char tag_types_rlmc_list[16][24]; +char tag_types_rltp_list[16][24]; +char tag_types_rlim_list[16][24]; static size_t BRLAN_fileoffset = 0; FILE* xmlanout; +void CreateTagTypesLists( ) +{ + int i, j; + for(i = 0; i < 16; i++) + { + memset(tag_types_list[i], 0, 24); + memset(tag_types_rlpa_list[i], 0, 24); + memset(tag_types_rlvc_list[i], 0, 24); + memset(tag_types_rltp_list[i], 0, 24); + } + for(i = 0; i < 5; i++) + { + memset(tag_types_rlts_list[i], 0, 24); + memset(tag_types_rlim_list[i], 0, 24); + } + for(i = 0; i < 32; i++) + memset(tag_types_rlmc_list[i], 0, 24); + memset(tag_types_rlvi_list[i], 0, 24); + + strcpy(tag_types_list[0], "X Translation"); + strcpy(tag_types_list[1], "Y Translation"); + strcpy(tag_types_list[2], "Z Translation"); + strcpy(tag_types_list[3], "X Rotate"); + strcpy(tag_types_list[4], "Y Rotate"); + strcpy(tag_types_list[5], "Z Rotate"); + strcpy(tag_types_list[6], "X Scale"); + strcpy(tag_types_list[7], "Y Scale"); + strcpy(tag_types_list[8], "Width"); + strcpy(tag_types_list[9], "Height"); + strcpy(tag_types_list[10], "0x0A"); // modified x + strcpy(tag_types_list[11], "0x0B"); // modified y + strcpy(tag_types_list[12], "0x0C"); // modified z + strcpy(tag_types_list[13], "0x0D"); + strcpy(tag_types_list[14], "0x0E"); + strcpy(tag_types_list[15], "0x0F"); + + strcpy(tag_types_rlpa_list[0], "X Translation"); + strcpy(tag_types_rlpa_list[1], "Y Translation"); + strcpy(tag_types_rlpa_list[2], "Z Translation"); + strcpy(tag_types_rlpa_list[3], "X Rotate"); + strcpy(tag_types_rlpa_list[4], "Y Rotate"); + strcpy(tag_types_rlpa_list[5], "Z Rotate"); + strcpy(tag_types_rlpa_list[6], "X Scale"); + strcpy(tag_types_rlpa_list[7], "Y Scale"); + strcpy(tag_types_rlpa_list[8], "Width"); + strcpy(tag_types_rlpa_list[9], "Height"); + strcpy(tag_types_rlpa_list[10], "0x0A"); // modified x + strcpy(tag_types_rlpa_list[11], "0x0B"); // modified y + strcpy(tag_types_rlpa_list[12], "0x0C"); // modified z + strcpy(tag_types_rlpa_list[13], "0x0D"); + strcpy(tag_types_rlpa_list[14], "0x0E"); + strcpy(tag_types_rlpa_list[15], "0x0F"); + + strcpy(tag_types_rlts_list[0], "XTrans"); + strcpy(tag_types_rlts_list[1], "YTrans"); + strcpy(tag_types_rlts_list[2], "Rotate"); + strcpy(tag_types_rlts_list[3], "XScale"); + strcpy(tag_types_rlts_list[4], "YScale"); + + strcpy(tag_types_rlvi_list[0], "Visibility"); + + strcpy(tag_types_rlvc_list[0], "Top Left R"); + strcpy(tag_types_rlvc_list[1], "Top Left G"); + strcpy(tag_types_rlvc_list[2], "Top Left B"); + strcpy(tag_types_rlvc_list[3], "Top Left A"); + strcpy(tag_types_rlvc_list[4], "Top Right R"); + strcpy(tag_types_rlvc_list[5], "Top Right G"); + strcpy(tag_types_rlvc_list[6], "Top Right B"); + strcpy(tag_types_rlvc_list[7], "Top Right A"); + strcpy(tag_types_rlvc_list[8], "Bottom Left R"); + strcpy(tag_types_rlvc_list[9], "Bottom Left G"); + strcpy(tag_types_rlvc_list[10], "Bottom Left B"); + strcpy(tag_types_rlvc_list[11], "Bottom Left A"); + strcpy(tag_types_rlvc_list[12], "Bottom Right R"); + strcpy(tag_types_rlvc_list[13], "Bottom Right G"); + strcpy(tag_types_rlvc_list[14], "Bottom Right B"); + strcpy(tag_types_rlvc_list[15], "Bottom Right A"); + + strcpy(tag_types_rlmc_list[0], "MatColor Red"); + strcpy(tag_types_rlmc_list[1], "MatColor Green"); + strcpy(tag_types_rlmc_list[2], "MatColor Blue"); + strcpy(tag_types_rlmc_list[3], "MatColor Alpha"); + strcpy(tag_types_rlmc_list[4], "Forecolor Red"); + strcpy(tag_types_rlmc_list[5], "Forecolor Green"); + strcpy(tag_types_rlmc_list[6], "Forecolor Blue"); + strcpy(tag_types_rlmc_list[7], "Forecolor Alpha"); + strcpy(tag_types_rlmc_list[8], "Backcolor Red"); + strcpy(tag_types_rlmc_list[9], "Backcolor Green"); + strcpy(tag_types_rlmc_list[10], "Backcolor Blue"); + strcpy(tag_types_rlmc_list[11], "Backcolor Alpha"); + strcpy(tag_types_rlmc_list[12], "TevReg3 Red"); + strcpy(tag_types_rlmc_list[13], "TevReg3 Green"); + strcpy(tag_types_rlmc_list[14], "TevReg3 Blue"); + strcpy(tag_types_rlmc_list[15], "TevReg3 Alpha"); + + strcpy(tag_types_rltp_list[0], "PaletteZero"); + strcpy(tag_types_rltp_list[1], "PaletteOne"); + strcpy(tag_types_rltp_list[2], "PaletteTwo"); + strcpy(tag_types_rltp_list[3], "PaletteThree"); + strcpy(tag_types_rltp_list[4], "PaletteFour"); + strcpy(tag_types_rltp_list[5], "PaletteFive"); + strcpy(tag_types_rltp_list[6], "PaletteSix"); + strcpy(tag_types_rltp_list[7], "PaletteSeven"); + strcpy(tag_types_rltp_list[8], "PaletteEight"); + strcpy(tag_types_rltp_list[9], "PaletteNine"); + strcpy(tag_types_rltp_list[10], "PaletteTen"); + strcpy(tag_types_rltp_list[11], "PaletteEleven"); + strcpy(tag_types_rltp_list[12], "PaletteTwelve"); + strcpy(tag_types_rltp_list[13], "PaletteThirteen"); + strcpy(tag_types_rltp_list[14], "PaletteFourteen"); + strcpy(tag_types_rltp_list[15], "PaletteFifteen"); + + strcpy(tag_types_rlim_list[0], "XTrans"); + strcpy(tag_types_rlim_list[1], "YTrans"); + strcpy(tag_types_rlim_list[2], "Rotate"); + strcpy(tag_types_rlim_list[3], "XScale"); + strcpy(tag_types_rlim_list[4], "YScale"); +} + static void BRLAN_ReadDataFromMemoryX(void* destination, void* input, size_t size) { u8* out = (u8*)destination; @@ -185,6 +304,8 @@ void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset, mxml_node_ void parse_brlan(char* filename, char *filenameout) { + int i, j; + FILE* fp = fopen(filename, "rb"); if(fp == NULL) { printf("Error! Couldn't open %s!\n", filename); @@ -196,116 +317,7 @@ void parse_brlan(char* filename, char *filenameout) u8 data[lengthOfFile]; fread(data, lengthOfFile, 1, fp); - int i, j; - for(i = 0; i < 16; i++) - { - memset(tag_types_list[i], 0, 24); - memset(tag_types_rlpa_list[i], 0, 24); - memset(tag_types_rlts_list[i], 0, 24); - memset(tag_types_rlvi_list[i], 0, 24); - memset(tag_types_rlvc_list[i], 0, 24); - memset(tag_types_rlmc_list[i], 0, 24); - memset(tag_types_rltp_list[i], 0, 24); - memset(tag_types_rlim_list[i], 0, 24); - } - strcpy(tag_types_list[0], "X Translation"); - strcpy(tag_types_list[1], "Y Translation"); - strcpy(tag_types_list[2], "Z Translation"); - strcpy(tag_types_list[3], "X Rotate"); - strcpy(tag_types_list[4], "Y Rotate"); - strcpy(tag_types_list[5], "Z Rotate"); - strcpy(tag_types_list[6], "X Scale"); - strcpy(tag_types_list[7], "Y Scale"); - strcpy(tag_types_list[8], "Width"); - strcpy(tag_types_list[9], "Height"); - strcpy(tag_types_list[10], "0x0A"); // modified x - strcpy(tag_types_list[11], "0x0B"); // modified y - strcpy(tag_types_list[12], "0x0C"); // modified z - strcpy(tag_types_list[13], "0x0D"); - strcpy(tag_types_list[14], "0x0E"); - strcpy(tag_types_list[15], "0x0F"); - - strcpy(tag_types_rlpa_list[0], "X Translation"); - strcpy(tag_types_rlpa_list[1], "Y Translation"); - strcpy(tag_types_rlpa_list[2], "Z Translation"); - strcpy(tag_types_rlpa_list[3], "X Rotate"); - strcpy(tag_types_rlpa_list[4], "Y Rotate"); - strcpy(tag_types_rlpa_list[5], "Z Rotate"); - strcpy(tag_types_rlpa_list[6], "X Scale"); - strcpy(tag_types_rlpa_list[7], "Y Scale"); - strcpy(tag_types_rlpa_list[8], "Width"); - strcpy(tag_types_rlpa_list[9], "Height"); - strcpy(tag_types_rlpa_list[10], "0x0A"); // modified x - strcpy(tag_types_rlpa_list[11], "0x0B"); // modified y - strcpy(tag_types_rlpa_list[12], "0x0C"); // modified z - strcpy(tag_types_rlpa_list[13], "0x0D"); - strcpy(tag_types_rlpa_list[14], "0x0E"); - strcpy(tag_types_rlpa_list[15], "0x0F"); - - strcpy(tag_types_rlts_list[0], "XTrans"); - strcpy(tag_types_rlts_list[1], "YTrans"); - strcpy(tag_types_rlts_list[2], "Rotate"); - strcpy(tag_types_rlts_list[3], "XScale"); - strcpy(tag_types_rlts_list[4], "YScale"); - - strcpy(tag_types_rlvi_list[0], "Visibility"); - - strcpy(tag_types_rlvc_list[0], "Top Left R"); - strcpy(tag_types_rlvc_list[1], "Top Left G"); - strcpy(tag_types_rlvc_list[2], "Top Left B"); - strcpy(tag_types_rlvc_list[3], "Top Left A"); - strcpy(tag_types_rlvc_list[4], "Top Right R"); - strcpy(tag_types_rlvc_list[5], "Top Right G"); - strcpy(tag_types_rlvc_list[6], "Top Right B"); - strcpy(tag_types_rlvc_list[7], "Top Right A"); - strcpy(tag_types_rlvc_list[8], "Bottom Left R"); - strcpy(tag_types_rlvc_list[9], "Bottom Left G"); - strcpy(tag_types_rlvc_list[10], "Bottom Left B"); - strcpy(tag_types_rlvc_list[11], "Bottom Left A"); - strcpy(tag_types_rlvc_list[12], "Bottom Right R"); - strcpy(tag_types_rlvc_list[13], "Bottom Right G"); - strcpy(tag_types_rlvc_list[14], "Bottom Right B"); - strcpy(tag_types_rlvc_list[15], "Bottom Right A"); - - strcpy(tag_types_rlmc_list[0], "0x00"); - strcpy(tag_types_rlmc_list[1], "0x01"); - strcpy(tag_types_rlmc_list[2], "0x02"); - strcpy(tag_types_rlmc_list[3], "0x03"); - strcpy(tag_types_rlmc_list[4], "Blackcolor R"); - strcpy(tag_types_rlmc_list[5], "Blackcolor G"); - strcpy(tag_types_rlmc_list[6], "Blackcolor B"); - strcpy(tag_types_rlmc_list[7], "Blackcolor A"); - strcpy(tag_types_rlmc_list[8], "Whitecolor R"); - strcpy(tag_types_rlmc_list[9], "Whitecolor G"); - strcpy(tag_types_rlmc_list[10], "Whitecolor B"); - strcpy(tag_types_rlmc_list[11], "Whitecolor A"); - strcpy(tag_types_rlmc_list[12], "0x0C"); - strcpy(tag_types_rlmc_list[13], "0x0D"); - strcpy(tag_types_rlmc_list[14], "0x0E"); - strcpy(tag_types_rlmc_list[15], "0x0F"); - - strcpy(tag_types_rltp_list[0], "PaletteZero"); - strcpy(tag_types_rltp_list[1], "PaletteOne"); - strcpy(tag_types_rltp_list[2], "PaletteTwo"); - strcpy(tag_types_rltp_list[3], "PaletteThree"); - strcpy(tag_types_rltp_list[4], "PaletteFour"); - strcpy(tag_types_rltp_list[5], "PaletteFive"); - strcpy(tag_types_rltp_list[6], "PaletteSix"); - strcpy(tag_types_rltp_list[7], "PaletteSeven"); - strcpy(tag_types_rltp_list[8], "PaletteEight"); - strcpy(tag_types_rltp_list[9], "PaletteNine"); - strcpy(tag_types_rltp_list[10], "PaletteTen"); - strcpy(tag_types_rltp_list[11], "PaletteEleven"); - strcpy(tag_types_rltp_list[12], "PaletteTwelve"); - strcpy(tag_types_rltp_list[13], "PaletteThirteen"); - strcpy(tag_types_rltp_list[14], "PaletteFourteen"); - strcpy(tag_types_rltp_list[15], "PaletteFifteen"); - - strcpy(tag_types_rlim_list[0], "XTrans"); - strcpy(tag_types_rlim_list[1], "YTrans"); - strcpy(tag_types_rlim_list[2], "Rotate"); - strcpy(tag_types_rlim_list[3], "XScale"); - strcpy(tag_types_rlim_list[4], "YScale"); + CreateTagTypesLists(); BRLAN_fileoffset = 0; brlan_header header; @@ -767,100 +779,8 @@ void WriteBRLANPaiHeader(brlan_pai1_header_type1 paihead, FILE* fp) void write_brlan(char *infile, char* outfile) { + CreateTagTypesLists(); int i; - for(i = 0; i < 16; i++) - { - memset(tag_types_list[i], 0, 24); - memset(tag_types_rlpa_list[i], 0, 24); - memset(tag_types_rlts_list[i], 0, 24); - memset(tag_types_rlvi_list[i], 0, 24); - memset(tag_types_rlvc_list[i], 0, 24); - memset(tag_types_rlmc_list[i], 0, 24); - memset(tag_types_rltp_list[i], 0, 24); - memset(tag_types_rlim_list[i], 0, 24); - } - - strcpy(tag_types_list[0], "X Translation"); - strcpy(tag_types_list[1], "Y Translation"); - strcpy(tag_types_list[2], "Z Translation"); - strcpy(tag_types_list[3], "X Rotate"); - strcpy(tag_types_list[4], "Y Rotate"); - strcpy(tag_types_list[5], "Z Rotate"); - strcpy(tag_types_list[6], "X Scale"); - strcpy(tag_types_list[7], "Y Scale"); - strcpy(tag_types_list[8], "Width"); - strcpy(tag_types_list[9], "Height"); - strcpy(tag_types_list[10], "0x0A"); - strcpy(tag_types_list[11], "0x0B"); - strcpy(tag_types_list[12], "0x0C"); - strcpy(tag_types_list[13], "0x0D"); - strcpy(tag_types_list[14], "0x0E"); - strcpy(tag_types_list[15], "0x0F"); - - strcpy(tag_types_rlts_list[0], "XTrans"); - strcpy(tag_types_rlts_list[1], "YTrans"); - strcpy(tag_types_rlts_list[2], "Rotate"); - strcpy(tag_types_rlts_list[3], "XScale"); - strcpy(tag_types_rlts_list[4], "YScale"); - - strcpy(tag_types_rlvi_list[0], "Visibility"); - - strcpy(tag_types_rlvc_list[0], "Top Left R"); - strcpy(tag_types_rlvc_list[1], "Top Left G"); - strcpy(tag_types_rlvc_list[2], "Top Left B"); - strcpy(tag_types_rlvc_list[3], "Top Left A"); - strcpy(tag_types_rlvc_list[4], "Top Right R"); - strcpy(tag_types_rlvc_list[5], "Top Right G"); - strcpy(tag_types_rlvc_list[6], "Top Right B"); - strcpy(tag_types_rlvc_list[7], "Top Right A"); - strcpy(tag_types_rlvc_list[8], "Bottom Left R"); - strcpy(tag_types_rlvc_list[9], "Bottom Left G"); - strcpy(tag_types_rlvc_list[10], "Bottom Left B"); - strcpy(tag_types_rlvc_list[11], "Bottom Left A"); - strcpy(tag_types_rlvc_list[12], "Bottom Right R"); - strcpy(tag_types_rlvc_list[13], "Bottom Right G"); - strcpy(tag_types_rlvc_list[14], "Bottom Right B"); - strcpy(tag_types_rlvc_list[15], "Bottom Right A"); - - strcpy(tag_types_rlmc_list[0], "0x00"); - strcpy(tag_types_rlmc_list[1], "0x01"); - strcpy(tag_types_rlmc_list[2], "0x02"); - strcpy(tag_types_rlmc_list[3], "0x03"); - strcpy(tag_types_rlmc_list[4], "Blackcolor R"); - strcpy(tag_types_rlmc_list[5], "Blackcolor G"); - strcpy(tag_types_rlmc_list[6], "Blackcolor B"); - strcpy(tag_types_rlmc_list[7], "Blackcolor A"); - strcpy(tag_types_rlmc_list[8], "Whitecolor R"); - strcpy(tag_types_rlmc_list[9], "Whitecolor G"); - strcpy(tag_types_rlmc_list[10], "Whitecolor B"); - strcpy(tag_types_rlmc_list[11], "Whitecolor A"); - strcpy(tag_types_rlmc_list[12], "0x0C"); - strcpy(tag_types_rlmc_list[13], "0x0D"); - strcpy(tag_types_rlmc_list[14], "0x0E"); - strcpy(tag_types_rlmc_list[15], "0x0F"); - - strcpy(tag_types_rltp_list[0], "PaletteZero"); - strcpy(tag_types_rltp_list[1], "PaletteOne"); - strcpy(tag_types_rltp_list[2], "PaletteTwo"); - strcpy(tag_types_rltp_list[3], "PaletteThree"); - strcpy(tag_types_rltp_list[4], "PaletteFour"); - strcpy(tag_types_rltp_list[5], "PaletteFive"); - strcpy(tag_types_rltp_list[6], "PaletteSix"); - strcpy(tag_types_rltp_list[7], "PaletteSeven"); - strcpy(tag_types_rltp_list[8], "PaletteEight"); - strcpy(tag_types_rltp_list[9], "PaletteNine"); - strcpy(tag_types_rltp_list[10], "PaletteTen"); - strcpy(tag_types_rltp_list[11], "PaletteEleven"); - strcpy(tag_types_rltp_list[12], "PaletteTwelve"); - strcpy(tag_types_rltp_list[13], "PaletteThirteen"); - strcpy(tag_types_rltp_list[14], "PaletteFourteen"); - strcpy(tag_types_rltp_list[15], "PaletteFifteen"); - - strcpy(tag_types_rlim_list[0], "XTrans"); - strcpy(tag_types_rlim_list[1], "YTrans"); - strcpy(tag_types_rlim_list[2], "Rotate"); - strcpy(tag_types_rlim_list[3], "XScale"); - strcpy(tag_types_rlim_list[4], "YScale"); FILE* fpx = fopen(infile, "r"); if(fpx == NULL) { -- cgit v1.3.1 From f40a06c2511522311b53ab2ada556bd7572b9ba1 Mon Sep 17 00:00:00 2001 From: megazig Date: Tue, 22 Sep 2009 22:09:31 -0500 Subject: update to origin system and changed pane reading/writing to be seperate --- brlan.c | 88 ++- brlyt.c | 2168 +++++++++++++++++-------------------------------------------- general.h | 2 +- 3 files changed, 650 insertions(+), 1608 deletions(-) (limited to 'brlan.c') diff --git a/brlan.c b/brlan.c index bc9ded9..ecd1c0b 100644 --- a/brlan.c +++ b/brlan.c @@ -43,7 +43,7 @@ FILE* xmlanout; void CreateTagTypesLists( ) { - int i, j; + int i; for(i = 0; i < 16; i++) { memset(tag_types_list[i], 0, 24); @@ -227,37 +227,74 @@ void BRLAN_CreateXMLTag(tag_header tagHeader, void* data, u32 offset, mxml_node_ BRLAN_ReadDataFromMemory(&tagEntryInfo, data, sizeof(tag_entryinfo)); entry = mxmlNewElement(tag, "entry"); mxmlElementSetAttrf(entry, "type1", "%u", tagEntryInfo.type1); - if(tagEntryInfo.type2 < 16) + char type_rlpa[4] = {'R', 'L', 'P', 'A'}; + char type_rlts[4] = {'R', 'L', 'T', 'S'}; + char type_rlvi[4] = {'R', 'L', 'V', 'I'}; + char type_rlvc[4] = {'R', 'L', 'V', 'C'}; + char type_rlmc[4] = {'R', 'L', 'M', 'C'}; + char type_rltp[4] = {'R', 'L', 'T', 'P'}; + char type_rlim[4] = {'R', 'L', 'I', 'M'}; + + if(memcmp(tagHeader.magic, type_rlpa, 4) == 0) { - char type_rlpa[4] = {'R', 'L', 'P', 'A'}; - char type_rlts[4] = {'R', 'L', 'T', 'S'}; - char type_rlvi[4] = {'R', 'L', 'V', 'I'}; - char type_rlvc[4] = {'R', 'L', 'V', 'C'}; - char type_rlmc[4] = {'R', 'L', 'M', 'C'}; - char type_rltp[4] = {'R', 'L', 'T', 'P'}; - char type_rlim[4] = {'R', 'L', 'I', 'M'}; - if(memcmp(tagHeader.magic, type_rlpa, 4) == 0) + if(tagEntryInfo.type2 < 16) { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlpa_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlts, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlts, 4) == 0) { + if(tagEntryInfo.type2 < 5) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlts_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlvi, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlvi, 4) == 0) { + if(tagEntryInfo.type2 < 1) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlvi_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlvc, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlvc, 4) == 0) { + if(tagEntryInfo.type2 < 16) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlvc_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlmc, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlmc, 4) == 0) { + if(tagEntryInfo.type2 < 32) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlmc_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rltp, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rltp, 4) == 0) { + if(tagEntryInfo.type2 < 16) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rltp_list[tagEntryInfo.type2]); - } else if (memcmp(tagHeader.magic, type_rlim, 4) == 0) { + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } + } else if (memcmp(tagHeader.magic, type_rlim, 4) == 0) { + if(tagEntryInfo.type2 < 5) + { mxmlElementSetAttrf(entry, "type2", "%s",tag_types_rlim_list[tagEntryInfo.type2]); } else { - mxmlElementSetAttrf(entry, "type2", "%s",tag_types_list[tagEntryInfo.type2]); + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); } } else { - mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + if(tagEntryInfo.type2 < 16) + { + mxmlElementSetAttrf(entry, "type2", "%s",tag_types_list[tagEntryInfo.type2]); + } else { + mxmlElementSetAttrf(entry, "type2", "%u", tagEntryInfo.type2); + } } + for( j = 0; j < short_swap_bytes(tagEntryInfo.coord_count); j++) { if ( tagEntryInfo.data_type == 0x2 ) @@ -341,7 +378,6 @@ void parse_brlan(char* filename, char *filenameout) CreateGlobal_pai1(&pai1_header, pai1_header1, pai1_header2, pai1_header_type); - FILE *xmlFile; xmlFile = fopen(filenameout, "w"); mxml_node_t *xml; @@ -474,7 +510,7 @@ void create_entries_from_xml(mxml_node_t *tree, mxml_node_t *node, brlan_entry * mxml_node_t *subsubnode = NULL; char temp[256]; char temp2[256]; - char temp3[16][24]; + char temp3[32][24]; int i, x; char tag_type[256]; @@ -489,51 +525,61 @@ void create_entries_from_xml(mxml_node_t *tree, mxml_node_t *node, brlan_entry * char rltp_type[5] = {'R', 'L', 'T', 'P'}; char rlim_type[5] = {'R', 'L', 'I', 'M'}; - for(i = 0; i < 16; i++) + for(i = 0; i < 32; i++) memset(temp3[i], 0, 24); for(x = 0; x < 16; x++) + { if(memcmp(tag_type, rlpa_type, 4) == 0) { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_rlpa_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlpa_list[x][i]); } } else if(memcmp(tag_type, rlts_type, 4) == 0) { + if ( x == 5 ) break; for(i = 0; i < strlen(tag_types_rlts_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlts_list[x][i]); } } else if(memcmp(tag_type, rlvi_type, 4) == 0) { + if ( x == 1 ) break; for(i = 0; i < strlen(tag_types_rlvi_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlvi_list[x][i]); } } else if(memcmp(tag_type, rlvc_type, 4) == 0) { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_rlvc_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlvc_list[x][i]); } } else if(memcmp(tag_type, rlmc_type, 4) == 0) { + if ( x == 32 ) break; for(i = 0; i < strlen(tag_types_rlmc_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlmc_list[x][i]); } } else if(memcmp(tag_type, rltp_type, 4) == 0) { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_rltp_list[x]); i++) { temp3[x][i] = toupper(tag_types_rltp_list[x][i]); } } else if(memcmp(tag_type, rlim_type, 4) == 0) { + if ( x == 5 ) break; for(i = 0; i < strlen(tag_types_rlim_list[x]); i++) { temp3[x][i] = toupper(tag_types_rlim_list[x][i]); } } else { + if ( x == 16 ) break; for(i = 0; i < strlen(tag_types_list[x]); i++) { temp3[x][i] = toupper(tag_types_list[x][i]); } } + } head->entry_count = 0; subnode = node; for (x = 0, subnode = mxmlFindElement(subnode, node, "entry", NULL, NULL, MXML_DESCEND); subnode != NULL; subnode = mxmlFindElement(subnode, node, "entry", NULL, NULL, MXML_DESCEND), x++) { diff --git a/brlyt.c b/brlyt.c index 7b9f32e..393f4b4 100644 --- a/brlyt.c +++ b/brlyt.c @@ -25,6 +25,7 @@ #define MAXIMUM_TAGS_SIZE (0x1000) +// MAGIC char pic1_magic[] = "pic1"; char pan1_magic[] = "pan1"; char bnd1_magic[] = "bnd1"; @@ -40,6 +41,22 @@ char grs1_magic[] = "grs1"; char pae1_magic[] = "pae1"; char pas1_magic[] = "pas1"; +// CONSTANTS +char originX[3][15]; +char originY[3][15]; +char wraps[4][20]; +char tgen_types[11][20]; +char tgen_src[21][20]; +char mtxsrc[42][20]; +char tevcolor[4][20]; +char matsrc[2][20]; +char scale[10][20]; +char compare[8][20]; +char aop[5][20]; +char blendmode[5][20]; +char logicop[16][20]; +char blendfactor[8][20]; + static size_t BRLYT_fileoffset = 0; char *materials; @@ -49,6 +66,195 @@ char *textures; int numberOfTextures; int lengthOfTextures; +void SetupConstants( ) +{ + int o; + for ( o = 0 ; o < 3 ; o++ ) + memset( originX[o] , 0 , 15 ); + strcpy( originX[0] , "Left" ); + strcpy( originX[1] , "Center" ); + strcpy( originX[2] , "Right" ); + + for ( o = 0 ; o < 3 ; o++ ) + memset( originY[o] , 0 , 15 ); + strcpy( originY[0] , "Top" ); + strcpy( originY[1] , "Center" ); + strcpy( originY[2] , "Bottom" ); + + for ( o = 0 ; o < 4 ; o++ ) + memset( wraps[o] , 0 , 20 ); + strcpy( wraps[0] , "GX_CLAMP" ); + strcpy( wraps[1] , "GX_REPEAT" ); + strcpy( wraps[2] , "GX_MIRROR" ); + strcpy( wraps[3] , "GX_MAXTEXWRAPMODE" ); + + for ( o = 0 ; o < 11 ; o++ ) + memset( tgen_types[o] , 0 , 20 ); + strcpy( tgen_types[0] , "GX_TG_MTX3x4" ); + strcpy( tgen_types[1] , "GX_TG_MTX2x4" ); + strcpy( tgen_types[2] , "GX_TG_BUMP0" ); + strcpy( tgen_types[3] , "GX_TG_BUMP1" ); + strcpy( tgen_types[4] , "GX_TG_BUMP2" ); + strcpy( tgen_types[5] , "GX_TG_BUMP3" ); + strcpy( tgen_types[6] , "GX_TG_BUMP4" ); + strcpy( tgen_types[7] , "GX_TG_BUMP5" ); + strcpy( tgen_types[8] , "GX_TG_BUMP6" ); + strcpy( tgen_types[9] , "GX_TG_BUMP7" ); + strcpy( tgen_types[10] , "GX_TG_SRTG" ); + + for ( o = 0 ; o < 21 ; o++ ) + memset( tgen_src[o] , 0 , 20 ); + strcpy( tgen_src[0] , "GX_TG_POS" ); + strcpy( tgen_src[1] , "GX_TG_NRM" ); + strcpy( tgen_src[2] , "GX_TG_BINRM" ); + strcpy( tgen_src[3] , "GX_TG_TANGEN" ); + strcpy( tgen_src[4] , "GX_TG_TEX0" ); + strcpy( tgen_src[5] , "GX_TG_TEX1" ); + strcpy( tgen_src[6] , "GX_TG_TEX2" ); + strcpy( tgen_src[7] , "GX_TG_TEX3" ); + strcpy( tgen_src[8] , "GX_TG_TEX4" ); + strcpy( tgen_src[9] , "GX_TG_TEX5" ); + strcpy( tgen_src[10] , "GX_TG_TEX6" ); + strcpy( tgen_src[11] , "GX_TG_TEX7" ); + strcpy( tgen_src[12] , "GX_TG_TEXCOORD0" ); + strcpy( tgen_src[13] , "GX_TG_TEXCOORD1" ); + strcpy( tgen_src[14] , "GX_TG_TEXCOORD2" ); + strcpy( tgen_src[15] , "GX_TG_TEXCOORD3" ); + strcpy( tgen_src[16] , "GX_TG_TEXCOORD4" ); + strcpy( tgen_src[17] , "GX_TG_TEXCOORD5" ); + strcpy( tgen_src[18] , "GX_TG_TEXCOORD6" ); + strcpy( tgen_src[19] , "GX_TG_COLOR0" ); + strcpy( tgen_src[20] , "GX_TG_COLOR1" ); + + for ( o = 0 ; o < 42 ; o++ ) + memset( mtxsrc[o] , 0 , 20 ); + strcpy( mtxsrc[0] , "GX_PNMTX0" ); + strcpy( mtxsrc[1] , "GX_PNMTX1" ); + strcpy( mtxsrc[2] , "GX_PNMTX2" ); + strcpy( mtxsrc[3] , "GX_PNMTX3" ); + strcpy( mtxsrc[4] , "GX_PNMTX4" ); + strcpy( mtxsrc[5] , "GX_PNMTX5" ); + strcpy( mtxsrc[6] , "GX_PNMTX6" ); + strcpy( mtxsrc[7] , "GX_PNMTX7" ); + strcpy( mtxsrc[8] , "GX_PNMTX8" ); + strcpy( mtxsrc[9] , "GX_PNMTX9" ); + strcpy( mtxsrc[10] , "GX_TEXMTX0" ); + strcpy( mtxsrc[11] , "GX_TEXMTX1" ); + strcpy( mtxsrc[12] , "GX_TEXMTX2" ); + strcpy( mtxsrc[13] , "GX_TEXMTX3" ); + strcpy( mtxsrc[14] , "GX_TEXMTX4" ); + strcpy( mtxsrc[15] , "GX_TEXMTX5" ); + strcpy( mtxsrc[16] , "GX_TEXMTX6" ); + strcpy( mtxsrc[17] , "GX_TEXMTX7" ); + strcpy( mtxsrc[18] , "GX_TEXMTX8" ); + strcpy( mtxsrc[19] , "GX_TEXMTX9" ); + strcpy( mtxsrc[20] , "GX_IDENTITY" ); + strcpy( mtxsrc[21] , "GX_DTTMTX0" ); + strcpy( mtxsrc[22] , "GX_DTTMTX1" ); + strcpy( mtxsrc[23] , "GX_DTTMTX2" ); + strcpy( mtxsrc[24] , "GX_DTTMTX3" ); + strcpy( mtxsrc[25] , "GX_DTTMTX4" ); + strcpy( mtxsrc[26] , "GX_DTTMTX5" ); + strcpy( mtxsrc[27] , "GX_DTTMTX6" ); + strcpy( mtxsrc[28] , "GX_DTTMTX7" ); + strcpy( mtxsrc[29] , "GX_DTTMTX8" ); + strcpy( mtxsrc[30] , "GX_DTTMTX9" ); + strcpy( mtxsrc[31] , "GX_DTTMTX1" ); + strcpy( mtxsrc[32] , "GX_DTTMTX1" ); + strcpy( mtxsrc[33] , "GX_DTTMTX12" ); + strcpy( mtxsrc[34] , "GX_DTTMTX13" ); + strcpy( mtxsrc[35] , "GX_DTTMTX14" ); + strcpy( mtxsrc[36] , "GX_DTTMTX15" ); + strcpy( mtxsrc[37] , "GX_DTTMTX16" ); + strcpy( mtxsrc[38] , "GX_DTTMTX17" ); + strcpy( mtxsrc[39] , "GX_DTTMTX18" ); + strcpy( mtxsrc[40] , "GX_DTTMTX19" ); + strcpy( mtxsrc[41] , "GX_DTTIDENTITY" ); // actually 125 not 124 + + for ( o = 0 ; o < 4 ; o++ ) + memset( tevcolor[o] , 0 , 20 ); + strcpy( tevcolor[0] , "GX_CH_RED" ); + strcpy( tevcolor[1] , "GX_CH_GREEN" ); + strcpy( tevcolor[2] , "GX_CH_BLUE" ); + strcpy( tevcolor[3] , "GX_CH_ALPHA" ); + + for ( o = 0 ; o < 2 ; o++ ) + memset( matsrc[o] , 0 , 20 ); + strcpy( matsrc[0] , "GX_SRC_REG" ); + strcpy( matsrc[1] , "GX_SRC_VTX" ); + + for ( o = 0 ; o < 10 ; o++ ) + memset( scale[o] , 0 , 20 ); + strcpy( scale[0] , "GX_ITS_1" ); + strcpy( scale[1] , "GX_ITS_2" ); + strcpy( scale[2] , "GX_ITS_4" ); + strcpy( scale[3] , "GX_ITS_8" ); + strcpy( scale[4] , "GX_ITS_16" ); + strcpy( scale[5] , "GX_ITS_32" ); + strcpy( scale[6] , "GX_ITS_64" ); + strcpy( scale[7] , "GX_ITS_128" ); + strcpy( scale[8] , "GX_ITS_256" ); + strcpy( scale[9] , "GX_MAX_ITSCALE" ); + + for ( o = 0 ; o < 8 ; o++ ) + memset( compare[o] , 0 , 20 ); + strcpy( compare[0] , "GX_NEVER" ); + strcpy( compare[1] , "GX_LESS" ); + strcpy( compare[2] , "GX_EQUAL" ); + strcpy( compare[3] , "GX_LEQUAL" ); + strcpy( compare[4] , "GX_GREATER" ); + strcpy( compare[5] , "GX_NEQUAL" ); + strcpy( compare[6] , "GX_GEQUAL" ); + strcpy( compare[7] , "GX_ALWAYS" ); + + for ( o = 0 ; o < 5 ; o++ ) + memset( aop[o] , 0 , 20 ); + strcpy( aop[0] , "GX_AOP_AND" ); + strcpy( aop[1] , "GX_AOP_OR" ); + strcpy( aop[2] , "GX_AOP_XOR" ); + strcpy( aop[3] , "GX_AOP_XNOR" ); + strcpy( aop[4] , "GX_MAX_ALPHAOP" ); + + for ( o = 0 ; o < 5 ; o++ ) + memset( blendmode[o] , 0 , 20 ); + strcpy( blendmode[0] , "GX_BM_NONE" ); + strcpy( blendmode[1] , "GX_BM_BLEND" ); + strcpy( blendmode[2] , "GX_BM_LOGIC" ); + strcpy( blendmode[3] , "GX_BM_SUBTRACT" ); + strcpy( blendmode[4] , "GX_MAX_BLENDMODE" ); + + for ( o = 0 ; o < 8 ; o++ ) + memset( blendfactor[o] , 0 , 20 ); + strcpy( blendfactor[0] , "GX_BL_ZERO" ); + strcpy( blendfactor[1] , "GX_BL_ONE" ); + strcpy( blendfactor[2] , "GX_BL_SRCCLR" ); + strcpy( blendfactor[3] , "GX_BL_INVSRCCLR" ); + strcpy( blendfactor[4] , "GX_BL_SRCALPHA" ); + strcpy( blendfactor[5] , "GX_BL_INVSRCALPHA" ); + strcpy( blendfactor[6] , "GX_BL_DSTALPHA" ); + strcpy( blendfactor[7] , "GX_BL_INVDSTALPHA" ); + + for ( o = 0 ; o < 16 ; o++ ) + memset( logicop[o] , 0 , 20 ); + strcpy( logicop[0] , "GX_LO_CLEAR" ); + strcpy( logicop[1] , "GX_LO_AND" ); + strcpy( logicop[2] , "GX_LO_REVAND" ); + strcpy( logicop[3] , "GX_LO_COPY" ); + strcpy( logicop[4] , "GX_LO_INVAND" ); + strcpy( logicop[5] , "GX_LO_NOOP" ); + strcpy( logicop[6] , "GX_LO_XOR" ); + strcpy( logicop[7] , "GX_LO_OR" ); + strcpy( logicop[8] , "GX_LO_NOR" ); + strcpy( logicop[9] , "GX_LO_EQUIV" ); + strcpy( logicop[10] , "GX_LO_INV" ); + strcpy( logicop[11] , "GX_LO_REVOR" ); + strcpy( logicop[12] , "GX_LO_INVCOPY" ); + strcpy( logicop[13] , "GX_LO_INVOR" ); + strcpy( logicop[14] , "GX_LO_NAND" ); + strcpy( logicop[15] , "GX_LO_SET" ); + +} + static int FourCCsMatch(fourcc cc1, fourcc cc2) { int ret[4]; @@ -302,22 +508,8 @@ void PrintBRLYTEntry_fnl1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) } } -void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) +void PrintPane( brlyt_entry entry , u8* brlyt_file , mxml_node_t * tag ) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); - mxml_node_t *flags, *origin, *alpha, *padding; mxml_node_t *translate, *x, *y, *z; mxml_node_t *rotate, *scale; @@ -331,7 +523,9 @@ void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s",origins[data.origin%9]); + origin = mxmlNewElement(tag, "origin"); + mxmlElementSetAttrf(origin, "x", "%s", originX[data.origin%3]); + mxmlElementSetAttrf(origin, "y", "%s", originY[data.origin/3]); alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); translate = mxmlNewElement(tag, "translate"); @@ -350,54 +544,16 @@ void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); } -void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) +void PrintBRLYTEntry_pan1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); + PrintPane( entry , brlyt_file , tag ); +} - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZTrans)); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); +void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) +{ + PrintPane( entry , brlyt_file , tag ); - mxml_node_t *wndd, *unkk, *count, *offset1, *offset2; + mxml_node_t *wndd, *unkk, *count, *offset1, *offset2, *padding; int i, j; brlyt_wnd wndy; BRLYT_ReadDataFromMemory(&wndy, brlyt_file, sizeof(brlyt_wnd)); @@ -457,101 +613,15 @@ void PrintBRLYTEntry_wnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) void PrintBRLYTEntry_bnd1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); - - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.25f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.25f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.25f", float_swap_bytes(data.ZTrans)); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); + PrintPane( entry , brlyt_file , tag ); } void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); + PrintPane( entry , brlyt_file , tag ); - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); brlyt_pic_chunk data2; BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_pic_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZTrans - )); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%f", float_swap_bytes(data.height)); mxml_node_t *material, *color, *vtx, *attr, *coordinates, *set, *coord; material = mxmlNewElement(tag, "material"); mxmlElementSetAttrf(material, "name", "%s", getMaterial(short_swap_bytes(data2.mat_num))); color = mxmlNewElement(tag, "colors"); @@ -584,63 +654,8 @@ void PrintBRLYTEntry_pic1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) { - char origins[9][15]; - int o; - for ( o = 0 ; o < 8 ; o++ ) - memset( origins[o] , 0 , 20 ); - strcpy( origins[0] , "TOP LEFT" ); - strcpy( origins[1] , "TOP CENTER" ); - strcpy( origins[2] , "TOP RIGHT" ); - strcpy( origins[3] , "MIDDLE LEFT" ); - strcpy( origins[4] , "MIDDLE CENTER" ); - strcpy( origins[5] , "MIDDLE RIGHT" ); - strcpy( origins[6] , "BOTTOM LEFT" ); - strcpy( origins[7] , "BOTTOM CENTER" ); - strcpy( origins[8] , "BOTTOM RIGHT" ); - - char alignments[9][15]; - for ( o = 0 ; o < 8 ; o++ ) - memset( alignments[o] , 0 , 20 ); - strcpy( alignments[0] , "TOP LEFT" ); - strcpy( alignments[1] , "TOP CENTER" ); - strcpy( alignments[2] , "TOP RIGHT" ); - strcpy( alignments[3] , "MIDDLE LEFT" ); - strcpy( alignments[4] , "MIDDLE CENTER" ); - strcpy( alignments[5] , "MIDDLE RIGHT" ); - strcpy( alignments[6] , "BOTTOM LEFT" ); - strcpy( alignments[7] , "BOTTOM CENTER" ); - strcpy( alignments[8] , "BOTTOM RIGHT" ); + PrintPane( entry , brlyt_file , tag ); - mxml_node_t *flags, *origin, *alpha, *padding; - mxml_node_t *translate, *x, *y, *z; - mxml_node_t *rotate, *scale; - mxml_node_t *size, *width, *height; - brlyt_pane_chunk data; - BRLYT_fileoffset = entry.data_location; - BRLYT_ReadDataFromMemory(&data, brlyt_file, sizeof(brlyt_pane_chunk)); - mxmlElementSetAttrf(tag, "type", "%.4s", entry.magic); - mxmlElementSetAttrf(tag, "name", "%s", data.name); - mxmlElementSetAttrf(tag, "userdata", "%s", data.userdata); - flags = mxmlNewElement(tag, "visible"); mxmlNewTextf(flags, 0, "%02x", data.flag1 & 0x1); - flags = mxmlNewElement(tag, "WidescreenAffected"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x2)>>1); - flags = mxmlNewElement(tag, "flag"); mxmlNewTextf(flags, 0, "%02x", (data.flag1 & 0x4)>>2); - origin = mxmlNewElement(tag, "origin"); mxmlNewTextf(origin,0,"%s", origins[data.origin%9]); - alpha = mxmlNewElement(tag, "alpha"); mxmlNewTextf(alpha, 0, "%02x", data.alpha); - padding = mxmlNewElement(tag, "padding"); mxmlNewTextf(padding, 0, "%02x", data.pad); - translate = mxmlNewElement(tag, "translate"); - x = mxmlNewElement(translate, "x"); mxmlNewTextf(x, 0, "%.16f", float_swap_bytes(data.XTrans)); - y = mxmlNewElement(translate, "y"); mxmlNewTextf(y, 0, "%.16f", float_swap_bytes(data.YTrans)); - z = mxmlNewElement(translate, "z"); mxmlNewTextf(z, 0, "%.16f", float_swap_bytes(data.ZTrans)); - rotate = mxmlNewElement(tag, "rotate"); - x = mxmlNewElement(rotate, "x"); mxmlNewTextf(x, 0, "%.20f", float_swap_bytes(data.XRotate)); - y = mxmlNewElement(rotate, "y"); mxmlNewTextf(y, 0, "%.20f", float_swap_bytes(data.YRotate)); - z = mxmlNewElement(rotate, "z"); mxmlNewTextf(z, 0, "%.20f", float_swap_bytes(data.ZRotate)); - scale = mxmlNewElement(tag, "scale"); - x = mxmlNewElement(scale, "x"); mxmlNewTextf(x, 0, "%.10f", float_swap_bytes(data.XScale)); - y = mxmlNewElement(scale, "y"); mxmlNewTextf(y, 0, "%.10f", float_swap_bytes(data.YScale)); - size = mxmlNewElement(tag, "size"); - width = mxmlNewElement(size, "width"); mxmlNewTextf(width, 0, "%.20f", float_swap_bytes(data.width)); - height = mxmlNewElement(size, "height"); mxmlNewTextf(height, 0, "%.20f", float_swap_bytes(data.height)); mxml_node_t *length, *font, *xsize, *ysize, *charsize, *linesize, *alignment, *color1, *color2, *text; brlyt_text_chunk data2; BRLYT_ReadDataFromMemory(&data2, brlyt_file, sizeof(brlyt_text_chunk)); @@ -652,7 +667,9 @@ void PrintBRLYTEntry_txt1(brlyt_entry entry, u8* brlyt_file, mxml_node_t *tag) ysize = mxmlNewElement(font, "ysize"); mxmlNewTextf(ysize, 0, "%f", float_swap_bytes(data2.font_size_y)); charsize = mxmlNewElement(font, "charsize"); mxmlNewTextf(charsize, 0, "%f", float_swap_bytes(data2.char_space)); linesize = mxmlNewElement(font, "linesize"); mxmlNewTextf(linesize, 0, "%f", float_swap_bytes(data2.line_space)); - alignment = mxmlNewElement(font, "alignment"); mxmlNewTextf(alignment, 0, "%s", alignments[data2.alignment%9]); + alignment = mxmlNewElement(font, "alignment"); + mxmlElementSetAttrf(alignment, "x", "%s", originX[data2.alignment%3]); + mxmlElementSetAttrf(alignment, "y", "%s", originY[data2.alignment/3]); color1 = mxmlNewElement(tag, "color1"); mxmlNewTextf(color1, 0, "%08x", be32(data2.color1) ); color2 = mxmlNewElement(tag, "color2"); mxmlNewTextf(color2, 0, "%08x", be32(data2.color2) ); // int q; for(q=0;q