Talk:Resource Container (RCO): Difference between revisions
m (moved to front page) |
mNo edit summary |
||
(74 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Unknowns= | |||
=RCO versions= | ==RCO versions (aka minFirmwareVer in rcomage)== | ||
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 method 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) 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 | ||
{{Boxcode| | {{Boxcode|code=<syntaxhighlight lang="c"> | ||
switch(rco->verId) { | switch(rco->verId) { | ||
case 0x70: fputs("1.0", fp); break; | case 0x70: fputs("1.0", fp); break; | ||
Line 23: | Line 24: | ||
Example... sysconf_plugin.rco from PS3 firmware 2.00 with version 0x106 | Example... sysconf_plugin.rco from PS3 firmware 2.00 with version 0x106 | ||
{{Boxcode| | {{Boxcode|code=<syntaxhighlight lang="xml"> | ||
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x106"> | <RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x106"> | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
==unknownByte== | |||
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) | |||
**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 | |||
{{Boxcode|code=<syntaxhighlight lang="xml"> | |||
<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: | |||
**The size of both .gim file is exactlly 452KB (463.232 bytes) | |||
**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) | |||
unknownByte .gim header example | |||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | |||
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........ | |||
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.... | |||
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...@ | |||
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 ...@............ | |||
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 | |||
{{Boxcode|code=<syntaxhighlight lang="xml"> | |||
<Image name="BackGround" src=".\RCO 476 ofw\newstore_plugin\Images\BackGround.jpg" format="jpg" compression="uncompressed" unknownByte="1" /> | |||
<Image name="ScrollButtonRich" src=".\RCO 476 ofw mod 5\newstore_plugin\Images\ScrollButtonRich.png" format="png" compression="uncompressed" unknownByte="1" /> | |||
</syntaxhighlight>}} | |||
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 RCOs seem to have this extra element - probably something to do with planes/frames?? | |||
==UMDFlag== | |||
This attribute was named UMDFlag unofficially because it was found used in the .rco files contained inside PSP UMD discs only | |||
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:: | |||
**0 = system rco | |||
**1 = external rco (disc media, etc) | |||
=Hashreports= | =Hashreports= | ||
==PS3 all versions== | ==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 | ==PSP rco's== | ||
*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.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) | ||
*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) | *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) | ||
Line 40: | Line 91: | ||
***The converted files will have '''minFirmwareVer="2.6"''' (the original value is lost in the conversion) | ***The converted files will have '''minFirmwareVer="2.6"''' (the original value is lost in the conversion) | ||
{{Boxcode| | {{Boxcode|width=auto|float=left|title=PSP 6.61 official rco's|code=<syntaxhighlight lang="bash"> | ||
; 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 168: | Line 219: | ||
</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 | ; Generated by QuickSFV v2.36 on 2015-12-13 at 03:40:27 | ||
; http://www.QuickSFV.org | ; http://www.QuickSFV.org | ||
Line 299: | Line 349: | ||
4fd833dc230d78d2827ad85f58685aa6 *resource\video_plugin_videotoolbar.rco | 4fd833dc230d78d2827ad85f58685aa6 *resource\video_plugin_videotoolbar.rco | ||
5b1e65248b962b983cf0553f662c2050 *resource\visualizer_plugin.rco | 5b1e65248b962b983cf0553f662c2050 *resource\visualizer_plugin.rco | ||
</syntaxhighlight>}} | </syntaxhighlight>}}{{clear}} | ||
*PSP firmware 1.00 contains only 21 .rco files (all them uses ZLIB, none of them uses RLZ) | *PSP firmware 1.00 contains only 21 .rco files (all them uses ZLIB, none of them uses RLZ) | ||
{{Boxcode| | {{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 | ; Generated by QuickSFV v2.36 on 2015-12-13 at 03:51:28 | ||
; http://www.QuickSFV.org | ; http://www.QuickSFV.org | ||
Line 348: | Line 398: | ||
ef87b1df11ab6b00986b1ce6395066c4 *resource\video_plugin.rco | ef87b1df11ab6b00986b1ce6395066c4 *resource\video_plugin.rco | ||
87d878f00d9355b873adcac6f79927f6 *resource\video_plugin_videotoolbar.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>}} | </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) |
Latest revision as of 04:55, 30 August 2021
Unknowns[edit source]
RCO versions (aka minFirmwareVer in rcomage)[edit source]
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
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
switch(rco->verId) { case 0x70: fputs("1.0", fp); break; case 0x71: fputs("1.5", fp); break; case 0x90: fputs("2.6", fp); break; case 0x95: fputs("2.7", fp); break; case 0x96: fputs("2.8", fp); break; case 0x100: fputs("3.5", fp); break; //case 0x107: fputs("ps3", fp); break; default: fprintf(fp, "unknownId0x%x", rco->verId); }
After extracting the contents of the RCO with RCOmage, the version is stored for rebuilding purposes in the RCOXML descriptor file as an attribute with the name minFirmwareVer
If the version is unknown is stored as unknownId0x%x using unknownId to specify the fact that is unknown + the real hex value 0x%x
Example... sysconf_plugin.rco from PS3 firmware 2.00 with version 0x106
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x106">
unknownByte[edit source]
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)
- 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
<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" />
- The 2 .gim files found using unknownByte="1" has some things in common:
- The size of both .gim file is exactlly 452KB (463.232 bytes)
- 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)
unknownByte .gim header example
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 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........ 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.... 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...@ 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 ...@............
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
<Image name="BackGround" src=".\RCO 476 ofw\newstore_plugin\Images\BackGround.jpg" format="jpg" compression="uncompressed" unknownByte="1" /> <Image name="ScrollButtonRich" src=".\RCO 476 ofw mod 5\newstore_plugin\Images\ScrollButtonRich.png" format="png" compression="uncompressed" unknownByte="1" />
Is specific for PS3 (not used on PSP) as can be seen in the comments of the source code of rcomage here in line number 188
PS3 RCOs seem to have this extra element - probably something to do with planes/frames??
UMDFlag[edit source]
This attribute was named UMDFlag unofficially because it was found used in the .rco files contained inside PSP UMD discs only
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::
- 0 = system rco
- 1 = external rco (disc media, etc)
Hashreports[edit source]
PS3 rco's all versions[edit source]
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[edit source]
- 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)
- 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)
- TRIANGLE or CROSS - only rebuilds
; Generated by QuickSFV v2.36 on 2015-12-09 at 04:49:59 ; http://www.QuickSFV.org ; ; 3792 10:46.08 2014-08-09 resource\adhoc_transfer.rco ; 1816 10:45.42 2014-08-09 resource\auth_plugin.rco ; 174256 10:46.10 2014-08-09 resource\camera_plugin.rco ; 239 10:46.10 2014-08-09 resource\common_page.rco ; 41248 10:46.12 2014-08-09 resource\content_browser_plugin.rco ; 86516 10:45.42 2014-08-09 resource\dd_helper.rco ; 34552 10:45.44 2014-08-09 resource\dnas_plugin.rco ; 9672 10:45.44 2014-08-09 resource\game_install_plugin.rco ; 58732 10:46.14 2014-08-09 resource\game_plugin.rco ; 41752 10:45.46 2014-08-09 resource\htmlviewer_plugin.rco ; 69540 10:46.16 2014-08-09 resource\impose_plugin.rco ; 106236 10:46.18 2014-08-09 resource\lftv_main_plugin.rco ; 55760 10:46.18 2014-08-09 resource\lftv_rmc_univer3in1.rco ; 55728 10:46.20 2014-08-09 resource\lftv_rmc_univer3in1_jp.rco ; 19672 10:46.20 2014-08-09 resource\lftv_rmc_univerpanel.rco ; 19700 10:46.22 2014-08-09 resource\lftv_rmc_univerpanel_jp.rco ; 36832 10:46.22 2014-08-09 resource\lftv_rmc_univertuner.rco ; 37316 10:46.24 2014-08-09 resource\lftv_rmc_univertuner_jp.rco ; 17880 10:46.24 2014-08-09 resource\lftv_tuner_jp_jp.rco ; 21768 10:46.26 2014-08-09 resource\lftv_tuner_us_en.rco ; 17972 10:45.48 2014-08-09 resource\msgdialog_plugin.rco ; 192396 10:46.26 2014-08-09 resource\msvideo_main_plugin.rco ; 56828 10:46.28 2014-08-09 resource\music_browser_plugin.rco ; 36148 10:46.30 2014-08-09 resource\music_player_plugin.rco ; 77168 10:45.48 2014-08-09 resource\netconf_dialog.rco ; 17032 10:45.50 2014-08-09 resource\netplay_plugin.rco ; 96764 10:46.30 2014-08-09 resource\npadmin_plugin.rco ; 19988 10:45.50 2014-08-09 resource\npinstaller_plugin.rco ; 19740 10:45.52 2014-08-09 resource\npsignin_plugin.rco ; 228760 10:45.52 2014-08-09 resource\npsignup_plugin.rco ; 358668 10:46.32 2014-08-09 resource\oneseg_plugin.rco ; 32076 10:46.34 2014-08-09 resource\opening_plugin.rco ; 138424 10:45.54 2014-08-09 resource\osk_plugin.rco ; 65356 10:46.34 2014-08-09 resource\photo_browser_plugin.rco ; 69704 10:46.36 2014-08-09 resource\photo_player_plugin.rco ; 64636 10:46.36 2014-08-09 resource\premo_plugin.rco ; 4696 10:45.54 2014-08-09 resource\ps3scan_plugin.rco ; 4768 10:45.56 2014-08-09 resource\psn_plugin.rco ; 47156 10:46.38 2014-08-09 resource\radioshack_plugin.rco ; 27888 10:46.38 2014-08-09 resource\recommend_browser.rco ; 63348 10:46.40 2014-08-09 resource\rss_browser_plugin.rco ; 21688 10:46.40 2014-08-09 resource\rss_downloader_plugin.rco ; 12412 10:45.56 2014-08-09 resource\rss_subscriber.rco ; 55036 10:46.42 2014-08-09 resource\savedata_plugin.rco ; 50708 10:45.58 2014-08-09 resource\savedata_utility.rco ; 67364 10:45.58 2014-08-09 resource\screenshot_plugin.rco ; 309232 10:46.44 2014-08-09 resource\skype_main_plugin.rco ; 147908 10:46.00 2014-08-09 resource\store_browser_plugin.rco ; 75052 10:46.02 2014-08-09 resource\store_checkout_plugin.rco ; 9532 10:46.44 2014-08-09 resource\subs_plugin.rco ; 196768 10:46.46 2014-08-09 resource\sysconf_plugin.rco ; 212532 10:46.46 2014-08-09 resource\sysconf_plugin_about.rco ; 89012 10:46.02 2014-08-09 resource\system_plugin.rco ; 8380 10:46.04 2014-08-09 resource\system_plugin_bg.rco ; 34336 10:46.04 2014-08-09 resource\system_plugin_fg.rco ; 227684 10:46.48 2014-08-09 resource\topmenu_icon.rco ; 38716 10:46.50 2014-08-09 resource\topmenu_plugin.rco ; 19560 10:46.50 2014-08-09 resource\update_plugin.rco ; 35148 10:46.52 2014-08-09 resource\video_main_plugin.rco ; 69032 10:46.52 2014-08-09 resource\video_plugin_videotoolbar.rco ; 30260 10:46.54 2014-08-09 resource\visualizer_plugin.rco 12dda8594cf816ba8e08495dc7e6e404 *resource\adhoc_transfer.rco a4b15cb98d7d336192a4f23fd89becec *resource\auth_plugin.rco a2b6a283b423bb192bf469194cb0523f *resource\camera_plugin.rco ac7b03cc83c25c324a092233c202a149 *resource\common_page.rco 567991e0656865c367a2a63c638a3efb *resource\content_browser_plugin.rco bdd13d91c92cba7489b6d2ff1ab06723 *resource\dd_helper.rco a25d1fb76427f885d4dff1ebdc6b6964 *resource\dnas_plugin.rco c251b597a533604dd425c17642085192 *resource\game_install_plugin.rco a9a54ca6a729b4889eb0c38946c3274e *resource\game_plugin.rco ce58c869974d764d5e74b8decd938100 *resource\htmlviewer_plugin.rco a9331bce82ded25ce4b6162544ad23af *resource\impose_plugin.rco c7300daf23991a0f887ee09e2a931745 *resource\lftv_main_plugin.rco 481bddbc83a3717fd149d9415fbb289a *resource\lftv_rmc_univer3in1.rco db2f0d509b894b4b2599e9fde33907be *resource\lftv_rmc_univer3in1_jp.rco 5df911bb476f504aee11f2b8b4e8a81a *resource\lftv_rmc_univerpanel.rco 2b8a092864561780f57577c2198a77ac *resource\lftv_rmc_univerpanel_jp.rco dcff238d056a66534f5b5b3da429566f *resource\lftv_rmc_univertuner.rco 591314409e629b5652a7a86e2abe84c5 *resource\lftv_rmc_univertuner_jp.rco b7e87e9f0fabd2adbe0b6142c2d8aa00 *resource\lftv_tuner_jp_jp.rco 4a1b10cfc4c524ab067d55e6b0c2b80f *resource\lftv_tuner_us_en.rco e8fd6b5a97c74ba8ac19f60037b94cda *resource\msgdialog_plugin.rco 0168e69d9d76e800b36b499ad0b6d3f2 *resource\msvideo_main_plugin.rco 554bef5a943a2c72785d7c149ccc1e24 *resource\music_browser_plugin.rco 2cec835c7a19228d3a4a022f368bcdf0 *resource\music_player_plugin.rco 14d364cee4f1368ab81e4958ae4df2d3 *resource\netconf_dialog.rco 7d0c0c8156a467b9f36b183742c32708 *resource\netplay_plugin.rco d8149083ef20062a9429e227546a1bd9 *resource\npadmin_plugin.rco b5981ce8cf96d656643a32dd99ff0d9e *resource\npinstaller_plugin.rco 6aa77978311bf79641fc32d1092362ff *resource\npsignin_plugin.rco 116ea60df8acabb587b086f59df4dd92 *resource\npsignup_plugin.rco 1542737627b5e6911b3abc6879ec4af6 *resource\oneseg_plugin.rco 889d8d99c98157799b56ee3f24abb78e *resource\opening_plugin.rco a3e3bf8d061604511f51b7cf7116cb0e *resource\osk_plugin.rco e34183accde943e73fa0f7add2b41cb3 *resource\photo_browser_plugin.rco d094fe9d052993abff9fd062a1d56b4f *resource\photo_player_plugin.rco 008747366893e5f27539435772cb41a9 *resource\premo_plugin.rco b47346ec59ec9190d80896d13b64d68d *resource\ps3scan_plugin.rco e40a9edac933169e87f6920d2178613a *resource\psn_plugin.rco 5ee0ee77e0131c724a8da85ef444fe40 *resource\radioshack_plugin.rco 3cf617c6716c5dea97f88c2d4ff23f14 *resource\recommend_browser.rco 256057589ad43c9560afae875544718e *resource\rss_browser_plugin.rco 4bee480a8782dbb1c4462e8073dc3000 *resource\rss_downloader_plugin.rco 869ddf18f6f614fc2b8f084c76129b37 *resource\rss_subscriber.rco 648877f29b74808937d8450d3522ef31 *resource\savedata_plugin.rco 1070d80c07a9f852747c91065990463a *resource\savedata_utility.rco 32b197c83b548fefd7667bd05c002ec1 *resource\screenshot_plugin.rco bfca32bd7dbfae6bbf5e97d7f92387ca *resource\skype_main_plugin.rco 7c757bcf286de7a95f98e8824f5f4bb1 *resource\store_browser_plugin.rco 7a0df8f7d4a41675ac4ed69c6e718262 *resource\store_checkout_plugin.rco 1ca842d0d11dca81e3d6967d6a32403c *resource\subs_plugin.rco 5d166ea92abd13dace9c2c2f7087ded8 *resource\sysconf_plugin.rco 141f8d5e152867f6c44415402633e49a *resource\sysconf_plugin_about.rco ea3616f8c30c1500cab7bb8f3ead3cec *resource\system_plugin.rco ac819b2d9ac4d82a94f21251611fb0cf *resource\system_plugin_bg.rco 197e1b1094e782c9cfee6a46ef911c01 *resource\system_plugin_fg.rco 042c815116182ca04b671d7cd67bb8ea *resource\topmenu_icon.rco 872bdf93cc037784f0e1c6b8074980c1 *resource\topmenu_plugin.rco cfe05f8cf126014c5fd33d5953bede27 *resource\update_plugin.rco 4354bd14048c4e1b4e452c970dbcb5cf *resource\video_main_plugin.rco 2163c6aa8c8ff38e25a864118cbeaadd *resource\video_plugin_videotoolbar.rco 015c0dc4be2cfe0bdb78508dd6e60835 *resource\visualizer_plugin.rco
; 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
- PSP firmware 1.00 contains only 21 .rco files (all them uses ZLIB, none of them uses RLZ)
; 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
Examples (rcomage builds)[edit source]
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 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)--Sandungas (talk) 18:48, 10 September 2016 (UTC)
ImageTree with 1 image[edit source]
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
<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>
When compiled MD5: E4C203A3D4B0B6854C90CD576E028545
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 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..ˆˆˆˆˆˆˆˆ
Areas | Offset | Length | Example | Name | Notes |
---|---|---|---|---|---|
Header | |||||
0x00 | 0x04 | FRP | magic | FRP in big endian | |
0x04 | 0x04 | 00 00 01 30 | version | 0x130 = one of the firmwares for PS3 | |
0x08 | 0x04 | 00 00 00 00 | unknown | ||
0x0C | 0x04 | 00 00 00 00 | compress_header | 0x00 = uncompressed | |
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 | 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 | ||
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 | |
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
pointers | |||||
0x12C | 0x04 | 00 00 00 F4 | |||
0x130 | 0x04 | 00 00 00 00 | |||
texts | |||||
0x134 | 0x00 | text table is empty | |||
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) | ||
events | |||||
0x148 | 0x00 | events table is empty | |||
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 10 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 FF FF FF FF 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 00 00 00 F4 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 00 00 00 44 00 00 00 A4 00 00 00 00 ÿÿÿÿ...D...¤.... 000000B0 78 DA 75 8A C1 0A 00 10 10 44 6D 51 3E C5 5F C9 xÚuŠÁ....DmQ>Å_É 000000C0 61 93 83 13 9F EE CE 6E 53 28 79 35 ED CE 6B 88 a“ƒ.ŸîÎnS(y5íÎkˆ 000000D0 CC 4D 90 88 79 B1 92 29 7C 76 61 EF 60 3D DC C3 ÌM.ˆy±’)|vaï`=Üà 000000E0 71 8E B0 03 5A 86 3E 9D 5B D7 5B 6A CA 1C D1 16 qŽ°.Z†>.[×[jÊ.Ñ. 000000F0 84 BD 0B BF 88 88 88 88 88 88 88 88 „½.¿ˆˆˆˆˆˆˆˆ
- Changes
- 10 the "compression header" setting with zlib (is not actually compressing the header, the term is not accurate)
- FF FF FF FF weird
- 00 00 00 F4 the offset where the image data starts, because the area before the image data has been compressed his position has been displaced
- 00 00 00 44 00 00 00 A4 00 00 00 00 the info about the compressed area that comes next (composed by: lenPacked, lenUnpacked, and lenLongestText)
- 78 DA ... 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[edit source]
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
<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>
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 .š..
Areas | Offset | Length | Example | Name | Notes |
---|---|---|---|---|---|
Header | |||||
0x00 | 0x04 | FRP | magic | FRP in big endian | |
0x04 | 0x04 | 00 00 01 30 | version | 0x130 = one of the firmwares for PS3 | |
0x08 | 0x04 | 00 00 00 00 | unknown | ||
0x0C | 0x04 | 00 00 00 00 | compress_header | 0x00 = uncompressed | |
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 | 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 | ||
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 | |
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
pointers | |||||
0x168 | 0x04 | 00 00 00 F4 | |||
0x16C | 0x04 | 00 00 01 2C | |||
texts | |||||
0x170 | 0x00 | text table is empty | |||
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) | ||
events | |||||
0x190 | 0x00 | events table is empty | |||
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)[edit source]
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[edit source]
<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>
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 ....
Areas | Offset | Length | Example | Name | Notes | |
---|---|---|---|---|---|---|
HDR | ||||||
0x00 | 0x04 | 46 52 50 00 | prf_signature | FRP in big endian | ||
0x04 | 0x04 | 00 00 00 97 | prf_version | 0x97 = one of the firmwares for PS3 | ||
0x08 | 0x04 | 00 00 00 00 | prf_unknown | |||
0x0C | 0x04 | 00 00 00 00 | prf_compression | 0x00 = uncompressed | ||
0x10 | 0x04 | 00 00 00 A4 | toc_maintree_absolute_offset | MainTree at 0xA4 | ||
0x14 | 0x04 | FF FF FF FF | toc_scripttree_absolute_offset | no | ||
0x18 | 0x04 | FF FF FF FF | toc_languagetree_absolute_offset | no | ||
0x1C | 0x04 | FF FF FF FF | toc_soundtree_absolute_offset | no | ||
0x20 | 0x04 | FF FF FF FF | toc_modeltree_absolute_offset | no | ||
0x24 | 0x04 | FF FF FF FF | toc_imagetree_absolute_offset | no | ||
0x28 | 0x04 | FF FF FF FF | toc_unknown | no | ||
0x2C | 0x04 | FF FF FF FF | toc_fonttree_absolute_offset | no | ||
0x30 | 0x04 | 00 00 00 CC | toc_objecttree_absolute_offset | ObjectTree at 0xCC | ||
0x34 | 0x04 | FF FF FF FF | toc_animationtree_absolute_offset | no | ||
0x38 | 0x04 | 00 00 01 D4 | str_language_table_absolute_offset | languages at 0x1D4 | ||
0x3C | 0x04 | 00 00 00 00 | str_language_table_length | empty | ||
0x40 | 0x04 | 00 00 01 D4 | str_label_table_absolute_offset | labels at 0x1D4 | ||
0x44 | 0x04 | 00 00 00 1C | str_label_table_length | length 0x1C | ||
0x48 | 0x04 | 00 00 01 F0 | str_event_table_absolute_offset | events at 0x1F0 | ||
0x4C | 0x04 | 00 00 00 04 | str_event_table_length | length 0x4 | ||
0x50 | 0x04 | FF FF FF FF | ptr_language_table_absolute_offset | no | ||
0x54 | 0x04 | 00 00 00 00 | ptr_language_table_length | empty | ||
0x58 | 0x04 | FF FF FF FF | ptr_image_table_absolute_offset | no | ||
0x5C | 0x04 | 00 00 00 00 | ptr_image_table_length | empty | ||
0x60 | 0x04 | FF FF FF FF | ptr_model_table_absolute_offset | no | ||
0x64 | 0x04 | 00 00 00 00 | ptr_model_table_length | empty | ||
0x68 | 0x04 | FF FF FF FF | ptr_sound_table_absolute_offset | no | ||
0x6C | 0x04 | 00 00 00 00 | ptr_sound_table_length | empty | ||
0x70 | 0x04 | 00 00 01 CC | ptr_object_table_absolute_offset | object pointers at 0x1CC | ||
0x74 | 0x04 | 00 00 00 08 | ptr_object_table_length | size 0x8 | ||
0x78 | 0x04 | FF FF FF FF | ptr_animation_table_absolute_offset | no | ||
0x7C | 0x04 | 00 00 00 00 | ptr_animation_table_length | empty | ||
0x80 | 0x04 | FF FF FF FF | dat_image_table_absolute_offset | no | ||
0x84 | 0x04 | 00 00 00 00 | dat_image_table_length | empty | ||
0x88 | 0x04 | FF FF FF FF | dat_sound_table_absolute_offset | no | ||
0x8C | 0x04 | 00 00 00 00 | dat_sound_table_length | empty | ||
0x90 | 0x04 | FF FF FF FF | dat_model_table_absolute_offset | no | ||
0x94 | 0x04 | 00 00 00 00 | dat_model_table_length | empty | ||
0x98 | 0x04 | FF FF FF FF | dat_unknown_1 | |||
0x9C | 0x04 | FF FF FF FF | dat_unknown_2 | |||
0xA0 | 0x04 | FF FF FF FF | dat_unknown_3 | |||
TOC | ||||||
0xA4 | 0x04 | 01 01 00 00 | entry_type | MainTree | ||
0xA8 | 0x04 | 00 00 00 00 | entry_label_offset | sample | ||
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 | no parent | ||
0xC4 | 0x04 | 00 00 00 00 | toc_entry_unknown_1 | |||
0xC8 | 0x04 | 00 00 00 00 | toc_entry_unknown_2 | |||
0xCC | 0x04 | 08 00 00 00 | entry_type | ObjectTree | ||
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 | 0xCC-0x28 = parent is at 0xA4 (MainTree) | ||
0xEC | 0x04 | 00 00 00 00 | toc_entry_unknown_1 | |||
0xF0 | 0x04 | 00 00 00 00 | toc_entry_unknown_2 | |||
0xF4 | 0x01 | 08 01 00 00 | entry_type | Page | ||
0xF8 | 0x04 | 00 00 00 08 | entry_label_offset | root | ||
0xFC | 0x04 | 00 00 00 28 | entry_header_size | |||
0x100 | 0x04 | 00 00 00 4C | entry_size | |||
0x104 | 0x04 | 00 00 00 01 | 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 | 0xF4-0x28 = parent is at 0xCC (ObjectTree) | ||
0x114 | 0x04 | 00 00 00 00 | toc_entry_unknown_1 | |||
0x118 | 0x04 | 00 00 00 00 | toc_entry_unknown_2 | |||
0x11C | 0x04 | 01 11 00 00 | pageMode | |||
0x120 | 0x08 | FF FF 00 00 FF FF FF FF | pageOnInit | nothing | ||
0x128 | 0x08 | FF FF 00 00 FF FF FF FF | pageOnCancel | nothing | ||
0x130 | 0x08 | FF FF 00 00 FF FF FF FF | pageOnContext | nothing | ||
0x138 | 0x08 | FF FF 00 00 FF FF FF FF | pageOnActivate | nothing | ||
0x140 | 0x04 | 08 02 00 00 | entry_type | Plane | ||
0x144 | 0x04 | 00 00 00 10 | entry_label_offset | application | ||
0x148 | 0x04 | 00 00 00 28 | entry_header_size | |||
0x14C | 0x04 | 00 00 00 00 | entry_size | |||
0x150 | 0x04 | 00 00 00 00 | children_number | |||
0x154 | 0x04 | 00 00 00 00 | next_entry_offset | |||
0x158 | 0x04 | 00 00 00 00 | previous_entry_offset | |||
0x15C | 0x04 | 00 00 00 4C | parent_offset | 0x140-0x4C = parent is at 0xF4 (Page) | ||
0x160 | 0x04 | 00 00 00 00 | toc_entry_unknown_1 | |||
0x164 | 0x04 | 00 00 00 00 | toc_entry_unknown_2 | |||
0x168 | 0x04 | 00 00 00 00 | positionX | 0 | ||
0x16C | 0x04 | 00 00 00 00 | positionY | 0 | ||
0x170 | 0x04 | 00 00 00 00 | positionZ | 0 | ||
0x174 | 0x04 | 3F 80 00 00 | colorScaleR | 1 | ||
0x178 | 0x04 | 3F 80 00 00 | colorScaleG | 1 | ||
0x17C | 0x04 | 3F 80 00 00 | colorScaleB | 1 | ||
0x180 | 0x04 | 3F 80 00 00 | colorScaleA | 1 | ||
0x184 | 0x04 | 00 00 00 00 | sizeX | 0 | ||
0x188 | 0x04 | 00 00 00 00 | sizeY | 0 | ||
0x18C | 0x04 | 00 00 00 00 | sizeZ | 0 | ||
0x190 | 0x04 | 3F 80 00 00 | sizeScaleX | 1 | ||
0x194 | 0x04 | 3F 80 00 00 | sizeScaleY | 1 | ||
0x198 | 0x04 | 3F 80 00 00 | sizeScaleZ | 1 | ||
0x19C | 0x04 | 00 00 00 00 | anchorMode | 0x0 (center) | ||
0x1A0 | 0x08 | FF FF 00 00 FF FF FF FF | onInit | nothing | ||
0x1A8 | 0x04 | 00 00 00 00 | positionOverrideX | no | ||
0x1AC | 0x04 | 00 00 00 00 | positionOverrideY | no | ||
0x1B0 | 0x04 | 00 00 00 00 | positionOverrideZ | no | ||
0x1B4 | 0x04 | 00 00 00 00 | sizeOverrideX | no | ||
0x1B8 | 0x04 | 00 00 00 00 | sizeOverrideY | no | ||
0x1BC | 0x04 | 00 00 00 00 | sizeOverrideZ | no | ||
0x1C0 | 0x04 | FF FF 00 00 FF FF FF FF | planeImage | nothing | ||
0x1C8 | 0x04 | 00 00 00 00 | planeResizeMode | 0x0 | ||
PTR | objects | |||||
0x1CC | 0x04 | 00 00 00 F4 | First object (Page) at 0xF4 | |||
0x1D0 | 0x04 | 00 00 01 40 | Second object (Plane) at 0x140 | |||
STR | languages | |||||
0x1D4 | 0x00 | empty | ||||
labels | ||||||
0x1D4 | 0x07 | 73 61 6D 70 6C 65 00 | sample (null terminated) | |||
0x1DB | 0x01 | 00 | padding (aligned to 4 bytes boundary) | |||
0x1DC | 0x05 | 72 6F 6F 74 00 | root (null terminated) | |||
0x1E1 | 0x03 | 00 00 00 | padding (aligned to 4 bytes boundary) | |||
0x1E4 | 0x0C | 61 70 70 6C 69 63 61 74 69 6F 6E 00 | application (null terminated) | |||
events | ||||||
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 10 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 FF FF FF FF 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 00 00 00 6C 00 00 01 50 00 00 00 00 ÿÿÿÿ...l...P.... 000000B0 78 DA 75 CD C1 0D 80 20 0C 05 D0 5F 4F 1C 75 0B xÚuÍÁ.€ ..Ð_O.u. 000000C0 B6 D0 01 58 82 18 0F 24 28 44 19 C0 A1 BD 2B 04 ¶Ð.X‚..$(D.À¡½+. 000000D0 23 2A F0 92 9F 26 A5 B4 44 78 E3 3E 84 02 E6 73 #*ð’Ÿ&¥´Dxã>„.æs 000000E0 7A 95 39 FE CC 51 2C 77 4F D4 E6 A8 0B FB E2 CE z•9þÌQ,wOÔæ¨.ûâÎ 000000F0 5A 65 0D 82 36 FE CB 08 14 F4 FB 37 C9 BF 9F EE Ze.‚6þË..ôû7É¿Ÿî 00000100 23 53 7C 3F 00 1A 36 39 5B 3D 01 AB 31 0E 9E B4 #S|?..69[=.«1.ž´ 00000110 56 AB 51 3A 65 16 04 17 88 21 38 F3 V«Q:e...ˆ!8ó
- Changes
- 10 the compression setting for ZLIB
- FF FF FF FF weird
- 00 00 00 6C 00 00 01 50 00 00 00 00 the info about the compressed area that comes next (composed by: lenPacked, lenUnpacked, and lenLongestText)
- 78 DA ... the compressed area itself, includes the TOC, the pointer tables (PTR), and string tables (STR)