RCOXML Coding: Difference between revisions
m (→Measure units: ops) |
|||
Line 265: | Line 265: | ||
= RCOXML Structure = | = RCOXML Structure = | ||
Not all nodes below are required, and various object/anim entries are omitted. | This is a '''not-working''' example intended to place all together as an overview. Not all nodes below are required, and various object/anim entries are omitted. | ||
{{Boxcode|content=<syntaxhighlight lang="xml"> | {{Boxcode|content=<syntaxhighlight lang="xml"> | ||
<?xml version="1.0" encoding="iso-8859-1"?> | <?xml version="1.0" encoding="iso-8859-1"?> | ||
<!-- This XML representation of an RCO structure was generated by Rcomage v1.1.2 --> | <!-- This XML representation of an RCO structure was generated by Rcomage v1.1.2 --> | ||
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="psp" minFirmwareVer="1.5"> | <RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="psp" minFirmwareVer="1.5"> <!-- XML root element, generally does not need to be modified --> | ||
<MainTree name="sample"> | <MainTree name="sample"> <!-- root RCO node from which everything must descend from --> | ||
<VSMXFile name="main" src="main.vsmx"></VSMXFile> | <VSMXFile name="main" src="main.vsmx"></VSMXFile> <!-- attached UMD virtual machine instruction code, for UMD and some LFTV RCOs. Only one may exist in an RCO file --> | ||
<ImageTree> | <ImageTree> <!-- parent node from which all image resources descend from --> | ||
<Image name="texture" src="texture.gim" format="gim" compression="zlib" unknownByte="0" /> | <Image name="texture" src="texture.gim" format="gim" compression="zlib" unknownByte="0" /> | ||
</ImageTree> | </ImageTree> | ||
<FontTree> | <FontTree> <!-- parent node from which all fonts descend from --> | ||
<FontStyle name="fontstyle_default" unknownShort1="0x0" unknownShort2="0x0" unknownInt3="0x0" unknownInt4="0x41600000" /> | <FontStyle name="fontstyle_default" unknownShort1="0x0" unknownShort2="0x0" unknownInt3="0x0" unknownInt4="0x41600000" /> | ||
</FontTree> | </FontTree> | ||
<TextTree> | <TextTree> <!-- parent node from which all text language resources descend from --> | ||
<TextLang src="00_Japanese.xml" language="00_Japanese" format="utf16" /> | <TextLang src="00_Japanese.xml" language="00_Japanese" format="utf16" /> | ||
</TextTree> | </TextTree> | ||
<ModelTree> | <ModelTree> <!-- parent node from which all model resources descend from --> | ||
<Model name="page_model" src="page_model.gmo" format="gmo" compression="zlib" unknownByte="0" /> | <Model name="page_model" src="page_model.gmo" format="gmo" compression="zlib" unknownByte="0" /> | ||
</ModelTree> | </ModelTree> | ||
<SoundTree> | <SoundTree> <!-- parent node from which all sound resources descend from --> | ||
<Sound name="sound" src="sound.ch*.vag" format="vag" channels="2" /> | <Sound name="sound" src="sound.ch*.vag" format="vag" channels="2" /> | ||
</SoundTree> | </SoundTree> | ||
<ObjectTree> | <ObjectTree> <!-- parent node from which all object pages descend from --> | ||
<Page name="main_page" pageMode="0x111" pageOnInit="nothing" pageOnCancel="nothing" pageOnContext="nothing" pageOnActivate="nothing"> | <Page name="main_page" pageMode="0x111" pageOnInit="nothing" pageOnCancel="nothing" pageOnContext="nothing" pageOnActivate="nothing"> | ||
<Plane name="main_page_plane" ...standard object attributes here... planeImage="image:texture" planeResizeMode="0x0"> | <Plane name="main_page_plane" ...standard object attributes here... planeImage="image:texture" planeResizeMode="0x0"> | ||
Line 333: | Line 296: | ||
</Page> | </Page> | ||
</ObjectTree> | </ObjectTree> | ||
<AnimTree> | <AnimTree> <!-- parent node from which all animation sequences descend from --> | ||
<Animation name="main_page_fade"> | <Animation name="main_page_fade"> | ||
<Fade object="object:main_page_plane" duration="100" accelMode="0x0" transparency="1" /> | <Fade object="object:main_page_plane" duration="100" accelMode="0x0" transparency="1" /> | ||
Line 339: | Line 302: | ||
</AnimTree> | </AnimTree> | ||
</MainTree> | </MainTree> | ||
</RcoFile> | </RcoFile> | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
Revision as of 19:55, 16 December 2015
Description
RCOXML files are the XML descriptor files implicit inside Resource Container (RCO) files (.rco)
This RCOXML files doesnt exists inside the .rco container, tools like Rcomage extracts the info as XML as a representation of the data inside the .rco container
Are composed by tables, some of this tables works simply as an index of the contents inside the container (texts, sounds, languages), and others tables contains "pages" that builds the XMB items, animations, effects, dialog menues, selection windows, widgets, etc...
Note the name "page" here in wiki is used as a generic name for all types of pages, rcomage uses specific names for some types of pages wich purpose was identifyed, this names can vary between different versions of rcomage tool
RCOXML Contents (PS3)
There are 122 .rco files in PS3 firmware 4.76
filename.rco | RCOXML contents | notes | |||||||
---|---|---|---|---|---|---|---|---|---|
MainTree Name | ImageTree | FontTree | TextTree | ModelTree | SoundTree | ObjectTree | AnimTree | ||
ap_plugin.rco | ap_plugin | No | No | No | No | No | Yes | No | |
audioplayer_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
audioplayer_plugin_dummy.rco | sample | No | No | Yes | No | No | No | No | |
audioplayer_plugin_mini.rco | sample | No | No | Yes | No | No | Yes | No | |
audioplayer_plugin_util.rco | sample | No | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
auth_plugin.rco | auth_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
autodownload_plugin.rco | autodownload_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
autoupdateconf_plugin.rco | autoupdateconff_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
avc2_game_plugin.rco | sample | No | No | Yes | No | No | No | No | |
avc2_game_video_plugin.rco | sample | Yes (gim) | No | No | No | No | Yes | No | |
avc2_text_plugin.rco | tcgui | Yes (gim) | No | Yes | No | No | Yes | No | |
avc_game_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
avc_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
bdp_disccheck_plugin.rco | bdp_disccheck_plugin | No | No | Yes | No | No | Yes | No | |
bdp_plugin.rco | bdp_plugin | Yes (gim) | No | Yes | No | No | Yes | Yes | |
bdp_storage_plugin.rco | bdp_storage_plugin | No | No | Yes | No | No | Yes | No | |
campaign_plugin.rco | campaign_plugin | Yes (gim, png) | No | Yes | No | No | Yes | No | |
category_setting_plugin.rco | category_setting_plugin | Yes (gim) | No | Yes | No | No | No | No | |
checker_plugin.rco | checker | No | No | No | No | No | Yes | No | Associated .sprx has a different name. |
closedcaption_config_plugin.rco | closedcaption_config_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
comboplay_plugin.rco | comboplay_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
custom_render_plugin.rco | custom_render_plugin | Yes (gim) | No | No | No | No | Yes | Yes | |
data_copy_plugin.rco | sample | No | No | Yes | No | No | Yes | No | |
deviceconf_plugin.rco | deviceconf_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
dlna_plugin.rco | dlna | Yes (gim) | No | Yes | No | No | Yes | No | |
download_plugin.rco | download | Yes (gim) | No | Yes | No | No | Yes | No | |
dtcpip_util.rco | dtcpip_util | No | No | Yes | No | No | Yes | No | |
edy_plugin.rco | edy_plugin | Yes (gim) | No | Yes | No | Yes | Yes | No | |
eula_cddb_plugin.rco | eula_cddb_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
eula_hcopy_plugin.rco | eula_hcopy | Yes (gim) | No | Yes | No | No | Yes | No | |
eula_net_plugin.rco | regcam_plugin | Yes (gim, png, jpg) | No | Yes | No | Yes | Yes | No | |
explore_category_friend.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_game.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_music.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_network.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_photo.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_psn.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_sysconf.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_tv.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_user.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_video.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_plugin_ft.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_plugin_full.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
explore_plugin_game.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_plugin_np.rco | explore_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
filecopy_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
friendim_plugin.rco | friendim | Yes (gim) | No | Yes | No | No | Yes | Yes | |
friendim_plugin_game.rco | friendim | Yes (gim) | No | Yes | No | No | Yes | Yes | Associated .sprx has a different name. |
friendml_plugin.rco | friendml_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
friendml_plugin_game.rco | friendml_plugin | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
friendtrophy_plugin.rco | friendtrophy_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
friendtrophy_plugin_game.rco | friendtrophy_plugin | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
game_ext_plugin.rco | game_ext_plugin | Yes (gim, png) | No | Yes | No | No | Yes | No | |
game_indicator_plugin.rco | user_info_plugin | Yes (gim) | No | No | No | No | Yes | No | |
game_plugin.rco | game_plugin | No | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
gamedata_plugin.rco | gamedata_plugin | No | No | Yes | No | No | Yes | No | |
gamelib_plugin.rco | gamelib_plugin | Yes (gim) | No | No | No | No | Yes | Yes | |
gameupdate_plugin.rco | sample | No | No | Yes | No | No | Yes | No | |
hknw_plugin.rco | hknw_plugin | Yes (gim) | Yes | Yes | No | No | Yes | No | |
idle_plugin.rco | idle | No | No | No | No | No | Yes | No | |
impose_plugin.rco | impose_plugin | Yes (gim) | No | Yes | No | No | Yes | Yes | Associated .sprx has a different name. |
ingame_manual_plugin.rco | ingame_manual | No | No | Yes | No | No | Yes | No | |
kensaku_plugin.rco | kensaku | Yes (gim) | No | Yes | No | No | Yes | No | |
msgdialog_plugin.rco | msgdialog_plugin | No | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
mtpinitiator_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
musicbrowser_plugin.rco | sample | No | No | No | No | No | Yes | No | |
nas_plugin.rco | nas_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
netconf_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
newstore_effect.rco | skeleton_plugin | No | No | No | No | No | No | No | Empty file. |
newstore_plugin.rco | newstore_plugin | Yes (gim, png, jpg) | No | Yes | No | No | Yes | No | |
np_eula_plugin.rco | npeula | Yes (gim) | No | Yes | No | No | Yes | No | |
np_matching_plugin.rco | np_matching_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
np_multisignin_plugin.rco | np_multisignin_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
np_sns_plugin.rco | npsns | Yes (gim) | No | Yes | No | No | Yes | No | |
np_trophy_ingame.rco | np_achiev | Yes (gim) | No | Yes | No | No | Yes | No | |
np_trophy_plugin.rco | np_achiev | Yes (gim) | No | Yes | No | No | Yes | No | |
npsignin_plugin.rco | npsignin_plugin | Yes (gim) | No | Yes | No | No | Yes | Yes | |
osk_plugin.rco | sample | Yes (gim) | No | No | No | Yes | Yes | No | |
oskfullkeypanel_plugin.rco | ime_osk_base_resouce | Yes (gim) | No | Yes | No | No | Yes | No | |
oskpanel_plugin.rco | ime_osk_base_resouce | Yes (gim) | No | Yes | No | No | Yes | No | |
pesm_plugin.rco | pesm | No | No | No | No | No | Yes | No | |
photo_network_sharing_plugin.rco | pesm | Yes (gim) | No | Yes | No | No | Yes | No | |
photolist_plugin.rco | sample | No | No | No | No | No | Yes | No | |
photoupload_plugin.rco | dlna | Yes (gim) | No | Yes | No | No | Yes | No | |
photoviewer_plugin.rco | photoviewer_plugin | Yes (gim, png) | No | Yes | No | No | Yes | No | |
playlist_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
podl_plugin.rco | podl_plugin | No | No | No | No | No | Yes | No | |
poweroff_plugin.rco | poweroff | No | No | Yes | No | No | Yes | No | |
premo_plugin.rco | premo_plugin | Yes (gim) | No | Yes | No | No | Yes | Yes | |
print_plugin.rco | print_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
profile_plugin.rco | profile_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
profile_plugin_mini.rco | profile_plugin_mini | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
ps3_savedata_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
ps3_savedata_plugin_game_mini.rco | sample | No | No | Yes | No | No | Yes | No | |
rec_plugin.rco | rec_plugin | No | No | No | No | No | Yes | No | |
regcam_plugin.rco | regcam_plugin | Yes (gim, png, jpg) | No | Yes | No | Yes | Yes | No | |
remotedownload_plugin.rco | remotedownload | No | No | Yes | No | No | Yes | No | |
sacd_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | Yes | |
scenefolder_plugin.rco | sample | No | No | No | No | No | Yes | No | |
screenshot_plugin.rco | screenshot_plugin | No | No | Yes | No | No | Yes | No | |
search_service.rco | search_service | No | No | Yes | No | No | No | No | Associated .sprx has a different name. |
software_update_plugin.rco | software_update_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
soundvisualizer_plugin.rco | soundvisualizer | Yes (gim) | No | Yes | No | No | Yes | No | |
strviewer_plugin.rco | strviewer | No | No | Yes | No | No | Yes | No | |
subdisplay_plugin.rco | ap_plugin | No | No | No | No | No | Yes | No | Associated .sprx has a different name. |
sv_pseudoaudioplayer_plugin.rco | sv_pseudoaudioplayer | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
sysconf_plugin.rco | sysconf_plugin | Yes (gim) | Yes | Yes | No | No | Yes | No | |
system_plugin.rco | system_plugin | Yes (gim) | No | Yes | No | Yes | Yes | Yes | Associated .sprx has a different name. |
thumthum_plugin.rco | sample | No | No | Yes | No | No | Yes | No | |
upload_util.rco | upload_util | Yes (gim) | No | Yes | No | No | Yes | No | |
user_info_plugin.rco | user_info_plugin | No | No | Yes | No | No | Yes | No | |
user_plugin.rco | user | Yes (gim) | No | Yes | No | No | Yes | No | |
videoeditor_plugin.rco | skeleton_plugin | Yes (gim, png, jpg) | No | Yes | No | Yes | Yes | No | |
videoplayer_plugin.rco | videoplayer | Yes (gim) | No | Yes | No | No | Yes | No | |
videoplayer_util.rco | videoplayer | No | No | Yes | No | No | Yes | No | |
vmc_savedata_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
wboard_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
webbrowser_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
webrender_plugin.rco | sample | Yes (gim) | No | Yes | No | No | Yes | No | |
xmb_ingame.rco | xmb_plugin | Yes (gim) | No | Yes | No | No | Yes | No | |
xmb_plugin_normal.rco | xmb_plugin | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
ycon_manual_plugin.rco | ycon_plugin | Yes (gim) | No | Yes | No | No | Yes | No |
- VSMXfile is not included in the table above because none of the PS3 .rco files includes them
RCOXML Structure
This is a not-working example intended to place all together as an overview. Not all nodes below are required, and various object/anim entries are omitted.
Code Sample
MainTree
All RCOXML files starts with the tag:
<MainTree name="label">
MainTree represents the root of the container, so it seems the label is the name of the .rco container and is working as an identifyer of it
- Is unknown how this labels works and his purpose, but follows a few rules:
- The same label can be used by several .rco's that shares functions
- This label names doesnt appears in the associated .sprx
- Other .rco files from previous firmwares (not present in latest firmwares) using the MainTree name sample
- xai_plugin.rco
- In PSP firmware there are also some .rco files using the MainTree name sample
VSMXFile
None of the PS3 rco's uses a VSMXFile
ImageTree
FontTree
Only used in PS3, only used in sysconf_plugin.rco and hknw_plugin.rco
- sysconf_plugin.rco example:
Code Sample
- hknw_plugin.rco example:
Code Sample
TextTree
ModelTree
None of the PS3 rco's uses a ModelTree
SoundTree
ObjectTree
- in this page under the section "ObjectTree" are explained what seems to be a few golden rules related to:
- object display priority
- children objects inherited attributes from parent object
AnimTree
Event types
native
Loads a predefined set of actions from the embedded code in the associated .sprx
object2
Loads an object from ObjectTree
anim
Loads an animation from AnimTree
script
Loads the VSMX script from VSMXFile
Measure units
Positions, in pixels with "world coordinates" (0,0,0 of the x,y,z axis) in center of the screen
Sizes, in pixels, negative numbers mirrors the image
Resizes, in percentage in a scale from 0 up to 1, negative numbers mirrors the image
Colors, in RGBA (red, green, blue, alpha) in a scale from 0 up to 1, where 1 represents the max value posible of 255
Times, in miliseconds, where 1000 is one second
Angles, in radians (for rotations over the x,y,z axis), where radians=(π/180)*degrees (and degrees=(180/π)*radians), as example for a full circunference of 360º degrees: radians=(3.14/180)*360=6.28 so... 360º degrees = 6.28 radians
|