Editing CXML Containers
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 1: | Line 1: | ||
=Description= | =Description= | ||
=Container Structure= | =Container Structure= | ||
==XML implicit structure Overview== | ==XML implicit structure Overview== | ||
==Container Common Structure== | ==Container Common Structure== | ||
===Main Header=== | ===Main Header=== | ||
The header contains an | The header contains an identifyer of the container (magic), his version, and allows to store the "absolute start offset" and "size" of 7 tables (or areas) | ||
When a "not used table" is placed before a "used table"... the start offset of the "not used table" and his size (as zero) are stored in the main header to preserve his position in the structure. The "used table" that comes later starts in the same offset than the | When a "not used table" is placed before a "used table"... the start offset of the "not used table" and his size (as zero) are stored in the main header to preserve his position in the structure. The "used table" that comes later starts in the same offset than the previouslly "not used table" (an intuitive way to think in this is imagining are overlapped because starts in the same position but only the one at the top is used) | ||
*The container format is generic (used also by .RAF and .P3T with some variations) so the usage of this tables can vary, in this example there are 3 "not used tables": | *The container format is generic (used also by .RAF and .P3T with some variations) so the usage of this tables can vary, in this example there are 3 "not used tables": | ||
Line 301: | Line 29: | ||
| Magic || 0x00 || 0x04 || {{cellcolors|#666666|#ffffff}} 51 52 43 46 || 'QRCF' | | Magic || 0x00 || 0x04 || {{cellcolors|#666666|#ffffff}} 51 52 43 46 || 'QRCF' | ||
|- | |- | ||
| Version || 0x04 || 0x04 || {{cellcolors|#888888|#ffffff}} 00 00 01 10 || | | Version || 0x04 || 0x04 || {{cellcolors|#888888|#ffffff}} 00 00 01 10 || | ||
|- | |- | ||
| Tree Table Offset || 0x08 || 0x04 || {{cellcolors|#dddd66}} 00 00 00 40 || | | Tree Table Offset || 0x08 || 0x04 || {{cellcolors|#dddd66}} 00 00 00 40 || | ||
Line 334: | Line 62: | ||
*Notes | *Notes | ||
**The sizes | **The sizes doesnt includes the (posible) padding at the end of all tables | ||
===Tree Table=== | ===Tree Table=== | ||
Line 344: | Line 72: | ||
! Offset !! Size !! Example !! Remark | ! Offset !! Size !! Example !! Remark | ||
|- | |- | ||
| 0x00 || | | 0x00 || 0x08 || 00 00 00 00 00 00 00 00 || similar all qrc files | ||
|- | |- | ||
| | | 0x08 || 0x08 || FF FF FF FF FF FF FF FF || similar all qrc files | ||
|- | |- | ||
| | | 0x10 || 0x04 || FF FF FF FF || similar all qrc files | ||
|- | |- | ||
| | | 0x14 || 0x04 || 00 00 00 1C || similar all qrc files | ||
|- | |- | ||
| | | 0x18 || 0x04 || 00 00 00 1C || similar all qrc files | ||
|- | |- | ||
| | | 0x1C || 0x04 || 00 00 00 04 || similar all qrc files | ||
|- | |- | ||
| | | 0x20 || 0x08 || 00 00 00 00 00 00 00 00 || similar all qrc files | ||
|- | |- | ||
| | | 0x28 || 0x08 || FF FF FF FF FF FF FF FF || similar all qrc files | ||
|- | |- | ||
| | | 0x30 || 0x04 || 00 00 00 38 || similar all qrc files: start offset Tree Table | ||
|- | |- | ||
| | | 0x34 || 0x04 || xx xx xx xx || size body Tree Table | ||
|- | |- | ||
| | | 0x38 || 0x04 || 00 00 00 0F || similar all qrc files | ||
|- | |- | ||
| | | 0x3C || 0x04 || 00 00 00 02 || 00 00 00 03 on icontex.qrc | ||
|- | |- | ||
| | | 0x40 || 0x04 || 00 00 00 1C || similar all qrc files | ||
|- | |- | ||
| | | 0x44 || 0x04 || FF FF FF FF || similar all qrc files | ||
|- | |- | ||
| | | 0x48 || 0x04 || 00 00 00 74 || 00 00 00 84 on icontex.qrc : start offset of the Filename pointer entry inside ID Table | ||
|- | |- | ||
| | | 0x4C || 0x08 || FF FF FF FF FF FF FF FF || similar all qrc files | ||
|- | |- | ||
| | | 0x54 || 0x04 || 00 00 00 14 || similar all qrc files | ||
|- | |- | ||
| | | 0x58 || 0x04 || 00 00 00 06 || similar all qrc files | ||
|- | |- | ||
| | | 0x5C || 0x04 || 00 00 00 00 || offset of first File Data | ||
|- | |- | ||
| | | 0x60 || 0x04 || 00 00 01 50 || size of first File Data | ||
|- | |- | ||
| | | 0x64 || 0x04 || 00 00 00 18 || similar all qrc files | ||
|- | |- | ||
| | | 0x68 || 0x04 || 00 00 00 07 || similar all qrc files | ||
|- | |- | ||
| | | 0x6C || 0x04 || 00 00 00 00 || offset of first filename within the ID Table | ||
|- | |- | ||
| | | 0x70 || 0x04 || 00 00 00 00 || on icontex here are additional 16 bytes | ||
|- | |- | ||
| | | 0x74 || 0x04 || 00 00 00 0F || similar all qrc files | ||
|- | |- | ||
| | | 0x78 || 0x04 || 00 00 00 02 || similar all qrc files | ||
|- | |- | ||
| | | 0x7C || 0x04 || 00 00 00 1C || similar all qrc files | ||
|- | |- | ||
| | | 0x80 || 0x04 || 00 00 00 38 || Filename pointer of the first file for the ID Table | ||
|- | |- | ||
| | | 0x84 || 0x04 || 00 00 00 B0 || start offset of the next entry for the Filename pointer within the ID Table | ||
|- | |- | ||
|} | |} | ||
On icontex.qrc there are additional 16 bytes added on offset 0x70 within the '''Tree Table | On icontex.qrc there are additional 16 bytes added on offset 0x70 within the '''Tree Table''' | ||
{| class="wikitable" | {| class="wikitable" | ||
! Offset !! Size !! Example !! Remark | ! Offset !! Size !! Example !! Remark | ||
|- | |- | ||
| 0x74 || 0x04 || 00 00 00 1B || | | 0x70 || 0x04 || 00 00 00 00 || on icontex.qrc | ||
|- | |||
| 0x74 || 0x04 || 00 00 00 1B || on icontex.qrc | |||
|- | |- | ||
| 0x78 || 0x04 || 00 00 00 01 || | | 0x78 || 0x04 || 00 00 00 01 || on icontex.qrc | ||
|- | |- | ||
| 0x7C || 0x04 || 00 01 55 D4 || on icontex.qrc (size of .dds uncompressed | | 0x7C || 0x04 || 00 01 55 D4 || on icontex.qrc (size of .dds uncompressed) | ||
|- | |- | ||
| 0x80 || 0x04 || 00 00 00 00 || | | 0x80 || 0x04 || 00 00 00 00 || similar all qrc files | ||
|- | |||
| 0x84 || 0x04 || 00 00 00 0F || similar all qrc files | |||
|- | |||
| 0x88 || 0x04 || 00 00 00 02 || similar all qrc files | |||
|- | |||
| 0x8C || 0x04 || 00 00 00 1C || similar all qrc files | |||
|- | |||
| 0x90 || 0x04 || 00 00 00 38 || Filename pointer of the first file for the ID Table | |||
|- | |||
| 0x94 || 0x04 || 00 00 00 B0 || start offset of the next entry for the Filename pointer within the Tree Table | |||
|- | |- | ||
|} | |} | ||
Line 422: | Line 162: | ||
Every <file> inside <file-table> has assigned 2 attributes in the xml used to create the container: "src" (includes full path + file name + file extension), and "id" (only file name), plus the attribute "size" in QRCF_2 that is added by the program that creates the container ("size" is not present in the original .xml but added automatically when the container is created, this only happens in QRCF_2 and themes and is related with the per-file compression) | Every <file> inside <file-table> has assigned 2 attributes in the xml used to create the container: "src" (includes full path + file name + file extension), and "id" (only file name), plus the attribute "size" in QRCF_2 that is added by the program that creates the container ("size" is not present in the original .xml but added automatically when the container is created, this only happens in QRCF_2 and themes and is related with the per-file compression) | ||
*For QRCF_1 containers only is stored the "src" (the file "id" is missing | *For QRCF_1 containers only is stored the "src" (the file "id" is missing althougth can be deduced from the "src") | ||
*For QRCF_2 and P3T themes only is stored the "id" (the file "src" is missing so there is no way to read the original path or file extension from the container) | *For QRCF_2 and P3T themes only is stored the "id" (the file "src" is missing so there is no way to read the original path or file extension from the container) | ||
{{Boxcode| | {{Boxcode|content=<syntaxhighlight lang="xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
<qrc> | <qrc> | ||
Line 454: | Line 194: | ||
===String Table=== | ===String Table=== | ||
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 ( | 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 doesnt makes differences of the "directory hierarchy" of the tags neither is specifyed 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) | ||
In all the .qrc files (QRCF_1) except icontex.qrc (QRCF_2). The only difference is QRCF_2 adds the "size" to all the <file> elements (added by the container creator, related with the "per-file" compression) | In all the .qrc files (QRCF_1) except icontex.qrc (QRCF_2). The only difference is QRCF_2 adds the "size" to all the <file> elements (added by the container creator, related with the "per-file" compression) | ||
Line 478: | Line 218: | ||
==Summary== | ==Summary== | ||
===Table Description=== | ===Table Description=== | ||
<span style="background:#66ff66;">First Element</span> (in root of xml) Points to a Offset within '''Tree Table''' which represents a string | |||
<span style="background:#e6ec8b;">Last Element</span> (in root of xml) Points to a Offset within '''Tree Table''' which represents a string | |||
<span style="background:#ccd815;">Element Pointer</span> Points to a Offset within '''String Table''' which represents a string | |||
<span style="background:#ffff66;">Previous Element</span> Points to a Offset within '''Tree Table''' which represents a string | |||
<span style="background:#ff6666;">Next Element</span> Points to a Offset within '''Tree Table''' which represents a string | |||
<span style="background:#66ff66;">First Element</span> | |||
<span style="background:#e6ec8b;">Last Element</span> | |||
<span style="background:#ccd815;">Element Pointer</span> | |||
<span style="background:#43BFC7;">Attribute Counter</span> Integer value which describe the amount of Attributes for the current processing Element | |||
<span style="background:#9AFEFF;">Parent</span> Points to a Offset within '''Tree Table''' which represents a string and describe the Parent Element | |||
<span style="background:#ffff66;">Previous Element</span> (also used as a 4 byte long value which points to a Filename within '''ID Table''') | |||
<span style="background:#ff6666;">Next Element</span> (also used as a 4 byte long value which points to a Filename within '''ID Table''') | |||
<span style="background:#cef2ce;">First Entry</span> Points to a Offsset within '''Tree Table''' which describe the first file of current processing Element | |||
<span style="background:#5CB3FF;">Last Entry</span> Points to a Offsset within '''Tree Table''' which describe the last file of current processing Element | |||
<span style="background:#ccd815;">Element Pointer</span> | |||
<span style="background:#FCDFFF;">Typ Descriptor</span> A Integer value which describe the Typ of the Attribute | |||
<span style="background:#6666ff;">Offset of Filedata</span> A Integer value, points to a Offset within '''File Table''' which describe the Start of a File to read from | |||
<span style="background:#2bffb3;">Size of Filedata</span> A Integer value which describe the Length of the File to read from '''File Table''' | |||
<span style="background:#ccd815;">Element Pointer</span> | |||
<span style="background:#FCDFFF;">Typ Descriptor</span> | |||
<span style="background:#00FFFF;">ID Offset</span> A Integer value which describe the Offset of a Filename within '''ID Table''' | |||
''' Tree Table of rhm.qrc ID Table of rhm.qrc''' | ''' Tree Table of rhm.qrc ID Table of rhm.qrc''' | ||
Line 534: | Line 316: | ||
| 0x00000006 || '''File''' || Composed of '''Offset''' and '''Size''' each 4 bytes long | | 0x00000006 || '''File''' || Composed of '''Offset''' and '''Size''' each 4 bytes long | ||
|- | |- | ||
| 0x00000007 || '''ID | | 0x00000007 || '''ID''' || Composed of '''Offset''' and '''Size''' each 4 bytes long | ||
|- | |- | ||
|} | |} | ||
The Typ '''File''' is used to descripe two integer values, the Offset and Size for a File which will be readed from '''File Table'''. The Typ '''ID | The Typ '''File''' is used to descripe two integer values, the Offset and Size for a File which will be readed from '''File Table'''. The Typ '''ID''' is used to descripe the Offset of a Filename within the '''ID Table'''. The Size value from '''ID'''' seems not to be used in Containers. | ||
==Container Structure variations== | |||
===QRC=== | |||
==== QRCC ==== | |||
QRCC ('''Q'''t '''R'''esources '''C'''ontainer '''C'''ompressed) | |||
QRC file ZLIB Compressed level 9. | |||
<span style="background:# | *Example from 3.55 rhm.qrc: | ||
'''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F''' | |||
'''00000000''' <span style="background:#ff6666;">51 52 43 43</span> <span style="background:#8888ff;">00 00 28 00</span> <span style="background:#00ff00;">78 DA</span> QRCC..(.xÚ | |||
{| class="wikitable" | |||
|- | |||
! Name !! Offset !! Size !! Example !! Remark | |||
|- | |||
| Magic || 0x00 || 0x04 || {{cellcolors|#ff6666}} 51 52 43 43 || 'QRCC' | |||
|- | |||
| QRCF decompressed size || 0x04 || 0x04 || {{cellcolors|#8888ff}} 00 00 28 00 || The size of the QRCF file generated when a QRCC is decompressed | |||
|- | |||
| compressed QRCF || 0x08 || ''varies, up to the end of the QRCC file'' || {{cellcolors|#00FF00}} 78 DA... || QRCF file start offset, compressed with ZLIB | |||
|- | |||
|} | |||
*Notes | |||
**The first 2 bytes of the compressed QRCF is the ZLIB header, in this example: 0x78DA | |||
**default/max level 9 | |||
==== QRCF ==== | |||
QRCF ('''Q'''t '''R'''esources '''C'''ontainer '''F'''lat?) | |||
===P3T=== | |||
=== P3TF === | === P3TF === | ||
P3TF ('''P'''laystation '''3''' '''T'''heme '''F'''lat?) | P3TF ('''P'''laystation '''3''' '''T'''heme '''F'''lat?) | ||
Line 650: | Line 420: | ||
! Offset !! Size !! Example !! Remark | ! Offset !! Size !! Example !! Remark | ||
|- | |- | ||
| 0x00 || | | 0x00 || 0x08 || 00 00 00 00 00 00 00 00 || similar all p3t files | ||
|- | |- | ||
| | | 0x08 || 0x08 || FF FF FF FF FF FF FF FF || similar all p3t files | ||
|- | |- | ||
| 0x10 || 0x04 || FF FF FF FF || similar all p3t files | |||
| 0x10 || 0x04 || FF FF FF FF || | |||
|- | |- | ||
| 0x14 || 0x04 || 00 00 00 1C || First Element within the root Element (p3t) | | 0x14 || 0x04 || 00 00 00 1C || First Element within the root Element (p3t) | ||
Line 664: | Line 430: | ||
| 0x18 || 0x04 || 00 00 18 B4 || Last Element within the root Element (p3t) | | 0x18 || 0x04 || 00 00 18 B4 || Last Element within the root Element (p3t) | ||
|- | |- | ||
| 0x1C || 0x04 || 00 00 00 06 || | | 0x1C || 0x04 || 00 00 00 06 || First Element (Offset within '''String Table''', in this case it will be <infotable>) | ||
|- | |- | ||
| 0x20 || | | 0x20 || 0x08 || 00 00 00 00 00 00 00 00 || similar all p3t files | ||
|- | |- | ||
| 0x28 || 0x04 || FF FF FF FF || Previous ELement | | 0x28 || 0x04 || FF FF FF FF || Previous ELement | ||
Line 678: | Line 442: | ||
| 0x34 || 0x04 || 00 00 01 60 || Last Entry | | 0x34 || 0x04 || 00 00 01 60 || Last Entry | ||
|- | |- | ||
| 0x38 || 0x04 || 00 00 00 10 || | | 0x38 || 0x04 || 00 00 00 10 || Element Pointer (Offset within '''String Table''', in this case it will be <info>) | ||
|- | |- | ||
| 0x3C || 0x04 || 00 00 00 0D || Attribute Counter (0x0D == 13, the 13 Attributes of <info> Element) | | 0x3C || 0x04 || 00 00 00 0D || Attribute Counter (0x0D == 13, the 13 Attributes of <info> Element) | ||
Line 693: | Line 457: | ||
|- | |- | ||
|} | |} | ||
====String Table==== | ====String Table==== | ||
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 | 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 doesnt makes differences of the "directory hierarchy" of the tags neither is specifyed 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''' | '''Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F''' | ||
Line 741: | Line 506: | ||
'''00000040''' 69 63 6F 6E 5F 6D 75 73 69 63 00 00 00 02 F8 69 icon_music....øi | '''00000040''' 69 63 6F 6E 5F 6D 75 73 69 63 00 00 00 02 F8 69 icon_music....øi | ||
'''00000050''' 63 6F 6E 5F 76 69 64 65 6F 00 00 00 03 44 69 63 con_video....Dic | '''00000050''' 63 6F 6E 5F 76 69 64 65 6F 00 00 00 03 44 69 63 con_video....Dic | ||
'''00000060''' 6F 6E 5F 67 61 6D 65 00 | '''00000060''' 6F 6E 5F 67 61 6D 65 00 on_game | ||
====File Table==== | ====File Table==== | ||
The files are not concatenated in the same order than in the '''Tree Table''' & '''ID Table'''. There are even some file within the '''File Table''' which are not contained in '''ID Table'''(anim.raf, authoricon, ect.,...). | The files are not concatenated in the same order than in the '''Tree Table''' & '''ID Table'''. There are even some file within the '''File Table''' which are not contained in '''ID Table'''(anim.raf, authoricon, ect.,...). | ||
== | ===RAF=== | ||
== | |||
=Examples= | |||
== | ==QRC== | ||
QRCF_1 entry size is 60 bytes (0x3C), QRCF_2 and P3TF entry size is 76 bytes (0x4C), and there is a padding at the end of the tables | |||
*Offset (without the 0x40 header in all qrc files) ---> http://666kb.com/i/cib5c7q4y7rpcx9x1.gif | |||
*rhm.qrc v1.00 datatable ---> http://i.imgur.com/P9K2rYj.jpg | |||
**The hexeditor view is resized to a width of 0x3C, the marked lines are the 5 entries | |||
**At the start of the first line at top (the line not marked) has been added 4 bytes to be able to align the others to the correct width, this first line at top of the table is the header of the data table | |||
These .XML's are used to build the different container variations, the tags from the XML are included in the "strings table" inside the container and defines his contents and structure. The examples are speculative and based in the XML used by themes | |||
'''QRCF_1''' | |||
{{Boxcode|content=<syntaxhighlight lang="xml"> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<qrc> | |||
<file-table> | |||
<file id="file1" src="file1.png"/> | |||
<file id="file2" src="file2.png"/> | |||
<file id="file3" src="file3.png"/> | |||
</file-table> | |||
</qrc> | |||
</syntaxhighlight>}} | |||
== | '''QRCF_2''' | ||
=== | {{Boxcode|content=<syntaxhighlight lang="xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | |||
<qrc> | |||
<file-table> | |||
<file id="file1" src="file1.png" size="12345"/> | |||
<file id="file2" src="file2.png" size="12345"/> | |||
<file id="file3" src="file3.png" size="12345"/> | |||
</file-table> | |||
</qrc> | |||
</syntaxhighlight>}} | |||
*Notes: | |||
**Size is added by the compiler, the xml used to build the container doesnt needs it (like in themes) | |||
{| class="wikitable" style="font-size:x-small;" | |||
|+[[rhm.qrc]] (v1.00) | |||
! Offset !! Size !! Example !! Name !! Notes !! icontex.qrc (v2.00) !! theme.p3t !! coldboot.raf (v2.70) | |||
|- | |- | ||
! | ! colspan="5" | QRCF Header | ||
|- {{cellcolors|#666666|#ffffff}} | |||
| 0x00 || 0x04 || QRCF || Magic || QRCF (unnofficially: QRCF_1) || QRCF (unnofficially: QRCF_2) || P3TF || RAFO | |||
|- {{cellcolors|#666666|#ffffff}} | |||
| 0x04 || 0x04 || 00000110 || Version || 110 || 110 || 110 || 110 | |||
|- bgcolor="#ff8888" | |||
| 0x08 || 0x04 || 00000040 || Data table absolute start offset || 40 || 40 || 40 || 40 | |||
|- bgcolor="#ff8888" | |||
| 0x0C || 0x04 || 00000164 || Data table size || 164 (without the padding at the end) || 1ECC || 19E8 || 1288 | |||
|- bgcolor="#88ff88" | |||
| 0x10 || 0x04 || 000001B0 || Filename table absolute start offset || 1B0 || 1F10 || 1A30 || 12D0 | |||
|- bgcolor="#88ff88" | |||
| 0x14 || 0x04 || 00000071 || Filename table size || 71 (without the padding at the end) || 326 || 599 || 21C | |||
|- bgcolor="#8888ff" | |||
| 0x18 || 0x04 || 00000230 || Strings table absolute start offset || 230 || 2240 || 1FD0 || 14F0 | |||
|- bgcolor="#8888ff" | |||
| 0x1C || 0x04 || 0000001B || Strings table size || 1B without the padding at the end || 20 || 1CE || 1B1 | |||
|- bgcolor="#ffeedd" | |||
| 0x20 || 0x04 || 00000250 || Integer array absolute start offset || ''Overlapped'' || 2260 (overlapped) || 21A0 (overlapped) || 16B0 (overlapped) | |||
|- bgcolor="#ffeedd" | |||
| 0x24 || 0x04 || 00000000 || Integer array size || ''Empty'' || 0 || 0 || 0 | |||
|- bgcolor="#ffeebb" | |||
| 0x28 || 0x04 || 00000250 || Float array absolute start offset || ''Overlapped'' || 2260 (overlapped) || 21A0 (overlapped) || 16B0 | |||
|- bgcolor="#ffeebb" | |||
| 0x2C || 0x04 || 00000000 || Float array size || ''Empty'' || 0 || 0 || A0 | |||
|- bgcolor="#ffee99" | |||
| 0x30 || 0x04 || 00000250 || File table absolute start offset || ''Overlaps the previous 2 tables'' || 2260 || 21A0 || 1750 | |||
|- bgcolor="#ffee99" | |||
| 0x34 || 0x04 || 00000DD0 || File table size || ''Overlaps the previous 2 tables'' || AA7F0 || 149890 || 18F9F0 | |||
|- bgcolor="#ffee77" | |||
| 0x38 || 0x04 || 00000000 || Unknown area absolute start offset || ''Not used'' || 0 || 0 || 0 | |||
|- bgcolor="#ffee77" | |||
| 0x3C || 0x04 || 00000000 || Unknown area size || ''Empty'' || 0 || 0 || 0 | |||
|- | |- | ||
| | ! colspan="5" | Data Table (first colored area is the header of the data table) | ||
|- {{cellcolors|#ff7777}} | |||
| 0x40 || 0x04 || 00000000 || xml element TAG name relative offset || 0 = '''qrc''' || 0 = '''qrc''' || 0 = '''theme''' || 0 = '''raf''' | |||
|- {{cellcolors|#ff7777}} | |||
| 0x44 || 0x04 || 00000000 || xml element number of attributes || 0 = '''no attributes''' || 0 || 0 || 1 | |||
|- {{cellcolors|#ff7777}} | |||
| 0x48 || 0x04 || FFFFFFFF || parent element relative start offset || FFFFFFFF = '''parent doesnt exists''' || FFFFFFFF || FFFFFFFF || FFFFFFFF | |||
|- {{cellcolors|#ff7777}} | |||
| 0x4C || 0x04 || FFFFFFFF || previous brother element relative start offset || FFFFFFFF = '''previous brother doesnt exists''' || FFFFFFFF || FFFFFFFF || FFFFFFFF | |||
|- {{cellcolors|#ff7777}} | |||
| 0x50 || 0x04 || FFFFFFFF || next brother element relative start offset || FFFFFFFF = '''next brother doesnt exists''' || FFFFFFFF || FFFFFFFF || FFFFFFFF | |||
|- {{cellcolors|#ff7777}} | |||
| 0x54 || 0x04 || 0000001C || first children element relative start offset || 0x40 + 0x1C = '''first children at 0x5C absolute''' || 0x40 + 0x1C = 5C absolute || 0x40 + 0x1C = 5C absolute || 0x40 + 0x2C = 0x6C absolute | |||
|- {{cellcolors|#ff7777}} | |||
| 0x58 || 0x04 || 0000001C || last children element relative start offset || 0x40 + 0x1C = '''last children at 0x5C absolute''' || 0x40 + 0x1C = 5C absolute || 0x40 + 0x19CC = 0x1A0C absolute || 0x40 + 0xFB0 = 0xFF0 absolute | |||
|- {{cellcolors|#ff8888}} | |||
| 0x5C || 0x04 || 00000004 || xml element TAG name relative offset || 4 = '''file-table''' || 4 = '''file-table''' || 6 = '''icontable''' || 4 = '''version''' | |||
|- {{cellcolors|#ff8888}} | |||
| 0x60 || 0x04 || 00000000 || xml element number of attributes || 0 = '''no attributes''' || 0 || 0 || 2 | |||
|- {{cellcolors|#ff8888}} | |||
| 0x64 || 0x04 || 00000000 || parent element relative start offset || 0x40 + 0x0 = 0x40 absolute = parent is '''qrc''' || 0 = '''qrc''' || 0 = '''theme''' || 3F800000 | |||
|- {{cellcolors|#ff8888}} | |||
| 0x68 || 0x04 || FFFFFFFF || previous brother element relative start offset || FFFFFFFF = '''previous brother doesnt exists''' || FFFFFFFF || FFFFFFFF || 0 | |||
|- {{cellcolors|#ff8888}} | |||
| 0x6C || 0x04 || FFFFFFFF || next brother element relative start offset || FFFFFFFF = '''next brother doesnt exists''' || FFFFFFFF || 141C (related with value at 0x58, allways same or smaller) || C | |||
|- {{cellcolors|#ff8888}} | |||
| 0x70 || 0x04 || 00000038 || first children element relative start offset || 0x40 + 0x38 = '''first children at 0x78 absolute''' || 38 || 38 || 4 | |||
|- {{cellcolors|#ff8888}} | |||
| 0x74 || 0x04 || 00000128 || last children element relative start offset || 0x40 + 0x128 = '''last children at 0x168 absolute''' || 1E80 || 13D0 || 0 | |||
|- bgcolor="#cccccc" | |||
| colspan="5" | 1st entry start || colspan="2" | 1st entry start | |||
|- {{cellcolors|#ff9999}} | |||
| 0x78 || 0x04 || 0000000F || xml element TAG name relative offset || F = '''file''' || F = '''file''' || 10 = '''icon''' || FFFFFFFF | |||
|- {{cellcolors|#ff9999}} | |||
| 0x7C || 0x04 || 00000002 || xml element number of attributes || 2 attributes = '''src''' and '''id''' || 3 attributes = '''src''', '''id''', and '''size''' || 3 attributes = '''src''', '''id''', and '''size''' || 750 | |||
|- {{cellcolors|#ff9999}} | |||
| 0x80 || 0x04 || 0000001C || parent element relative start offset || 0x40 + 0x1C = 0x5C absolute = parent is '''file-table''' || 1C || 1C || 88 ---first entry--- | |||
|- {{cellcolors|#ff9999}} | |||
| 0x84 || 0x04 || FFFFFFFF || previous brother element relative start offset || FFFFFFFF = '''previous brother doesnt exists''' || FFFFFFFF || FFFFFFFF || 714 ---last entry--- | |||
|- {{cellcolors|#ff9999}} | |||
| 0x88 || 0x04 || 00000074 || next brother element relative start offset || 0x40 + 0x74 = '''next brother at 0xB4''' || 84 || 84 || 12 | |||
|- {{cellcolors|#ff9999}} | |||
| 0x8C || 0x04 || FFFFFFFF || first children element relative start offset || FFFFFFFF = '''first children doesnt exists''' || FFFFFFFF || FFFFFFFF || 1 | |||
|- {{cellcolors|#ff9999}} | |||
| 0x90 || 0x04 || FFFFFFFF || last children element relative start offset || FFFFFFFF = '''last children doesnt exists''' || FFFFFFFF || FFFFFFFF || 1 | |||
|- {{cellcolors|#ffaaaa}} | |||
| 0x94 || 0x04 || 00000014 || xml attribute TAG name relative offset || 14 = '''src''' || 14 = '''src''' || 15 = '''src''' || 0 | |||
|- {{cellcolors|#ffaaaa}} | |||
| 0x98 || 0x04 || 00000006 || || 6 || 6 || 6 || 1D | |||
|- {{cellcolors|#ffaaaa}} | |||
| 0x9C || 0x04 || 00000000 || 1st file relative start offset || 0x250 + 0x0 = '''file starts at 0x250''' absolute || 0 --1st file start-- || 0 --1st file start-- || 1 | |||
|- {{cellcolors|#ffaaaa}} | |||
| 0xA0 || 0x04 || 00000150 || 1st file size || '''file size is 150''' || 15FF --1st file size-- || 29BB --1st file size-- || 2 | |||
|- {{cellcolors|#ffbbbb}} | |||
| 0xA4 || 0x04 || 00000018 || xml attribute TAG name relative offset || 18 = '''id''' || 18 = '''id''' || 19 = '''id''' || 0 | |||
|- {{cellcolors|#ffbbbb}} | |||
| 0xA8 || 0x04 || 00000007 || || 7 || 7 || 7 || 27 | |||
|- {{cellcolors|#ffbbbb}} | |||
| 0xAC || 0x04 || 00000000 || 1st filename relative start offset || 0x1B0 + 0x0 = '''filename starts at 0x1B0''' absolute || 0 --1st filename start-- || 0 --1st filename start-- || 1 | |||
|- {{cellcolors|#ffbbbb}} | |||
| 0xB0 || 0x04 || 00000000 || 1st filename size related ? || '''filename size is... 0''' wtf ? || 0 || 0 || 1 | |||
|- bgcolor="#cccccc" | |||
| colspan="5" | 2nd entry start | |||
|- | |- | ||
| | | 0xB4 || 0x04 || 0000000F || xml element TAG name relative offset || || {{cellcolors|#ffcccc}} 1B = '''size''' || {{cellcolors|#ffcccc}} 1C = '''size''' || 0 | ||
|- | |- | ||
| | | 0xB8 || 0x04 || 00000002 || xml element number of attributes || 2 || {{cellcolors|#ffcccc}} 1 || {{cellcolors|#ffcccc}} 1 || 32 | ||
|- | |- | ||
| | | 0xBC || 0x04 || 0000001C || parent element relative start offset || || {{cellcolors|#ffcccc}} 55D5 --1st file size uncompressed ?-- || {{cellcolors|#ffcccc}} 10080 --1st file size uncompressed ?-- || 1 | ||
|- | |- | ||
| 0xC0 || 0x04 || 00000038 || previous brother element relative start offset || 0x40 + 0x38 = 0x78 || {{cellcolors|#ffcccc}} 0 || {{cellcolors|#ffcccc}} 0 || 6 | |||
|- | |- | ||
| | | 0xC4 || 0x04 || 000000B0 || next brother element relative start offset || 0x40 + 0xB0 = 0xF0 || {{cellcolors|#cccccc}} F --2nd entry start-- || {{cellcolors|#cccccc}} 10 --2nd entry start-- || 0 | ||
|- | |- | ||
| | | 0xC8 || 0x04 || FFFFFFFF || first children element relative start offset || || 3 = compressed ? || 3 = compressed ? || 3C --entry start-- | ||
|- | |- | ||
| | | 0xCC || 0x04 || FFFFFFFF || last children element relative start offset || || 1C || 1C || C | ||
|- | |- | ||
| | | 0xD0 || 0x04 || 00000014 || xml attribute TAG name relative offset || || 38 --previous entry-- || 38 --previous entry-- || 2C | ||
|- | |- | ||
| | | 0xD4 || 0x04 || 00000006 || || || D0 --next entry-- || D0 --next entry-- || FFFFFFFF --previous entry-- | ||
|- | |- | ||
| | | 0xD8 || 0x04 || 00000150 || 2th file relative start offset || 0x250 + 0x150 = 0x3A0 || FFFFFFFF || FFFFFFFF || 164 --next entry-- | ||
|- | |- | ||
| | | 0xDC || 0X04 || 000000E0 || 2th file size || || FFFFFFFF || FFFFFFFF || FFFFFFFF | ||
|- | |- | ||
| | | 0xE0 || 0x04 || 00000018 || xml attribute TAG name relative offset || || 14 || 15 || FFFFFFFF | ||
|- | |- | ||
| | | 0xE4 || 0x04 || 00000007 || || || 6 || 6 || 42 | ||
|- | |- | ||
| | | 0xE8 || 0x04 || 00000016 || 2th filename relative start offset || 0x1B0 + 0x16 = 0x1C6 || 1600 ---2nd file start--- || 29C0 ---2nd file start--- || 5 | ||
|- | |- | ||
| | | 0xEC || 0x04 || 00000000 || || || 1B51 ---2nd file size--- || 2500 ---2nd file size--- || 0 | ||
|- | |- bgcolor="#cccccc" | ||
| | | colspan="5" | 3rd entry start | ||
|- | |- | ||
| | | 0xF0 || 0x04 || 0000000F || xml element TAG name relative offset || || 18 || 19 || 4 | ||
|- | |- | ||
| | | 0xF4 || 0x04 || 00000002 || xml element number of attributes || 2 || 7 || 7 || 4D | ||
|- | |- | ||
| | | 0xF8 || 0x04 || 0000001C || parent element relative start offset || || 7 ---2nd filename start--- || E ---2nd filename start--- || 5 | ||
|- | |- | ||
| | | 0xFC || 0x04 || 00000074 || previous brother element relative start offset || 0x40 + 0x74 = 0xB4 || 0 || 0 || 4 | ||
| | |||
| | |||
|- | |- | ||
| | | 0x100 || 0x04 || 000000EC || next brother element relative start offset || 0x40 + 0xEC = 0x12C || 1B || 1C || 3 | ||
|- | |- | ||
| 0x04 || | | 0x104 || 0x04 || FFFFFFFF || first children element relative start offset || || 1 || 1 || 53 | ||
|- | |- | ||
| | | 0x108 || 0x04 || FFFFFFFF || last children element relative start offset || || 155D4 --2nd file size uncompressed-- || 10080 --2nd file size uncompressed-- || 5 | ||
|- | |- | ||
| | | 0x10C || 0x04 || 00000014 || xml attribute TAG name relative offset || || 0 || 0 || 7 | ||
|- | |- | ||
| | | 0x110 || 0x04 || 00000006 || || || {{cellcolors|#cccccc}} F --3rd entry start-- || {{cellcolors|#cccccc}} 10 --3ed entry start-- || 2 | ||
|- | |- | ||
| | | 0x114 || 0x04 || 00000230 || 3th file relative start offset || 0x250 + 0x230 = 0x480 || 3 = compressed ? || 3 = compressed ? || 5D | ||
|- | |- | ||
| | | 0x118 || 0x04 || 00000120 || 3th file size || || 1C || 1C || 5 | ||
|- | |- | ||
| | | 0x11C || 0x04 || 00000018 || xml attribute TAG name relative offset || | ||
|- | |- | ||
| | | 0x120 || 0x04 || 00000007 || || | ||
|- | |- | ||
| | | 0x124 || 0x04 || 0000002C || 3th filename relative start offset || 0x1B0 + 0x2C = 0x1DC | ||
|- | |- | ||
| | | 0x128 || 0x04 || 00000000 || || | ||
|- bgcolor="#cccccc" | |||
| colspan="5" | 4th entry start | |||
|- | |- | ||
| | | 0x12C || 0x04 || 0000000F || xml element TAG name relative offset || | ||
|- | |- | ||
| | | 0x130 || 0x04 || 00000002 || xml element number of attributes || 2 | ||
|- | |- | ||
| | | 0x134 || 0x04 || 0000001C || parent element relative start offset || | ||
|- | |- | ||
| | | 0x138 || 0x04 || 000000B0 || previous brother element relative start offset || 0x40 + 0xB0 = 0xF0 | ||
|- | |- | ||
| | | 0x13C || 0x04 || 00000128 || next brother element relative start offset || 0x40 + 0x128 = 0x168 | ||
|- | |- | ||
| | | 0x140 || 0x04 || FFFFFFFF || first children element relative start offset || | ||
|- | |- | ||
| | | 0x144 || 0x04 || FFFFFFFF || last children element relative start offset || | ||
|- | |- | ||
| | | 0x148 || 0x04 || 00000014 || xml attribute TAG name relative offset || | ||
|- | |- | ||
| | | 0x14C || 0x04 || 00000006 || || | ||
|- | |- | ||
| | | 0x150 || 0x04 || 00000350 || 4th file relative start offset || 0x250 + 0x350 = 0x5A0 | ||
|- | |- | ||
| | | 0x154 || 0x04 || 000001F0 || 4th file size || | ||
|- | |- | ||
| | | 0x158 || 0x04 || 00000018 || xml attribute TAG name relative offset || | ||
|- | |- | ||
| | | 0x15C || 0x04 || 00000007 || || | ||
|- | |- | ||
| | | 0x160 || 0x04 || 00000041 || 4th filename relative start offset || 0x1B0 + 0x41 = 0x1F1 | ||
|- | |- | ||
| | | 0x164 || 0x04 || 00000000 || || | ||
|- bgcolor="#cccccc" | |||
| colspan="5" | 5th entry start | |||
|- | |- | ||
| | | 0x168 || 0x04 || 0000000F || xml element TAG name relative offset || | ||
|- | |- | ||
| | | 0x16C || 0x04 || 00000002 || xml element number of attributes || 2 | ||
|- | |- | ||
| | | 0x170 || 0x04 || 0000001C || parent element relative start offset || | ||
|- | |- | ||
| | | 0x174 || 0x04 || 000000EC || previous brother element relative start offset || 0x40 + 0xEC = 0x12C | ||
|- | |- | ||
| | | 0x178 || 0x04 || FFFFFFFF || next brother element relative start offset || FFFFFFFF = '''next entry doesnt exists''' | ||
|- | |- | ||
| | | 0x17C || 0x04 || FFFFFFFF || first children element relative start offset || | ||
|- | |- | ||
| | | 0x180 || 0x04 || FFFFFFFF || last children element relative start offset || | ||
|- | |- | ||
| | | 0x184 || 0x04 || 00000014 || xml attribute TAG name relative offset || | ||
|- | |- | ||
| | | 0x188 || 0x04 || 00000006 || || | ||
|- | |- | ||
| | | 0x18C || 0x04 || 00000540 || 5th file relative start offset || 0x250 + 0x540 = 0x790 | ||
|- | |- | ||
| | | 0x190 || 0x04 || 00000890 || 5th file size || | ||
|- | |- | ||
| | | 0x194 || 0x04 || 00000018 || xml attribute TAG name relative offset || | ||
|- | |- | ||
| | | 0x198 || 0x04 || 00000007 || || | ||
|- | |- | ||
| | | 0x19C || 0x04 || 00000059 || 5th filename relative start offset || 0x1B0 + 0x59 = 0x209 | ||
|- | |- | ||
| | | 0x1A0 || 0x04 || 00000000 || || | ||
|- bgcolor="#cccccc" | |||
| 0x1A4 || 0x0C || 00000000... || ''padding'' to align to a multiply of 0x10 || | |||
|- | |- | ||
! colspan="5" | Filename Table | |||
|- | |- | ||
| 0x1B0 || 0x04 || 00000038 || 1st data, start offset (relative to data table start offset) || 0x40 + 0x38 = 0x78 | |||
|- | |- | ||
| | | 0x1B4 || 0x12 || lib/rhm/Clear.fpo || 1st file name || included 1 NULL byte at the end | ||
|- | |- | ||
| | | 0x1C6 || 0x04 || 00000074 || 2nd data, start offset (relative to data table start offset) || 0x40 + 0x74 = 0xB4 | ||
|- | |- | ||
| | | 0x1CA || 0x12 || lib/rhm/Clear.vpo || 2nd file name || included 1 NULL byte at the end | ||
|- | |- | ||
| | | 0x1DC || 0x04 || 000000B0 || 3rd data, start offset (relative to data table start offset) || 0x40 + 0xB0 = 0xF0 | ||
|- | |- | ||
| | | 0x1E0 || 0x11 || lib/rhm/Copy.fpo || 3rd file name || included 1 NULL byte at the end | ||
|- | |- | ||
| | | 0x1F1 || 0x04 || 000000EC || 4th data, start offset (relative to data table start offset) || 0x40 + 0xEC = 0x12C | ||
|- | |- | ||
| | | 0x1F5 || 0x14 || lib/rhm/default.fpo || 4th file name || included 1 NULL byte at the end | ||
|- | |- | ||
| 0x209 || 0x04 || 00000128 || 5th data, start offset (relative to data table start offset) || 0x40 + 0x128 = 0x168 | |||
|- | |- | ||
| 0x20D || 0x14 || lib/rhm/default.vpo || 5th file name || included 1 NULL byte at the end | |||
|- bgcolor="#cccccc" | |- bgcolor="#cccccc" | ||
| | | 0x221 || 0xF || 00000000... || ''padding'' to align the filename table to a multiply of 0x10 || | ||
|- | |||
! colspan="5" | Strings table | |||
| | |||
| | |||
|- | |- | ||
| 0x230 || 0x1B || qrc file-table file src id || Container identifyer (first tag) + other tags from MAKE.XML || <syntaxhighlight lang="xml"> <qrc> <file-table> <file src= id=/></syntaxhighlight> || <syntaxhighlight lang="xml"> <qrc> <file-table> <file src= id= size=/></syntaxhighlight> || <syntaxhighlight lang="xml"> <theme> <icontable> <icon src= id= size=/></syntaxhighlight> || raf + lot of tags + 3 tags (file-table file src) | |||
| | |||
| | |||
|- bgcolor="#cccccc" | |- bgcolor="#cccccc" | ||
| | | 0x24B || 0x5 || 00000000... || ''padding'' to align the filename table to a multiply of 0x10 || | ||
| | |||
|- | |- | ||
! | ! colspan="5" | File Table | ||
|- | |- | ||
| 0x250 || 0x150 || 00001B5C... || 1st file || | | 0x250 || 0x150 || 00001B5C... || 1st file || | ||
|- | |- | ||
| 0x3A0 || 0x1E0 || 00001B5B... || 2nd file || | | 0x3A0 || 0x1E0 || 00001B5B... || 2nd file || | ||
|- | |- | ||
| 0x480 || 0x120 || 00001B5C... || 3rd file || | | 0x480 || 0x120 || 00001B5C... || 3rd file || | ||
|- | |- | ||
| 0x5A0 || 0x1F0 || 00001B5C... || 4th file || | | 0x5A0 || 0x1F0 || 00001B5C... || 4th file || | ||
|- | |- | ||
| 0x790 || 0x890 || 00001B5B... || 5th file || | | 0x790 || 0x890 || 00001B5B... || 5th file || | ||
|- | |- | ||
|} | |} | ||
'''rhm.qrc (from firmware 1.00)''' | '''rhm.qrc (from firmware 1.00)''' | ||
< | <div style="height:450px; overflow:auto"> | ||
Offset(h) 00 04 08 0C | Offset(h) 00 04 08 0C | ||
Line 1,714: | Line 1,089: | ||
00001000 401F9C6C 01D0100D 8086C0C3 60409F80 @.œl.Ð..€†ÀÃ`@Ÿ€ | 00001000 401F9C6C 01D0100D 8086C0C3 60409F80 @.œl.Ð..€†ÀÃ`@Ÿ€ | ||
00001010 401F9C6C 01D0000D 8086C0C3 60411F81 @.œl.Ð..€†ÀÃ`A.. | 00001010 401F9C6C 01D0000D 8086C0C3 60411F81 @.œl.Ð..€†ÀÃ`A.. | ||
</ | </div> | ||
==P3T== | ==P3T== | ||
====P3TF==== | ====P3TF==== | ||
See: http://www.psdevwiki.com/ps3/Themes_%28.p3t%29#Theme_Name_.28.XML.29 for an example of an XML before compilation, and see: http://www.psdevwiki.com/ps3/Talk:Themes_%28.p3t%29#p3t_format.2C_p3tcompiler.2C_and_p3textractor_notes for a list of tags added by the compiler | |||
==RAF== | ==RAF== | ||
====RAFO==== | ====RAFO==== | ||
=Tools= | =Tools= | ||
. | |||
.. | |||
... | |||
{{File Formats}} | {{File Formats}} | ||
<noinclude>[[Category:Main]]</noinclude> | <noinclude>[[Category:Main]]</noinclude> |