Editing Resource Container CXML (RCO, QRC, Theme Files, RAF, CXML)
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 9: | Line 9: | ||
[http://www.file-upload.net/download-9992747/Desktop.rar.html Some RCO as Reference] | [http://www.file-upload.net/download-9992747/Desktop.rar.html Some RCO as Reference] | ||
{| class="wikitable" style="font-size:x-small;" | {| class="wikitable" style="font-size:x-small;" | ||
Line 40: | Line 36: | ||
| 0x24 || 0x04 || F1 01 00 00 || Strings table size || in PS3 = Integer array size | | 0x24 || 0x04 || F1 01 00 00 || Strings table size || in PS3 = Integer array size | ||
|- bgcolor="#ffeebb" | |- bgcolor="#ffeebb" | ||
| 0x28 || 0x04 || D0 18 00 00 || | | 0x28 || 0x04 || D0 18 00 00 || overlapped (not used, but present in the header to keep the structure standards) || in PS3 = Float array absolute start offset | ||
|- bgcolor="#ffeebb" | |- bgcolor="#ffeebb" | ||
| 0x2C || 0x04 || 00 00 00 00 || | | 0x2C || 0x04 || 00 00 00 00 || empty || in PS3 = Float array size | ||
|- bgcolor="#ffee99" | |- bgcolor="#ffee99" | ||
| 0x30 || 0x04 || D0 18 00 00 || | | 0x30 || 0x04 || D0 18 00 00 || Styles ID INT table absolute start offset || in PS3 = File table absolute start offset | ||
|- bgcolor="#ffee99" | |- bgcolor="#ffee99" | ||
| 0x34 || 0x04 || 34 00 00 00 || | | 0x34 || 0x04 || 34 00 00 00 || Styles ID INT table size || in PS3 = File table size | ||
|- bgcolor="#ffee77" | |- bgcolor="#ffee77" | ||
| 0x38 || 0x04 || 10 19 00 00 || Integer array absolute start offset || in PS3 = Unknown area absolute start offset | | 0x38 || 0x04 || 10 19 00 00 || Integer array absolute start offset || in PS3 = Unknown area absolute start offset | ||
Line 81: | Line 77: | ||
int stringtable_offset; | int stringtable_offset; | ||
int stringtable_size; | int stringtable_size; | ||
int | int styleidtable_offset; | ||
int | int styleidtable_size; | ||
int intarraytable_offset; | int intarraytable_offset; | ||
int intarraytable_size; | int intarraytable_size; | ||
Line 119: | Line 113: | ||
FLOAT, | FLOAT, | ||
STRING, | STRING, | ||
unk, | |||
STYLE_ID, | |||
INTEGER_ARRAY, | INTEGER_ARRAY, | ||
FLOAT_ARRAY, | FLOAT_ARRAY, | ||
Line 139: | Line 133: | ||
struct StringData { | struct StringData { | ||
int offset; | int offset; | ||
int len; | int len; | ||
Line 177: | Line 166: | ||
float f; | float f; | ||
StringData s; | StringData s; | ||
IntArrayData ia; | IntArrayData ia; | ||
FloatArrayData fa; | FloatArrayData fa; | ||
Line 196: | Line 184: | ||
AllocationType_Alloc_IDINTTable, | AllocationType_Alloc_IDINTTable, | ||
AllocationType_Alloc_StringTable, | AllocationType_Alloc_StringTable, | ||
AllocationType_Alloc_IntArrayTable, | AllocationType_Alloc_IntArrayTable, | ||
AllocationType_Alloc_FloatArrayTable, | AllocationType_Alloc_FloatArrayTable, | ||
AllocationType_Alloc_FileTable, | AllocationType_Alloc_FileTable, | ||
AllocationType_Alloc_StyleIDTable, | |||
AllocationType_Free_Tree, | AllocationType_Free_Tree, | ||
Line 206: | Line 193: | ||
AllocationType_Free_IDINTTable, | AllocationType_Free_IDINTTable, | ||
AllocationType_Free_StringTable, | AllocationType_Free_StringTable, | ||
AllocationType_Free_IntArrayTable, | AllocationType_Free_IntArrayTable, | ||
AllocationType_Free_FloatArrayTable, | AllocationType_Free_FloatArrayTable, | ||
AllocationType_Free_FileTable, | AllocationType_Free_FileTable, | ||
AllocationType_AFree_StyleIDTable, | |||
}; | }; | ||
Line 234: | Line 220: | ||
char *stringtable; | char *stringtable; | ||
unsigned int stringtable_capacity; | unsigned int stringtable_capacity; | ||
int *intarraytable; | int *intarraytable; | ||
unsigned int intarraytable_capacity; | unsigned int intarraytable_capacity; | ||
Line 242: | Line 226: | ||
char *filetable; | char *filetable; | ||
unsigned int filetable_capacity; | unsigned int filetable_capacity; | ||
char * | char *styleidtable; | ||
unsigned int | unsigned int styleidtable_capacity; | ||
Allocator allocator; | Allocator allocator; | ||
void *allocator_userdata; | void *allocator_userdata; | ||
Line 321: | Line 305: | ||
|- | |- | ||
! Attribute type<BR />(offset 0x4, length 0x4) | ! Attribute type<BR />(offset 0x4, length 0x4) | ||
! 1<BR />(Single Integer) !! 2<BR />(Single Float) !! 3<BR />(String) !! 4<BR />( | ! 1<BR />(Single Integer) !! 2<BR />(Single Float) !! 3<BR />(String) !! 4<BR />(analysing...) !! 5<BR />(ID STYLE) !! 6<BR />(Integer Array) !! 7<BR />(Float Array) !! 8<BR />(File) !! 9<BR />(ID STR w lpb Ref) !! A<BR />(ID STR wo lpb Ref) !! B<BR />(ID INT w lpb Ref) !! C<BR />(ID INT wo lpb Ref) | ||
|- | |- | ||
! variable 1<BR />(offset 0x8, length 0x4) | ! variable 1<BR />(offset 0x8, length 0x4) | ||
| Integer value || Float value || '''Strings Table''' offset || | | Integer value || Float value || '''Strings Table''' offset || analysing... || '''ID STYLE Table''' offset || '''Integer Arrays Table''' offset || '''Float Arrays Table''' offset || '''Files Table''' offset || '''ID STR Table''' offset || '''ID STR Table''' offset || '''ID INT Table''' offset || '''ID INT Table''' offset | ||
|- | |- | ||
! variable 2<BR />(offset 0xC, length 0x4) | ! variable 2<BR />(offset 0xC, length 0x4) | ||
| {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || String length || | | {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || String length || analysing... || Nr. of int's to read (always 4) || Nr. of int's to read || Nr. of float's to read || File size || {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> || {{cellcolors|#ffaaaa}} Not used <abbr title="(always 0 in the samples found)">(always 0)</abbr> | ||
|} | |} | ||
* w = with || wo = without || lpb = loopback | * w = with || wo = without || lpb = loopback | ||
Line 335: | Line 319: | ||
ZLIB Compressed level 9 (only container) | ZLIB Compressed level 9 (only container) | ||
==== RCOF | ==== RCOF ==== | ||
RCOF ('''R'''esources '''C'''ontainer | RCOF ('''R'''esources '''C'''ontainer '''F'''lat?) | ||
*Example from FW?? notification_settings_plugin.rco: | *Example from FW?? notification_settings_plugin.rco: | ||
Line 348: | Line 331: | ||
|- | |- | ||
| Magic || 0x00 || 0x04 || {{cellcolors|#666666|#ffffff}} 52 43 4F 46 || 'RCOF' | | Magic || 0x00 || 0x04 || {{cellcolors|#666666|#ffffff}} 52 43 4F 46 || 'RCOF' | ||
|- | |- | ||
| Version || 0x04 || 0x04 || {{cellcolors|#888888|#ffffff}} 00 00 01 10* || CXML version '1.10' | | Version || 0x04 || 0x04 || {{cellcolors|#888888|#ffffff}} 00 00 01 10* || CXML version '1.10' | ||
Line 380: | Line 349: | ||
**one of the "not used table" (at offset 0x18D0 with a size of 0) is placed before an used table (also at offset 0x18D0 but with a size of 0x34) | **one of the "not used table" (at offset 0x18D0 with a size of 0) is placed before an used table (also at offset 0x18D0 but with a size of 0x34) | ||
'''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F''' | '''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F''' | ||
'''00000000''' <span style="background:#666666;">52 43 4F 46</span> <span style="background:#666666;">10 01 00 00</span> <span style="background:#ff8888;">50 00 00 00</span> <span style="background:#ff8888;">2C 15 00 00</span> RCOF....P...,... | '''00000000''' <span style="background:#666666;">52 43 4F 46</span> <span style="background:#666666;">10 01 00 00</span> <span style="background:#ff8888;">50 00 00 00</span> <span style="background:#ff8888;">2C 15 00 00</span> RCOF....P...,... | ||
Line 387: | Line 356: | ||
'''00000030''' <span style="background:#ffee99;">D0 18 00 00</span> <span style="background:#ffee99;">34 00 00 00</span> <span style="background:#ffee77;">10 19 00 00</span> <span style="background:#ffee77;">2C 00 00 00</span> Ð...4.......,... | '''00000030''' <span style="background:#ffee99;">D0 18 00 00</span> <span style="background:#ffee99;">34 00 00 00</span> <span style="background:#ffee77;">10 19 00 00</span> <span style="background:#ffee77;">2C 00 00 00</span> Ð...4.......,... | ||
'''00000040''' <span style="background:#ffee55;">40 19 00 00</span> <span style="background:#ffee55;">8C 00 00 00</span> <span style="background:#ffee33;">D0 19 00 00</span> <span style="background:#ffee33;">60 89 00 00</span> @...Œ...Ð...`‰.. | '''00000040''' <span style="background:#ffee55;">40 19 00 00</span> <span style="background:#ffee55;">8C 00 00 00</span> <span style="background:#ffee33;">D0 19 00 00</span> <span style="background:#ffee33;">60 89 00 00</span> @...Œ...Ð...`‰.. | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 416: | Line 386: | ||
| empty || 0x2C || 0x04 || {{cellcolors|#ffeebb}} 00 00 00 00 || Not used | | empty || 0x2C || 0x04 || {{cellcolors|#ffeebb}} 00 00 00 00 || Not used | ||
|- | |- | ||
| | | Styles ID Integer Table Offset || 0x30 || 0x04 || {{cellcolors|#ffee99}} 00 00 18 D0* || | ||
|- | |- | ||
| | | Styles ID Integer Table Size || 0x34 || 0x04 || {{cellcolors|#ffee99}} 00 00 00 34* || | ||
|- | |- | ||
| Integer Array Table Offset || 0x38 || 0x04 || {{cellcolors|#ffee77}} 00 00 19 10* || | | Integer Array Table Offset || 0x38 || 0x04 || {{cellcolors|#ffee77}} 00 00 19 10* || | ||
Line 433: | Line 403: | ||
|- | |- | ||
|} | |} | ||
* reversed little endian | * reversed little endian | ||
*Notes | *Notes | ||
**The sizes doesn't includes the (possible) padding at the end of all tables | **The sizes doesn't includes the (possible) padding at the end of all tables | ||
===Tree Table=== | ===Tree Table=== | ||
Line 606: | Line 522: | ||
===String Table=== | ====String Table==== | ||
from [http://www.file-upload.net/download-9994498/string_table.rar.html notification_settings_plugin.rco] FW?? | from [http://www.file-upload.net/download-9994498/string_table.rar.html notification_settings_plugin.rco] FW?? | ||
This area is composed by a consecutive list of all the tags (elements or attributes) from the xml that was used to create the container. Are stored "from-top-to-bottom" in the exact same order that they was ordered in the xml (althougth it looks in some cases the theme compiler reorders them to his convenience). This list doesn't makes differences of the "directory hierarchy" of the tags neither is specified if the tag is an element or an attribute (this parent-child hierarchy is defined in other place of the container by making references to this area by using "byte counters" to locate a tag) | This area is composed by a consecutive list of all the tags (elements or attributes) from the xml that was used to create the container. Are stored "from-top-to-bottom" in the exact same order that they was ordered in the xml (althougth it looks in some cases the theme compiler reorders them to his convenience). This list doesn't makes differences of the "directory hierarchy" of the tags neither is specified if the tag is an element or an attribute (this parent-child hierarchy is defined in other place of the container by making references to this area by using "byte counters" to locate a tag) | ||
Line 649: | Line 565: | ||
**The integer values and text strings of some attributes tags from the xml (e.g: "themename=mytheme", or "fontcolor=2") are stored in this area too at the right of his tag, the presence of an integer value displaces the next tag (this only happens in themes and rafs, not in QRC, RCO files so is added here as a note but is very important for the structure of the other containers when using "byte counters" to locate the tags) | **The integer values and text strings of some attributes tags from the xml (e.g: "themename=mytheme", or "fontcolor=2") are stored in this area too at the right of his tag, the presence of an integer value displaces the next tag (this only happens in themes and rafs, not in QRC, RCO files so is added here as a note but is very important for the structure of the other containers when using "byte counters" to locate the tags) | ||
=== | ===ID Table=== | ||
In a '''Vita RCO''' we have '''3''' diffrent '''ID Tables''' which we will take a deeper look now. | In a '''Vita RCO''' we have '''3''' diffrent '''ID Tables''' which we will take a deeper look now. | ||
Line 700: | Line 613: | ||
'''00000090''' FF FF FF FF <span style="background:#ffff66;">20 41 32 74</span> ÿÿÿÿ.A2t | '''00000090''' FF FF FF FF <span style="background:#ffff66;">20 41 32 74</span> ÿÿÿÿ.A2t | ||
====ID | ====ID Style==== | ||
from [http://www.file-upload.net/download-9994521/id_styletable.rar.html notification_settings_plugin.rco] FW?? | from [http://www.file-upload.net/download-9994521/id_styletable.rar.html notification_settings_plugin.rco] FW?? | ||
Line 712: | Line 625: | ||
'''00000020''' <span style="background:#ffff66;">DA 39 A3 EE 20 2F 57 0C 86 D6 DE 69 22 43 90 D9</span> Ú9£î./W.†ÖÞi"C.Ù | '''00000020''' <span style="background:#ffff66;">DA 39 A3 EE 20 2F 57 0C 86 D6 DE 69 22 43 90 D9</span> Ú9£î./W.†ÖÞi"C.Ù | ||
'''00000030''' <span style="background:#ffff66;">DD 31 50 3B</span> Ý1P; | '''00000030''' <span style="background:#ffff66;">DD 31 50 3B</span> Ý1P; | ||
===Integer Array=== | ===Integer Array=== | ||
Line 856: | Line 770: | ||
===XML Output=== | ===XML Output=== | ||
This is the Output, saved as xml, from the notification_settings_plugin.rco | This is the Output, saved as xml, from the notification_settings_plugin.rco | ||
download [http://www.file-upload.net/download-9995156/notification_settings_plugin.rar.html notification_settings_plugin.xml] from FW?? | |||
*Note: That xml below isn't perfect right now. Especially the values from <styletable> need to be corrected. I'll change the xml here as soon i finished the CXML Tool and got a nice correct xml written out. | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<resource version="0.1" type="normal"> | |||
<stringtable> | |||
<local origsize="1040" src="xmls/ja.xml" compress="on" id="ja"/> | |||
<local origsize="1248" src="xmls/en-gb.xml" compress="on" id="en-gb"/> | |||
<local origsize="1248" src="xmls/en.xml" compress="on" id="en"/> | |||
<local origsize="1328" src="xmls/fr.xml" compress="on" id="fr"/> | |||
<local origsize="1392" src="xmls/es.xml" compress="on" id="es"/> | |||
<local origsize="1312" src="xmls/de.xml" compress="on" id="de"/> | |||
<local origsize="1280" src="xmls/it.xml" compress="on" id="it"/> | |||
<local origsize="1296" src="xmls/nl.xml" compress="on" id="nl"/> | |||
<local origsize="1312" src="xmls/pt-br.xml" compress="on" id="pt-br"/> | |||
<local origsize="1296" src="xmls/pt.xml" compress="on" id="pt"/> | |||
<local origsize="1312" src="xmls/ru.xml" compress="on" id="ru"/> | |||
<local origsize="1040" src="xmls/ko.xml" compress="on" id="ko"/> | |||
<local origsize="992" src="xmls/zh-t.xml" compress="on" id="zh-t"/> | |||
<local origsize="992" src="xmls/zh-s.xml" compress="on" id="zh-s"/> | |||
<local origsize="1264" src="xmls/fi.xml" compress="on" id="fi"/> | |||
<local origsize="1232" src="xmls/sv.xml" compress="on" id="sv"/> | |||
<local origsize="1232" src="xmls/da.xml" compress="on" id="da"/> | |||
<local origsize="1232" src="xmls/no.xml" compress="on" id="no"/> | |||
<local origsize="1296" src="xmls/pl.xml" compress="on" id="pl"/> | |||
<local origsize="1296" src="xmls/tr.xml" compress="on" id="tr"/> | |||
</stringtable> | |||
<texturetable> | |||
<texture origsize="5328" src="texture/1DDD0E08.gim" compress="on" id="1DDD0E08" type="texture/gim"/> | |||
<texture origsize="7632" src="texture/2133CEEB.gim" compress="on" id="2133CEEB" type="texture/gim"/> | |||
<texture origsize="7632" src="texture/F7988312.gim" compress="on" id="F7988312" type="texture/gim"/> | |||
<texture origsize="5328" src="texture/6F57E251.gim" compress="on" id="6F57E251" type="texture/gim"/> | |||
<texture origsize="7632" src="texture/86645D41.gim" compress="on" id="86645D41" type="texture/gim"/> | |||
<texture src="texture/29B91F26.gim" origsize="57648" div_ratio_h="0.49" compress="on" margin_v="1" id="29B91F26" margin_h="1" type="texture/gim" div_mode="3x1"/> | |||
<texture src="texture/D0A272A1.gim" origsize="57648" div_ratio_h="0.49" compress="on" margin_v="1" id="D0A272A1" margin_h="1" type="texture/gim" div_mode="3x1"/> | |||
</texturetable> | |||
<styletable> | |||
<style_button id="86009135" bg_obj="1, 0, 0, 0" glow_obj="0, 0, 0, 0"> | |||
<planeobj texture0="261FB929" id="01000000"/> | |||
<planeobj texture0="A172A2D0" blend="2" id="00000000" /> | |||
<style_text textobj="00000000" id="E98E283C"/> | |||
<textobj font_size="28" bold="1" color="0.49, 1, 1, 1" max_line_count="1" line_pitch="28" word_wrap="1" ellipsis="1" id="00000000"/> | |||
<style_text textobj=" | |||
</style_text> | </style_text> | ||
</style_button> | |||
<style_plane id="D7F12CC7" planeobj="0, 0, 0, 0"> | |||
<planeobj texture0="0DD14518" id="01000000"/> | |||
</style_plane> | |||
<pagetable> | |||
<templatetable> | |||
<template id="9174183F"> | |||
<file_list style="4B363870" id="04000000"/> | |||
<layout_hint align="0, 0" size="960, 448" id="00000000" pos="0, 0"/> | |||
</template> | |||
<template fast_open="1" id="60FB37AF"> | |||
<list_item style="998F48F3" id="02000000"> | |||
<layout_hint align="0, 0" size="840, 80" id="00000000" pos="448, 0"/> | |||
<text style="E98E283C" id="01000000"> | |||
<layout_hint size="462, 0" align="1, 0" adjust="0, 0" id="05000000" pos="-272, 0"/> | |||
<plane style="2B337B5F" id="02000000"> | |||
<layout_hint pos="-30, 0" id="05000000" adjust="0, 0" alpha="0" anchor="1, 0" size="60, 60"/> | |||
</plane> | |||
<check_box style="98F8209F" id="00000000"> | |||
<layout_hint align="2, 0" size="46, 46" pos="602, 0" anchor="1, 0" id="05000000"/> | |||
<focus_hint focus_shape="0" focus_size="47, 47"/> | |||
</check_box> | |||
</text> | |||
</list_item> | |||
</template> | |||
<template fast_open="1" id="23860CE8"> | |||
<list_item style="998F48F3" id="02000000"> | |||
<layout_hint align="0, 0" size="840, 80" id="00000000" pos="0, 0"/> | |||
<button sound="74324120" style="0520652F" id="00000000"> | |||
<layout_hint size="840, 80" adjust="1, 0" id="01000000" pos="0, 0"/> | |||
<focus_hint focus_shape="3" focus_hint="960, 80"/> | |||
<text style="E98E283C" id="02000000"> | |||
<layout_hint size="-206, 0" align="0, 0" adjust="4, 0" id="01000000" pos="0, 330"/> | |||
<file_list style="2B337B5F" id="05000000"> | |||
<layout_hint pos="0, -40" id="01000000" adjust="1, 0" alpha="0" anchor="2, 0" size="60, 60"/> | |||
</file_list> | |||
</text> | |||
<plane style="D7F12CC7" id="D9904322"> | |||
<layout_hint size="46, 46" align="5, 2" adjust="1, 0" id="EEA339DA" pos="330, 0"/> | |||
</plane> | |||
</button> | |||
</list_item> | |||
</template> | |||
</templatetable> | |||
</pagetable> | |||
</styletable> | |||
</resource> | |||
</xml> | |||
So what of old but still handy [ | ==Other Usefull Links== | ||
So what of old but still handy [http://psxsdk.googlecode.com/svn/!svn/bc/13/trunk/tools/ VAG2WAV WAV2VAG Source] |