Editing Talk:Resource Container (RCO)

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:
=Unknowns=


==RCO versions (aka minFirmwareVer in rcomage)==
=RCO versioning=
All RCO files contains a version number, the version increases with bigger firmwares but not for every firmware and is not directly associated with it. The same versioning method is used in PSP and PS3 RCO's
All RCO files contains a version number, the version increases with bigger firmwares but not for every firmware and is not directly associated with it. The same versioning sequence is used in PSP and PS3 RCO's


It seems all the RCO's of a specific firmware shares the same version (verifyed for firmware 4.76) and seems to be the version of the "rco set", or the version of the "rco tool" used to compile the whole "rco set". RCOmage v1.1.1 (latest stable) identifyes the version with a list of hardcoded values
It seems all the RCO's of a specific firmware shares the same version (verifyed for firmware 4.76, all 4.76 .rco's are minFirmwareVer="unknownId0x130"). It seems to be the version of the "rco set", or the version of the "rco tool" used to compile the whole "rco set"


{{Boxcode|code=<syntaxhighlight lang="c">
Is posible to create a correspondecy between the "rco set" version and the firmwares versions where a specific "rco set" version was used. RCOmage v1.1.1 (latest stable) identifyes the version with a list of hardcoded values associated with a "system firmware version"
 
{{Boxcode|content=<syntaxhighlight lang="c">
switch(rco->verId) {
switch(rco->verId) {
case 0x70: fputs("1.0", fp); break;
case 0x70: fputs("1.0", fp); break;
Line 19: Line 20:
</syntaxhighlight>}}
</syntaxhighlight>}}


After extracting the contents of the RCO with RCOmage, the version is stored for rebuilding purposes in the [[RCOXML Coding|RCOXML]] descriptor file as an attribute with the name '''minFirmwareVer'''
After extracting the contents of the RCO with RCOmage, the "rco set" version is stored for rebuilding purposes in the [[RCOXML Structure|RCOXML]] descriptor file as an attribute with the name '''minFirmwareVer'''


If the version is unknown is stored as '''<nowiki>unknownId0x%x</nowiki>''' using '''unknownId''' to specify the fact that is unknown + the real hex value '''<nowiki>0x%x</nowiki>'''
If the version is unknown is stored as '''<nowiki>unknownId0x%x</nowiki>''' using '''unknownId''' to specify the fact that is unknown + the real hex value '''<nowiki>0x%x</nowiki>'''


Example... sysconf_plugin.rco from PS3 firmware 2.00 with version 0x106
Example... sysconf_plugin.rco from PS3 firmware 2.00 with "rco set" version 0x106
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- This XML representation of an RCO structure was generated by Rcomage v1.1.1 -->
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x106">
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x106">
<MainTree name="sysconf_plugin">
<ImageTree>
<Image name="tex_sysconf_icon" src="Images\tex_sysconf_icon.png" format="gim" compression="zlib" unknownByte="0" />
<Image ...
<Image ..
<Image .
</syntaxhighlight>}}
</syntaxhighlight>}}


==unknownByte==
'''Speculation'''
In the xml representation of the .rco structure... every image inside the imagetree uses an unknown attribute named '''unknownByte'''. Is an attribute related with the image format and is equal to 0 in most of the PS3 images (very rarelly used)


*After searching in ALL the images contained inside ALL .rco files from firmware 4.76... there is a total of 72 images using '''unknownByte="1"''' (and 3098 images using '''unknownByte="0"''' for a total of 3170 images inside .rco's)
There is no known formula to make a direct conversion from the hex value to the system firmware... speculative ideas post here
**7 images inside [[eula_net_plugin]].rco
**34 images inside [[newstore_plugin]].rco
**29 images inside [[regcam_plugin]].rco
**2 images inside [[system_plugin]].rco


from [[system_plugin]].rco
=RCO versions=
{{Boxcode|code=<syntaxhighlight lang="xml">
If there is no formula, the only thing we can do is to make a list with the versions used in the "rco set" from all PS3 firmwares. Probably this list will be included in the next version of rcomage to improve PS3 compatibility so please help completing the collection
<Image name="tex_optionmenu_bg" src=".\RCO 476 ofw\system_plugin\Images\tex_optionmenu_bg.gim" format="gim" compression="zlib" unknownByte="1" />
<Image name="tex_optionmenu_base" src=".\RCO 476 ofw\system_plugin\Images\tex_optionmenu_base.gim" format="gim" compression="zlib" unknownByte="1" />
</syntaxhighlight>}}


*The 2 .gim files found using '''unknownByte="1"''' has some things in common:
<!-- noobfriendlly tables by now, every firmware version uses a row, even if they shares the same "RCO set" version with other correlative firmwares -->
**The size of both .gim file is exactlly 452KB (463.232 bytes)
{| class="wikitable"
**The resolution of both images in pixels is 512x206
|-
**The first 0x80 bytes of the header in both is exactlly the same (see example below)
! Console !! System firmware version !! "RCO set" version
|+PSP
| PSP || 1.0 || 0x70
|-
| PSP || 1.5 || 0x71
|-
| PSP || 2.6 || 0x90
|-
| PSP || 2.7 || 0x95
|-
| PSP || 2.8 || 0x96
|-
| PSP || 3.5 || 0x100
|-
| PSP || 6.61 || ?
|}


unknownByte .gim header example
{| class="wikitable"
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
|+PS3
! Console !! System firmware version !! "RCO set" version
00000000  2E 47 49 4D 31 2E 30 30 00 50 53 50 00 00 00 00  .GIM1.00.PSP....
|-
00000010  00 02 00 00 00 07 11 70 00 00 00 10 00 00 00 10  .......p........
| PS3 || 1.00~1.54 || 0x97
00000020  00 03 00 00 00 07 11 60 00 00 00 10 00 00 00 10  .......`........
|-
00000030  00 04 00 00 00 07 11 50 00 07 11 50 00 00 00 10  .......P...P....
| PS3 || 1.60~1.70 || 0x102
00000040  00 30 00 00 00 03 00 00 02 18 00 D8 00 20 00 10  .0.........Ø. ..
|-
00000050  00 01 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
| PS3 || 1.80~1.82 || 0x104
00000060  00 07 11 40 00 00 00 00 00 01 00 01 00 03 00 01  ...@............
|-
00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
| PS3 || 1.90~1.94 || 0x105
 
|-
Is not specific for .GIM image format because other image formats uses it too, here are a couple of examples from newstore_plugin.rco where is used with .JPG and .PNG
| PS3 || 2.00~2.17 || 0x106
{{Boxcode|code=<syntaxhighlight lang="xml">
|-
<Image name="BackGround" src=".\RCO 476 ofw\newstore_plugin\Images\BackGround.jpg" format="jpg" compression="uncompressed" unknownByte="1" />
| PS3 || 2.20~2.80 || 0x107
<Image name="ScrollButtonRich" src=".\RCO 476 ofw mod 5\newstore_plugin\Images\ScrollButtonRich.png" format="png" compression="uncompressed" unknownByte="1" />
|-
</syntaxhighlight>}}
| PS3 || 3.00~3.01 || 0x108
 
|-
Is specific for PS3 (not used on PSP) as can be seen in the comments of the source code of rcomage [https://github.com/zingaburga/RCOMage/blob/master/src/rcofile.h here] in line number 188
| PS3 || 3.10~3.74 || 0x110
PS3 RCOs seem to have this extra element - probably something to do with planes/frames??
|-
 
| PS3 || 4.00~4.25 || 0x120
==UMDFlag==
|-
This attribute was named UMDFlag unofficially because it was found used in the .rco files contained inside PSP UMD discs only
| PS3 || 4.30~4.76 || 0x130
 
|}
The name seems not accurate enought (because PS3 cant read UMD discs) so maybe is something more generic like "disc media", though never has been found a PS3 disc containing .rco's and the '''HYBRID_FLAG''' used in the bluray contents descriptor file [[PS3_DISC.SFB]] for "music bluray" and "photo bluray" are completlly speculative


*Speculation. Maybe is::
*The PS3 versions in the table above are based in the changelog of '''custom_render_plugin.rco'''.For a more detailed changelog see the page: [[Talk:Custom render plugin]]
**0 = system rco
**All the .rco files from a specific firmware uses the same "RCO set" version (this has been verifyed for PS3 firmware 4.76)
**1 = external rco (disc media, etc)
**All the .rco files from a specific firmware are build together, if for some reason there is need to add or modify one of the .rco files all the others are rebuilded too (this depends of the official compile enviroment for the firmware and is partially speculative)
{{custom_render_plugin.rco changelog}}


=Hashreports=
= RCO hashreport =
==PS3 rco's all versions==
all OFW 1.00-4.75 hashes: https://www.mirrorcreator.com/files/7KCMQKWQ/RCO-hashreport.7z_links <--- please someone convert this in a "human readable wiki table"
all OFW 1.00-4.75 hashes: https://www.mirrorcreator.com/files/7KCMQKWQ/RCO-hashreport.7z_links <--- please someone convert this in a "human readable wiki table"


==PSP rco's==
=PSP 6.61 RCO MD5 hashreport=
*PSP 6.60 and 6.61 firmware contains 63 .rco files (same files for both firmwares). Two of them are specific for PSPgo model (bluetooth_plugin.rco, slide_plugin.rco)
*PSP 6.61 firmware contains 61 .rco files. Are the same exact .rco files used on PSP firmware 6.60
*Only 10 of them are compresed with ZLIB (dd_helper.rco, dnas_plugin.rco, htmlviewer_plugin.rco, lftv_rmc_univer3in1.rco, lftv_rmc_univer3in1_jp.rco, lftv_rmc_univertuner.rco, lftv_rmc_univertuner_jp.rco, lftv_tuner_jp_jp.rco, lftv_tuner_us_en.rco, oneseg_plugin.rco). All the others are compressed with RLZ (and RLZ decompression is not supported by rcomage, is needed to use Resurssiklunssi v0.3 to rebuild them)
*Resurssiklunssi rebuilds the .rco files and allows for two rebuild modes:
**TRIANGLE or CROSS - only rebuilds
***The converted files will have '''minFirmwareVer="1.5"''' (the original value is lost in the conversion)
**SQUARE or CIRCLE - rebuilds and recompress in ZLIB
***The converted files will have '''minFirmwareVer="2.6"''' (the original value is lost in the conversion)


{{Boxcode|width=auto|float=left|title=PSP 6.61 official rco's|code=<syntaxhighlight lang="bash">
{{Boxcode|content=<syntaxhighlight lang="c">
; Generated by QuickSFV v2.36 on 2015-12-09 at 04:49:59
; Generated by QuickSFV v2.36 on 2015-12-09 at 04:49:59
; http://www.QuickSFV.org
; http://www.QuickSFV.org
Line 218: Line 227:
015c0dc4be2cfe0bdb78508dd6e60835 *resource\visualizer_plugin.rco
015c0dc4be2cfe0bdb78508dd6e60835 *resource\visualizer_plugin.rco
</syntaxhighlight>}}
</syntaxhighlight>}}
{{Boxcode|width=auto|float=left|title=PSP 6.60 and 6.61 firmware. RCO hashes after resurssiklunssi rebuild (cross option)|code=<syntaxhighlight lang="bash">
; Generated by QuickSFV v2.36 on 2015-12-13 at 03:40:27
; http://www.QuickSFV.org
;
;        13136  09:25.04 2011-08-16 resource\adhoc_transfer.rco
;        3516  09:25.04 2011-08-16 resource\auth_plugin.rco
;      122728  09:25.04 2011-08-16 resource\bluetooth_plugin.rco
;      267876  09:25.06 2011-08-16 resource\camera_plugin.rco
;          356  09:25.06 2011-08-16 resource\common_page.rco
;        59056  09:25.08 2011-08-16 resource\content_browser_plugin.rco
;        86648  09:25.08 2011-08-16 resource\dd_helper.rco
;        34668  09:25.08 2011-08-16 resource\dnas_plugin.rco
;        35228  09:25.08 2011-08-16 resource\game_install_plugin.rco
;      209388  09:25.08 2011-08-16 resource\game_plugin.rco
;        43980  09:25.08 2011-08-16 resource\htmlviewer_plugin.rco
;        85816  09:25.10 2011-08-16 resource\impose_plugin.rco
;      392520  09:25.10 2011-08-16 resource\lftv_main_plugin.rco
;        61064  09:25.12 2011-08-16 resource\lftv_rmc_univer3in1.rco
;        61008  09:25.12 2011-08-16 resource\lftv_rmc_univer3in1_jp.rco
;        21840  09:25.14 2011-08-16 resource\lftv_rmc_univerpanel.rco
;        21868  09:25.14 2011-08-16 resource\lftv_rmc_univerpanel_jp.rco
;        40720  09:25.14 2011-08-16 resource\lftv_rmc_univertuner.rco
;        41176  09:25.14 2011-08-16 resource\lftv_rmc_univertuner_jp.rco
;        19132  09:25.16 2011-08-16 resource\lftv_tuner_jp_jp.rco
;        22916  09:25.16 2011-08-16 resource\lftv_tuner_us_en.rco
;        99440  09:25.16 2011-08-16 resource\msgdialog_plugin.rco
;      415232  09:25.18 2011-08-16 resource\msvideo_main_plugin.rco
;      142052  09:25.20 2011-08-16 resource\music_browser_plugin.rco
;        78772  09:25.20 2011-08-16 resource\music_player_plugin.rco
;      345368  09:25.20 2011-08-16 resource\netconf_dialog.rco
;        57632  09:25.20 2011-08-16 resource\netplay_plugin.rco
;      318228  09:25.22 2011-08-16 resource\npadmin_plugin.rco
;        83124  09:25.22 2011-08-16 resource\npinstaller_plugin.rco
;        69780  09:25.22 2011-08-16 resource\npsignin_plugin.rco
;      631216  09:25.24 2011-08-16 resource\npsignup_plugin.rco
;      399672  09:25.28 2011-08-16 resource\oneseg_plugin.rco
;        84784  09:25.28 2011-08-16 resource\opening_plugin.rco
;      222536  09:25.32 2011-08-16 resource\osk_plugin.rco
;      149028  09:25.32 2011-08-16 resource\photo_browser_plugin.rco
;      152816  09:25.34 2011-08-16 resource\photo_player_plugin.rco
;      156724  09:25.34 2011-08-16 resource\premo_plugin.rco
;        14536  09:25.34 2011-08-16 resource\ps3scan_plugin.rco
;        11868  09:25.34 2011-08-16 resource\psn_plugin.rco
;        74100  09:25.36 2011-08-16 resource\radioshack_plugin.rco
;        60580  09:25.36 2011-08-16 resource\recommend_browser.rco
;      158248  09:25.36 2011-08-16 resource\rss_browser_plugin.rco
;        82412  09:25.36 2011-08-16 resource\rss_downloader_plugin.rco
;        33836  09:25.38 2011-08-16 resource\rss_subscriber.rco
;      144236  09:25.38 2011-08-16 resource\savedata_plugin.rco
;      134600  09:25.38 2011-08-16 resource\savedata_utility.rco
;        73180  09:25.40 2011-08-16 resource\screenshot_plugin.rco
;      630580  09:25.44 2011-08-16 resource\skype_main_plugin.rco
;        10240  09:25.44 2011-08-16 resource\slide_plugin.rco
;      325912  09:25.48 2011-08-16 resource\store_browser_plugin.rco
;      289760  09:25.48 2011-08-16 resource\store_checkout_plugin.rco
;        33348  09:25.48 2011-08-16 resource\subs_plugin.rco
;      620116  09:25.50 2011-08-16 resource\sysconf_plugin.rco
;      228364  09:25.58 2011-08-16 resource\sysconf_plugin_about.rco
;      107104  09:26.00 2011-08-16 resource\system_plugin.rco
;        11128  09:26.00 2011-08-16 resource\system_plugin_bg.rco
;        46536  09:26.00 2011-08-16 resource\system_plugin_fg.rco
;      297364  09:26.04 2011-08-16 resource\topmenu_icon.rco
;      122360  09:26.04 2011-08-16 resource\topmenu_plugin.rco
;        75916  09:26.04 2011-08-16 resource\update_plugin.rco
;      123256  09:26.04 2011-08-16 resource\video_main_plugin.rco
;      104916  09:26.06 2011-08-16 resource\video_plugin_videotoolbar.rco
;        37364  09:25.04 2011-08-16 resource\visualizer_plugin.rco
a1675f066c6ae9281602011c2af891e3 *resource\adhoc_transfer.rco
2e4725bb3f646929310577eccd42bcda *resource\auth_plugin.rco
ba5fc7ba16cd635590065821e1d1a062 *resource\bluetooth_plugin.rco
87a0d9279116b0307dfd5bbf11548cb7 *resource\camera_plugin.rco
5dc413e6007b4ee01c7bfb13702a25c4 *resource\common_page.rco
703a5cc179f68f8e0edd7d462c86af8d *resource\content_browser_plugin.rco
9dd3b961eec1afb4f30de7240deecb9b *resource\dd_helper.rco
da50ab9a01701b909d352c68e869b051 *resource\dnas_plugin.rco
67934570455d3f0038c7ee670d0027b5 *resource\game_install_plugin.rco
16c269d581a45ecdfcfeb1259a5370ac *resource\game_plugin.rco
fd174ab811b870fe084a8dbadc3e6aff *resource\htmlviewer_plugin.rco
b8e34d8877ace0772047662dcbfa9d48 *resource\impose_plugin.rco
2ad01831bf19300b08ba78f35baff791 *resource\lftv_main_plugin.rco
c3e485efdee1917d3a7f8da1b0722fa5 *resource\lftv_rmc_univer3in1.rco
6cecbdeaba972d4dba0fa4df9f43db8a *resource\lftv_rmc_univer3in1_jp.rco
095b83e8a2ef37e64306c4bc8243870e *resource\lftv_rmc_univerpanel.rco
7dea3b80c872ac02e7eed23b7cb4f5ed *resource\lftv_rmc_univerpanel_jp.rco
c5061621a1389449dbc4f1ef865a6525 *resource\lftv_rmc_univertuner.rco
53b56ea2f90979224253c4664c43ca1c *resource\lftv_rmc_univertuner_jp.rco
75e42b4f053fef8a60e16264be99b07a *resource\lftv_tuner_jp_jp.rco
be3d5738d8ca9d687d01a4b6ac7c81d4 *resource\lftv_tuner_us_en.rco
ea58d9e228fc76beb34464753a567c67 *resource\msgdialog_plugin.rco
67ec6d707a1b326a23848a73e6e38414 *resource\msvideo_main_plugin.rco
42fd399e35c4ab774d6aa1ff52a17b8c *resource\music_browser_plugin.rco
2d98313ca7ef755d0390a2537237ce6b *resource\music_player_plugin.rco
755c3d4b00fa4b3158793f852823ff12 *resource\netconf_dialog.rco
6c0e77bd52a1a5de204da5ed4efd4f82 *resource\netplay_plugin.rco
42a5c448463117a30ce7c2ae0354821e *resource\npadmin_plugin.rco
221335417818d5d49cf616108a511e2d *resource\npinstaller_plugin.rco
1f51c4641326e8a1b6b7db11c0f70230 *resource\npsignin_plugin.rco
93239e36a519deeaba08c53640ccd701 *resource\npsignup_plugin.rco
f6a52e7a415799eb9ccac914e7120d2e *resource\oneseg_plugin.rco
578c90574e9a0cc54dee75a1768f93a5 *resource\opening_plugin.rco
00cb25b6b6500328282d1eb82ee3a407 *resource\osk_plugin.rco
fdfdc91a92eac9030c74475f09027ed5 *resource\photo_browser_plugin.rco
9fe85b676045294fddffbbf0f1ff6037 *resource\photo_player_plugin.rco
e8eff25adc1ef625cf831c6f9aef00df *resource\premo_plugin.rco
f840998a7d8ffea49577c0bcdbab740d *resource\ps3scan_plugin.rco
33c720b191c0813071a49f3e4b9d9343 *resource\psn_plugin.rco
dd815ede6a4ef114e2231229bfb3d650 *resource\radioshack_plugin.rco
c45f50ec4748041a4bd95a8d3856ee50 *resource\recommend_browser.rco
ef6b3321f77c1ad0d909b3d8e0682f8b *resource\rss_browser_plugin.rco
d58c9bfd3b957c785af9baa8f04be2ef *resource\rss_downloader_plugin.rco
c68b265b6e73788fbf8084613e5167b2 *resource\rss_subscriber.rco
7899063074fe7719af69a1b0415a2277 *resource\savedata_plugin.rco
9c604489e6353d3d9ef77656ac771bd7 *resource\savedata_utility.rco
855aa13fbf1d4e55bc4a545c0fb7018d *resource\screenshot_plugin.rco
ad03375b3c538c1891e5f94cb457d137 *resource\skype_main_plugin.rco
1199eb0aa7f66c7085c273478896141b *resource\slide_plugin.rco
a6927fcf418ab325e76babfc0f33f4a3 *resource\store_browser_plugin.rco
c22158cbda728794b225fa4bdea5629e *resource\store_checkout_plugin.rco
8d829325604f6d31abf6d538e55f344d *resource\subs_plugin.rco
abb42e5a76b34f040a8b8ccd9b6d20ff *resource\sysconf_plugin.rco
c189987bc1ded8c5abec8c41652092de *resource\sysconf_plugin_about.rco
48cf6b828fd3f0cd038d7864b1ba9b97 *resource\system_plugin.rco
e0ae8c6017249b9431e5af9f1bbe70b3 *resource\system_plugin_bg.rco
001a30efa22c86234c8c2ddaf20a2cd2 *resource\system_plugin_fg.rco
ee617fd8b6f6cc68f55192e6ac9edd4e *resource\topmenu_icon.rco
ef3d3530837c7032f97ed066c4f14aa9 *resource\topmenu_plugin.rco
50313607a775b2615743f6f6c04c5ea5 *resource\update_plugin.rco
3260a7ba5981f7d9f6b8ff2b07fb60f0 *resource\video_main_plugin.rco
4fd833dc230d78d2827ad85f58685aa6 *resource\video_plugin_videotoolbar.rco
5b1e65248b962b983cf0553f662c2050 *resource\visualizer_plugin.rco
</syntaxhighlight>}}{{clear}}
*PSP firmware 1.00 contains only 21 .rco files (all them uses ZLIB, none of them uses RLZ)
{{Boxcode|width=auto|float=left|title=PSP 1.00 official rco's|code=<syntaxhighlight lang="bash">
; Generated by QuickSFV v2.36 on 2015-12-13 at 03:51:28
; http://www.QuickSFV.org
;
;        4556  15:35.20 2005-05-13 resource\auth_plugin.rco
;        57148  15:35.50 2005-05-13 resource\game_plugin.rco
;        87828  15:36.48 2005-05-13 resource\impose_plugin.rco
;      158124  15:37.24 2005-05-13 resource\msvideo_plugin.rco
;      220976  15:37.54 2005-05-13 resource\music_plugin.rco
;        68552  15:39.42 2005-05-13 resource\netconf_dialog.rco
;        12560  15:40.28 2005-05-13 resource\netplay_plugin.rco
;      254480  15:41.00 2005-05-13 resource\opening_plugin.rco
;      318548  15:41.32 2005-05-13 resource\osk_plugin.rco
;      121384  15:42.00 2005-05-13 resource\osk_utility.rco
;      182604  15:42.30 2005-05-13 resource\photo_plugin.rco
;        68328  15:42.58 2005-05-13 resource\savedata_plugin.rco
;        64428  15:43.36 2005-05-13 resource\savedata_utility.rco
;      151540  15:44.08 2005-05-13 resource\sysconf_plugin.rco
;        98136  15:44.42 2005-05-13 resource\system_plugin.rco
;        10776  15:45.10 2005-05-13 resource\system_plugin_bg.rco
;        45508  15:45.38 2005-05-13 resource\system_plugin_fg.rco
;      216320  15:46.06 2005-05-13 resource\topmenu_plugin.rco
;        14048  15:46.36 2005-05-13 resource\update_plugin.rco
;        26464  15:47.04 2005-05-13 resource\video_plugin.rco
;      115888  15:47.34 2005-05-13 resource\video_plugin_videotoolbar.rco
6eb000c8e1f71209b359204a0bb08310 *resource\auth_plugin.rco
9cad40a094ed76691da423f84f6ac7ef *resource\game_plugin.rco
8dac09480ffcf583b050f829e8eda065 *resource\impose_plugin.rco
16b48389d9b1138a2830be6d95415d4d *resource\msvideo_plugin.rco
4e2639d983ee90b120a8ecfb39805fbf *resource\music_plugin.rco
dae959afaba250140331aaca2a70fcf2 *resource\netconf_dialog.rco
30cb45c1485423e803a9abf695535e25 *resource\netplay_plugin.rco
b9f1af5c8db600f462d2f7599c83aed3 *resource\opening_plugin.rco
0db9b5786b31e909961d7f1cf121263b *resource\osk_plugin.rco
1397970cf810d85f856c829dd892da0a *resource\osk_utility.rco
98781c871cd690636002fc9de8719151 *resource\photo_plugin.rco
936dfb0fd59a96e7a31db4ff75f1ce84 *resource\savedata_plugin.rco
457ff88995e7dae078226a7f27f821a0 *resource\savedata_utility.rco
3aea9db6095921053eccfcc844cc0079 *resource\sysconf_plugin.rco
bb08685643b495fa9f4e4ef3b8731851 *resource\system_plugin.rco
aa575ee97093c7869b4802aae33b87a6 *resource\system_plugin_bg.rco
47382bd7aba1b89863de176a47a0a27a *resource\system_plugin_fg.rco
6279ccf07bf4c3e2fc17109ae6138477 *resource\topmenu_plugin.rco
840248d2a27e0d8c6073816edd220747 *resource\update_plugin.rco
ef87b1df11ab6b00986b1ce6395066c4 *resource\video_plugin.rco
87d878f00d9355b873adcac6f79927f6 *resource\video_plugin_videotoolbar.rco
</syntaxhighlight>}}{{clear}}
=Examples (rcomage builds)=
This is a temporal section for tests using rcomage to create frankensteins .rco files smallest as posible that could serve as an explain of his structure. Will contain the source xml file used to create the rco, a big table with ALL the values of the structure, and a sample in hexview of the created rco. Eventually one (or a couple) of this tables will be moved to front page but by now this is a shared notepad and experimentation to see how to make that tables intuitive, pretty, and smallest posible, feel free to add other examples
Also, i think rcomage has several problems (no offense intended is a great tool [https://www.youtube.com/watch?v=G4SuybRqji4 everybody loves]) in how the areas of the structure are divided, some names that can be improved, some definition of lengths of partially known or unknown values, etc... the examples are going to look pretty similar to the examples i wrote at the bottom of [[CXML Containers]] page (the concept of how it works is the same)--[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 18:48, 10 September 2016 (UTC)
==ImageTree with 1 image==
This is a basic example of how the files are stored inside the container, similar method is used for all files (images, models, sounds, and fonts ?)
The .xml below is the RCOXML source file used to create the .rco. The file '''image_test.gim''' is a dummy of 8 bytes filed with 8888888888888888
{{Boxcode|code=<syntaxhighlight lang="xml">
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x130">
<MainTree name="test">
<ImageTree>
<Image name="image_test" src="image_test.gim" format="gim" compression="uncompressed" unknownByte="1" />
</ImageTree>
</MainTree>
</RcoFile>
</syntaxhighlight>}}
When compiled MD5: E4C203A3D4B0B6854C90CD576E028545
<div style="height:500px; overflow:auto">
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  <span style="background:#666666; color:#ffffff;">46 52 50 00</span> <span style="background:#666666; color:#ffffff;">00 00 01 30</span> <span style="background:#666666; color:#ffffff;">00 00 00 00</span> <span style="background:#666666; color:#ffffff;">00 00 00 00</span>  FRP....0........
00000010  00 00 00 A4 FF FF FF FF FF FF FF FF FF FF FF FF  ...¤ÿÿÿÿÿÿÿÿÿÿÿÿ
00000020  FF FF FF FF 00 00 00 CC FF FF FF FF FF FF FF FF  ÿÿÿÿ...Ìÿÿÿÿÿÿÿÿ
00000030  FF FF FF FF FF FF FF FF 00 00 01 34 00 00 00 00  ÿÿÿÿÿÿÿÿ...4....
00000040  00 00 01 34 00 00 00 14 00 00 01 48 00 00 00 00  ...4.......H....
00000050  FF FF FF FF 00 00 00 00 00 00 01 2C 00 00 00 08  ÿÿÿÿ.......,....
00000060  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000070  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000080  00 00 01 48 00 00 00 08 FF FF FF FF 00 00 00 00  ...H....ÿÿÿÿ....
00000090  FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF  ÿÿÿÿ....ÿÿÿÿÿÿÿÿ
000000A0  FF FF FF FF 01 01 00 00 00 00 00 00 00 00 00 00  ÿÿÿÿ............
000000B0  00 00 00 28 00 00 00 01 00 00 00 00 00 00 00 00  ...(............
000000C0  00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00  ................
000000D0  FF FF FF FF 00 00 00 00 00 00 00 28 00 00 00 01  ÿÿÿÿ.......(....
000000E0  00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00  ...........(....
000000F0  00 00 00 00 04 01 00 00 00 00 00 08 00 00 00 28  ...............(
00000100  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000110  00 00 00 28 00 00 00 00 00 00 00 00 00 05 01 00  ...(............
00000120  00 00 00 08 00 00 00 00 00 00 00 01 00 00 00 F4  ...............ô
00000130  00 00 00 00 74 65 73 74 00 00 00 00 69 6D 61 67  ....test....imag
00000140  65 5F 74 65 73 74 00 00 88 88 88 88 88 88 88 88  e_test..ˆˆˆˆˆˆˆˆ
</div>
{| class="wikitable" style="font-size:x-small;"
|-
! Areas !! Offset !! Length !! Example !! Name !! Notes
|-
| rowspan="46" | Header
|-{{cellcolors|#666666|#ffffff}}
| 0x00 || 0x04 || FRP || '''magic''' || FRP in big endian
|-{{cellcolors|#666666|#ffffff}}
| 0x04 || 0x04 || 00 00 01 30 || '''version''' || 0x130 = one of the firmwares for PS3
|-{{cellcolors|#666666|#ffffff}}
| 0x08 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|#666666|#ffffff}}
| 0x0C || 0x04 || 00 00 00 00 || '''compress_header''' || 0x00 = uncompressed
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x10 || 0x04 || 00 00 00 A4 || '''toc_maintree_absolute_offset''' || MainTree at absolute offset 0xA4
|-
| 0x14 || 0x04 || FF FF FF FF || '''toc_scripttree_absolute_offset''' ||
|-
| 0x18 || 0x04 || FF FF FF FF || '''toc_languagetree_absolute_offset''' ||
|-
| 0x1C || 0x04 || FF FF FF FF || '''toc_soundtree_absolute_offset''' ||
|-
| 0x20 || 0x04 || FF FF FF FF || '''toc_modeltree_absolute_offset''' ||
|-
| 0x24 || 0x04 || 00 00 00 CC || '''toc_imagetree_absolute_offset''' || ImageTree at absolute offset 0xCC
|-
| 0x28 || 0x04 || FF FF FF FF || {{cellcolors|#ff7777}} ''toc_unknowntree_absolute_offset'' ||
|-
| 0x2C || 0x04 || FF FF FF FF || '''toc_fonttree_absolute_offset''' ||
|-
| 0x30 || 0x04 || FF FF FF FF || '''toc_objecttree_absolute_offset''' ||
|-
| 0x34 || 0x04 || FF FF FF FF || '''toc_animationtree_absolute_offset''' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x38 || 0x04 || 00 00 01 34 || '''strings_texts_absolute_offset''' || strings texts table at absolute offset 0x134
|-
| 0x3C || 0x04 || 00 00 00 00 || '''strings_texts_length''' || strings texts table is empty
|-
| 0x40 || 0x04 || 00 00 01 34 || '''strings_labels_absolute_offset''' || strings labels table at absolute offset 0x134
|-
| 0x44 || 0x04 || 00 00 00 14 || '''strings_labels_length''' || strings labels size 0x14
|-
| 0x48 || 0x04 || 00 00 01 48 || '''strings_events_absolute_offset''' || strings events table at absolute offset 0x148
|-
| 0x4C || 0x04 || 00 00 00 00 || '''strings_events_length''' || strings events table is empty
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x50 || 0x04 || FF FF FF FF || '''text_pointer_table_offset''' ||
|-
| 0x54 || 0x04 || 00 00 00 00 || '''text_pointer_table_length''' ||
|-
| 0x58 || 0x04 || 00 00 01 2C || '''image_pointer_table_offset''' ||
|-
| 0x5C || 0x04 || 00 00 00 00 || '''image_pointer_table_length''' ||
|-
| 0x60 || 0x04 || FF FF FF FF || '''model_pointer_table_offset''' ||
|-
| 0x64 || 0x04 || 00 00 00 00 || '''model_pointer_table_length''' ||
|-
| 0x68 || 0x04 || FF FF FF FF || '''sound_pointer_table_offset''' ||
|-
| 0x6C || 0x04 || 00 00 00 00 || '''sound_pointer_table_length''' ||
|-
| 0x70 || 0x04 || FF FF FF FF || '''object_pointer_table_offset''' ||
|-
| 0x74 || 0x04 || 00 00 00 00 || '''object_pointer_table_length''' ||
|-
| 0x78 || 0x04 || FF FF FF FF || '''anim_pointer_table_offset''' ||
|-
| 0x7C || 0x04 || 00 00 00 00 || '''anim_pointer_table_length''' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x80 || 0x04 || 00 00 01 48 || '''image_data_section_offset''' ||
|-
| 0x84 || 0x04 || 00 00 00 08 || '''image_data_section_length''' ||
|-
| 0x88 || 0x04 || FF FF FF FF || '''sound_data_section_offset''' ||
|-
| 0x8C || 0x04 || 00 00 00 00 || '''sound_data_section_length''' ||
|-
| 0x90 || 0x04 || FF FF FF FF || '''model_data_section_offset''' ||
|-
| 0x94 || 0x04 || 00 00 00 00 || '''model_data_section_length''' ||
|-
| 0x98 || 0x04 || FF FF FF FF || ''unknown'' ||
|-
| 0x9C || 0x04 || FF FF FF FF || ''unknown'' ||
|-
| 0xA0 || 0x04 || FF FF FF FF || ''unknown'' ||
|-
| rowspan="46" | TOC
|-
| 0xA4 || 0x01 || 01 || '''entry_type''' || 0x1=MainTree
|-
| 0xA5 || 0x01 || 01 || '''hierarchy_depth''' ||
|-
| 0xA6 || 0x02 || 00 00 || ''unknown'' ||
|-
| 0xA8 || 0x04 || 00 00 00 00 || '''entry_label_offset''' || test
|-
| 0xAC || 0x04 || 00 00 00 00 || '''entry_header_size''' ||
|-
| 0xB0 || 0x04 || 00 00 00 28 || '''entry_size''' ||
|-
| 0xB4 || 0x04 || 00 00 00 01 || '''children_number''' ||
|-
| 0xB8 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-
| 0xBC || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-
| 0xC0 || 0x04 || 00 00 00 00 || '''parent_offset''' ||
|-
| 0xC4 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0xC8 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0xCC || 0x01 || 04 || '''entry_type''' || 0x4=ImageTree
|-
| 0xCD || 0x01 || 00 || '''hierarchy_depth''' ||
|-
| 0xCE || 0x02 || 00 00 || ''unknown'' ||
|-
| 0xD0 || 0x04 || FF FF FF FF || '''entry_label_offset''' || no label
|-
| 0xD4 || 0x04 || 00 00 00 00 || '''entry_header_size''' ||
|-
| 0xD8 || 0x04 || 00 00 00 28 || '''entry_size''' ||
|-
| 0xDC || 0x04 || 00 00 00 01 || '''children_number''' ||
|-
| 0xE0 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-
| 0xE4 || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-
| 0xE8 || 0x04 || 00 00 00 28 || '''parent_offset''' ||
|-
| 0xEC || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0xF0 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0xF4 || 0x01 || 04 || '''entry_type''' || 0x4=ImageTree
|-
| 0xF5 || 0x01 || 01 || '''hierarchy_depth''' ||
|-
| 0xF6 || 0x02 || 00 00 || ''unknown'' ||
|-
| 0xF8 || 0x04 || 00 00 00 08 || '''entry_label_offset''' || image_test
|-
| 0xFC || 0x04 || 00 00 00 28 || '''entry_header_size''' ||
|-
| 0x100 || 0x04 || 00 00 00 00 || '''entry_size''' ||
|-
| 0x104 || 0x04 || 00 00 00 00 || '''children_number''' ||
|-
| 0x108 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-
| 0x10C || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-
| 0x110 || 0x04 || 00 00 00 28 || '''parent_offset''' ||
|-
| 0x114 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0x118 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x11C || 0x02 || 00 05 || '''file_format''' || 0x5=GIM
|-
| 0x11E || 0x01 || 01 || ''unknown'' ||
|-
| 0x11F || 0x01 || 00 || '''file_compression''' || 0x0=NONE
|-
| 0x120 || 0x04 || 00 00 00 08 || '''file_size''' ||
|-
| 0x124 || 0x04 || 00 00 00 00 || '''file_offset''' ||
|-
| 0x128 || 0x04 || 00 00 00 01 || ''unknown'' ||
|-
| rowspan="3" | pointers
|-
| 0x12C || 0x04 || 00 00 00 F4 ||  ||
|-
| 0x130 || 0x04 || 00 00 00 00 ||  ||
|-
| rowspan="2" | texts
|-
| 0x134 || 0x00 ||  || || text table is empty
|-
| rowspan="5" | labels
|-
| 0x134 || 0x05 || 74 65 73 74 00 || || test (null terminated)
|-
| 0x139 || 0x03 || 00 00 00 || || padding (aligned to 4 bytes boundary)
|-
| 0x13C || 0x0B || 69 6D 61 67 65 5F 74 65 73 74 00 || || image_test (null terminated)
|-
| 0x147 || 0x01 || 00 || || padding (aligned to 4 bytes boundary)
|-
| rowspan="2" | events
|-
| 0x148 || 0x00 ||  ||  || events table is empty
|-
| rowspan="2" | images
|-
| 0x148 || 0x8 || 0x8888888888888888 || || image_test.gim
|}
When compiled (with zlib header compression) MD5: E73D8E195D7A344294AB84A03E6662A1
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  46 52 50 00 00 00 01 30 00 00 00 00 00 00 00 <span style="background:#ff0000;">10</span>  FRP....0........
00000010  00 00 00 A4 FF FF FF FF FF FF FF FF FF FF FF FF  ...¤ÿÿÿÿÿÿÿÿÿÿÿÿ
00000020  FF FF FF FF 00 00 00 CC FF FF FF FF FF FF FF FF  ÿÿÿÿ...Ìÿÿÿÿÿÿÿÿ
00000030  FF FF FF FF FF FF FF FF <span style="background:#00ff00;">FF FF FF FF</span> 00 00 00 00  ÿÿÿÿÿÿÿÿÿÿÿÿ....
00000040  00 00 01 34 00 00 00 14 00 00 01 48 00 00 00 00  ...4.......H....
00000050  FF FF FF FF 00 00 00 00 00 00 01 2C 00 00 00 08  ÿÿÿÿ.......,....
00000060  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000070  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000080  <span style="background:#7777ff;">00 00 00 F4</span> 00 00 00 08 FF FF FF FF 00 00 00 00  ...ô....ÿÿÿÿ....
00000090  FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF  ÿÿÿÿ....ÿÿÿÿÿÿÿÿ
000000A0  FF FF FF FF <span style="background:#ffff00;">00 00 00 44</span> <span style="background:#ffff00;">00 00 00 A4</span> <span style="background:#ffff00;">00 00 00 00</span>  ÿÿÿÿ...D...¤....
000000B0  <span style="background:#ff00ff;">78 DA 75 8A C1 0A 00 10 10 44 6D 51 3E C5 5F C9</span>  xÚuŠÁ....DmQ>Å_É
000000C0  <span style="background:#ff00ff;">61 93 83 13 9F EE CE 6E 53 28 79 35 ED CE 6B 88</span>  a“ƒ.ŸîÎnS(y5íÎkˆ
000000D0  <span style="background:#ff00ff;">CC 4D 90 88 79 B1 92 29 7C 76 61 EF 60 3D DC C3</span>  ÌM.ˆy±’)|vaï`=ÜÃ
000000E0  <span style="background:#ff00ff;">71 8E B0 03 5A 86 3E 9D 5B D7 5B 6A CA 1C D1 16</span>  qŽ°.Z†>.[×[jÊ.Ñ.
000000F0  <span style="background:#ff00ff;">84 BD 0B BF</span> 88 88 88 88 88 88 88 88              „½.¿ˆˆˆˆˆˆˆˆ
*Changes
**<span style="background:#ff0000;">10</span> the "compression header" setting with zlib (is not actually compressing the header, the term is not accurate)
**<span style="background:#00ff00;">FF FF FF FF</span> weird <!-- this seems to be a mistake of rcomage, because the area is empty originally rcomage detects that is empty and replaces the value by a generic 0xFFFFFFFF but this is not correct, the offset where the table starts must be there even if the table is empty -->
**<span style="background:#7777ff;">00 00 00 F4</span> the offset where the image data starts, because the area before the image data has been compressed his position has been displaced
**<span style="background:#ffff00;">00 00 00 44</span> <span style="background:#ffff00;">00 00 00 A4</span> <span style="background:#ffff00;">00 00 00 00</span> the info about the compressed area that comes next (composed by: lenPacked, lenUnpacked, and lenLongestText)
**<span style="background:#ff00ff;">78 DA ...</span> the compressed area itself, includes the whole TOC, the pointers to the TOC, and all the strings tables (languages, labels, and events)
==ImageTree with 2 images==
This example is intended to replace the previous one (but by now i dont want to delete the previous one). It can help to see how the offsets are cummulated and the optional paddings to align to boundary
The .xml below is the RCOXML source file used to create the .rco. The file '''image2_test.gim''' is a dummy of 2 bytes filed with 2222 and the file '''image3_test.gim''' is a dummy of 3 bytes filed with 333333
{{Boxcode|code=<syntaxhighlight lang="xml">
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x130">
<MainTree name="test">
<ImageTree>
<Image name="image2_test" src="image2_test.gim" format="gim" compression="uncompressed" unknownByte="1" />
<Image name="image3_test" src="image3_test.gim" format="gim" compression="zlib" unknownByte="0" />
</ImageTree>
</MainTree>
</RcoFile>
</syntaxhighlight>}}
When compiled MD5: 4E69E7E88F0872C71D007A21478FA1D1
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  46 52 50 00 00 00 01 30 00 00 00 00 00 00 00 00  FRP....0........
00000010  00 00 00 A4 FF FF FF FF FF FF FF FF FF FF FF FF  ...¤ÿÿÿÿÿÿÿÿÿÿÿÿ
00000020  FF FF FF FF 00 00 00 CC FF FF FF FF FF FF FF FF  ÿÿÿÿ...Ìÿÿÿÿÿÿÿÿ
00000030  FF FF FF FF FF FF FF FF 00 00 01 70 00 00 00 00  ÿÿÿÿÿÿÿÿ...p....
00000040  00 00 01 70 00 00 00 20 00 00 01 90 00 00 00 00  ...p... ........
00000050  FF FF FF FF 00 00 00 00 00 00 01 68 00 00 00 08  ÿÿÿÿ.......h....
00000060  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000070  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000080  00 00 01 90 00 00 00 14 FF FF FF FF 00 00 00 00  ........ÿÿÿÿ....
00000090  FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF  ÿÿÿÿ....ÿÿÿÿÿÿÿÿ
000000A0  FF FF FF FF 01 01 00 00 00 00 00 00 00 00 00 00  ÿÿÿÿ............
000000B0  00 00 00 28 00 00 00 01 00 00 00 00 00 00 00 00  ...(............
000000C0  00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00  ................
000000D0  FF FF FF FF 00 00 00 00 00 00 00 28 00 00 00 02  ÿÿÿÿ.......(....
000000E0  00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00  ...........(....
000000F0  00 00 00 00 04 01 00 00 00 00 00 08 00 00 00 28  ...............(
00000100  00 00 00 00 00 00 00 00 00 00 00 38 00 00 00 00  ...........8....
00000110  00 00 00 28 00 00 00 00 00 00 00 00 00 05 01 00  ...(............
00000120  00 00 00 02 00 00 00 00 00 00 00 01 04 01 00 00  ................
00000130  00 00 00 14 00 00 00 28 00 00 00 00 00 00 00 00  .......(........
00000140  00 00 00 00 00 00 00 38 00 00 00 60 00 00 00 00  .......8...`....
00000150  00 00 00 00 00 05 00 01 00 00 00 0E 00 00 00 04  ................
00000160  00 00 00 01 00 00 00 03 00 00 00 F4 00 00 01 2C  ...........ô...,
00000170  74 65 73 74 00 00 00 00 69 6D 61 67 65 32 5F 74  test....image2_t
00000180  65 73 74 00 69 6D 61 67 65 33 5F 74 65 73 74 00  est.image3_test.
00000190  22 22 00 00 78 DA 01 03 00 FC FF 33 33 33 01 35  ""..xÚ...üÿ333.5
000001A0  00 9A 00 00                                      .š..
{| class="wikitable" style="font-size:x-small;"
|-
! Areas !! Offset !! Length !! Example !! Name !! Notes
|-
| rowspan="46" | Header
|-{{cellcolors|#666666|#ffffff}}
| 0x00 || 0x04 || FRP || '''magic''' || FRP in big endian
|-{{cellcolors|#666666|#ffffff}}
| 0x04 || 0x04 || 00 00 01 30 || '''version''' || 0x130 = one of the firmwares for PS3
|-{{cellcolors|#666666|#ffffff}}
| 0x08 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|#666666|#ffffff}}
| 0x0C || 0x04 || 00 00 00 00 || '''compress_header''' || 0x00 = uncompressed
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x10 || 0x04 || 00 00 00 A4 || '''toc_maintree_absolute_offset''' || MainTree at absolute offset 0xA4
|-
| 0x14 || 0x04 || FF FF FF FF || '''toc_scripttree_absolute_offset''' ||
|-
| 0x18 || 0x04 || FF FF FF FF || '''toc_languagetree_absolute_offset''' ||
|-
| 0x1C || 0x04 || FF FF FF FF || '''toc_soundtree_absolute_offset''' ||
|-
| 0x20 || 0x04 || FF FF FF FF || '''toc_modeltree_absolute_offset''' ||
|-
| 0x24 || 0x04 || 00 00 00 CC || '''toc_imagetree_absolute_offset''' || ImageTree at absolute offset 0xCC
|-
| 0x28 || 0x04 || FF FF FF FF || {{cellcolors|#ff7777}} ''toc_unknowntree_absolute_offset'' ||
|-
| 0x2C || 0x04 || FF FF FF FF || '''toc_fonttree_absolute_offset''' ||
|-
| 0x30 || 0x04 || FF FF FF FF || '''toc_objecttree_absolute_offset''' ||
|-
| 0x34 || 0x04 || FF FF FF FF || '''toc_animationtree_absolute_offset''' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x38 || 0x04 || 00 00 01 70 || '''strings_texts_absolute_offset''' || strings texts table at absolute offset 0x170
|-
| 0x3C || 0x04 || 00 00 00 00 || '''strings_texts_length''' || strings texts table is empty
|-
| 0x40 || 0x04 || 00 00 01 70 || '''strings_labels_absolute_offset''' || strings labels table at absolute offset 0x170
|-
| 0x44 || 0x04 || 00 00 00 20 || '''strings_labels_length''' || strings labels size 0x20
|-
| 0x48 || 0x04 || 00 00 01 90 || '''strings_events_absolute_offset''' || strings events table at absolute offset 0x190
|-
| 0x4C || 0x04 || 00 00 00 00 || '''strings_events_length''' || strings events table is empty
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x50 || 0x04 || FF FF FF FF || '''text_pointer_table_offset''' ||
|-
| 0x54 || 0x04 || 00 00 00 00 || '''text_pointer_table_length''' ||
|-
| 0x58 || 0x04 || 00 00 01 68 || '''image_pointer_table_offset''' ||
|-
| 0x5C || 0x04 || 00 00 00 08 || '''image_pointer_table_length''' ||
|-
| 0x60 || 0x04 || FF FF FF FF || '''model_pointer_table_offset''' ||
|-
| 0x64 || 0x04 || 00 00 00 00 || '''model_pointer_table_length''' ||
|-
| 0x68 || 0x04 || FF FF FF FF || '''sound_pointer_table_offset''' ||
|-
| 0x6C || 0x04 || 00 00 00 00 || '''sound_pointer_table_length''' ||
|-
| 0x70 || 0x04 || FF FF FF FF || '''object_pointer_table_offset''' ||
|-
| 0x74 || 0x04 || 00 00 00 00 || '''object_pointer_table_length''' ||
|-
| 0x78 || 0x04 || FF FF FF FF || '''anim_pointer_table_offset''' ||
|-
| 0x7C || 0x04 || 00 00 00 00 || '''anim_pointer_table_length''' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x80 || 0x04 || 00 00 01 90 || '''image_data_section_offset''' ||
|-
| 0x84 || 0x04 || 00 00 00 14 || '''image_data_section_length''' ||
|-
| 0x88 || 0x04 || FF FF FF FF || '''sound_data_section_offset''' ||
|-
| 0x8C || 0x04 || 00 00 00 00 || '''sound_data_section_length''' ||
|-
| 0x90 || 0x04 || FF FF FF FF || '''model_data_section_offset''' ||
|-
| 0x94 || 0x04 || 00 00 00 00 || '''model_data_section_length''' ||
|-
| 0x98 || 0x04 || FF FF FF FF || ''unknown'' ||
|-
| 0x9C || 0x04 || FF FF FF FF || ''unknown'' ||
|-
| 0xA0 || 0x04 || FF FF FF FF || ''unknown'' ||
|-
| rowspan="67" | TOC
|-
| 0xA4 || 0x01 || 01 || '''entry_type''' || 0x1=MainTree
|-
| 0xA5 || 0x01 || 01 || '''hierarchy_depth''' ||
|-
| 0xA6 || 0x02 || 00 00 || ''unknown'' ||
|-
| 0xA8 || 0x04 || 00 00 00 00 || '''entry_label_offset''' || test
|-
| 0xAC || 0x04 || 00 00 00 00 || '''entry_header_size''' ||
|-
| 0xB0 || 0x04 || 00 00 00 28 || '''entry_size''' ||
|-
| 0xB4 || 0x04 || 00 00 00 01 || '''children_number''' ||
|-
| 0xB8 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-
| 0xBC || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-
| 0xC0 || 0x04 || 00 00 00 00 || '''parent_offset''' ||
|-
| 0xC4 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0xC8 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0xCC || 0x01 || 04 || '''entry_type''' || 0x4=ImageTree
|-
| 0xCD || 0x01 || 00 || '''hierarchy_depth''' ||
|-
| 0xCE || 0x02 || 00 00 || ''unknown'' ||
|-
| 0xD0 || 0x04 || FF FF FF FF || '''entry_label_offset''' || no label
|-
| 0xD4 || 0x04 || 00 00 00 00 || '''entry_header_size''' ||
|-
| 0xD8 || 0x04 || 00 00 00 28 || '''entry_size''' ||
|-
| 0xDC || 0x04 || 00 00 00 02 || '''children_number''' ||
|-
| 0xE0 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-
| 0xE4 || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-
| 0xE8 || 0x04 || 00 00 00 28 || '''parent_offset''' ||
|-
| 0xEC || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0xF0 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0xF4 || 0x01 || 04 || '''entry_type''' || 0x4=ImageTree
|-
| 0xF5 || 0x01 || 01 || '''hierarchy_depth''' ||
|-
| 0xF6 || 0x02 || 00 00 || ''unknown'' ||
|-
| 0xF8 || 0x04 || 00 00 00 08 || '''entry_label_offset''' || image2_test
|-
| 0xFC || 0x04 || 00 00 00 28 || '''entry_header_size''' ||
|-
| 0x100 || 0x04 || 00 00 00 00 || '''entry_size''' ||
|-
| 0x104 || 0x04 || 00 00 00 00 || '''children_number''' ||
|-
| 0x108 || 0x04 || 00 00 00 38 || '''next_entry_offset''' ||
|-
| 0x10C || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-
| 0x110 || 0x04 || 00 00 00 28 || '''parent_offset''' ||
|-
| 0x114 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0x118 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x11C || 0x02 || 00 05 || '''file_format''' || 0x5=GIM
|-
| 0x11E || 0x01 || 01 || ''unknown'' ||
|-
| 0x11F || 0x01 || 00 || '''file_compression''' || 0x0=NONE
|-
| 0x120 || 0x04 || 00 00 00 02 || '''file_size''' ||
|-
| 0x124 || 0x04 || 00 00 00 00 || '''file_offset''' ||
|-
| 0x128 || 0x04 || 00 00 00 01 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x12C || 0x01 || 04 || '''entry_type''' || 0x4=ImageTree
|-
| 0x12D || 0x01 || 01 || '''hierarchy_depth''' ||
|-
| 0x12E || 0x02 || 00 00 || ''unknown'' ||
|-
| 0x130 || 0x04 || 00 00 00 14 || '''entry_label_offset''' || image3_test
|-
| 0x134 || 0x04 || 00 00 00 28 || '''entry_header_size''' ||
|-
| 0x138 || 0x04 || 00 00 00 00 || '''entry_size''' ||
|-
| 0x13C || 0x04 || 00 00 00 00 || '''children_number''' ||
|-
| 0x140 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-
| 0x144 || 0x04 || 00 00 00 38 || '''previous_entry_offset''' ||
|-
| 0x148 || 0x04 || 00 00 00 60 || '''parent_offset''' ||
|-
| 0x14C || 0x04 || 00 00 00 00 || ''unknown'' ||
|-
| 0x150 || 0x04 || 00 00 00 00 || ''unknown'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-
| 0x154 || 0x02 || 00 05 || '''file_format''' || 0x5=GIM
|-
| 0x156 || 0x01 || 00 || ''unknown'' ||
|-
| 0x157 || 0x01 || 01 || '''file_compression''' || 0x1=ZLIB
|-
| 0x158 || 0x04 || 00 00 00 0E || '''file_size''' ||
|-
| 0x15C || 0x04 || 00 00 00 04 || '''file_offset''' ||
|-
| 0x160 || 0x04 || 00 00 00 01 || ''unknown'' ||
|-
| 0x164 || 0x04 || 00 00 00 03 || '''file_uncompressed_size''' ||
|-
| rowspan="3" | pointers
|-
| 0x168 || 0x04 || 00 00 00 F4 ||  ||
|-
| 0x16C || 0x04 || 00 00 01 2C ||  ||
|-
| rowspan="2" | texts
|-
| 0x170 || 0x00 ||  || || text table is empty
|-
| rowspan="5" | labels
|-
| 0x170 || 0x05 || 74 65 73 74 00 || || test (null terminated)
|-
| 0x175 || 0x03 || 00 00 00 || || padding (aligned to 4 bytes boundary)
|-
| 0x178 || 0x0C || 69 6D 61 67 65 32 5F 74 65 73 74 00 || || image2_test (null terminated)
|-
| 0x184 || 0x0C || 69 6D 61 67 65 33 5F 74 65 73 74 00 || || image3_test (null terminated)
|-
| rowspan="2" | events
|-
| 0x190 || 0x00 ||  ||  || events table is empty
|-
| rowspan="5" | images
|-
| 0x190 || 0x02 || 22 22 || || image2_test.gim
|-
| 0x192 || 0x02 || 00 00 || || padding (aligned to 4 bytes boundary)
|-
| 0x194 || 0x0E || 78 DA 01 03 00 FC FF 33 33 33 01 35 00 9A || || image3_test.gim (zlib compressed)
|-
| 0x1A2 || 0x02 || 00 00 || || padding (aligned to 4 bytes boundary)
|}
=Examples (official builds)=
This ones should be considered "perfect" rco structures, even if there is a weird detail (initially a nonsense, a sony bug, or details not managed correctlly by rcomage)... it needs to be considered a "specification" of that rco version. See also [[Talk:Rcomage]]
==PS3 1.02 xai_plugin.rco==
{{Boxcode|code=<syntaxhighlight lang="xml">
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x97">
<MainTree name="sample">
<ObjectTree>
<Page name="root" pageMode="0x1101" pageOnInit="nothing" pageOnCancel="nothing" pageOnContext="nothing" pageOnActivate="nothing">
<Plane name="application" positionX="0" positionY="0" positionZ="0" colorScaleR="1" colorScaleG="1" colorScaleB="1" colorScaleA="1" sizeX="0" sizeY="0" sizeZ="0" sizeScaleX="1" sizeScaleY="1" sizeScaleZ="1" anchorMode="0x0" onInit="nothing" positionOverrideX="0x0" positionOverrideY="0x0" positionOverrideZ="0x0" sizeOverrideX="0x0" sizeOverrideY="0x0" sizeOverrideZ="0x0" planeImage="nothing" planeResizeMode="0x0"></Plane>
</Page>
</ObjectTree>
</MainTree>
</RcoFile>
</syntaxhighlight>}}
MD5: F3835BBD0E2448EB6AD5C3FA02906346
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  46 52 50 00 00 00 00 97 00 00 00 00 00 00 00 00  FRP....—........
00000010  00 00 00 A4 FF FF FF FF FF FF FF FF FF FF FF FF  ...¤ÿÿÿÿÿÿÿÿÿÿÿÿ
00000020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
00000030  00 00 00 CC FF FF FF FF 00 00 01 D4 00 00 00 00  ...Ìÿÿÿÿ...Ô....
00000040  00 00 01 D4 00 00 00 1C 00 00 01 F0 00 00 00 04  ...Ô.......ð....
00000050  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000060  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000070  00 00 01 CC 00 00 00 08 FF FF FF FF 00 00 00 00  ...Ì....ÿÿÿÿ....
00000080  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000090  FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF  ÿÿÿÿ....ÿÿÿÿÿÿÿÿ
000000A0  FF FF FF FF 01 01 00 00 00 00 00 00 00 00 00 00  ÿÿÿÿ............
000000B0  00 00 00 28 00 00 00 01 00 00 00 00 00 00 00 00  ...(............
000000C0  00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00  ................
000000D0  FF FF FF FF 00 00 00 00 00 00 00 28 00 00 00 01  ÿÿÿÿ.......(....
000000E0  00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00  ...........(....
000000F0  00 00 00 00 08 01 00 00 00 00 00 08 00 00 00 28  ...............(
00000100  00 00 00 4C 00 00 00 01 00 00 00 00 00 00 00 00  ...L............
00000110  00 00 00 28 00 00 00 00 00 00 00 00 01 11 00 00  ...(............
00000120  FF FF 00 00 FF FF FF FF FF FF 00 00 FF FF FF FF  ÿÿ..ÿÿÿÿÿÿ..ÿÿÿÿ
00000130  FF FF 00 00 FF FF FF FF FF FF 00 00 FF FF FF FF  ÿÿ..ÿÿÿÿÿÿ..ÿÿÿÿ
00000140  08 02 00 00 00 00 00 10 00 00 00 28 00 00 00 00  ...........(....
00000150  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4C  ...............L
00000160  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000170  00 00 00 00 3F 80 00 00 3F 80 00 00 3F 80 00 00  ....?€..?€..?€..
00000180  3F 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ?€..............
00000190  3F 80 00 00 3F 80 00 00 3F 80 00 00 00 00 00 00  ?€..?€..?€......
000001A0  FF FF 00 00 FF FF FF FF 00 00 00 00 00 00 00 00  ÿÿ..ÿÿÿÿ........
000001B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001C0  FF FF 00 00 FF FF FF FF 00 00 00 00 00 00 00 F4  ÿÿ..ÿÿÿÿ.......ô
000001D0  00 00 01 40 73 61 6D 70 6C 65 00 00 72 6F 6F 74  [email protected]
000001E0  00 00 00 00 61 70 70 6C 69 63 61 74 69 6F 6E 00  ....application.
000001F0  00 00 00 00                                      ....
{| class="wikitable" style="font-size:x-small;"
|-
! colspan="2" | Areas !! Offset !! Length !! Example !! Name !! Notes
|-
| colspan="2" rowspan="42" | HDR
|-{{cellcolors|#000000|#ffffff}}
| 0x00 || 0x04 || 46 52 50 00 || '''prf_signature''' || FRP in big endian
|-{{cellcolors|#000000|#ffffff}}
| 0x04 || 0x04 || 00 00 00 97 || '''prf_version''' || 0x97 = one of the firmwares for PS3
|-{{cellcolors|#000000|#ffffff}}
| 0x08 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} <abbr title="minor_version ?">''prf_unknown''</abbr> ||
|-{{cellcolors|#000000|#ffffff}}
| 0x0C || 0x04 || 00 00 00 00 || <abbr title="compress everything except the header and '''dat''' data tables to store files">'''prf_compression'''</abbr> || 0x00 = uncompressed
|-{{cellcolors|#7777ff}}
| 0x10 || 0x04 || 00 00 00 A4 || '''toc_maintree_absolute_offset''' || MainTree at 0xA4
|-{{cellcolors|#8888ff}}
| 0x14 || 0x04 || FF FF FF FF || '''toc_scripttree_absolute_offset''' || no
|-{{cellcolors|#8888ff}}
| 0x18 || 0x04 || FF FF FF FF || '''toc_languagetree_absolute_offset''' || no
|-{{cellcolors|#8888ff}}
| 0x1C || 0x04 || FF FF FF FF || '''toc_soundtree_absolute_offset''' || no
|-{{cellcolors|#8888ff}}
| 0x20 || 0x04 || FF FF FF FF || '''toc_modeltree_absolute_offset''' || no
|-{{cellcolors|#8888ff}}
| 0x24 || 0x04 || FF FF FF FF || '''toc_imagetree_absolute_offset''' || no
|-{{cellcolors|#8888ff}}
| 0x28 || 0x04 || FF FF FF FF || {{cellcolors|#ff7777}} <abbr title="toc_unknowntree_absolute_offset">''toc_unknown''</abbr> || no
|-{{cellcolors|#8888ff}}
| 0x2C || 0x04 || FF FF FF FF || '''toc_fonttree_absolute_offset''' || no
|-{{cellcolors|#8888ff}}
| 0x30 || 0x04 || 00 00 00 CC || '''toc_objecttree_absolute_offset''' || ObjectTree at 0xCC
|-{{cellcolors|#8888ff}}
| 0x34 || 0x04 || FF FF FF FF || '''toc_animationtree_absolute_offset''' || no
|-{{cellcolors|#66ff66}}
| 0x38 || 0x04 || 00 00 01 D4 || '''str_language_table_absolute_offset''' || languages at 0x1D4
|-{{cellcolors|#66ff66}}
| 0x3C || 0x04 || 00 00 00 00 || '''str_language_table_length''' || empty
|-{{cellcolors|#99ff99}}
| 0x40 || 0x04 || 00 00 01 D4 || '''str_label_table_absolute_offset''' || labels at 0x1D4
|-{{cellcolors|#99ff99}}
| 0x44 || 0x04 || 00 00 00 1C || '''str_label_table_length''' || length 0x1C
|-{{cellcolors|#bbffbb}}
| 0x48 || 0x04 || 00 00 01 F0 || '''str_event_table_absolute_offset''' || events at 0x1F0
|-{{cellcolors|#bbffbb}}
| 0x4C || 0x04 || 00 00 00 04 || '''str_event_table_length''' || length 0x4
|-{{cellcolors|#770077}}
| 0x50 || 0x04 || FF FF FF FF || '''ptr_language_table_absolute_offset''' || no
|-{{cellcolors|#770077}}
| 0x54 || 0x04 || 00 00 00 00 || '''ptr_language_table_length''' || empty
|-{{cellcolors|#880088}}
| 0x58 || 0x04 || FF FF FF FF || '''ptr_image_table_absolute_offset''' || no
|-{{cellcolors|#880088}}
| 0x5C || 0x04 || 00 00 00 00 || '''ptr_image_table_length''' || empty
|-{{cellcolors|#990099}}
| 0x60 || 0x04 || FF FF FF FF || '''ptr_model_table_absolute_offset''' || no
|-{{cellcolors|#990099}}
| 0x64 || 0x04 || 00 00 00 00 || '''ptr_model_table_length''' || empty
|-{{cellcolors|#aa00aa}}
| 0x68 || 0x04 || FF FF FF FF || '''ptr_sound_table_absolute_offset''' || no
|-{{cellcolors|#aa00aa}}
| 0x6C || 0x04 || 00 00 00 00 || '''ptr_sound_table_length''' || empty
|-{{cellcolors|#bb00bb}}
| 0x70 || 0x04 || 00 00 01 CC || '''ptr_object_table_absolute_offset''' || object pointers at 0x1CC
|-{{cellcolors|#bb00bb}}
| 0x74 || 0x04 || 00 00 00 08 || '''ptr_object_table_length''' || size 0x8
|-{{cellcolors|#cc00cc}}
| 0x78 || 0x04 || FF FF FF FF || '''ptr_animation_table_absolute_offset''' || no
|-{{cellcolors|#cc00cc}}
| 0x7C || 0x04 || 00 00 00 00 || '''ptr_animation_table_length''' || empty
|-{{cellcolors|#ccaa88}}
| 0x80 || 0x04 || FF FF FF FF || '''dat_image_table_absolute_offset''' || no
|-{{cellcolors|#ccaa88}}
| 0x84 || 0x04 || 00 00 00 00 || '''dat_image_table_length''' || empty
|-{{cellcolors|#ddbb99}}
| 0x88 || 0x04 || FF FF FF FF || '''dat_sound_table_absolute_offset''' || no
|-{{cellcolors|#ddbb99}}
| 0x8C || 0x04 || 00 00 00 00 || '''dat_sound_table_length''' || empty
|-{{cellcolors|#eeccaa}}
| 0x90 || 0x04 || FF FF FF FF || '''dat_model_table_absolute_offset''' || no
|-{{cellcolors|#eeccaa}}
| 0x94 || 0x04 || 00 00 00 00 || '''dat_model_table_length''' || empty
|-{{cellcolors|#ffddbb}}
| 0x98 || 0x04 || FF FF FF FF || {{cellcolors|#ff7777}} <abbr title="dat_unknown_table_absolute_offset">''dat_unknown_1''</abbr> ||
|-{{cellcolors|#ffddbb}}
| 0x9C || 0x04 || FF FF FF FF || {{cellcolors|#ff7777}} <abbr title="dat_unknown_table_length">''dat_unknown_2''</abbr> ||
|-{{cellcolors|#ffddbb}}
| 0xA0 || 0x04 || FF FF FF FF || {{cellcolors|#ff7777}} <abbr title="dat_unknown_table_absolute_offset">''dat_unknown_3''</abbr> ||
|-{{cellcolors|#000000}}
| colspan="7" |
|-
| colspan="2" rowspan="72" | TOC
|-{{cellcolors|#7777ff}}
| 0xA4 || 0x04 || 01 01 00 00 || '''entry_type''' || MainTree
|-{{cellcolors|#7777ff}}
| 0xA8 || 0x04 || 00 00 00 00 || '''entry_label_offset''' || sample
|-{{cellcolors|#7777ff}}
| 0xAC || 0x04 || 00 00 00 00 || '''entry_header_size''' ||
|-{{cellcolors|#7777ff}}
| 0xB0 || 0x04 || 00 00 00 28 || '''entry_size''' ||
|-{{cellcolors|#7777ff}}
| 0xB4 || 0x04 || 00 00 00 01 || '''children_number''' ||
|-{{cellcolors|#7777ff}}
| 0xB8 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-{{cellcolors|#7777ff}}
| 0xBC || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-{{cellcolors|#7777ff}}
| 0xC0 || 0x04 || 00 00 00 00 || '''parent_offset''' || no parent
|-{{cellcolors|#7777ff}}
| 0xC4 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_1'' ||
|-{{cellcolors|#7777ff}}
| 0xC8 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_2'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-{{cellcolors|#8888ff}}
| 0xCC || 0x04 || 08 00 00 00 || '''entry_type''' || ObjectTree
|-{{cellcolors|#8888ff}}
| 0xD0 || 0x04 || FF FF FF FF || '''entry_label_offset''' || no label
|-{{cellcolors|#8888ff}}
| 0xD4 || 0x04 || 00 00 00 00 || '''entry_header_size''' ||
|-{{cellcolors|#8888ff}}
| 0xD8 || 0x04 || 00 00 00 28 || '''entry_size''' ||
|-{{cellcolors|#8888ff}}
| 0xDC || 0x04 || 00 00 00 01 || '''children_number''' ||
|-{{cellcolors|#8888ff}}
| 0xE0 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-{{cellcolors|#8888ff}}
| 0xE4 || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-{{cellcolors|#8888ff}}
| 0xE8 || 0x04 || 00 00 00 28 || '''parent_offset''' || 0xCC-0x28 = parent is at 0xA4 ('''MainTree''')
|-{{cellcolors|#8888ff}}
| 0xEC || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_1'' ||
|-{{cellcolors|#8888ff}}
| 0xF0 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_2'' ||
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-{{cellcolors|#9999ff}}
| 0xF4 || 0x01 || 08 01 00 00 || '''entry_type''' || Page
|-{{cellcolors|#9999ff}}
| 0xF8 || 0x04 || 00 00 00 08 || '''entry_label_offset''' || root
|-{{cellcolors|#9999ff}}
| 0xFC || 0x04 || 00 00 00 28 || '''entry_header_size''' ||
|-{{cellcolors|#9999ff}}
| 0x100 || 0x04 || 00 00 00 4C || '''entry_size''' ||
|-{{cellcolors|#9999ff}}
| 0x104 || 0x04 || 00 00 00 01 || '''children_number''' ||
|-{{cellcolors|#9999ff}}
| 0x108 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-{{cellcolors|#9999ff}}
| 0x10C || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-{{cellcolors|#9999ff}}
| 0x110 || 0x04 || 00 00 00 28 || '''parent_offset''' || 0xF4-0x28 = parent is at 0xCC ('''ObjectTree''')
|-{{cellcolors|#9999ff}}
| 0x114 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_1'' ||
|-{{cellcolors|#9999ff}}
| 0x118 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_2'' ||
|-{{cellcolors|#bbbbff}}
| 0x11C || 0x04 || 01 11 00 00 || '''pageMode''' ||
|-{{cellcolors|#bbbbff}}
| 0x120 || 0x08 || FF FF 00 00 FF FF FF FF || '''pageOnInit''' || nothing
|-{{cellcolors|#bbbbff}}
| 0x128 || 0x08 || FF FF 00 00 FF FF FF FF || '''pageOnCancel''' || nothing
|-{{cellcolors|#bbbbff}}
| 0x130 || 0x08 || FF FF 00 00 FF FF FF FF || '''pageOnContext''' || nothing
|-{{cellcolors|#bbbbff}}
| 0x138 || 0x08 || FF FF 00 00 FF FF FF FF || '''pageOnActivate''' || nothing
|-{{cellcolors|lightgrey}}
| colspan="5" |
|-{{cellcolors|#9999ff}}
| 0x140 || 0x04 || 08 02 00 00 || '''entry_type''' || Plane
|-{{cellcolors|#9999ff}}
| 0x144 || 0x04 || 00 00 00 10 || '''entry_label_offset''' || application
|-{{cellcolors|#9999ff}}
| 0x148 || 0x04 || 00 00 00 28 || '''entry_header_size''' ||
|-{{cellcolors|#9999ff}}
| 0x14C || 0x04 || 00 00 00 00 || '''entry_size''' ||
|-{{cellcolors|#9999ff}}
| 0x150 || 0x04 || 00 00 00 00 || '''children_number''' ||
|-{{cellcolors|#9999ff}}
| 0x154 || 0x04 || 00 00 00 00 || '''next_entry_offset''' ||
|-{{cellcolors|#9999ff}}
| 0x158 || 0x04 || 00 00 00 00 || '''previous_entry_offset''' ||
|-{{cellcolors|#9999ff}}
| 0x15C || 0x04 || 00 00 00 4C || '''parent_offset''' || 0x140-0x4C = parent is at 0xF4 ('''Page''')
|-{{cellcolors|#9999ff}}
| 0x160 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_1'' ||
|-{{cellcolors|#9999ff}}
| 0x164 || 0x04 || 00 00 00 00 || {{cellcolors|#ff7777}} ''toc_entry_unknown_2'' ||
|-{{cellcolors|#aaaaff}}
| 0x168 || 0x04 || 00 00 00 00 || '''positionX''' || 0
|-{{cellcolors|#aaaaff}}
| 0x16C || 0x04 || 00 00 00 00 || '''positionY''' || 0
|-{{cellcolors|#aaaaff}}
| 0x170 || 0x04 || 00 00 00 00 || '''positionZ''' || 0
|-{{cellcolors|#aaaaff}}
| 0x174 || 0x04 || 3F 80 00 00 || '''colorScaleR''' || 1
|-{{cellcolors|#aaaaff}}
| 0x178 || 0x04 || 3F 80 00 00 || '''colorScaleG''' || 1
|-{{cellcolors|#aaaaff}}
| 0x17C || 0x04 || 3F 80 00 00 || '''colorScaleB''' || 1
|-{{cellcolors|#aaaaff}}
| 0x180 || 0x04 || 3F 80 00 00 || '''colorScaleA''' || 1
|-{{cellcolors|#aaaaff}}
| 0x184 || 0x04 || 00 00 00 00 || '''sizeX''' || 0
|-{{cellcolors|#aaaaff}}
| 0x188 || 0x04 || 00 00 00 00 || '''sizeY''' || 0
|-{{cellcolors|#aaaaff}}
| 0x18C || 0x04 || 00 00 00 00 || '''sizeZ''' || 0
|-{{cellcolors|#aaaaff}}
| 0x190 || 0x04 || 3F 80 00 00 || '''sizeScaleX''' || 1
|-{{cellcolors|#aaaaff}}
| 0x194 || 0x04 || 3F 80 00 00 || '''sizeScaleY''' || 1
|-{{cellcolors|#aaaaff}}
| 0x198 || 0x04 || 3F 80 00 00 || '''sizeScaleZ''' || 1
|-{{cellcolors|#aaaaff}}
| 0x19C || 0x04 || 00 00 00 00 || '''anchorMode''' || 0x0 (center)
|-{{cellcolors|#aaaaff}}
| 0x1A0 || 0x08 || FF FF 00 00 FF FF FF FF || '''onInit''' || nothing
|-{{cellcolors|#aaaaff}}
| 0x1A8 || 0x04 || 00 00 00 00 || '''positionOverrideX''' || no
|-{{cellcolors|#aaaaff}}
| 0x1AC || 0x04 || 00 00 00 00 || '''positionOverrideY''' || no
|-{{cellcolors|#aaaaff}}
| 0x1B0 || 0x04 || 00 00 00 00 || '''positionOverrideZ''' || no
|-{{cellcolors|#aaaaff}}
| 0x1B4 || 0x04 || 00 00 00 00 || '''sizeOverrideX''' || no
|-{{cellcolors|#aaaaff}}
| 0x1B8 || 0x04 || 00 00 00 00 || '''sizeOverrideY''' || no
|-{{cellcolors|#aaaaff}}
| 0x1BC || 0x04 || 00 00 00 00 || '''sizeOverrideZ''' || no
|-{{cellcolors|#bbbbff}}
| 0x1C0 || 0x04 || FF FF 00 00 FF FF FF FF || '''planeImage''' || nothing
|-{{cellcolors|#bbbbff}}
| 0x1C8 || 0x04 || 00 00 00 00 || '''planeResizeMode''' || 0x0
|-{{cellcolors|#000000}}
| colspan="7" |
|-
| rowspan="3" | PTR
| rowspan="3" | objects
|-{{cellcolors|#bb00bb}}
| 0x1CC || 0x04 || 00 00 00 F4 ||  || First object ('''Page''') at 0xF4
|-{{cellcolors|#bb00bb}}
| 0x1D0 || 0x04 || 00 00 01 40 ||  || Second object ('''Plane''') at 0x140
|-{{cellcolors|#000000}}
| colspan="7" |
|-
| rowspan="10" | STR
| rowspan="2" | languages
|-{{cellcolors|#66ff66}}
| 0x1D4 || 0x00 ||  ||  || empty
|-
| rowspan="6" | labels
|-{{cellcolors|#99ff99}}
| 0x1D4 || 0x07 || 73 61 6D 70 6C 65 00 ||  || '''sample''' (null terminated)
|-{{cellcolors|lightgrey}}
| 0x1DB || 0x01 || 00 ||  || padding (aligned to 4 bytes boundary)
|-{{cellcolors|#99ff99}}
| 0x1DC || 0x05 || 72 6F 6F 74 00 ||  || '''root''' (null terminated)
|-{{cellcolors|lightgrey}}
| 0x1E1 || 0x03 || 00 00 00 ||  || padding (aligned to 4 bytes boundary)
|-{{cellcolors|#99ff99}}
| 0x1E4 || 0x0C || 61 70 70 6C 69 63 61 74 69 6F 6E 00 ||  || '''application''' (null terminated)
|-
| rowspan="2" | events
|-{{cellcolors|#bbffbb}}
| 0x1F0 || 0x04 || 00 00 00 00 ||  || dummy event ?
|}
When compiled with rcomage v1.1.2 using ZLIB compression MD5: 4B6C364DDA94BBF1C0A7AC9864DC4796
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  46 52 50 00 00 00 00 97 00 00 00 00 00 00 00 <span style="background:#ff0000;">10</span>  FRP....—........
00000010  00 00 00 A4 FF FF FF FF FF FF FF FF FF FF FF FF  ...¤ÿÿÿÿÿÿÿÿÿÿÿÿ
00000020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
00000030  00 00 00 CC FF FF FF FF <span style="background:#00ff00;">FF FF FF FF</span> 00 00 00 00  ...Ìÿÿÿÿÿÿÿÿ....
00000040  00 00 01 D4 00 00 00 1C 00 00 01 F0 00 00 00 04  ...Ô.......ð....
00000050  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000060  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000070  00 00 01 CC 00 00 00 08 FF FF FF FF 00 00 00 00  ...Ì....ÿÿÿÿ....
00000080  FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00  ÿÿÿÿ....ÿÿÿÿ....
00000090  FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF  ÿÿÿÿ....ÿÿÿÿÿÿÿÿ
000000A0  FF FF FF FF <span style="background:#ffff00;">00 00 00 6C</span> <span style="background:#ffff00;">00 00 01 50</span> <span style="background:#ffff00;">00 00 00 00</span>  ÿÿÿÿ...l...P....
000000B0  <span style="background:#ff00ff;">78 DA 75 CD C1 0D 80 20 0C 05 D0 5F 4F 1C 75 0B</span>  xÚuÍÁ.€ ..Ð_O.u.
000000C0  <span style="background:#ff00ff;">B6 D0 01 58 82 18 0F 24 28 44 19 C0 A1 BD 2B 04</span>  ¶Ð.X‚..$(D.À¡½+.
000000D0  <span style="background:#ff00ff;">23 2A F0 92 9F 26 A5 B4 44 78 E3 3E 84 02 E6 73</span>  #*ð’Ÿ&¥´Dxã>„.æs
000000E0  <span style="background:#ff00ff;">7A 95 39 FE CC 51 2C 77 4F D4 E6 A8 0B FB E2 CE</span>  z•9þÌQ,wOÔæ¨.ûâÎ
000000F0  <span style="background:#ff00ff;">5A 65 0D 82 36 FE CB 08 14 F4 FB 37 C9 BF 9F EE</span>  Ze.‚6þË..ôû7É¿Ÿî
00000100  <span style="background:#ff00ff;">23 53 7C 3F 00 1A 36 39 5B 3D 01 AB 31 0E 9E B4</span>  #S|?..69[=.«1.ž´
00000110  <span style="background:#ff00ff;">56 AB 51 3A 65 16 04 17 88 21 38 F3</span>              V«Q:e...ˆ!8ó
*Changes
**<span style="background:#ff0000;">10</span> the compression setting for ZLIB
**<span style="background:#00ff00;">FF FF FF FF</span> weird
**<span style="background:#ffff00;">00 00 00 6C</span> <span style="background:#ffff00;">00 00 01 50</span> <span style="background:#ffff00;">00 00 00 00</span> the info about the compressed area that comes next (composed by: lenPacked, lenUnpacked, and lenLongestText)
**<span style="background:#ff00ff;">78 DA ...</span> the compressed area itself, includes the TOC, the pointer tables (PTR), and string tables (STR)
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 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: