Editing Resource Container (RCO)
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
=Description= | =Description= | ||
The file extension in PSP and PS3 is '''RCO''' that seems to be the acronym of '''R'''esource '''C'''ontainer '''O''' | The file extension in PSP and PS3 is '''RCO''' that seems to be the acronym of '''R'''esource '''C'''ontainer '''O'''bjet | ||
The file signature (aka [https://en.wikipedia.org/wiki/Magic_number_(programming) magic number]) from PSP (in little endian) is '''PRF''' that seems to be the acronym of '''P'''laystation '''R'''esource '''F'''ile | The file signature (aka [https://en.wikipedia.org/wiki/Magic_number_(programming) magic number]) from PSP (in little endian) is '''PRF''' that seems to be the acronym of '''P'''laystation '''R'''esource '''F'''ile | ||
Line 8: | Line 8: | ||
==Contents== | ==Contents== | ||
*RCO contents (See [[Multimedia Formats and Tools]]): <!--and see rcomage miscmap.ini for a list of the supported formats--> | *RCO contents (See [[Multimedia Formats and Tools]]): <!--and see rcomage miscmap.ini for a list of the supported formats--> | ||
Text for all [[Template: | Text for all [[Template:XMB_languages|languages]], textures, sounds (for cursor navigation, trophy unlocking, etc...) and models | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 26: | Line 26: | ||
! Toc trees !! Toc compression !! Other Notes | ! Toc trees !! Toc compression !! Other Notes | ||
|- | |- | ||
| 0x55 || {{icon content psp|50px}} 0.6.5 || pre-retail || 9 || uncompressed || archaic rco format, header is 16 bytes smaller | |||
| | |||
|- | |- | ||
| 0x70 || {{icon content psp|50px}} 1.00 || 2004 / 12 / 12 || 10 || uncompressed || | |||
| | |||
|- | |- | ||
| 0x71 || {{icon content psp|50px}} 1.50~2.50 || 2005 / 3 / 24 || 10 || uncompressed || normal toc up to this version | |||
| | |||
|- | |- | ||
| 0x90 || {{icon content psp|50px}} 2.60 || 2005 / 11 / 29 || 10 || || zlib compressed toc implemented | |||
| | |||
|- | |- | ||
| 0x95 || {{icon content psp|50px}} 2.70~2.71 || 2006 / 4 / 25 || 10 || || rlz compressed toc implemented | |||
| | |||
|- | |- | ||
| 0x96 || {{icon content psp|50px}} 2.80~3.40 || 2006 / 7 / 27 || 10 || || the toc seems to be compressed in parts | |||
| | |||
|- | |- | ||
| 0x97 || {{icon content ps3|50px}} 1.00~1.54 || 2006 / 11 / 11 || 10 || || | |||
| | |||
|- | |- | ||
| | | 0x100 || {{icon content psp|50px}} 3.50~6.61 || 2007 / 5 / 31 || 10 || || | ||
|- | |- | ||
| 0x102 || {{icon content ps3|50px}} 1.60~1.70 || 2007 / 3 / 22 || 10 || || | |||
| | |||
|- | |- | ||
| 0x104 || {{icon content ps3|50px}} 1.80~1.82 || 2007 / 5 / 24 || 10 || || | |||
| | |||
|- | |- | ||
| 0x105 || {{icon content ps3|50px}} 1.90~1.94 || 2007 / 7 / 24 || 10 || || | |||
| | |||
|- | |- | ||
| 0x106 || {{icon content ps3|50px}} 2.00~2.17 || 2007 / 11 / 8 || 10 || || | |||
| | |||
|- | |- | ||
| 0x107 || {{icon content ps3|50px}} 2.20~2.80 || 2008 / 3 / 25 || 10 || || | |||
| | |||
|- | |- | ||
| 0x108 || {{icon content ps3|50px}} 3.00~3.01 || 2009 / 9 / 1 || 10 || || | |||
| | |||
|- | |- | ||
| 0x110 || {{icon content ps3|50px}} 3.10~3.74 || 2009 / 11 / 19 || 10 || || | |||
| | |||
|- | |- | ||
| 0x120 || {{icon content ps3|50px}} 4.00~4.25 || 2011 / 11 / 29 || 10 || || | |||
| | |||
|- | |- | ||
| 0x130 || {{icon content ps3|50px}} 4.30~4.76 || 2012 / 10 / 24 || 10 || || | |||
| | |||
| | |||
|} | |} | ||
Line 100: | Line 75: | ||
| 0x08 || 0x04 || <abbr title="Always seems to be 0x00000000">00 00 00 00</abbr> || {{cellcolors|#ff7777}} <abbr title="prf_minor_version ?">''prf_unk''</abbr> || | | 0x08 || 0x04 || <abbr title="Always seems to be 0x00000000">00 00 00 00</abbr> || {{cellcolors|#ff7777}} <abbr title="prf_minor_version ?">''prf_unk''</abbr> || | ||
|-{{cellcolors|#666666|#ffffff}} | |-{{cellcolors|#666666|#ffffff}} | ||
| 0x0C || 0x04 || 00 00 00 00 || <abbr title="compress everything except the header and '''dat''' data tables to store files">'''prf_compress'''</abbr> || 0x00= | | 0x0C || 0x04 || 00 00 00 00 || <abbr title="compress everything except the header and '''dat''' data tables to store files">'''prf_compress'''</abbr> || 0x00=uncompressed, 0x10=ZLIB, 0x20=RLZ, see {{talk}} page | ||
|-{{cellcolors|#7777ff}} | |-{{cellcolors|#7777ff}} | ||
| 0x10 || 0x04 || 00 00 00 A4 || '''toc_main_tree_offset''' || | | 0x10 || 0x04 || 00 00 00 A4 || '''toc_main_tree_offset''' || | ||
Line 202: | Line 177: | ||
*And '''MainTree-ObjectTree-Page''' (because the animation needs to be linked to an object by using a reference, otherway rcomage will return an error when trying to compile it) | *And '''MainTree-ObjectTree-Page''' (because the animation needs to be linked to an object by using a reference, otherway rcomage will return an error when trying to compile it) | ||
}} | }} | ||
==String tables== | |||
This area stores the text strings used by the TOC entries, is composed by 3 tables in this order: | |||
*'''text_string_table''' (to store localized language texts from TextTree entries) | |||
*'''label_string_table''' (to store the labels of all the entries that uses labels) | |||
*'''event_string_table''' (to store the values of the attributes used by some entries, either "native" or "script" events) | |||
*Strings are null terminated (ends in 0x00) | |||
*Strings are aligned to 4 bytes boundary (padding at the end of every string when needed) | |||
==Pointer tables== | ==Pointer tables== | ||
Line 216: | Line 201: | ||
*The other "trees" children that doesnt uses a pointer table are: MainTree (is not needed because its children are the other "trees"), ScriptTree (because doesnt have children), and FontTree because ?????<!--i cant imagine why but there must be a good reason--> | *The other "trees" children that doesnt uses a pointer table are: MainTree (is not needed because its children are the other "trees"), ScriptTree (because doesnt have children), and FontTree because ?????<!--i cant imagine why but there must be a good reason--> | ||
*The existence of this area with pointers seems to be related with the fact that is posible to use a whole file compression (by setting it in the header at offset 0x0C) that compresses the TOC. Also when loading the .RCO file in the RAM of the console probably is "cropped" in parts, the TOC is decompresed and kept in a memory area with the other TOC's from the other RCO files (for fast selective access to the .RCO contents, and for performance) and is posible to read the relative offsets directlly from the TOC's and deprecate the absolute offsets from the pointers tables<!--or something like that, if someone can explain it please help rewriting this--> | *The existence of this area with pointers seems to be related with the fact that is posible to use a whole file compression (by setting it in the header at offset 0x0C) that compresses the TOC. Also when loading the .RCO file in the RAM of the console probably is "cropped" in parts, the TOC is decompresed and kept in a memory area with the other TOC's from the other RCO files (for fast selective access to the .RCO contents, and for performance) and is posible to read the relative offsets directlly from the TOC's and deprecate the absolute offsets from the pointers tables<!--or something like that, if someone can explain it please help rewriting this--> | ||
==Data tables== | ==Data tables== | ||
Line 251: | Line 226: | ||
|} | |} | ||
{{File Formats}} | {{File Formats}} | ||
<noinclude>[[Category:Main]]</noinclude> | <noinclude>[[Category:Main]]</noinclude> |