RCOXML Coding: Difference between revisions
(→Measure units: angles are in radians) |
|||
(28 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Description= | =Description= | ||
RCOXML | An RCOXML file is a XML file that represents the contents of a RCO file. This RCOXML files doesnt exists inside the RCO file (are just a representation of it). In the compilation enviroment used officially by sony this RCOXML files "should" work as a "pre-build" layout, contains all the info and settings needed to build an RCO file | ||
Tools like [[Rcomage]] generates this RCOXML files that can be used to rebuild the RCO, or to build a custom RCO from scratch, this RCOXML files generated by rcomage "should" be pretty similar to the officials because all the info is based in the TOC area of the RCO that is structured as an XML so the conversion from TOC to XML format is direct (also, rcomage adds some info for rebuilding purposes that is not part of the TOC), see [[Resource Container (RCO)]] | |||
{{RCOXML contents PS3}} | |||
= 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|code=<syntaxhighlight lang="xml"> | |||
<?xml version="1.0" encoding="iso-8859-1"?> | |||
<!-- 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"> <!-- XML root element, generally does not need to be modified --> | |||
<MainTree name="sample"> <!-- root RCO node from which everything must descend from --> | |||
<VSMXFile name="main" src="main.vsmx"></VSMXFile> <!-- attached virtual machine instruction code, only one may exist in an RCO file --> | |||
<ImageTree> <!-- parent node from which all image resources descend from --> | |||
<Image name="texture" src="texture.gim" format="gim" compression="zlib" unknownByte="0" /> | |||
</ImageTree> | |||
<FontTree> <!-- parent node from which all fonts descend from --> | |||
<FontStyle name="fontstyle_default" unknownShort1="0x0" unknownShort2="0x0" unknownInt3="0x0" unknownInt4="0x41600000" /> | |||
</FontTree> | |||
<TextTree> <!-- parent node from which all text language resources descend from --> | |||
<TextLang src="00_Japanese.xml" language="00_Japanese" format="utf16" /> | |||
</TextTree> | |||
<ModelTree> <!-- parent node from which all model resources descend from --> | |||
<Model name="page_model" src="page_model.gmo" format="gmo" compression="zlib" unknownByte="0" /> | |||
</ModelTree> | |||
<SoundTree> <!-- parent node from which all sound resources descend from --> | |||
<Sound name="sound" src="sound.ch*.vag" format="vag" channels="2" /> | |||
</SoundTree> | |||
<ObjectTree> <!-- parent node from which all object pages descend from --> | |||
<Page name="main_page" pageMode="0x111" pageOnInit="event:script:/main/onInitMainPage" pageOnCancel="nothing" pageOnContext="nothing" pageOnActivate="nothing"> | |||
<Plane name="main_page_plane" ...standard object attributes here... planeImage="image:texture" planeResizeMode="0x0"> | |||
<ModelObject name="main_page_model" ...standard object attributes here... modelobjectModel="model:page_model"></ModelObject> | |||
<Action name="go" actionText="text:msg_go"></Action> | |||
</Plane> | |||
</Page> | |||
</ObjectTree> | |||
<AnimTree> <!-- parent node from which all animation sequences descend from --> | |||
<Animation name="main_page_fade"> | |||
<Fade object="object:main_page_plane" duration="100" accelMode="0x0" transparency="1" /> | |||
<FireEvent event="anim:main_page_fade" /> | |||
</Animation> | |||
</AnimTree> | |||
</MainTree> | |||
</RcoFile> | |||
</syntaxhighlight>}} | |||
==MainTree== | ==MainTree== | ||
Line 309: | Line 55: | ||
**The same label can be used by several .rco's that shares functions | **The same label can be used by several .rco's that shares functions | ||
**This label names doesnt appears in the associated .sprx | **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=== | ===VSMXFile=== | ||
None of the PS3 rco's uses a VSMXFile | None of the PS3 rco's uses a VSMXFile. But some PSP .rco's uses it | ||
*rough explain of how it works | |||
**The purpose of this script is to communicate with the associated module/sprx, the code inside the script is [[PlayStation JavaScript]] based (see also [[VSMX]] format) and it can call functions with parameters from the module/sprx. It works as a simple way to store predefined actions for the .sprx inside the .rco with a bit of code control involved. The [[RCOXML Objects]] captures the button presses from the controller and based on them loads the script using the buttons as parameters, then the code inside the script is processed and triggers the .sprx | |||
**An script can contain several different actions (are actually .js code functions) and his names are the same than the action names used in [[RCOXML Objects]], as example: '''OnFocusRight''' (action triggered when moving right in the controller) | |||
===ImageTree=== | ===ImageTree=== | ||
===FontTree=== | |||
Only used in PS3, only used in sysconf_plugin.rco and hknw_plugin.rco | |||
===TextTree=== | ===TextTree=== | ||
Line 328: | Line 85: | ||
===AnimTree=== | ===AnimTree=== | ||
{{File Formats}} | {{File Formats}} | ||
<noinclude>[[Category:Main]]</noinclude> | <noinclude>[[Category:Main]]</noinclude> |
Latest revision as of 16:56, 11 February 2022
Description[edit | edit source]
An RCOXML file is a XML file that represents the contents of a RCO file. This RCOXML files doesnt exists inside the RCO file (are just a representation of it). In the compilation enviroment used officially by sony this RCOXML files "should" work as a "pre-build" layout, contains all the info and settings needed to build an RCO file
Tools like Rcomage generates this RCOXML files that can be used to rebuild the RCO, or to build a custom RCO from scratch, this RCOXML files generated by rcomage "should" be pretty similar to the officials because all the info is based in the TOC area of the RCO that is structured as an XML so the conversion from TOC to XML format is direct (also, rcomage adds some info for rebuilding purposes that is not part of the TOC), see Resource Container (RCO)
filename | name | VSMXFile | ImageTree | FontTree | TextTree | ModelTree | SoundTree | ObjectTree | AnimTree | Notes |
---|---|---|---|---|---|---|---|---|---|---|
ap_plugin.rco | ap_plugin | No | No | No | No | No | No | Yes | No | |
audioplayer_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
audioplayer_plugin_dummy.rco | sample | No | No | No | Yes | No | No | No | No | |
audioplayer_plugin_mini.rco | sample | No | No | No | Yes | No | No | Yes | No | |
audioplayer_plugin_util.rco | sample | No | No | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
auth_plugin.rco | auth_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
autodownload_plugin.rco | autodownload_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
autoupdateconf_plugin.rco | autoupdateconff_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
avc2_game_plugin.rco | sample | No | No | No | Yes | No | No | No | No | |
avc2_game_video_plugin.rco | sample | No | Yes (gim) | No | No | No | No | Yes | No | |
avc2_text_plugin.rco | tcgui | No | Yes (gim) | No | Yes | No | No | Yes | No | |
avc_game_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
avc_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
bdp_disccheck_plugin.rco | bdp_disccheck_plugin | No | No | No | Yes | No | No | Yes | No | |
bdp_plugin.rco | bdp_plugin | No | Yes (gim) | No | Yes | No | No | Yes | Yes | |
bdp_storage_plugin.rco | bdp_storage_plugin | No | No | No | Yes | No | No | Yes | No | |
campaign_plugin.rco | campaign_plugin | No | Yes (gim, png) | No | Yes | No | No | Yes | No | |
category_setting_plugin.rco | category_setting_plugin | No | Yes (gim) | No | Yes | No | No | No | No | |
checker_plugin.rco | checker | No | No | No | No | No | No | Yes | No | Associated .sprx has a different name. |
closedcaption_config_plugin.rco | closedcaption_config_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
comboplay_plugin.rco | comboplay_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
custom_render_plugin.rco | custom_render_plugin | No | Yes (gim) | No | No | No | No | Yes | Yes | |
data_copy_plugin.rco | sample | No | No | No | Yes | No | No | Yes | No | |
deviceconf_plugin.rco | deviceconf_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
dlna_plugin.rco | dlna | No | Yes (gim) | No | Yes | No | No | Yes | No | |
download_plugin.rco | download | No | Yes (gim) | No | Yes | No | No | Yes | No | |
dtcpip_util.rco | dtcpip_util | No | No | No | Yes | No | No | Yes | No | |
edy_plugin.rco | edy_plugin | No | Yes (gim) | No | Yes | No | Yes | Yes | No | |
eula_cddb_plugin.rco | eula_cddb_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
eula_hcopy_plugin.rco | eula_hcopy | No | Yes (gim) | No | Yes | No | No | Yes | No | |
eula_net_plugin.rco | regcam_plugin | No | Yes (gim, png, jpg) | No | Yes | No | Yes | Yes | No | |
explore_category_friend.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_game.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_music.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_network.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_photo.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_psn.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_sysconf.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_tv.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_user.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_category_video.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_plugin_ft.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_plugin_full.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
explore_plugin_game.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
explore_plugin_np.rco | explore_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
filecopy_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
friendim_plugin.rco | friendim | No | Yes (gim) | No | Yes | No | No | Yes | Yes | |
friendim_plugin_game.rco | friendim | No | Yes (gim) | No | Yes | No | No | Yes | Yes | Associated .sprx has a different name. |
friendml_plugin.rco | friendml_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
friendml_plugin_game.rco | friendml_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
friendtrophy_plugin.rco | friendtrophy_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
friendtrophy_plugin_game.rco | friendtrophy_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
game_ext_plugin.rco | game_ext_plugin | No | Yes (gim, png) | No | Yes | No | No | Yes | No | |
game_indicator_plugin.rco | user_info_plugin | No | Yes (gim) | No | No | No | No | Yes | No | |
game_plugin.rco | game_plugin | No | No | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
gamedata_plugin.rco | gamedata_plugin | No | No | No | Yes | No | No | Yes | No | |
gamelib_plugin.rco | gamelib_plugin | No | Yes (gim) | No | No | No | No | Yes | Yes | |
gameupdate_plugin.rco | sample | No | No | No | Yes | No | No | Yes | No | |
hknw_plugin.rco | hknw_plugin | No | Yes (gim) | Yes | Yes | No | No | Yes | No | |
idle_plugin.rco | idle | No | No | No | No | No | No | Yes | No | |
impose_plugin.rco | impose_plugin | No | Yes (gim) | No | Yes | No | No | Yes | Yes | Associated .sprx has a different name. |
ingame_manual_plugin.rco | ingame_manual | No | No | No | Yes | No | No | Yes | No | |
kensaku_plugin.rco | kensaku | No | Yes (gim) | No | Yes | No | No | Yes | No | |
msgdialog_plugin.rco | msgdialog_plugin | No | No | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
mtpinitiator_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
musicbrowser_plugin.rco | sample | No | No | No | No | No | No | Yes | No | |
nas_plugin.rco | nas_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
netconf_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
newstore_effect.rco | skeleton_plugin | No | No | No | No | No | No | No | No | Empty file. |
newstore_plugin.rco | newstore_plugin | No | Yes (gim, png, jpg) | No | Yes | No | No | Yes | No | |
np_eula_plugin.rco | npeula | No | Yes (gim) | No | Yes | No | No | Yes | No | |
np_matching_plugin.rco | np_matching_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
np_multisignin_plugin.rco | np_multisignin_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
np_sns_plugin.rco | npsns | No | Yes (gim) | No | Yes | No | No | Yes | No | |
np_trophy_ingame.rco | np_achiev | No | Yes (gim) | No | Yes | No | No | Yes | No | |
np_trophy_plugin.rco | np_achiev | No | Yes (gim) | No | Yes | No | No | Yes | No | |
npsignin_plugin.rco | npsignin_plugin | No | Yes (gim) | No | Yes | No | No | Yes | Yes | |
osk_plugin.rco | sample | No | Yes (gim) | No | No | No | Yes | Yes | No | |
oskfullkeypanel_plugin.rco | ime_osk_base_resouce | No | Yes (gim) | No | Yes | No | No | Yes | No | |
oskpanel_plugin.rco | ime_osk_base_resouce | No | Yes (gim) | No | Yes | No | No | Yes | No | |
pesm_plugin.rco | pesm | No | No | No | No | No | No | Yes | No | |
photo_network_sharing_plugin.rco | pesm | No | Yes (gim) | No | Yes | No | No | Yes | No | |
photolist_plugin.rco | sample | No | No | No | No | No | No | Yes | No | |
photoupload_plugin.rco | dlna | No | Yes (gim) | No | Yes | No | No | Yes | No | |
photoviewer_plugin.rco | photoviewer_plugin | No | Yes (gim, png) | No | Yes | No | No | Yes | No | |
playlist_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
podl_plugin.rco | podl_plugin | No | No | No | No | No | No | Yes | No | |
poweroff_plugin.rco | poweroff | No | No | No | Yes | No | No | Yes | No | |
premo_plugin.rco | premo_plugin | No | Yes (gim) | No | Yes | No | No | Yes | Yes | |
print_plugin.rco | print_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
profile_plugin.rco | profile_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
profile_plugin_mini.rco | profile_plugin_mini | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
ps3_savedata_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
ps3_savedata_plugin_game_mini.rco | sample | No | No | No | Yes | No | No | Yes | No | |
rec_plugin.rco | rec_plugin | No | No | No | No | No | No | Yes | No | |
regcam_plugin.rco | regcam_plugin | No | Yes (gim, png, jpg) | No | Yes | No | Yes | Yes | No | |
remotedownload_plugin.rco | remotedownload | No | No | No | Yes | No | No | Yes | No | |
sacd_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | Yes | |
scenefolder_plugin.rco | sample | No | No | No | No | No | No | Yes | No | |
screenshot_plugin.rco | screenshot_plugin | No | No | No | Yes | No | No | Yes | No | |
search_service.rco | search_service | No | No | No | Yes | No | No | No | No | Associated .sprx has a different name. |
software_update_plugin.rco | software_update_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
soundvisualizer_plugin.rco | soundvisualizer | No | Yes (gim) | No | Yes | No | No | Yes | No | |
strviewer_plugin.rco | strviewer | No | No | No | Yes | No | No | Yes | No | |
subdisplay_plugin.rco | ap_plugin | No | No | No | No | No | No | Yes | No | Associated .sprx has a different name. |
sv_pseudoaudioplayer_plugin.rco | sv_pseudoaudioplayer | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
sysconf_plugin.rco | sysconf_plugin | No | Yes (gim) | Yes | Yes | No | No | Yes | No | |
system_plugin.rco | system_plugin | No | Yes (gim) | No | Yes | No | Yes | Yes | Yes | Associated .sprx has a different name. |
thumthum_plugin.rco | sample | No | No | No | Yes | No | No | Yes | No | |
upload_util.rco | upload_util | No | Yes (gim) | No | Yes | No | No | Yes | No | |
user_info_plugin.rco | user_info_plugin | No | No | No | Yes | No | No | Yes | No | |
user_plugin.rco | user | No | Yes (gim) | No | Yes | No | No | Yes | No | |
videoeditor_plugin.rco | skeleton_plugin | No | Yes (gim, png, jpg) | No | Yes | No | Yes | Yes | No | |
videoplayer_plugin.rco | videoplayer | No | Yes (gim) | No | Yes | No | No | Yes | No | |
videoplayer_util.rco | videoplayer | No | No | No | Yes | No | No | Yes | No | |
vmc_savedata_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
wboard_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
webbrowser_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
webrender_plugin.rco | sample | No | Yes (gim) | No | Yes | No | No | Yes | No | |
xmb_ingame.rco | xmb_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | |
xmb_plugin_normal.rco | xmb_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No | Associated .sprx has a different name. |
ycon_manual_plugin.rco | ycon_plugin | No | Yes (gim) | No | Yes | No | No | Yes | No |
RCOXML Structure[edit | edit source]
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.
<?xml version="1.0" encoding="iso-8859-1"?> <!-- 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"> <!-- XML root element, generally does not need to be modified --> <MainTree name="sample"> <!-- root RCO node from which everything must descend from --> <VSMXFile name="main" src="main.vsmx"></VSMXFile> <!-- attached virtual machine instruction code, only one may exist in an RCO file --> <ImageTree> <!-- parent node from which all image resources descend from --> <Image name="texture" src="texture.gim" format="gim" compression="zlib" unknownByte="0" /> </ImageTree> <FontTree> <!-- parent node from which all fonts descend from --> <FontStyle name="fontstyle_default" unknownShort1="0x0" unknownShort2="0x0" unknownInt3="0x0" unknownInt4="0x41600000" /> </FontTree> <TextTree> <!-- parent node from which all text language resources descend from --> <TextLang src="00_Japanese.xml" language="00_Japanese" format="utf16" /> </TextTree> <ModelTree> <!-- parent node from which all model resources descend from --> <Model name="page_model" src="page_model.gmo" format="gmo" compression="zlib" unknownByte="0" /> </ModelTree> <SoundTree> <!-- parent node from which all sound resources descend from --> <Sound name="sound" src="sound.ch*.vag" format="vag" channels="2" /> </SoundTree> <ObjectTree> <!-- parent node from which all object pages descend from --> <Page name="main_page" pageMode="0x111" pageOnInit="event:script:/main/onInitMainPage" pageOnCancel="nothing" pageOnContext="nothing" pageOnActivate="nothing"> <Plane name="main_page_plane" ...standard object attributes here... planeImage="image:texture" planeResizeMode="0x0"> <ModelObject name="main_page_model" ...standard object attributes here... modelobjectModel="model:page_model"></ModelObject> <Action name="go" actionText="text:msg_go"></Action> </Plane> </Page> </ObjectTree> <AnimTree> <!-- parent node from which all animation sequences descend from --> <Animation name="main_page_fade"> <Fade object="object:main_page_plane" duration="100" accelMode="0x0" transparency="1" /> <FireEvent event="anim:main_page_fade" /> </Animation> </AnimTree> </MainTree> </RcoFile>
MainTree[edit | edit source]
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[edit | edit source]
None of the PS3 rco's uses a VSMXFile. But some PSP .rco's uses it
- rough explain of how it works
- The purpose of this script is to communicate with the associated module/sprx, the code inside the script is PlayStation JavaScript based (see also VSMX format) and it can call functions with parameters from the module/sprx. It works as a simple way to store predefined actions for the .sprx inside the .rco with a bit of code control involved. The RCOXML Objects captures the button presses from the controller and based on them loads the script using the buttons as parameters, then the code inside the script is processed and triggers the .sprx
- An script can contain several different actions (are actually .js code functions) and his names are the same than the action names used in RCOXML Objects, as example: OnFocusRight (action triggered when moving right in the controller)
ImageTree[edit | edit source]
FontTree[edit | edit source]
Only used in PS3, only used in sysconf_plugin.rco and hknw_plugin.rco
TextTree[edit | edit source]
ModelTree[edit | edit source]
None of the PS3 rco's uses a ModelTree
SoundTree[edit | edit source]
ObjectTree[edit | edit source]
- 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[edit | edit source]
|