Editing Resource Container CXML (RCO, QRC, Theme Files, RAF, CXML)

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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 1: Line 1:
[[Category:Software]]<noinclude>[[Category:Main]]</noinclude>
== RCO ==
== RCO ==
*In PSvita the RCO's uses a cxml structure, with a header size of 0x50 and the magic identifyer '''RCOF'''
*In PSvita the RCO's uses a cxml structure, with a header size of 0x50 and the magic identifyer '''RCOF'''
Line 9: Line 7:


[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]
[https://bitbucket.org/SilicaAndPina/cxml-decompiler CXML Decompiler and Compiler]
There is also a cxml compiler labled "cxml.py" inside the [https://archive.org/download/PlayStationMobile/Development%20Tools/SDK/PSM_SDK_2.00.00.exe PSM SDK] @ %SCE_PSM_SDK%\tools\PublishingUtility\cxml\compiler as this is the format of [[app.info]]


{| class="wikitable" style="font-size:x-small;"
{| class="wikitable" style="font-size:x-small;"
Line 40: Line 34:
| 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 || Char table absolute start offset || in PS3 = Float array absolute start offset
| 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 || Char table size || in PS3 = Float array size
| 0x2C || 0x04 || 00 00 00 00 || empty || in PS3 = Float array size
|- bgcolor="#ffee99"
|- bgcolor="#ffee99"
| 0x30 || 0x04 || D0 18 00 00 || Hash ID INT table absolute start offset || in PS3 = File table absolute start offset
| 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 || Hash ID INT table size || in PS3 = File table size
| 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 68: Line 62:
==XML implicit structure Overview==
==XML implicit structure Overview==


  namespace cxml {
  namespace cxml
    class cxml : public Base {
{
        struct Header { /*header of a cxml document*/
struct Header { /*header of a cxml document*/
            char magic[4];
                char magic[4];
            int version;
                int version;
            int tree_offset;
                int tree_offset;
            int tree_size;
                int tree_size;
            int idstrtable_offset;
                int idstrtable_offset;
            int idstrtable_size;
                int idstrtable_size;
            int idinttable_offset;
                int idinttable_offset;
            int idinttable_size;
                int idinttable_size;
            int stringtable_offset;
                int stringtable_offset;
            int stringtable_size;
                int stringtable_size;
            int chartable_offset;
                int styleidtable_offset;
            int chartable_size;
                int styleidtable_size;
            int hashidtable_offset;
                int intarraytable_offset;
            int hashidtable_size;
                int intarraytable_size;
            int intarraytable_offset;
                int floatarraytable_offset;
            int intarraytable_size;
                int floatarraytable_size;
            int floatarraytable_offset;
                int filetable_offset;
            int floatarraytable_size;
                int filetable_size;
            int filetable_offset;
        };
            int filetable_size;
        };
          
          
        struct ChildElementBin {
        struct ElementBin
            int name;
        {
            int attr_num;
                int name;
            int parent_node;
                int attr_num;
            int prev_sibling;
                int parent;
            int next_sibling;
                int prev;
            int first_child;
                int next;
            int last_child;
                int first_child;
            AttributeBin attribute;
                int last_child;
        };
        };
          
          
        struct SiblingElementBin {
        struct AttributeBin
            int name;
        {
            int attr_num;
                int INTEGER = 1;
            int parent_node;
                int FLOAT = 2;
            int prev_sibling;
                int STRING = 3;
            int next_sibling;
                int unk = 4;
            AttributeBin attribute;
                int STYLE_ID = 5;
        };
                int INTEGER_ARRAY = 6;
       
                int FLOAT_ARRAY = 7;
        struct AttributeBin {
                int DATA = 8;
            typedef enum {
                int ID_STR_REF = 9;
                NONE,
                int ID_STR_NO_REF = 10;
                INTEGER,
                int ID_INT_REF = 11;
                FLOAT,
                int ID_INT_NO_REF = 12;
                STRING,
                int name;
                CHAR,
                int type;
                HASH_ID,
                INTEGER_ARRAY,
                FLOAT_ARRAY,
                DATA,
                ID_STR_LPB,
                ID_STR,
                ID_INT_LPB,
                ID_INT,
            } TYPE;
            int name;
            TYPE type;
            struct SingleValue {
                int intValue;
                float floatValue;      
            };
   
   
            struct StringData {
                struct StringData
                int offset;
                {
                int len;
                        int offset;
            };
                        int len;
                };
            struct CharData {
                int offset;
                int len;
            };
                  
                  
            struct IntArrayData {
                struct IntArrayData
                int offset;
                {
                int num;
                        int offset;
            };
                        int num;
                };
                  
                  
            struct FloatArrayData {
                struct FloatArrayData
                int offset;
                {
                int num;
                        int offset;
            };
                        int num;
                };
                
                
            struct FileData {
                struct FileData
                int offset;
                {
                int size;
                        int offset;
            };
                        int size;
                };
            struct IdStringTableData {
                int offset;
                bool loopback;
            };
            struct IdIntegerTableData {
                int offset;
                bool loopback;
            };
                  
                  
            union {
                union
                int i;
                {
                float f;
                        int i;
                StringData s;
                        float f;
                CharData c;
                        StringData s;
                IntArrayData ia;
                        IntArrayData ia;
                FloatArrayData fa;
                        FloatArrayData fa;
                FileData file;
                        FileData file;
                int id;
                        int id;
                int idref;
                        int idref;
            };
                };
        };
        };
          
          
        struct IDBin {
        struct IDBin
            int entity_offset;
        {
            char id[0];
                int entity_offset;
        };
                char id[0];
        };
          
          
        enum AllocationType {
        enum AllocationType
            AllocationType_Alloc_Tree,
        {
            AllocationType_Alloc_IDSTRTable,
                AllocationType_Alloc_Tree,
            AllocationType_Alloc_IDINTTable,
                AllocationType_Alloc_IDSTRTable,
            AllocationType_Alloc_StringTable,
                AllocationType_Alloc_IDINTTable,
            AllocationType_Alloc_CharTable,
                AllocationType_Alloc_StringTable,
            AllocationType_Alloc_IntArrayTable,
                AllocationType_Alloc_IntArrayTable,
            AllocationType_Alloc_FloatArrayTable,
                AllocationType_Alloc_FloatArrayTable,
            AllocationType_Alloc_FileTable,
                AllocationType_Alloc_FileTable,
            AllocationType_Alloc_HashIDTable,
                AllocationType_Alloc_StyleIDTable,
    
    
            AllocationType_Free_Tree,
                AllocationType_Free_Tree,
            AllocationType_Free_IDSTRTable,
                AllocationType_Free_IDSTRTable,
            AllocationType_Free_IDINTTable,
                AllocationType_Free_IDINTTable,
            AllocationType_Free_StringTable,
                AllocationType_Free_StringTable,
            AllocationType_Free_CharTable,
                AllocationType_Free_IntArrayTable,
            AllocationType_Free_IntArrayTable,
                AllocationType_Free_FloatArrayTable,
            AllocationType_Free_FloatArrayTable,
                AllocationType_Free_FileTable,
            AllocationType_Free_FileTable,
                AllocationType_AFree_StyleIDTable,
            AllocationType_AFree_HashIDTable,
        };
        };
        
        
        enum AccessMode {
        enum AccessMode
            AccessMode_ReadWrite,
        {
            AccessMode_ReadOnly_File,
                AccessMode_ReadWrite,
            AccessMode_ReadOnly_Memory,
                AccessMode_ReadOnly_File,
        };
                AccessMode_ReadOnly_Memory,
        };
          
          
        class Document {
        class Document {
        public:
        public:
            typedef void (*Allocator)( AllocationType type, void * userdata, void * old_addr, unsigned int required_size, void ** addr, unsigned int * size );
                typedef void (*Allocator)( AllocationType type, void * userdata, void * old_addr, unsigned int required_size, void ** addr, unsigned int * size );
          
          
        private:
        private:
            AccessMode access_mode;
                AccessMode access_mode;
            Header header;
                Header header;
            char *tree;
                char * tree;
            unsigned int tree_capacity;
                unsigned int tree_capacity;
            char *idstrtable;
                char * idstrtable;
            unsigned int idstrtable_capacity;
                unsigned int idstrtable_capacity;
            char *idinttable;
                char * idinttable;
            unsigned int idinttable_capacity;
                unsigned int idinttable_capacity;
            char *stringtable;
                char * stringtable;
            unsigned int stringtable_capacity;
                unsigned int stringtable_capacity;
            char *chartable;
                int * intarraytable;
            unsigned int chartable_capacity;
                unsigned int intarraytable_capacity;
            int *intarraytable;
                float * floatarraytable;
            unsigned int intarraytable_capacity;
                unsigned int floatarraytable_capacity;
            float *floatarraytable;
                char * filetable;
            unsigned int floatarraytable_capacity;
                unsigned int filetable_capacity;
            char *filetable;
                char * styleidtable;
            unsigned int filetable_capacity;
                unsigned int styleidtable_capacity;
            char *hashidtable;
                Allocator allocator;
            unsigned int hashidtable_capacity;
                void * allocator_userdata;
            Allocator allocator;
        };
            void *allocator_userdata;
        };
          
          
        class Element {
        class Element {
        private:
        private:
            Document *doc;
                Document * doc;
            int offset;
                int offset;
        };
        };
        
        
        class Attribute {
        class Attribute {
        private:
        private:
            Document *doc;
                Document * doc;
            int element_offset;
                int element_offset;
            int offset;
                int offset;
        };
        };
        /// <summary>
        /// Initializes this class. Some times also called Constructore.
        /// </summary>
        void Initialize() {
            // All stuff that need to be set before running any function call...
            // goes into here.
        };
    };
  };
  };


===Element===
===Element===
{| class="wikitable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
|+ CXML Child Element definition
|+ CXML Element Root definition
! Offset !! Length !! usage
! Offset !! Length !! usage
|-
|-
| 0x00 || 0x04 || Element name relative offset in '''TAGS Table'''
| 0x00 || 0x04 || Root Element name relative offset in '''TAGS Table'''
|-
|-
| 0x04 || 0x04 || Number of attributes in '''TOC'''
| 0x04 || 0x04 || Number of attributes in '''TOC'''
Line 282: Line 236:
| 0x08 || 0x04 || Parent relative offset in '''TOC'''
| 0x08 || 0x04 || Parent relative offset in '''TOC'''
|-
|-
| 0x0C || 0x04 || Previous Sibling relative offset in '''TOC'''
| 0x1C || 0x04 || First child relative offset in '''TOC'''
|-
|-
| 0x10 || 0x04 || Next Sibling relative offset in '''TOC'''
| 0x10 || 0x04 || Last child relative offset in '''TOC'''
|-
| 0x14 || 0x04 || First child relative offset in '''TOC'''
|-
| 0x18 || 0x04 || Last child relative offset in '''TOC'''
|}
|}
Length is 7 x 4 bytes == 28 bytes (0x1C).


{| class="wikitable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
|+ CXML Sibling Element definition
|+ CXML Element Base definition
! Offset !! Length !! usage
! Offset !! Length !! usage
|-
|-
Line 303: Line 251:
| 0x08 || 0x04 || Parent relative offset in '''TOC'''
| 0x08 || 0x04 || Parent relative offset in '''TOC'''
|-
|-
| 0x0C || 0x04 || Previous Sibling relative offset in '''TOC'''
| 0x0C || 0x04 || Previous Brother relative offset in '''TOC'''
|-
|-
| 0x10 || 0x04 || Next Sibling relative offset in '''TOC'''
| 0x10 || 0x04 || Next Brother relative offset in '''TOC'''
|-
| 0x14 || 0x04 || First child relative offset in '''TOC'''
|-
| 0x18 || 0x04 || Last child relative offset in '''TOC'''
|}
|}
Length is 5 x 4 bytes == 20 bytes (0x14).
NOTE:
*The '''Child Element''' defination describe the Child Element without his Attributes where the '''Sibling Element''' describe the Sibling Element also without his Attributes.
*So the full order to read will be '''Child Element''' >>> '''Attributes''', '''Sibling Element''' >>> '''Attributes'''. The Root (so offset 0x00) of any SonyPlaystation Resource file always start's with a Child element to read.


===Attribute===
===Attribute===
Length is 4 x 4 bytes == 16 bytes (0x10).
{| class="wikitable"
{| class="wikitable" style="text-align:center;"
|+ Attribute types structure
|+ CXML Attribute definitions
! rowspan=2 | Offset !! rowspan=2 | Length !! rowspan=2 | Name !! colspan=12 | Attribute type
! Attribute name<BR />(offset 0x0, length 0x4)
|-
| colspan=12 | Attribute name relative offset in '''TAGS Table'''
! Integer !! Float !! String !! analysing... !! Style ID INT !! Integer Array !! Float Array !! File !! Ref ID STR || ID STR || Ref ID INT || ID INT
|-
|-
! Attribute type<BR />(offset 0x4, length 0x4)
| 0x0 || 0x4 || Attribute name offset || colspan=12 {{cellcolors|lightgrey}}  '''________________________________________________________________________ xml tag string from the "strings table" __________________________________________________________________'''
! 1<BR />(Single Integer) !! 2<BR />(Single Float) !! 3<BR />(String) !! 4<BR />(Char) !! 5<BR />(ID HASH) !! 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)
|-_____
| 0x4 || 0x4 || Attribute type || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || A || B || C
|-
|-
! variable 1<BR />(offset 0x8, length 0x4)
| 0x8 || 0x4 || variable 1 || Integer value || Float value || String Offset || analysing... || Style ID INT offset || Integer offset || Float offset || File offset || Ref ID STR offset || ID STR offset || Ref ID INT offset || ID INT offset
| Integer value || Float value || '''Strings Table''' offset || '''Chars Table''' offset || '''ID HASH 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)
| 0xC || 0x4 || variable 2 || unknown (usually 0) || unknown (usually 0) || String Length || analysing... || ID count (usually 4) || Integer count || Float count || File size || unknown (usually 0) || unknown (usually 0) || unknown (usually 0) || unknown (usually 0)
| {{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 || Char length || 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


==Container Common Structure==
==Container Common Structure==
Line 335: Line 280:
ZLIB Compressed level 9 (only container)
ZLIB Compressed level 9 (only container)


==== RCOF / RCSF ====
==== RCOF ====
RCOF ('''R'''esources '''C'''ontainer '''O'''bject '''F'''ile)<br />
RCOF ('''R'''esources '''C'''ontainer '''F'''lat?)
RCSF ('''R'''esources '''C'''ontainer '''S'''tring '''F'''ile)


*Example from FW?? notification_settings_plugin.rco:
*Example from FW?? notification_settings_plugin.rco:
Line 348: Line 292:
|-
|-
| 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'
|-
|}
'''Offset(h) 00 01 02 03  04 05 06 07'''
'''00000000'''  <span style="background:#666666;">52 43 53 46</span>  <span style="background:#888888;">10 01 00 00</span> RCSF....
{| class="wikitable"
|-
! Name !! Offset !! Size !! Example !! Remark
|-
| Magic || 0x00 || 0x04 || {{cellcolors|#666666|#ffffff}} 52 43 53 46 || 'RCSF'
|-
|-
| 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 310:
**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)


====RCOF====
 
  '''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 317:
  '''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 347:
| empty || 0x2C || 0x04 || {{cellcolors|#ffeebb}} 00 00 00 00 || Not used
| empty || 0x2C || 0x04 || {{cellcolors|#ffeebb}} 00 00 00 00 || Not used
|-
|-
| Hash ID Integer Table Offset || 0x30 || 0x04 || {{cellcolors|#ffee99}} 00 00 18 D0* ||  
| Styles ID Integer Table Offset || 0x30 || 0x04 || {{cellcolors|#ffee99}} 00 00 18 D0* ||  
|-
|-
| Hash ID Integer Table Size || 0x34 || 0x04 || {{cellcolors|#ffee99}} 00 00 00 34* ||
| 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 364:
|-
|-
|}
|}
====Vita RCSF====
'''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 53 46</span>  <span style="background:#666666;">10 01 00 00</span>  <span style="background:#ff8888;">50 00 00 00</span>  <span style="background:#ff8888;">8C AD 00 00</span>  RCSF....P...Œ­­-..
'''00000010'''  <span style="background:#8888ff;">E0 AD 00 00</span>  <span style="background:#8888ff;">00 00 00 00</span>  <span style="background:#88ff88;">E0 AD 00 00</span>  <span style="background:#88ff88;">40 3C 00 00</span>  à­-..@<....ê.....
'''00000020'''  <span style="background:#ffeedd;">20 EA 00 00</span>  <span style="background:#ffeedd;">18 00 00 00</span>  <span style="background:#ffeebb;">40 EA 00 00</span>  <span style="background:#ffeebb;">B2 36 00 00</span>  .ê......@ê..²6..
'''00000030'''  <span style="background:#ffee99;">00 21 01 00</span>  <span style="background:#ffee99;">00 00 00 00</span>  <span style="background:#ffee77;">00 21 01 00</span>  <span style="background:#ffee77;">00 00 00 00</span>  .!......!.......
'''00000040'''  <span style="background:#ffee55;">00 21 01 00</span>  <span style="background:#ffee55;">00 00 00 00</span>  <span style="background:#ffee33;">00 21 01 00</span>  <span style="background:#ffee33;">00 00 00 00</span>  .!......!.......
{| class="wikitable"
|-
! Name !! Offset !! Size !! Example !! Remark
|-
| Magic || 0x00 || 0x04 || {{cellcolors|#666666|#ffffff}} 52 43 53 46 || 'RCSF'
|-
| Version || 0x04 || 0x04 || {{cellcolors|#666666|#ffffff}} 00 00 01 10* || CXML version '1.10'
|-
| Tree Table Offset || 0x08 || 0x04 || {{cellcolors|#ff8888}} 00 00 00 50* ||
|-
| Tree Table Size || 0x0C || 0x04 || {{cellcolors|#ff8888}} 00 00 AD 8C* ||
|-
| Overlapped || 0x18 || 0x04 || {{cellcolors|#8888ff}} 00 00 AD E0* || overlapped
|-
| empty || 0x1C || 0x04 || {{cellcolors|#8888ff}} 00 00 00 00* || not used
|-
| ID Integer Table Offset || 0x10 || 0x04 || {{cellcolors|#88ff88}} 00 00 AD E0* ||
|-
| ID Integer Table Size || 0x14 || 0x04 || {{cellcolors|#88ff88}} 00 00 3C 40* ||
|-
| String Table Offset || 0x20 || 0x04 || {{cellcolors|#ffeedd}} 00 00 EA 20* ||
|-
| String Table size || 0x24 || 0x04 || {{cellcolors|#ffeedd}} 00 00 00 18* ||
|-
| Char Table Offset || 0x28 || 0x04 || {{cellcolors|#ffeebb}} 00 00 EA 40* ||
|-
| Char Table Size || 0x2C || 0x04 || {{cellcolors|#ffeebb}} 00 00 36 B2 ||
|-
| End offset || 0x30 || 0x04 || {{cellcolors|#ffee99}} 00 01 21 00* || End offset
|-
| empty || 0x34 || 0x04 || {{cellcolors|#ffee99}} 00 00 00 00* || not used
|-
| overlapped || 0x38 || 0x04 || {{cellcolors|#ffee77}} 00 01 21 00* || overlapped
|-
| empty || 0x3C || 0x04 || {{cellcolors|#ffee77}} 00 00 00 00* || not used
|-
| overlapped || 0x38 || 0x04 || {{cellcolors|#ffee55}} 00 01 21 00* || overlapped
|-
| empty || 0x3C || 0x04 || {{cellcolors|#ffee55}} 00 00 00 00* || not used
|-
| overlapped || 0x38 || 0x04 || {{cellcolors|#ffee33}} 00 01 21 00* || overlapped
|-
| empty || 0x3C || 0x04 || {{cellcolors|#ffee33}} 00 00 00 00* || not used
|-
|}
  * 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 497: Line 374:
! Offset !! Size !! Example !! Remark
! Offset !! Size !! Example !! Remark
|-
|-
| 0x00 || 0x04 || 00 00 00 00 || Root Element (Offset within '''String Table''', in this case it will be <resource>)
| 0x00 || 0x04 || 00 00 00 00 || Root Element (Offset within '''String Table''', in this case it will be <raf>)
|-
|-
| 0x04 || 0x04 || 00 00 00 02 || Attribute Counter
| 0x04 || 0x04 || 00 00 00 01 || Attribute Counter
|-
|-
| 0x08 || 0x04 || FF FF FF FF  || Parent
| 0x08 || 0x04 || FF FF FF FF  || Parent
|-
|-
| 0x0C || 0x04 || FF FF FF FF || Previous Sibling
| 0x0C || 0x04 || FF FF FF FF || Previous Element
|-
|-
| 0x10 || 0x04 || FF FF FF FF || Next Sibling
| 0x10 || 0x04 || FF FF FF FF || Next Element
|-
|-
| 0x14 || 0x04 || 00 00 00 3C || First Child within the root Element <resource> (which will also our Next '''Child Element''' to read)
| 0x14 || 0x04 || 00 00 00 2C || First Entry within the root Element (raf)
|-
|-
| 0x18 || 0x04 || 00 00 0D 74 || Last Child within the root Element <resource> (which will also our Next '''Child Element''' to read)
| 0x18 || 0x04 || 00 00 57 3C || Last Entry within the root Element (raf)
|-
|-
| 0x1C || 0x04 || 00 00 00 09 || String Pointer (Offset within '''String Table''', in this case it will be "version")  
| 0x1C || 0x04 || 00 00 00 04 || String Pointer (Offset within '''String Table''', in this case it will be <version>)  
|-
|-
| 0x20 || 0x04 || 00 00 00 02 || Type descriptor (2 == Float)
| 0x20 || 0x04 || 00 00 00 02 || Type descriptor (2 == Float)
|-
|-
| 0x24 || 0x04 || 3D CC CC CD || Float value (0.1) [version="0.1"]
| 0x24 || 0x04 || 3F 80 00 00 || Float value (1.1E0)
|-
|-
| 0x28 || 0x04 || 00 00 00 00 || empty value
| 0x28 || 0x04 || 00 00 00 00 || empty value
|-
|-
| 0x2C || 0x04 || 00 00 00 11 || String Pointer (in this case "type")
| 0x2C || 0x04 || 00 00 00 0C || String Pointer (in this case <scene>)
|-
| 0x30 || 0x04 || 00 00 00 03 || Type descriptor (3 == String)
|-
| 0x34 || 0x04 || 00 00 00 16 || Offset within String Table of String to read
|-
| 0x38 || 0x04 || 00 00 00 06 || Length of String to read (0x06 == "normal") [type="normal"]
|-
| 0x3C || 0x04 || 00 00 00 1D || Next Element (Offset within '''String Table''', in this case it will be <stringtable>)
|-
| 0x40 || 0x04 || 00 00 00 00 || Attribute Count
|-
| 0x44 || 0x04 || 00 00 00 00 || Parent (Offset within XML Table, pointing to Root Element)
|-
| 0x48 || 0x04 || FF FF FF FF || Previous Sibling
|-
| 0x4C || 0x04 || 00 00 07 88 || Next Sibling
|-
| 0x50 || 0x04 || 00 00 00 58 || First Child
|-
|-
| 0x54 || 0x04 || 00 00 07 2C || Last Child
| 0x30 || 0x04 || 00 00 00 04 || Attribute Counter
|-
|-
| 0x58 || 0x04 || 00 00 00 29 || String Pointer (in this case <local>)
| 0x34 || 0x04 || 00 00 00 00 || Parent
|-
|-
| 0x5C || 0x04 || 00 00 00 04 || Attribute Count
| 0x38 || 0x04 || FF FF FF FF || Previous Element
|-
|-
| 0x60 || 0x04 || 00 00 00 3C || Parrent <stringtable>
| 0x3C || 0x04 || 00 00 3F AC || Next Element
|-
|-
| 0x64 || 0x04 || FF FF FF FF || Previous Sibling
| 0x40 || 0x04 || 00 00 00 88 || First Entry
|-
|-
| 0x68 || 0x04 || 00 00 00 B4 || Next Sibling
| 0x44 || 0x04 || 00 00 3F 70 || Next Entry
|-
|-
| 0x6C || 0x04 || FF FF FF FF || First Child
| 0x48 || 0x04 || 00 00 00 12 || String Pointer (in this case <camera_num>)
|-
|-
| 0x70 || 0x04 || FF FF FF FF || Last Child
| 0x4C || 0x04 || 00 00 00 01 || Type descriptor (1 == Integer)
|-
|-
| 0x74 || 0x04 || 00 00 00 30 || String Pointer (in this case origsize="")
| 0x50 || 0x04 || 00 00 00 01 || Integer value
|-
|-
| 0x78 || 0x04 || 00 00 00 01 || Attribute identifyer (in this case 1 so a integer value)
| 0x54 || 0x04 || 00 00 00 00 || empty value
|-
|-
| 0x7C || 0x04 || 00 00 04 10 || Hex integer size (1040 bytes when converted so origsize="1045")
| 0x58 || 0x04 || 00 00 00 1D || String Pointer (in this case <light_num>)
|-
|-
| 0x80 || 0x04 || 00 00 00 00 || empty value
| 0x5C || 0x04 || 00 00 00 01 || Type descriptor (1 == Integer)
|-
|-
| 0x84 || 0x04 || 00 00 00 39 || String Pointer (in this case src="")
| 0x60 || 0x04 || 00 00 00 01 || Integer value
|-
|-
| 0x88 || 0x04 || 00 00 00 08 || Attribute identifyer (in this case 8 so a file)
| 0x64 || 0x04 || 00 00 00 00 || empty value
|-
|-
| 0x8C || 0x04 || 00 00 00 00 || Offset within File Table
| 0x68 || 0x04 || 00 00 00 27 || String Pointer (in this case <script_num>)
|-
|-
| 0x90 || 0x04 || 00 00 01 BA || Size of file to read
| 0x6C || 0x04 || 00 00 00 01 || Type descriptor (1 == Integer)
|-
|-
| 0x94 || 0x04 || 00 00 00 3D || String Pointer (in this case compress="")
| 0x70 || 0x04 || 00 00 00 01 || Integer value
|-
|-
| 0x98 || 0x04 || 00 00 00 03 || Attribute identifyer (in this case 3 so a string)
| 0x74 || 0x04 || 00 00 00 00 || empty value
|-
|-
| 0x9C || 0x04 || 00 00 00 46 || Offset of the string to read within String Table
| 0x78 || 0x04 || 00 00 00 32 || String Pointer (in this case <actor_num>)
|-
|-
| 0xA0 || 0x04 || 00 00 00 02 || Size of the string to read (in this case will be 'on' so compress="on")
| 0x7C || 0x04 || 00 00 00 01 || Type descriptor (1 == Integer)
|-
|-
| 0xA4 || 0x04 || 00 00 00 49 || String Pointer (in this case id="")
| 0x80 || 0x04 || 00 00 00 48 || Integer value
|-
|-
| 0xA8 || 0x04 || 00 00 00 09 || Attribute identifyer (in this case 9 so a ID String with Loopback offset)
| 0x84 || 0x04 || 00 00 00 00 || empty value
|-
|-
| 0xAC || 0x04 || 00 00 00 00 || Offset of the id to read within ID String Table (in this case 'ja' so id="ja" and after the loopback src="/xmls/ja.xml")
| 0x88 || 0x04 || 00 00 00 3C || String Pointer (in this case <actor>)
|-
|-
| 0xB0 || 0x04 || 00 00 00 00 || empty value
| 0x8C || 0x04 || 00 00 00 0C || Attribute Counter (0x0C == 12)
|-
|-
|}
| 0x90 || 0x04 || 00 00 00 2C || Parent
*Note: the folder string within the src="" Attribute is a custom one which need to be handled by the app or which is dependend to the developer who will write the CXML Tool (so me)
**Note2: All values are reversed little endian
 
'''Offset(h) 00 01 02 03  04 05 06 07  08 09 0A 0B  0C 0D 0E 0F'''
'''00000000'''  00 00 00 00  02 00 00 00  FF FF FF FF  FF FF FF FF  ........ÿÿÿÿÿÿÿÿ
'''00000010'''  FF FF FF FF  3C 00 00 00  74 0D 00 00  09 00 00 00  ÿÿÿÿ<...t.......
'''00000020'''  02 00 00 00  CD CC CC 3D  00 00 00 00  11 00 00 00  ....ÍÌÌ=........
'''00000030'''  03 00 00 00  16 00 00 00  06 00 00 00  1D 00 00 00  ................
'''00000040'''  00 00 00 00  00 00 00 00  FF FF FF FF  88 07 00 00  ........ÿÿÿÿˆ...
'''00000050'''  58 00 00 00  2C 07 00 00  29 00 00 00  04 00 00 00  X...,...).......
'''00000060'''  3C 00 00 00  FF FF FF FF  B4 00 00 00  FF FF FF FF  <...ÿÿÿÿ´...ÿÿÿÿ
'''00000070'''  FF FF FF FF  30 00 00 00  01 00 00 00  10 04 00 00  ÿÿÿÿ0...........
'''00000080'''  00 00 00 00  39 00 00 00  08 00 00 00  00 00 00 00  ....9...........
'''00000090'''  BA 01 00 00  3D 00 00 00  03 00 00 00  46 00 00 00  º...=.......F...
'''000000A0'''  02 00 00 00  49 00 00 00  09 00 00 00  00 00 00 00  ....I...........
'''000000B0'''  00 00 00 00                                        ....
 
 
===String Table===
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)
'''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F'''
'''00000000'''  <span style="background:#ffff66;">72 65 73 6F 75 72 63 65 00 76 65 72 73 69 6F 6E</span>  resource.version
'''00000010'''  <span style="background:#ffff66;">00 74 79 70 65 00 6E 6F 72 6D 61 6C 00 73 74 72</span>  .type.normal.str
'''00000020'''  <span style="background:#ffff66;">69 6E 67 74 61 62 6C 65 00 6C 6F 63 61 6C 65 00</span>  ingtable.locale.
'''00000030'''  <span style="background:#ffff66;">6F 72 69 67 73 69 7A 65 00 73 72 63 00 63 6F 6D</span>  origsize.src.com
'''00000040'''  <span style="background:#ffff66;">70 72 65 73 73 00 6F 6E 00 69 64 00 74 65 78 74</span>  press.on.id.text
'''00000050'''  <span style="background:#ffff66;">75 72 65 74 61 62 6C 65 00 74 65 78 74 75 72 65</span>  uretable.texture
'''00000060'''  <span style="background:#ffff66;">00 74 65 78 74 75 72 65 2F 67 69 6D 00 64 69 76</span>  .texture/gim.div
'''00000070'''  <span style="background:#ffff66;">5F 72 61 74 69 6F 5F 68 00 6D 61 72 67 69 6E 5F</span>  _ratio_h.margin_
'''00000080'''  <span style="background:#ffff66;">76 00 6D 61 72 67 69 6E 5F 68 00 64 69 76 5F 6D</span>  v.margin_h.div_m
'''00000090'''  <span style="background:#ffff66;">6F 64 65 00 33 78 31 00 73 74 79 6C 65 74 61 62</span>  ode.3x1.staletab
'''000000A0'''  <span style="background:#ffff66;">6C 65 00 73 74 79 6C 65 5F 62 75 74 74 6F 6E 00</span>  le.style_button.
'''000000B0'''  <span style="background:#ffff66;">62 67 5F 6F 62 6A 00 67 6C 6F 77 5F 6F 62 6A 00</span>  bg_ogj.glow_obj.
'''000000C0'''  <span style="background:#ffff66;">70 6C 61 6E 65 6F 62 6A 00 74 65 78 74 75 72 65</span>  planeobj.texture
'''000000D0'''  <span style="background:#ffff66;">30 00 62 6C 65 6E 64 00 73 74 79 6C 65 5F 74 65</span>  0.blend.style_te
'''000000E0'''  <span style="background:#ffff66;">78 74 00 74 65 78 74 6F 62 6A 00 66 6F 6E 74 5F</span>  xt.textobj.font_
'''000000F0'''  <span style="background:#ffff66;">73 69 7A 65 00 62 6F 6C 64 00 63 6F 6C 6F 72 00</span>  size.bold.color.
'''00000100'''  <span style="background:#ffff66;">6D 61 78 5F 6C 69 6E 65 5F 63 6F 75 6E 74 00 6C</span>  max_line_count.l
'''00000110'''  <span style="background:#ffff66;">69 6E 65 5F 70 69 74 63 68 00 77 6F 72 64 5F 77</span>  ine_pitch.word_w
'''00000120'''  <span style="background:#ffff66;">72 61 70 00 65 6C 6C 69 70 73 69 73 00 73 74 79</span>  rap.ellipsis.sty
'''00000130'''  <span style="background:#ffff66;">6C 65 5F 70 6C 61 6E 65 00 70 61 67 65 74 61 62</span>  le_plane.pagetab
'''00000140'''  <span style="background:#ffff66;">6C 65 00 74 65 6D 70 6C 61 74 65 74 61 62 6C 65</span>  le.templatetable
'''00000150'''  <span style="background:#ffff66;">00 74 65 6D 70 6C 61 74 65 00 66 69 6C 65 5F 6C</span>  .template.file_l
'''00000160'''  <span style="background:#ffff66;">69 73 74 00 73 74 79 6C 65 00 6C 61 79 6F 75 74</span>  ist.style.layout
'''00000170'''  <span style="background:#ffff66;">5F 68 69 6E 74 00 61 6C 69 67 6E 00 73 69 7A 65</span>  hint.align.size.
'''00000180'''  <span style="background:#ffff66;">00 70 6F 73 00 66 61 73 74 5F 6F 70 65 6E 00 6C</span>  .pos.fast_open.l
'''00000190'''  <span style="background:#ffff66;">69 73 74 5F 69 74 65 6D 00 74 65 78 74 00 61 64</span>  ist_item.text.ad
'''000001A0'''  <span style="background:#ffff66;">6A 75 73 74 00 70 6C 61 6E 65 00 61 6C 70 68 61</span>  just.plane.alpha
'''000001B0'''  <span style="background:#ffff66;">00 61 6E 63 68 6F 72 00 63 68 65 63 6B 5F 62 6F</span>  .anchor.check_bo
'''000001C0'''  <span style="background:#ffff66;">78 00 66 6F 63 75 73 5F 68 69 6E 74 00 66 6F 63</span>  x.focus_hint.foc
'''000001D0'''  <span style="background:#ffff66;">75 73 5F 73 68 61 70 65 00 66 6F 63 75 73 5F 73</span>  us_shape.focus_s
'''000001E0'''  <span style="background:#ffff66;">69 7A 65 00 62 75 74 74 6F 6E 00 73 6F 75 6E 64</span>  ize.button.sound
'''000001F0'''  <span style="background:#ff6666;">00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span> 
 
*Notes:
**yellow: used bytes
**red: padding to align to 0x10 bytes
**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)
 
===Char Table===
Need To write....
 
===ID Tables===
In a '''Vita RCO''' we have '''3''' diffrent '''ID Tables''' which we will take a deeper look now.
 
The <span style="background:#ff6666;">loopback</span> offset is market as red.
 
The <span style="background:#ffff66;">id</span> is marked as yellow.
*Note: All loopback offset are reversed little endian.
 
====ID String====
from [http://www.file-upload.net/download-9994499/id_str_table.rar.html notification_settings_plugin.rco] FW??
 
Is a Table that only hold Strings and will be readed till the first 0x00 byte and then stop. The first 4 bytes '''before''' the string are the '''loopback''' offset to add the id string to the src="" Attribute value.
*'''Note: If all loopback offset's are used depends on the used Attribute identifyer (9-will use loopback-  or  A-will not use loopback-). But for string's they will always loopback'''
 
'''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F'''
'''00000000'''  <span style="background:#ff6666;">00 00 00 58</span> <span style="background:#ffff66;">6A 61 00</span> 00 <span style="background:#ff6666;">00 00 00 B4</span> <span style="background:#ffff66;">65 6E 2D 67</span>  X...<span style="background:#ffff66;">ja</span>..´...<span style="background:#ffff66;">en-g</span>
'''00000010'''  <span style="background:#ffff66;">62 00</span> 00 00 <span style="background:#ff6666;">00 00 01 10</span> <span style="background:#ffff66;">65 6E 00</span> 00 <span style="background:#ff6666;">00 00 01 6C</span>  <span style="background:#ffff66;">b</span>.......<span style="background:#ffff66;">en</span>..l...
'''00000020'''  <span style="background:#ffff66;">66 72 00</span> 00 <span style="background:#ff6666;">00 00 01 C8</span> <span style="background:#ffff66;">65 73 00</span> 00 <span style="background:#ff6666;">00 00 02 24</span>  <span style="background:#ffff66;">fr</span>..È...<span style="background:#ffff66;">es</span>..$...
'''00000030'''  <span style="background:#ffff66;">64 65 00</span> 00 <span style="background:#ff6666;">00 00 02 80</span> <span style="background:#ffff66;">69 74 00</span> 00 <span style="background:#ff6666;">00 00 02 DC</span>  <span style="background:#ffff66;">de</span>..€...<span style="background:#ffff66;">it</span>..Ü...
'''00000040'''  <span style="background:#ffff66;">6E 6C 00</span> 00 <span style="background:#ff6666;">00 00 03 38</span> <span style="background:#ffff66;">70 74 2D 62 72 00</span> 00 00  <span style="background:#ffff66;">nl</span>..8...<span style="background:#ffff66;">pt-br</span>...
'''00000050'''  <span style="background:#ff6666;">00 00 03 94</span> <span style="background:#ffff66;">70 74 00</span> 00 <span style="background:#ff6666;">00 00 03 F0</span> <span style="background:#ffff66;">72 75 00</span> 00  ”...<span style="background:#ffff66;">pt</span>..ð...<span style="background:#ffff66;">ru</span>..
'''00000060'''  <span style="background:#ff6666;">00 00 04 4C</span> <span style="background:#ffff66;">6B 6F 00</span> 00 <span style="background:#ff6666;">00 00 04 A8</span> <span style="background:#ffff66;">7A 68 2D 74</span>  L...<span style="background:#ffff66;">ko</span>..¨...<span style="background:#ffff66;">zh-t</span>
'''00000070'''  <span style="background:#ffff66;">00</span> 00 00 00 <span style="background:#ff6666;">00 00 05 04</span> <span style="background:#ffff66;">7A 68 2D 73 00</span> 00 00 00  ........<span style="background:#ffff66;">zh-s</span>....
'''00000080'''  <span style="background:#ff6666;">00 00 05 60</span> <span style="background:#ffff66;">66 69 00</span> 00 <span style="background:#ff6666;">00 00 05 BC</span> <span style="background:#ffff66;">73 76 00</span> 00  `...<span style="background:#ffff66;">fi</span>..¼...<span style="background:#ffff66;">sv</span>..
'''00000090'''  <span style="background:#ff6666;">00 00 06 18</span> <span style="background:#ffff66;">64 61 00</span> 00 <span style="background:#ff6666;">00 00 06 74</span> <span style="background:#ffff66;">6E 6F 00</span> 00  ....<span style="background:#ffff66;">da</span>..t...<span style="background:#ffff66;">no</span>..
'''000000A0'''  <span style="background:#ff6666;">00 00 06 D0</span> <span style="background:#ffff66;">70 6C 00</span> 00 <span style="background:#ff6666;">00 00 07 2C</span> <span style="background:#ffff66;">74 72 00</span> 00  Ð...<span style="background:#ffff66;">pl</span>..,...<span style="background:#ffff66;">tr</span>..
 
====ID Integer====
from [http://www.file-upload.net/download-9994502/id_int_table.rar.html notification_settings_plugin.rco] FW??
 
Is a Table that only hold Integer values. The values to read are always size of 4 so seems to be an little endian. The first 4 bytes '''before''' the Integer value are the '''loopback''' offset to add the id int value to the src="" Attribute value.
*'''Note: All values are reversed little endian'''
**'''Note2: Not all loopback offset's are used, that depends on the used Attribute identifyer (B-will use loopback-  or  C-will not use loopback-)'''
 
'''Offset(h) 00 01 02 03  04 05 06 07  08 09 0A 0B  0C 0D 0E 0F'''
'''00000000'''  <span style="background:#ff6666;">00 00 07 A4</span>  <span style="background:#ffff66;">1D DD 0E 08</span>  <span style="background:#ff6666;">00 00 08 10</span>  <span style="background:#ffff66;">21 33 CE EB</span>  ...¤.Ý......!3Îë
'''00000010'''  <span style="background:#ff6666;">00 00 08 7C</span>  <span style="background:#ffff66;">F7 98 83 12</span>  <span style="background:#ff6666;">00 00 08 E8</span>  <span style="background:#ffff66;">6F 57 E2 51</span>  ...|÷˜ƒ....èoWâQ
'''00000020'''  <span style="background:#ff6666;">00 00 09 54</span>  <span style="background:#ffff66;">86 64 5D 41</span>  <span style="background:#ff6666;">00 00 09 C0</span>  <span style="background:#ffff66;">29 B9 1F 26</span>  ...T†d]A...À)¹.&
'''00000030'''  <span style="background:#ff6666;">00 00 0A 6C</span>  <span style="background:#ffff66;">D0 A2 72 A1</span>  <span style="background:#ff6666;">00 00 0B 34</span>  <span style="background:#ffff66;">2F 65 20 05</span>  ...lТr¡...4/e..
'''00000040'''  <span style="background:#ff6666;">00 00 0C 08</span>  <span style="background:#ffff66;">3C 28 8E E9</span>  <span style="background:#ff6666;">00 00 0C E0</span>  <span style="background:#ffff66;">C7 2C F1 D7</span>  ....<(Žé...àÇ,ñ×
'''00000050'''  FF FF FF FF  <span style="background:#ffff66;">18 45 D1 0D</span>  <span style="background:#ff6666;">00 00 0D 90</span>  <span style="background:#ffff66;">3F 18 74 91</span>  ÿÿÿÿ.EÑ.....?.t‘
'''00000060'''  FF FF FF FF  <span style="background:#ffff66;">70 38 36 4B</span>  <span style="background:#ff6666;">00 00 0E 54</span>  <span style="background:#ffff66;">AF 37 FB 60</span>  ÿÿÿÿp86K...T¯7û`
'''00000070'''  FF FF FF FF  <span style="background:#ffff66;">F3 48 8F 99</span>  FF FF FF FF  <span style="background:#ffff66;">5F 7B 33 2B</span>  ÿÿÿÿóH.™ÿÿÿÿ_{3+
'''00000080'''  FF FF FF FF  <span style="background:#ffff66;">9F 20 F8 98</span>  <span style="background:#ff6666;">00 00 11 6C</span>  <span style="background:#ffff66;">E8 0C 86 23</span>  ÿÿÿÿŸ.ø˜...lè.†#
'''00000090'''  FF FF FF FF  <span style="background:#ffff66;">20 41 32 74</span>                            ÿÿÿÿ.A2t
 
====ID Hash====
from [http://www.file-upload.net/download-9994521/id_styletable.rar.html notification_settings_plugin.rco] FW??
 
Is a Table that only hold Integer values. The values to read are always size of 4 so seems to be an little endian. There are no '''loopback''' offset's within this table and one integer value is placed after another without any padding. Additional are thoes value's only used for the Attribute Tag '''id=""''' from the '''<styletable>''' Element.
*'''Note: All values are reversed little endian'''
 
'''Offset(h) 00 01 02 03  04 05 06 07  08 09 0A 0B  0C 0D 0E 0F'''
'''00000000'''  <span style="background:#ffff66;">9C 96 91 8B  22 FF 88 BD  01 F8 75 B1  E9 5F 16 28</span>  œ–‘‹"ÿˆ½�øu±é_.(
'''00000010'''  <span style="background:#ffff66;">38 B6 2B E4  0A 2F 2C D9  63 67 8F EE  2F BC DE AE</span>  8¶+ä./,Ùcg.î/¼Þ®
'''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;
 
===Integer Array===
from [http://www.file-upload.net/download-9994537/integer_array.rar.html notification_settings_plugin.rco] FW??
 
This Array hold integer values. It is little endian alligned. That means for one integer value we have to read 4 bytes. This need also to be respected for the Offset and Length to read. Like if the given offset is '''9''' then we can say '''9 * 4(bytes) == offset 0x24'''. We start to read on offset 0x24. Also we have to use the same calculation for the given values to read, if length is '''2''' then we calc '''2 * 4(bytes) == 8 bytes to read''' where a union of 4 bytes is one single integer value.
 
*To complete our example: given offset to read from = 9 ~ 0x24, given length of value = 2 ~ 0x08 == 0x00000002 & 0x00000000 =~ '''attribute="2, 0"'''
 
'''*Note: All values are reversed little endian'''
 
'''Offset(h) 00 01 02 03  04 05 06 07  08 09 0A 0B  0C 0D 0E 0F'''
'''00000000'''  00 00 00 01  00 00 00 00  00 00 00 00  00 00 00 01
'''00000010'''  00 00 00 04  00 00 00 00  00 00 00 02  00 00 00 01
'''00000020'''  00 00 00 05  00 00 00 02  00 00 00 00
 
===Float Array===
from [http://www.file-upload.net/download-9994542/float_array.rar.html notification_settings_plugin.rco] FW??
 
This Array hold single float values. In case of a single float value consit's of 4 bytes we need to use the same calculation then for the Integer Array.
* As example: Given offset * 4 == Offset within float Array to start to read from. Given value length * 4 == length to read from the float Array. Where a union of 4 bytes is one single float value.
'''*Note: All values are reversed little endian (hex values!!)'''
 
'''Offset(h) 00 01 02 03  04 05 06 07  08 09 0A 0B  0C 0D 0E 0F                          Converted Float's    01    02    03    04'''
'''00000000'''  3E FA E1 48  3F 80 00 00  3F 80 00 00  3F 80 00 00                              '''00000000'''        0,49    1    1    1
'''00000010'''  3F 80 00 00  44 70 00 00  43 E0 00 00  00 00 00 00                              '''00000010'''        1    960  448    0
'''00000020'''  00 00 00 00  44 52 00 00  42 A0 00 00  43 E7 00 00                              '''00000020'''        0    840    80  462
'''00000030'''  00 00 00 00  C3 88 00 00  00 00 00 00  C1 F0 00 00                              '''00000030'''        0    -272    0    -30
'''00000040'''  00 00 00 00  42 70 00 00  42 70 00 00  42 38 00 00                              '''00000040'''        0      60    60    46
'''00000050'''  42 38 00 00  44 16 80 00  00 00 00 00  42 3C 00 00                              '''00000050'''        46    602    0    47
'''00000060'''  42 3C 00 00  44 70 00 00  42 A0 00 00  43 C7 00 00                              '''00000060'''        47    960    80  398
'''00000070'''  00 00 00 00  C3 4E 00 00  00 00 00 00  C2 20 00 00                              '''00000070'''        0    -206    0    -40
'''00000080'''  00 00 00 00  43 A5 00 00  00 00 00 00                                          '''00000080'''        0    330    0
 
===File Table===
The files are concatenated in the same order than in the Tree Table & ID's Table (ID String & Integer). The xml's are stored as CXML Container's and are zlib compressed as well. Additional will a Vita RCO hold the most common file format's that Sony allready used in the past for resource files. Which are as follow: VAG, GTF, DDS, GIM
 
==Summary==
How all the Tables work together you can check below on a example from the HeavyRain.p3t PS3 Theme:
* Don't worry that it is a PS3 Theme. The work down of the CXML is the same like for a Vita RCO
 
===Table Description===
 
'''                    ''Tree Table of HeavyRain.p3t''                                                                    ''ID Table of HeavyRain.p3t'''''
'''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'''
'''00000050'''      [...]  <span style="background:#ccd815;">00 00 00 15</span> <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 1D</span>      ............                    '''00000000'''  <span style="background:#00FFFF;">00</span> <span style="background:#ffff66;">00 01 24</span> 65 6E 00 <span style="background:#00FFFF;">00</span> <span style="background:#ffff66;">00 01 60</span> 6A 70 00 00 00  <span style="background:#00FFFF;">.</span><span style="background:#ffff66;">..$</span>en.<span style="background:#00FFFF;">.</span><span style="background:#ffff66;">..`</span>jp...                   
'''00000060'''  <span style="background:#2bffb3;">00 00 00 06</span> <span style="background:#ccd815;">00 00 00 24</span> <span style="background:#FCDFFF;">00 00 00 01</span> <span style="background:#9CB071;">00 07 E9 80</span>  .......$......造                   '''00000010'''  01 C8 69 63 6F 6E 5F 75 73 65 72 00 00 00 02 14  .Èicon_user.....
'''00000070'''  00 00 00 00 <span style="background:#ccd815;">00 00 00 30</span> <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 35</span>  .......0.......5                    '''00000020'''  69 63 6F 6E 5F 73 65 74 74 69 6E 67 00 00 00 02  icon_setting....
'''00000080'''  <span style="background:#2bffb3;">00 00 00 10</span> <span style="background:#ccd815;">00 00 00 46</span> <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 4D</span>  .......F.......M                    '''00000030'''  60 69 63 6F 6E 5F 70 68 6F 74 6F 00 00 00 02 AC  `icon_photo....¬
'''00000090'''  <span style="background:#2bffb3;">00 00 00 0C</span> <span style="background:#ccd815;">00 00 00 5A</span> <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 5E</span>  .......Z.......^                    '''00000040'''  69 63 6F 6E 5F 6D 75 73 69 63 00 00 00 02 F8 69  icon_music....øi
'''000000A0'''  <span style="background:#2bffb3;">00 00 00 1B</span> <span style="background:#ccd815;">00 00 00 7A</span> <span style="background:#FCDFFF;">00 00 00 01</span> <span style="background:#9CB071;">00 00 40 80</span>  .......z......@€                    '''00000050'''  63 6F 6E 5F 76 69 64 65 6F 00 00 00 03 44 69 63  con_video....Dic
'''000000B0'''  00 00 00 00 <span style="background:#ccd815;">00 00 00 89</span> <span style="background:#FCDFFF;">00 00 00 06</span> <span style="background:#6666ff;">00 00 00 00</span>  .......‰........                    '''00000060'''  6F 6E 5F 67 61 6D 65 00        [...]            on_game  [...]
'''000000C0'''  <span style="background:#2bffb3;">00 00 1A 0B</span> 00 00 00 94 00 00 00 01 00 00 40 80  .......”......@€
'''000000D0'''  00 00 00 00 00 00 00 9D 00 00 00 03 00 00 00 A5  ...............¥                                        '''''String Table of HeavyRain.p3t'''''
'''000000E0'''  00 00 00 0B 00 00 00 B1 00 00 00 03 00 00 00 B7  .......±.......·
'''000000F0'''  00 00 00 0E 00 00 00 C6 00 00 00 03 00 00 00 CC  .......Æ.......Ì                    '''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F'''
'''00000100'''  00 00 00 06 00 00 00 D3 00 00 00 06 00 00 1A 10  .......Ó........                    '''00000000'''  74 68 65 6D 65 00 69 6E 66 6F 74 61 62 6C 65 00  theme.infotable.
'''00000110'''  00 02 12 99 00 00 00 DB 00 00 00 06 00 02 2C B0  ...™...Û......,°                    '''00000010'''  69 6E 66 6F 00 <span style="background:#ccd815;">63</span> 6F 6D 6D 65 6E 74 00 <span style="background:#00FFFF;">45</span> <span style="background:#2bffb3;">6E 6A</span>  info.<span style="background:#ccd815;">c</span>omment.<span style="background:#00FFFF;">E</span><span style="background:#2bffb3;">nj</span>
'''00000120'''  00 00 1F CE <span style="background:#ccd815;">00 00 00 E0</span> <span style="background:#43BFC7;">00 00 00 02</span> <span style="background:#9AFEFF;">00 00 00 1C</span>  ...Î...à........                    '''00000020'''  <span style="background:#2bffb3;">6F 79 2E</span> 00 <span style="background:#ccd815;">70</span> 72 65 76 69 65 77 73 69 7A 65 00  <span style="background:#2bffb3;">oy</span>..<span style="background:#ccd815;">p</span>reviewsize.
'''00000130'''  <span style="background:#ffff66;">00 00 00 38</span> <span style="background:#ff6666;">00 00 01 60</span> <span style="background:#cef2ce;">FF FF FF FF</span> <span style="background:#5CB3FF;">FF FF FF FF</span>  ...8...`ÿÿÿÿÿÿÿÿ                    '''00000030'''  <span style="background:#ccd815;">6E</span> 61 6D 65 00 <span style="background:#00FFFF;">48</span> <span style="background:#2bffb3;">45 41 56 59 20 52 61 69 6E 20</span>  <span style="background:#ccd815;">n</span>ame.<span style="background:#00FFFF;">H</span><span style="background:#2bffb3;">EAVY.Rain.</span>
'''00000140'''  <span style="background:#ccd815;">00 00 00 EE</span> <span style="background:#FCDFFF;">00 00 00 07</span> <span style="background:#FCDFFF;">00 00 00 00</span> 00 00 00 00  ...î............                    '''00000040'''  <span style="background:#2bffb3;">74 68 65 6D 65</span> 00 <span style="background:#ccd815;">61</span> 75 74 68 6F 72 00 <span style="background:#00FFFF;">51</span> <span style="background:#2bffb3;">75 61</span>  <span style="background:#2bffb3;">theme</span>.<span style="background:#ccd815;">a</span>uthor.<span style="background:#00FFFF;">Q</span><span style="background:#2bffb3;">ua</span>
'''00000150'''  <span style="background:#ccd815;">00 00 00 30</span> <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 35</span> <span style="background:#2bffb3;">00 00 00 10</span>  ...0.......5....                    '''00000050'''  <span style="background:#2bffb3;">6E 74 69 63 44 72 65 61 6D</span> 00 <span style="background:#ccd815;">75</span> 72 6C 00 <span style="background:#00FFFF;">68</span> <span style="background:#2bffb3;">74</span>  <span style="background:#2bffb3;">nticDream</span>.<span style="background:#ccd815;">u</span>rl.<span style="background:#00FFFF;">h</span><span style="background:#2bffb3;">t</span>
'''00000160'''  <span style="background:#ccd815;">00 00 00 E0</span> <span style="background:#43BFC7;">00 00 00 03</span> <span style="background:#9AFEFF;">00 00 00 1C</span> <span style="background:#ffff66;">00 00 01 24</span>  ...à...........$                    '''00000060'''  <span style="background:#2bffb3;">74 70 3A 2F 2F 77 77 77 2E 71 75 61 6E 74 69 63</span>  <span style="background:#2bffb3;">tp://www.quantic</span>
'''00000170'''  <span style="background:#ff6666;">FF FF FF FF</span> <span style="background:#cef2ce;">FF FF FF FF</span> <span style="background:#5CB3FF;">FF FF FF FF</span> <span style="background:#ccd815;">00 00 00 EE</span>  ÿÿÿÿÿÿÿÿÿÿÿÿ...î                    '''00000070'''  <span style="background:#2bffb3;">64 72 65 61 6D 2E 63 6F 6D</span> 00 <span style="background:#ccd815;">61</span> 75 74 68 6F 72  <span style="background:#2bffb3;">dream.com</span>.<span style="background:#ccd815;">a</span>uthor
'''00000180'''  <span style="background:#FCDFFF;">00 00 00 07</span> <span style="background:#FCDFFF;">00 00 00 07</span> 00 00 00 00 <span style="background:#ccd815;">00 00 00 15</span>  ................                    '''00000080'''  69 63 6F 6E 73 69 7A 65 00 <span style="background:#ccd815;">61</span> 75 74 68 6F 72 69  iconsize.<span style="background:#ccd815;">a</span>uthori
'''00000190'''  <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 F5</span> <span style="background:#2bffb3;">00 00 00 33</span> <span style="background:#ccd815;">00 00 00 30</span>  .......õ...3...0                    '''00000090'''  63 6F 6E 00 69 63 6F 6E 73 69 7A 65 00 76 65 72  con.iconsize.ver
'''000001A0'''  <span style="background:#FCDFFF;">00 00 00 03</span> <span style="background:#00FFFF;">00 00 00 35</span> <span style="background:#2bffb3;">00 00 00 10</span> 00 00 01 29  .......5.......)                    '''000000A0'''  73 69 6F 6E 00 76 65 72 73 69 6F 6E 20 31 2E 30  sion.version.1.0
                                                                                                '''000000B0'''  00 6D 74 69 6D 65 00 32 30 30 39 31 30 33 30 31  .mtime.200910301
                                                                                                '''000000C0'''  36 31 33 34 33 00 67 65 6E 72 65 00 6F 74 68 65  61343.genre.othe
                                                                                                '''000000D0'''  72 73 00 70 72 65 76 69 65 77 00 69 63 6F 6E 00  re.preview.icon.
                                                                                                '''000000E0'''  <span style="background:#ccd815;">6C</span> 6F 63 61 6C 69 7A 65 64 69 6E 66 6F 00 <span style="background:#ccd815;">6C</span> 6F  <span style="background:#ccd815;">l</span>ocalizedinfo.<span style="background:#ccd815;">l</span>o
                                                                                                '''000000F0'''  63 61 6C 65 00 <span style="background:#00FFFF;">E3</span> <span style="background:#2bffb3;">81 93 E3 82 8C E3 81 AF E3 82</span>  cale.<span style="background:#00FFFF;">ã</span><span style="background:#2bffb3;">“れはã‚</span>
                                                                                                '''00000100'''  <span style="background:#2bffb3;">B5 E3 83 B3 E3 83 97 E3 83 AB E3 83 86 E3 83 BC</span>  <span style="background:#2bffb3;">µãƒ³ãƒ—ルテー</span>
                                                                                                '''00000110'''  <span style="background:#2bffb3;">E3 83 9E E3 83 95 E3 82 A1 E3 82 A4 E3 83 AB E3</span>  <span style="background:#2bffb3;">マファイルã</span>
                                                                                                '''00000120'''  <span style="background:#2bffb3;">81 A7 E3 81 99 E3 80 82</span> 00 69 63 6F 6E 74 61 62  <span style="background:#2bffb3;">§ã™ã€‚</span>.icontab
                                                                                                '''00000130'''  6C 65 00 73 72 63 00 69 64 00 73 69 7A 65 00 70  le.src.id.size.p
                                                                                                '''00000140'''  6F 69 6E 74 65 72 74 61 62 6C 65 00 70 6F 69 6E  ointertable.poin
                                                                                                '''00000150'''  74 65 72 00 62 61 73 65 5F        [...]          ter.base_ [...]
 
 
 
'''<span style="background:#ccd815;">String Pointer</span>  Points to a Offset within '''String Table''' which represents a string (in this case a Attribute <comment>)                    <span style="background:#ffff66;">Previous Element</span>'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  A Integer value which describe the Typ of the Attribute (3 == String)                                                    <span style="background:#ff6666;">Next Element</span>'''
'''<span style="background:#00FFFF;">String Offset</span>  A Integer value which describe the Offset of a String within '''String Table'''                                                <span style="background:#cef2ce;">First Entry</span>'''
'''<span style="background:#2bffb3;">Length of String</span>  A Integer value which describe the Length of the String to read from '''String Table'''                                      <span style="background:#5CB3FF;">Last Entry</span>'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <previewsize>)                                                                            <span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <local>)'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  A Integer value which describe the Typ of the Attribute (1 == Integer)                                                  <span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (7 == ID)'''
'''<span style="background:#9CB071;">Integer Hex Value</span>  A Integer Value which describe the size of the icon "preview"                                                        <span style="background:#00FFFF;">ID Offset</span>'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <name>)                                                                                    <span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <name>)'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (3 == String)                                                                                                        <span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (3 == String)'''
'''<span style="background:#00FFFF;">String Offset</span>                                                                                                                            <span style="background:#00FFFF;">String Offset</span>'''
'''<span style="background:#2bffb3;">Length of String</span>                                                                                                                        <span style="background:#2bffb3;">Length of String</span>'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <author>)                                                                                  <span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Element <localizedinfo>)'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (3 == String)                                                                                                        <span style="background:#43BFC7;">Attribute Counter</span>  (0x03 == 3)'''
'''<span style="background:#00FFFF;">String Offset</span>                                                                                                                            <span style="background:#9AFEFF;">Parent</span>'''
'''<span style="background:#2bffb3;">Length of String</span>                                                                                                                        <span style="background:#ffff66;">Previous Element</span>'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <url>                                                                                      <span style="background:#ff6666;">Next Element</span>'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (3 == String))                                                                                                      <span style="background:#cef2ce;">First Entry</span>'''
'''<span style="background:#00FFFF;">String Offset</span>                                                                                                                            <span style="background:#5CB3FF;">Last Entry</span>'''
'''<span style="background:#2bffb3;">Length of String</span>                                                                                                                        <span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <local>)'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <authoriconsize>)                                                                          <span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (7 == ID)'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (1 == Integer)                                                                                                      <span style="background:#00FFFF;">ID Offset</span>'''
'''<span style="background:#9CB071;">Integer Hex Value</span>  -"- "authoriconsize"                                                                                                  <span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <comment>)'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <authoricon>)                                                                              <span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (3 == String)'''
'''<span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (6 == File)                                                                                                          <span style="background:#00FFFF;">String Offset</span>'''
'''<span style="background:#6666ff;">Offset of Filedata</span>                                                                                                                      <span style="background:#2bffb3;">Length of String</span>'''
'''<span style="background:#2bffb3;">Size of Filedata</span>                                                                                                                        <span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Attribute <name>)'''
'''[...] this repeats till the last Attribute. I will describe on the right side the <localizedinfo> Elements. So we jump back in on Offset 0x124 [...]'''
'''<span style="background:#ccd815;">String Pointer</span>  -"- (in this case a Element <localizedinfo>)                                                                            <span style="background:#FCDFFF;">Typ Descriptor</span>  -"- (3 == String)'''
'''<span style="background:#43BFC7;">Attribute Counter</span>  (0x02 == 2)                                                                                                          <span style="background:#00FFFF;">String Offset</span>'''
'''<span style="background:#9AFEFF;">Parent</span>                                                                                                                                  <span style="background:#2bffb3;">Length of String</span>'''
 
===XML Output===
This is the Output, saved as xml, from the notification_settings_plugin.rco on 3.60 DevKit Firmware
 
    <?xml version="1.0" encoding="utf-8"?>
    <resource version="0.100000001490116f" type="normal">
      <stringtable>
        <locale origsize="1120" src="files\original\ja.z" compress="on" id="ja" />
        <locale origsize="1344" src="files\original\en-gb.z" compress="on" id="en-gb" />
        <locale origsize="1344" src="files\original\en.z" compress="on" id="en" />
        <locale origsize="1424" src="files\original\fr.z" compress="on" id="fr" />
        <locale origsize="1488" src="files\original\es.z" compress="on" id="es" />
        <locale origsize="1392" src="files\original\de.z" compress="on" id="de" />
        <locale origsize="1376" src="files\original\it.z" compress="on" id="it" />
        <locale origsize="1392" src="files\original\nl.z" compress="on" id="nl" />
        <locale origsize="1408" src="files\original\pt-br.z" compress="on" id="pt-br" />
        <locale origsize="1392" src="files\original\pt.z" compress="on" id="pt" />
        <locale origsize="1408" src="files\original\ru.z" compress="on" id="ru" />
        <locale origsize="1120" src="files\original\ko.z" compress="on" id="ko" />
        <locale origsize="1072" src="files\original\zh-t.z" compress="on" id="zh-t" />
        <locale origsize="1072" src="files\original\zh-s.z" compress="on" id="zh-s" />
        <locale origsize="1360" src="files\original\fi.z" compress="on" id="fi" />
        <locale origsize="1328" src="files\original\sv.z" compress="on" id="sv" />
        <locale origsize="1328" src="files\original\da.z" compress="on" id="da" />
        <locale origsize="1328" src="files\original\no.z" compress="on" id="no" />
        <locale origsize="1392" src="files\original\pl.z" compress="on" id="pl" />
        <locale origsize="1392" src="files\original\tr.z" compress="on" id="tr" />
      </stringtable>
      <texturetable>
        <texture origsize="5328" src="files\original\1DDD0E08.z" compress="on" id="1DDD0E08" type="texture/gim" />
        <texture origsize="7632" src="files\original\2133CEEB.z" compress="on" id="2133CEEB" type="texture/gim" />
        <texture origsize="7632" src="files\original\F7988312.z" compress="on" id="F7988312" type="texture/gim" />
        <texture origsize="5328" src="files\original\6F57E251.z" compress="on" id="6F57E251" type="texture/gim" />
        <texture origsize="7632" src="files\original\86645D41.z" compress="on" id="86645D41" type="texture/gim" />
        <texture origsize="7632" src="files\original\100DEBD1.z" compress="on" id="100DEBD1" type="texture/gim" />
        <texture src="files\original\29B91F26.z" origsize="57648" div_ratio_h="[0.490000009536743f]" compress="on" margin_v="[1]" id="29B91F26" margin_h="[1]" type="texture/gim" div_mode="3x1" />
        <texture src="files\original\D0A272A1.z" origsize="57648" div_ratio_h="[0.490000009536743f]" compress="on" margin_v="[1]" id="D0A272A1" margin_h="[1]" type="texture/gim" div_mode="3x1" />
      </texturetable>
      <styletable>
        <style_button id="2F652005" bg_obj="9C96918B" glow_obj="22FF88BD">
          <planeobj texture0="29B91F26" id="9C96918B" />
          <planeobj texture0="D0A272A1" blend="2" id="22FF88BD" />
        </style_button>
        <style_text textobj="01F875B1" id="3C288EE9">
          <textobj font_size="28f" bold="1" color="[1f, 1f, 1f, 1f]" max_line_count="2" line_pitch="28f" word_wrap="1" ellipsis="1" id="01F875B1" />
        </style_text>
        <style_plane id="C72CF1D7" planeobj="E95F1628">
          <planeobj texture0="1845D10D" id="E95F1628" />
        </style_plane>
      </styletable>
      <pagetable />
      <templatetable>
        <template id="3F187491">
          <file_list style="7038364B" id="38B62BE4">
            <layout_hint align="[0, 0]" size="[960f, 448f]" id="0A2F2CD9" pos="[0f, 0f]" />
          </file_list>
        </template>
        <template fast_open="1" id="AF37FB60">
          <list_item style="F3488F99" id="63678FEE">
            <layout_hint align="[0, 0]" size="[840f, 80f]" id="0A2F2CD9" pos="[0f, 0f]" />
            <text style="3C288EE9" id="2FBCDEAE">
              <layout_hint size="[462f, 0f]" align="[1, 4]" adjust="[0, 2]" id="DA39A3EE" pos="[-272f, 0f]" />
              <plane style="5F7B332B" id="202F570C">
                <layout_hint pos="[-30f, 0f]" id="DA39A3EE" adjust="[0, 0]" alpha="0f" anchor="[1, 5]" size="[60f, 60f]" />
              </plane>
              <check_box style="9F20F898" id="86D6DE69">
                <layout_hint align="[2, 0]" size="[46f, 46f]" pos="[602f, 0f]" anchor="[1, 5]" id="DA39A3EE" />
                <focus_hint focus_shape="0" focus_size="[47f, 47f]" />
              </check_box>
            </text>
          </list_item>
        </template>
        <template fast_open="1" id="E80C8623">
          <list_item style="F3488F99" id="63678FEE">
            <layout_hint align="[0, 0]" size="[840f, 80f]" id="0A2F2CD9" pos="[0f, 0f]" />
            <button sound="20413274" style="2F652005" id="224390D9">
              <layout_hint size="[840f, 80f]" adjust="[0, 0]" id="DA39A3EE" pos="[0f, 0f]" />
              <focus_hint focus_shape="3" focus_size="[960f, 80f]" />
              <text style="3C288EE9" id="2FBCDEAE">
                <layout_hint size="[398f, 0f]" align="[1, 4]" adjust="[0, 2]" id="DA39A3EE" pos="[-206f, 0f]" />
                <plane style="5F7B332B" id="202F570C">
                  <layout_hint pos="[-40f, 0f]" id="DA39A3EE" adjust="[0, 0]" alpha="0f" anchor="[1, 5]" size="[60f, 60f]" />
                </plane>
              </text>
              <plane style="C72CF1D7" id="DD31503B">
                <layout_hint size="[46f, 46f]" align="[2, 0]" adjust="[0, 0]" id="DA39A3EE" pos="[330f, 0f]" />
              </plane>
            </button>
          </list_item>
        </template>
      </templatetable>
    </resource>
== CXML Tools ==
Because CXML is "Compiled XML" tools read CXML files are often called "Decompilers"
while one to build it is a "Compiler"
 
{| class="wikitable"
|+ CXML Decompilers
|-
! Name || Functions !! Developer !! License || Language
|-
|-
| cxml.py // PSM SDK || Compile || Sony Computer Entertainment || All Rights Reserved || Python2
| 0x94 || 0x04 || FF FF FF FF || Previous Element
|-
|-
| [https://bitbucket.org/SilicaAndPina/cxml-decompiler cxml-decompiler] || Decompile, Compile || Li || MIT || C#
| 0x98 || 0x04 || 00 00 01 64 || Next Element
|-
|-
| [https://github.com/OpenPSS/SnowPME/tree/master/LibCXML LibCXML // SnowPME] || Decompile || OpenPSS || GPLv3 || C++
| 0x9C || 0x04 || FF FF FF FF || Firs Entry
|-
|-
| [https://github.com/Princess-of-Sleeping/RcoDecompiler RcoDecompiler] || Decompile || Princess of Sleeping || MIT || C
| 0xA0 || 0x04 || FF FF FF FF || Last Entry
|-
|-
|}
|}
== Other useful links ==
So what of old but still handy [https://github.com/ColdSauce/psxsdk/tree/master/tools VAG2WAV WAV2VAG Source]
Please note that all contributions to Vita Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see Vita Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Templates used on this page: