Editing Talk:RCOXML Objects

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
=WidgetType=
=Rcomage unknown object attributes=
See the "paf" [[VSH Exports]], [https://www.psx-place.com/threads/custom-xai_plugin-source.12455/page-3#post-356203 psx-place talk], and [https://github.com/TheRouletteBoi/VirtualShell/blob/main/include/vsh/paf.hpp paf.hpp]
*See: [[Talk:Rcomage#objattribdef-ps3.ini]]
 
At the time of documenting the RCO format for wiki it was posible to identify some/lot of unknown attributes, in the link there are a few of them listed as dirty notes (later was identifyed some more that are not included in the link). At this point there is no need for that dirty notes because the new names of the identifyed attributes was used in the tables in wiki, the dirty notes are just kept to have a record of the changes, and liked here because are very related with this page
The goal of this table is to replace the unnoficial rcomage names by the official codenames. The official codenames are used in the VSH export functions (in text format) but inside the RCO internal file structure this names in text format doesnt exists, instead of text strings the RCO structure only stores the ID in hexadecimal format based on the [[Template:RCO TOC entry types|RCO TOC entry types]]<br>
Rcomage uses a file named tagmap.ini intended to convert the ID (hex) value by the name (text string) when is extracting the RCO contents, and back from text to hex when compiling an RCO


A bit of background story... rcomage was made by zinga burga for PSP, at that time he had to figure the names by looking at other related text strings, he used the exact codename only in few of them, and he invented other unnofficial names based on educated guesses, but there are many innacurate names and a few unknowns<br>
=Menu lists and menu items=
At the initial steps of rcomage development zinga burga realized that it was posible to extract the info inside the RCO structure as an XML format (this is something sony made on purpose), but inside the RCO files there is not any XML. This is when zinga burga coined the term "RCOXML Objects" because rcomage is representing the RCO contents in XML format (and this wiki respected the term), but in the names of the VSH export function are named '''WidgetType''', in other words, we could say the table below is a list of '''Widgets''' ordered by his '''Type'''<br>
{| class="wikitable"
At some point kakaroto and geohot updated rcomage source code to add support for PS3 (they had to change the endianess and added definitions for a few RCOXML objects only supported by PS3 that was breaking the output) but maybe there are new objects specific for PS3 over ID 0x081F. Anyway, so far rcomage supports up to ID 0x081F (32 objects)
 
*Notes
**It seems the items ('''XItem''' 0x080C, '''MItem''' 0x080A, '''LItem''' 0x0814, '''IItem''' 0x0818) doesnt have VSH exports because are terminal objects located at bottom of the hierarchy (are always the children of a parent "list")
**The codename "Prim" seems to be inherited from PSX->PSP->PS3 and seems to be a [https://en.wikipedia.org/wiki/Geometric_primitive geometric primitive]. In the PSX XMB the options availables for it was: type="rect", type="line", type="outline". It seems to be used to draw lines, frames, etc...
 
<div>
<div style="float:left;">
{| class="wikitable" style="line-height:1em; font-size:1em"
|-
|-
! rowspan="2" | [[Template:RCO TOC entry types|NodeType]] !! colspan="2" | Name !! colspan="2" | paf [[VSH Exports#paf|VSH Exports]] !! rowspan="2" | Notes
! rowspan="2" | <abbr title="in big endian for PS3">Type</abbr> !! colspan="4" | Name !! rowspan="2" | Displayed as !! rowspan="2" | Notes
|-
|-
! <abbr title="and name in wiki by now, at some point could be changed">RCOmage</abbr> !! Official !! NID !! Sample
! Suggested names<br>for Wiki !! <abbr title="invented based on oficial labels">In rcomage</abbr> !! <abbr title="found by reading the labels, it could not be accurate though because official coders had the freedom to use any invented name">In official RCOXML code</abbr> !! <abbr title="this seems to be the best place to get the internal names">In official [[VSH Exports]]</abbr>
|-{{cellcolors|lightgrey}}
| colspan="7" |
|-
|-
| colspan="6" style="text-align:center; background:#ddd" | Supported by {{icon content psp|50px}} and {{icon content ps3|50px}}
| 0x804 || '''XmBar''' ? || {{cellcolors|#ff9999}} <abbr title="following the naming convention of the others this is a list">XMenu</abbr> || {{cellcolors|#ff9999}} <abbr title="Found in PSP firmware 1.00 following the naming convention of the others this is a list">name="xmenu"</abbr> || <abbr title="PhXmBar">XmBar</abbr> || XMB Main Menu, horizontal list placeholder || rowspan="3" | Main XMB
|-
|-
| 0x0800 || {{cellcolors|#d53}} ObjectTree || ? || ? || ? ||  
| 0x805 || '''XmItem''' ? || {{cellcolors|#ff9999}} <abbr title="is an item, not a list">XMList</abbr> || {{cellcolors|#ff9999}} <abbr title="Found in PSP firmware 1.00 is an item, not a list">name="list_sysconf"</abbr> || <abbr title="PhXmItem">XmItem</abbr> ? || XMB Main Menu, horizontal list item
|-
|-
| 0x0801 || {{cellcolors|#f93}} Page || {{cellcolors|#79d}} '''Scene''' || style="font-family:monospace" | 0x41BBFE5E || paf::Ph'''Scene'''::WidgetType(void) ||  
| 0x806 || '''XmList''' ? || {{cellcolors|#ff9999}} XList || <abbr title="Found in PSP firmware 1.00">name="xlist_video_config"</abbr> || <abbr title="PhXmList">XmList</abbr> ? || XMB Main Menu, vertical list placeholder
|-{{cellcolors|black}}
| colspan="7" |  
|-
|-
| 0x0802 || {{cellcolors|#8e8}} Plane || {{cellcolors|#79d}} '''Plane''' || style="font-family:monospace" | 0x10DEDCC7 || paf::Ph'''Plane'''::WidgetType(void) ||  
| 0x809 || '''MenuList''' || MList || <abbr title="Found in PS3 firmware 4.76">name="mlist_select_update_method"</abbr> || <abbr title="PhMenuList">MenuList</abbr> || Context Menu, vertical list placeholder ||rowspan="2" | Menu when pressing triangle<br>at right side of the screen
|-
|-
| 0x0803 || {{cellcolors|#8e8}} Button || {{cellcolors|#79d}} '''Button''' || style="font-family:monospace" | 0x24A5BD6B || paf::Ph'''Button'''::WidgetType(void) ||  
| 0x80A || '''MenuItem''' || MItem || <abbr title="Found in PS3 firmware 4.76">name="mitem_select_network"</abbr> || || Context Menu, vertical list item
|-{{cellcolors|lightgrey}}
| colspan="7" |  
|-
|-
| 0x0804 || {{cellcolors|#f93}} XMenu || {{cellcolors|#79d}} '''XmBar''' || style="font-family:monospace" | 0x703117AD || paf::Ph'''XmBar'''::WidgetType(void) ||  
| {{cellcolors|#ff9999}} 0x80B || '''UnkList''' ? || {{cellcolors|#ff9999}} ObjUnknown0xB ||  || || || rowspan="2" | 0x80B is the "List"<br>0x80C is the "Item"
|-
|-
| 0x0805 || {{cellcolors|#f93}} XMList || {{cellcolors|#79d}} '''XmList''' || style="font-family:monospace" | 0x4FF7B8A9 || paf::Ph'''XmList'''::WidgetType(void) ||  
| 0x80C || '''UnkItem''' ? || {{cellcolors|#ff9999}} XItem || <abbr title="Found in PSP firmware 1.00">name="item_xlist_video_config_volume"</abbr> || ||
|-{{cellcolors|lightgrey}}
| colspan="7" |  
|-
|-
| 0x0806 || {{cellcolors|#d53}} XList || XmItem ? || style="font-family:monospace" | 0xC84FD77B ? || paf::Ph'''XmItem'''::WidgetType(void) ? ||  
| 0x813 || '''List''' || LList || <abbr title="Found in PSP firmware 1.00">name="list_edit_apcnf7"</abbr> || <abbr title="PhList">List</abbr> || Editable Menu, horizontal list placeholder || rowspan="2" | Like in network settings
|-
|-
| 0x0807 || {{cellcolors|#8e8}} Progress || {{cellcolors|#79d}} '''Progress''' || style="font-family:monospace" | 0xE801C345 || paf::Ph'''Progress'''::WidgetType(void) ||
| 0x814 || '''Item''' || LItem || <abbr title="Found in PSP firmware 1.00">name="litem_edit_apcnf7_0"</abbr> || || Editable Menu, horizontal list item
|-{{cellcolors|lightgrey}}
| colspan="7" |  
|-
|-
| 0x0808 || {{cellcolors|#8e8}} Scroll || {{cellcolors|#79d}} '''Scroll''' || style="font-family:monospace" | 0x009207F4 || paf::Ph'''Scroll'''::WidgetType(void) ||  
| 0x817 || '''InfoList''' || IList || <abbr title="Found in PSP firmware 1.00">name="ilist_ms_info"</abbr> || <abbr title="PhInfoList">InfoList</abbr> || Information Menu, vertical list placeholder || rowspan="2" | Like in audio file info
|-
|-
| 0x0809 || {{cellcolors|#f93}} MList || {{cellcolors|#79d}} '''MenuList''' || style="font-family:monospace" | 0xA98865F8 || paf::Ph'''MenuList'''::WidgetType(void) || The parent of MenuItem 0x080A
| 0x818 || '''InfoItem''' || IItem || <abbr title="Found in PSP firmware 1.00">name="item_ms_info_size"</abbr> || || Information Menu, vertical list item
|-{{cellcolors|lightgrey}}
| colspan="7" |  
|-
|-
| 0x080A || {{cellcolors|#f93}} MItem || MenuItem ? || ? || ? || The children of MenuList 0x0809
| 0x81C || '''CheckList''' || {{cellcolors|#ff9999}} <abbr title="following the naming convention of the others this is a list, not a group, sometimes appears in the official labels as '''clist'''">CheckboxGroup</abbr> || <abbr title="Found in PS3 firmware 4.76, is a list, not a group">name="checkbox_list_npsignin"</abbr> || <abbr title="PhCheckBoxList">CheckBoxList</abbr> || Checkbox Menu, horizontal list placeholder || rowspan="2" | Like in poweroff screen
|-
|-
| 0x080B || {{cellcolors|#d53}} ObjUnknown0xB || ? || ? || ? || The parent of XItem 0x080C ?
| 0x81D || '''CheckItem''' || CheckboxItem || <abbr title="Found in PS3 firmware 4.76">name="checkbox_item_select_auto_power_off"</abbr> || <abbr title="PhCheckBox">CheckBox</abbr> ? || Checkbox Menu, horizontal list item
|}
*Problematic names and values are marked in red
*The "Items" '''doesnt''' have standard attributes, '''only''' have 3 specific attributes, and that atributes uses to be a reference (ref/text/image but not always, there are some expections). This is an easy way to identify them
*The "Lists" '''does''' have standard attributes, and a variable number of specific attributes based on its purpose, all the lists (except xmenu and xlist) seems to use specific attributes intended to override the position/size of the list for the different screen resolutions supported by PS3, see: [[XMB Layouts]]
*If the previous sentence is true, it means we know the first 21 attributes of '''ObjUnknown0xB''' (the standard ones, shared by a lot of objects, always located in the same positions) http://www.psdevwiki.com/ps3/Template:RCO_TOC_Objects_standard_attributes and the specific ones can be found by getting inspiration in the specific attributes of the other "list" objects and the test-error method (first one uses to be a "counter" of childrens, then a variable number of "stuff", and at the end a bunch of "events")
 
=WidgetType=
See the "paf" [[VSH Exports]] and [https://github.com/TheRouletteBoi/VirtualShell/blob/main/include/vsh/paf.hpp paf.hpp]
 
It seems the '''Widget''' is an identifyer of what rcomage and this wiki page baptished unnofficially as "objects", of all them or only a group
 
By looking at the internal RCO structure is obvious that the value used internally to identify every "object" is the first field of what we has been naming [[Template:RCO TOC entry common area]], or in other words, the [[Template:RCO TOC entry types]]
 
So the question is... all "RCO TOC entry types" should be considered WidgetType ? (and consequentlly needed to be renamed in wiki pages)... or only a group of them are considered "widgets" ? and there is other group (no idea wich one by now, but [[RCOXML Animations]] could have a different name)
 
By looking [https://gist.github.com/anonymous/331c41b7b60af35c62363700ad88e6b3 at this list] is posible to make a list of the exports that uses the keyword "WidgetType" and deduce the correspondency with the names we have been using in rcomage/wiki. Some of the "unnofficial" names we have been using matches exactlly, others partially, and there are a few "new" names hard to deduce to wich "object" corresponds, and probably are included the 2 infamous '''ObjUnknown0xB''' and '''ObjUnknown0x1B''' that are completlly unknown for rcomage and doesnt seems to be used in any of the official PSP and PS3 firmwares
 
<div>
<div style="float:left;">
{| class="wikitable" style="line-height:1em; font-size:1em"
|-
|-
| 0x080C || {{cellcolors|#d53}} XItem || ? || ? || ? || The children of ObjUnknown0xB 0x080B ?
! rowspan="2" | <abbr title="The unique hexadecimal identifyer stored inside the TOC of the RCO file structure">ID</abbr> !! colspan="2" | Name !! colspan="2" | paf [[VSH Exports#paf|VSH Exports]] !! rowspan="2" | Notes
|-
|-
| 0x080D || {{cellcolors|#8e8}} Text || {{cellcolors|#79d}} '''Text''' || style="font-family:monospace" | 0xB7DFCE90 || paf::Ph'''Text'''::WidgetType(void) ||
! <abbr title="and name in wiki by now, at some point could be changed">RCOmage</abbr> !! Official !! NID !! Sample
|-
|-
| 0x080E || {{cellcolors|#d53}} ModelObject || Model ? || ? || ? || This is intended to load a (3D model) [https://www.ifcaro.net/qhimm/index.php/PSP/GMO_Format .GMO] file for the PSP wave
| 0x800 || {{cellcolors|#d53}} ObjectTree || ? || style="font-family:monospace" | ? || ? ||  
|-
|-
| 0x080F || {{cellcolors|#d53}} Spin || ItemSpin ? || style="font-family:monospace" | 0x4C36ABBB ? || paf::Ph'''ItemSpin'''::WidgetType(void) ? || In the VSH exports page is mentioned the codename "PhSpin" but is missing the generic paf::PhSpin::WidgetType(void)
| 0x801 || {{cellcolors|#d53}} Page || Scene ? || style="font-family:monospace" | 0x41BBFE5E ? || paf::Ph'''Scene'''::WidgetType(void) ? ||  
|-
|-
| 0x0810 || {{cellcolors|#d53}} Action || ? || ? || ? ||  
| 0x802 || {{cellcolors|#8e8}} Plane || Plane || style="font-family:monospace" | 0x10DEDCC7 || paf::Ph'''Plane'''::WidgetType(void) ||  
|-
|-
| 0x0811 || {{cellcolors|#f93}} ItemSpin || {{cellcolors|#79d}} '''NumSpin''' || style="font-family:monospace" | 0x59A11C82 || paf::Ph'''NumSpin'''::WidgetType(void) ||  
| 0x803 || {{cellcolors|#8e8}} Button || Button || style="font-family:monospace" | 0x24A5BD6B || paf::Ph'''Button'''::WidgetType(void) ||  
|-
|-
| 0x0812 || {{cellcolors|#f93}} Group || {{cellcolors|#79d}} '''Widget''' || style="font-family:monospace" | 0x546B3D02 || paf::Ph'''Widget'''::WidgetType(void)
| 0x804 || {{cellcolors|#f93}} XMenu || XmBar || style="font-family:monospace" | 0x703117AD || paf::Ph'''XmBar'''::WidgetType(void) ||
|-
|-
| 0x0813 || {{cellcolors|#f93}} LList || List || style="font-family:monospace" | 0xD64EDE7C || paf::Ph'''List'''::WidgetType(void) || The parent of Item 0x0814
| 0x805 || {{cellcolors|#d53}} XMList || XmItem ? || style="font-family:monospace" | 0xC84FD77B ? || paf::Ph'''XmItem'''::WidgetType(void) ? ||  
|-
|-
| 0x0814 || {{cellcolors|#f93}} LItem || Item ? || ? || ? || The children of List 0x0813
| 0x806 || {{cellcolors|#d53}} XList || XmList ? || style="font-family:monospace" | 0x4FF7B8A9 ? || paf::Ph'''XmList'''::WidgetType(void) ? ||  
|-
|-
| 0x0815 || {{cellcolors|#f93}} Edit || {{cellcolors|#79d}} '''IPAddr''' || style="font-family:monospace" | 0x3806365F || paf::Ph'''IPAddr'''::WidgetType(void) ||  
| 0x807 || {{cellcolors|#8e8}} Progress || Progress || style="font-family:monospace" | 0xE801C345 || paf::Ph'''Progress'''::WidgetType(void) ||
|-
|-
| 0x0816 || {{cellcolors|#8e8}} Clock || {{cellcolors|#79d}} '''Clock''' || style="font-family:monospace" | 0x545D47A2 || paf::Ph'''Clock'''::WidgetType(void) ||  
| 0x808 || {{cellcolors|#8e8}} Scroll || Scroll || style="font-family:monospace" | 0x009207F4 || paf::Ph'''Scroll'''::WidgetType(void) ||  
|-
|-
| 0x0817 || {{cellcolors|#f93}} IList || {{cellcolors|#79d}} '''InfoList''' || style="font-family:monospace" | 0xF7630798 || paf::Ph'''InfoList'''::WidgetType(void) || The parent of InfoItem 0x0818
| 0x809 || {{cellcolors|#f93}} MList || MenuList || style="font-family:monospace" | 0xA98865F8 || paf::Ph'''MenuList'''::WidgetType(void) ||  
|-
|-
| 0x0818 || {{cellcolors|#f93}} IItem || InfoItem ? || ? || ? || The children of InfoList 0x0817
| 0x80A || {{cellcolors|#f93}} MItem || MenuItem ? || ? || ? ||  
|-
|-
| 0x0819 || {{cellcolors|#d53}} Icon || ? || ? || ? || Terminal object, same specific attributes than all the other "items". The difference with standard "items" is "icon" have standard attributes (but the standard "items" doesnt)
| 0x80B || {{cellcolors|#d53}} ObjUnknown0xB || ? || ? || ? ||  
|-
|-
| 0x081A || {{cellcolors|#d53}} UButton || ? || ? || ? || This is an improved version of '''Button''' 0x0803
| 0x80C || {{cellcolors|#d53}} XItem || ? || ? || ? ||  
|-
|-
| colspan="6" style="text-align:center; background:#ddd" | Supported by {{icon content ps3|50px}} only
| 0x80D || {{cellcolors|#8e8}} Text || Text || style="font-family:monospace" | 0xB7DFCE90 || paf::Ph'''Text'''::WidgetType(void) ||  
|-
|-
| 0x081B || {{cellcolors|#d53}} ObjUnknown0x1B || ? || ? || ? ||  
| 0x80E || {{cellcolors|#d53}} ModelObject || ? || ? || ? ||  
|-
|-
| 0x081C || {{cellcolors|#f93}} CheckBoxGroup || {{cellcolors|#79d}} '''CheckBoxList''' || style="font-family:monospace" | 0x90F4F801 || paf::Ph'''CheckBoxList'''::WidgetType(void) || The parent of CheckBox 0x081D<br>This is an improved version of '''MenuList''' 0x0809
| 0x80F || {{cellcolors|#d53}} Spin || Spin ? || style="font-family:monospace" | ? || ? ||  
|-
|-
| 0x081D || {{cellcolors|#f93}} CheckboxItem || CheckBox || style="font-family:monospace" | 0xBF66BF2D || paf::Ph'''CheckBox'''::WidgetType(void) || The children of CheckBoxList 0x081C
| 0x810 || {{cellcolors|#d53}} Action || NumSpin ? || style="font-family:monospace" | 0x59A11C82 ? || paf::Ph'''NumSpin'''::WidgetType(void) ? ||  
|-
|-
| 0x081E || {{cellcolors|#f93}} Meter || {{cellcolors|#79d}} '''LevelMeter''' || style="font-family:monospace" | 0xC88CA4B2 || paf::Ph'''LevelMeter'''::WidgetType(void) ||  
| 0x811 || {{cellcolors|#8e8}} ItemSpin || ItemSpin ? || style="font-family:monospace" | 0x4C36ABBB ? || paf::Ph'''ItemSpin'''::WidgetType(void) ? ||  
|-
|-
| 0x081F || {{cellcolors|#f93}} EditBox || LabelText || style="font-family:monospace" | 0xDDD4ACF6 || paf::Ph'''LabelText'''::WidgetType(void) || This is an improved version of '''Text''' 0x080D
| 0x812 || {{cellcolors|#d53}} Group || PlaneDiv ? || style="font-family:monospace" | 0xE36C18F5 ? || paf::Ph'''PlaneDiv'''::WidgetType(void) ? ||  
|}
 
<center>
{| class="wikitable" style="font-size:small"
|-
|-
!rowspan="5" | Color legend:
| 0x813 || {{cellcolors|#f93}} LList || List ? || style="font-family:monospace" | 0xD64EDE7C ? || paf::Ph'''List'''::WidgetType(void) ? ||  
|-
! {{cellcolors|#79d}} Blue
| The official codename has been identifyed 100%
|-
! {{cellcolors|#8e8}} Green
| The name in rcomage matches with the official codename
|-
! {{cellcolors|#f93}} Orange
| The name in rcomage doesnt matches with the official codename, but has been identifyed (this are the easy ones)
|-
! {{cellcolors|#d53}} Red
| The name in rcomage doesnt matches with the official codename, and is doubtfull which is the correct name
|}
</center>
</div></div><div style="clear:both;"></div>
 
*Other VSH export candidates:
**paf::Ph'''LabelPrim'''::WidgetType(void)
**paf::Ph'''PlaneDiv'''::WidgetType(void)
**paf::Ph'''LabelPrimDiv'''::PhLabelPrimDiv(paf::PhWidget *, paf::PhAppear *)
**paf::Ph'''Camera'''::PhCamera(paf::PhWidget *, paf::PhAppear *)
 
*Spins confussion
**The object 0x0811 (named "ItemSpin" in RCOmage) is officially codenamed "PhNumSpin" (the name was swapped), but the object 0x080F (named "Spin" in RCOmage) has not been identifyed yet, probably is officially codenamed "PhItemSpin". Additionally there is another codename for '''PhSpin''' that is a bit confusing by now. Is not clear yet if there are 2 or 3 spin objects
**The object named '''Spin''' by rcomage has been found in official firmware using event names with the word "ispin" (a short form of "ItemSpin"):
***object2:lftv_page212_group000_'''ispin'''000 <--- this is loading another "object" so the name '''ispin''' belongs to the other object
***object2:lftv_page212_group000_'''ispin'''001 <--- this is loading another "object" so the name '''ispin''' belongs to the other object
**In the VSH exports page there are 3 exports that returns names related with spins (but one of the returned strings seems to be wrong)
***const char* paf_4C36ABBB() <-- returns "PhItemSpin" (_ZN3paf10PhItemSpin10WidgetTypeEv)
***const char* paf_CA9160F6() <-- returns "PhNumSpin" (_ZNK3paf9PhNumSpin13GetWidgetTypeEv)
***const char* paf_59A11C82() <-- returns "PhNumSpin" (_ZN3paf9PhNumSpin10WidgetTypeEv)
 
*Other related VSH exports
**PAF_Resource_DOMGetNodeID returns the widget name (ie: "page_game_config")
**PAF_Resource_DOMGetNodeType returns the widget type (ie: 0x801)
**PAF_Resource_DOMGetNodeData
**PAF_Resource_DOMGetNodeChildByID
**PAF_Resource_DOMGetNodeChildByPos
**PAF_Resource_DOMGetNodeFirstChild
**PAF_Resource_DOMGetNodeNext
**PAF_Resource_GetPageNodeByID
**PAF_Resource_GetWidgetNodeByID
**PAF_Resource_ResolveRefNode
**PAF_Resource_ResolveRefString
**PAF_Resource_ResolveRefWString
 
==Menu lists and menu items associations==
There are 6 groups of list/item associated with each other that was given consecutive IDs in hexadecimal. The fact that was given consecutive IDs means each group of list/item was implemented at the same time because requires each other (an "item" requires a parent "list", and a "list" without children "items" doesnt makes sense)
 
*The "items" '''doesnt''' have the 21 [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]], '''only''' have 3 specific attributes (usually a ref/text/image). This is an easy way to identify them, by the abscense of the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]]
 
*The "lists" '''does''' have the 21 [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]], followed by a variable number of specific attributes. All the lists (except 0x0804 and 0x0806) seems to use specific override attributes intended to adjust them dinamically for the different screen resolutions supported by PS3, see: [[XMB Layouts]].
 
*The consecutive ID's is a handy way to identify them, it means there is an "item" ID next to each "list" ID (or the other way around, there is a "list" ID next to each "item" ID)
 
{| class="wikitable" style="line-height:1em; font-size:1em"
|-
|-
! [[Template:RCO TOC entry types|NodeType]] !! RCOmage name !! Displayed as !! Notes
| 0x814 || {{cellcolors|#f93}} LItem || Item ? || ? || ? ||
|-
|-
| 0x0804 || XMenu || XMB Main Menu, horizontal list placeholder || rowspan="3" | Main XMB
| 0x815 || {{cellcolors|#f93}} Edit || IPAddr || style="font-family:monospace" | 0x3806365F || paf::Ph'''IPAddr'''::WidgetType(void) ||
|-
|-
| 0x0805 || XMList || XMB Main Menu, horizontal list item
| 0x816 || {{cellcolors|#8e8}} Clock || Clock || style="font-family:monospace" | 0x545D47A2 || paf::Ph'''Clock'''::WidgetType(void) ||  
|-
|-
| 0x0806 || XList || XMB Main Menu, vertical list placeholder
| 0x817 || {{cellcolors|#f93}} IList || InfoList || style="font-family:monospace" | 0xF7630798 || paf::Ph'''InfoList'''::WidgetType(void) ||  
|-
|-
| colspan="4" style="border-left:hidden; border-right:hidden; padding:10px" |  
| 0x818 || {{cellcolors|#f93}} IItem || InfoItem ? || ? || ? ||  
|-
|-
! [[Template:RCO TOC entry types|NodeType]] !! RCOmage name !! Displayed as !! Notes
| 0x819 || {{cellcolors|#d53}} Icon || ? || ? || ? ||
|-
|-
| 0x0809 || MList || Context Menu, vertical list placeholder ||rowspan="2" | Menu at right side of the screen<br>enabled by pressing triangle over a game/app icon
| 0x81A || {{cellcolors|#d53}} UButton || ? || ? || ? ||  
|-
|-
| 0x080A || MItem || Context Menu, vertical list item
| 0x81B || {{cellcolors|#d53}} ObjUnknown0x1B || ? || ? || ? ||  
|-
|-
| colspan="4" style="border-left:hidden; border-right:hidden; padding:10px" |  
| 0x81C || {{cellcolors|#f93}} CheckBoxGroup || CheckBoxList || style="font-family:monospace" | 0x90F4F801 || paf::Ph'''CheckBoxList'''::WidgetType(void) ||  
|-
|-
! [[Template:RCO TOC entry types|NodeType]] !! RCOmage name !! Displayed as !! Notes
| 0x81D || {{cellcolors|#f93}} CheckboxItem || CheckBox || style="font-family:monospace" | 0xBF66BF2D || paf::Ph'''CheckBox'''::WidgetType(void) ||
|-{{cellcolors|lightgrey}}
| colspan="7" |  
|-
|-
| 0x080B || ObjUnknown0xB || rowspan="2" | ? || rowspan="2" | 0x080B is the "List"<br>0x080C is the "Item"
! XmItem
| paf::Ph'''XmItem'''::WidgetType(void) || {{cellcolors|#d53}} '''XMList''' ? ||
| colspan="7" |  
|-{{cellcolors|lightgrey}}
| colspan="7" |  
|-
|-
| 0x080C || XItem
! LabelText
| paf::Ph'''LabelText'''::WidgetType(void) || {{cellcolors|#f93}} <abbr title="the unnofficial name doesn't matches with the official name">'''EditBox'''</abbr> || The object named "EditBox" by rcomage is exactly like the object "Text" with some attributes added at the end (for the label)
|-
|-
| colspan="4" style="border-left:hidden; border-right:hidden; padding:10px" |  
! LevelMeter
| paf::Ph'''LevelMeter'''::WidgetType(void) || {{cellcolors|#f93}} <abbr title="the unnofficial name matches partially with the official name">'''Meter'''</abbr> ||  
|-
|-
! [[Template:RCO TOC entry types|NodeType]] !! RCOmage name !! Displayed as !! Notes
! Widget
| paf::Ph'''Widget'''::WidgetType(void) || {{cellcolors|#eeee88}} ''ObjUnknown0x1B'' ? || Related with [[Widgets]] ?
|-
|-
| 0x0813 || LList || Editable Menu, horizontal list placeholder || rowspan="2" | Used in network settings
! LabelPrim
| paf::Ph'''LabelPrim'''::WidgetType(void)  || {{cellcolors|#eeee88}} ''ObjUnknown0xB'' ? ||  
|-
|-
| 0x0814 || LItem || Editable Menu, horizontal list item
! LabelPrimDiv
| {{cellcolors|lightgrey|#000000|center}} ''N/A'' || {{cellcolors|#d53}} ''XItem'' ? ||  
|-
|-
| colspan="4" style="border-left:hidden; border-right:hidden; padding:10px" |
! OskButton
| {{cellcolors|lightgrey|#000000|center}} ''N/A'' || {{cellcolors|#eeee88}} ''UButton'' ? || Is needed to verify with some official example if the object named "UButton" by rcomage has some relationship with the "'''O'''n'''S'''creen'''K'''eyboard"
|-
|-
! [[Template:RCO TOC entry types|NodeType]] !! RCOmage name !! Displayed as !! Notes
! Camera
| {{cellcolors|lightgrey|#000000|center}} ''N/A'' || {{cellcolors|#eeee88}} ''ModelObject'' ? || this loads a GMO file (3D model), maybe is considered a camera ?
|-
|-
| 0x0817 || IList || Information Menu, vertical list placeholder || rowspan="2" | Used in audio file info
! Spin
| {{cellcolors|lightgrey|#000000|center}} ''N/A'' || {{cellcolors|#eeee88}} ''Action'' ? || This could be sending a custom text string to trigger an action in the .sprx ?
|}
<center>
{| class="wikitable" style="font-size:x-small"
|-
|-
| 0x0818 || IItem || Information Menu, vertical list item
!rowspan="5" | Color legend:
|-
|-
| colspan="4" style="border-left:hidden; border-right:hidden; padding:10px" |  
! {{cellcolors|#8e8}} Green
| The name in rcomage matches with the official codename
|-
|-
! [[Template:RCO TOC entry types|NodeType]] !! RCOmage name !! Displayed as !! Notes
! {{cellcolors|#f93}} Orange
| The name in rcomage doesnt matches with the official codename, but has been identifyed (this are the easy ones)
|-
|-
| 0x081C || CheckboxGroup || Checkbox Menu, horizontal list placeholder || rowspan="2" | Used in poweroff screen
! {{cellcolors|#d53}} Red
| The name in rcomage doesnt matches with the official codename, and is doubtfull which is the correct name
|-
|-
| 0x081D || CheckboxItem || Checkbox Menu, horizontal list item
! {{cellcolors|#eeee88}} Yellow
| This ones are completly speculative, are in the table just to have an start point for brainstorming
|}
|}
</center>
</div></div><div style="clear:both;"></div>


==ItemsCount or ItemNum attribute from list objects==
*Other unnofficial "object" names that are not in the table above:
The first specific attribute of the list objects (in other words, the attribute in position 22, located inmediatly after the 21 [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]]) indicates how many chidren there are in the list. In RCOmage this attribute is named "ItemsCount" but it seems the codename is "ItemNum", this VSH exports are used to change the value dinamically to hide/show the items from a list:
**General
***type=0x00 '''ObjectTree'''
**Items (it seems the items doesnt have VSH exports, because are terminal objects located at bottom of the hierarchy)
***type=0x0C '''XItem'''
***type=0x0A '''MItem'''
***type=0x14 '''LItem'''
***type=0x18 '''IItem'''
**Others
***type=0x19 '''Icon''' (terminal object, same specific attributes than "items"). The difference with standard "items" is "icon" have standard attributes (and standard items doesnt)
***type=0x10 '''Action''' (terminal object, special purpose)
***type=0x0E '''ModelObject''' (terminal object, special purpose)
***type=0x1A '''UButton''' (very similar than '''Button''', is weird there is not any documented VSH export matching with this object)
**Unknowns
***type=0x0B '''ObjUnknown0xB'''
***type=0x1B '''ObjUnknown0x1B'''


*<strike>paf::Ph'''XmBar'''::SetItemNum(int)</strike> not mentioned in [[VSH Exports#paf|VSH Exports]] page
*Notes
*paf::Ph'''XmList'''::SetItemNum(int)
**The codename "Prim" seems to be inherited from PSX->PSP->PS3 and seems to be a [https://en.wikipedia.org/wiki/Geometric_primitive geometric primitive]. In PSX XMB was used with: type="rect", type="line", type="outline"
**paf::Ph'''XmList'''::Redraw(int)
*<strike>paf::Ph'''MenuList'''::SetItemNum(int)</strike> not mentioned in [[VSH Exports#paf|VSH Exports]] page
*paf::Ph'''List'''::SetItemNum(int)
**paf::Ph'''List'''::Redraw(void)
*paf::Ph'''InfoList'''::SetItemNum(int)
**<strike>paf::Ph'''InfoList'''::Redraw(void)</strike> not mentioned in [[VSH Exports#paf|VSH Exports]] page
*<strike>paf::Ph'''CheckBoxList'''::SetItemNum(int)</strike> not mentioned in [[VSH Exports#paf|VSH Exports]] page
 
=Objects with additional override attributes=
The override attributes are intended to adjust the position and size of the objects dinamically for the different screen resolutions supported by PS3, see: [[XMB Layouts]]<br>
Most of the objects definitions starts with the 21 [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]] that includes 6 overrides (''positionOverrideX, positionOverrideY, positionOverrideZ, sizeOverrideX, sizeOverrideY, sizeOverrideZ'')<br>
But there are a few objects with additional overrides, all this additional overrides (different than 6 overrides from the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]]) are unknown, seems to be related with font sizes, linespaces or stuff that requires an individual visual adjustment
 
*List objects
**'''MenuList''' 0x0809 and '''CheckboxList''' 0x081C
***6 overrides from the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]] + 3 specific override atributes (override something size XYZ ?)
**'''List''' 0x0813
***6 overrides from the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]] + 2 specific override atributes (override something size XY ?)
**'''InfoList''' 0x0817
***6 overrides from the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]] + 1 specific override atribute (override something size X ?)
 
*Text objects
**'''Text''' 0x080D and '''LabelText''' 0x081F
***6 overrides from the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]] + 3 specific override atributes (override something size XYZ ?)
 
*Other objects
**'''LevelMeter''' 0x081E
***6 overrides from the [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]] + 1 specific override atribute (override something size X ?)
 
=ObjUnknown0xB=
The object named ObjUnknown0xB by RCOmage (ID 0x80B) seems to be a list (the parent of ID 0x80C). If this speculation is true it means it should start with the 21 [[Template:RCO_TOC_Objects_standard_attributes|standard attributes]], the attribute number 22 should indicate how many children it have (attribute name "ItemsCount" in RCOmage, or "ItemNum" in official code), followed by some unknown attributes (similar than the other list objects), and the last attributes should be [[Template:RCO_TOC_reference_types|events]], as example: <code><Name attribute="event:native:/OnFocusIn"/></code>
 
=Rcomage unknown object attributes=
*See: [[Talk:Rcomage#objattribdef-ps3.ini]]
At the time of documenting the RCO format for wiki it was posible to identify some/lot of unknown attributes, in the link there are a few of them listed as dirty notes (later was identifyed some more that are not included in the link). At this point there is no need for that dirty notes because the new names of the identifyed attributes was used in the tables in wiki, the dirty notes are just kept to have a record of the changes, and liked here because are very related with this page (needs to be cleaned up together with this talk page)
 
=Some textures using attribute names=
The names of some images indicates the attribute names of some RCOXML objects


=Some texture using object and attribute names=
The names of this images indicates the attribute names of some RCOXML objects. Are the object attributes with datatype/reftype "image"
  <Image name="tex_default_text_field" src="Images\tex_default_text_field.png" format="gim" compression="zlib" unknownByte="0" />
  <Image name="tex_default_text_field" src="Images\tex_default_text_field.png" format="gim" compression="zlib" unknownByte="0" />
  <Image name="tex_default_text_focus" src="Images\tex_default_text_focus.png" format="gim" compression="zlib" unknownByte="0" />
  <Image name="tex_default_text_focus" src="Images\tex_default_text_focus.png" format="gim" compression="zlib" unknownByte="0" />
Line 267: Line 229:
  <Image name="tex_default_lvmeter_focus" src="Images\tex_default_lvmeter_focus.png" format="gim" compression="zlib" unknownByte="0" />
  <Image name="tex_default_lvmeter_focus" src="Images\tex_default_lvmeter_focus.png" format="gim" compression="zlib" unknownByte="0" />
  <Image name="tex_default_lvmeter_bg" src="Images\tex_default_lvmeter_bg.png" format="gim" compression="zlib" unknownByte="0" />
  <Image name="tex_default_lvmeter_bg" src="Images\tex_default_lvmeter_bg.png" format="gim" compression="zlib" unknownByte="0" />
=ObjUnknown0xB=
<strike>*Superbrainstorming based on smoke</strike>. '''This brainstorming seems to be wrong''', because the object named "XMList" by rcomage seems to be an "item" so it cant have other xml "item" childrens
<strike>**what about this ?, matches prety fine with how are grouped. Main menu separated because is an special object created specifically for top XMB menu, and the others grouped in pairs for "list" and "item". Also matches how are ordered in rcomage. All this attributes appears consecutivelly in groups of two, at top... XMList and XList... then MList MItem... then ObjUnknown0xB and XItem... then LList and LItem... then IList and IItem. Note how XMList doesnt seems to have an XMItem
XMenu
XMList
ObjUnknown0xB <------ is XMItem ?
XList
XItem
MList
MItem
LList
LItem
IList
IItem
If this is true and ObjUnknown0xB is actually XMItem it seems is posible to deduce the attributes because the other "item" objects uses pretty similar attributes (usually 3 attributes, either images or texts), to verify it are needed some/lot of tests by copying the attributes from the other items and creating a 100% custom object for the experiment also a good understanding of all the other rcoxml code, so is hard to know, im not skilled/brave to build this frankenstein but i think the theory is good enought--[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 08:16, 8 December 2015 (UTC)
</strike>
=Objects using overrides in the "specific" attributes=
The "standard" attributes contains 6 overrides and most objects uses the "standard" attributes, but additionally to this ones some of the objects (seems to) use more overrides in the "specific" attributes
*Lists
**MList (3 ?, override size XYZ ?)
**LList (2 ?, override size XY ?)
**IList (1 ?, override size X ?)
**CheckboxGroup (3 ?, override size XYZ ?)... this object is an expanded/repurposed version of '''Mlist''' intended for PS3 only (not supported in PSP), the 3 override attributes are the same than '''Mlist'''
*Text
**Text (3 ?, override size XYZ ?)
**EditBox (3 ?, override size XYZ ?)... this object is an expanded/repurposed version of '''Text''' intended for PS3 only (not supported in PSP), the 3 override attributes are the same than '''Text'''
*Others
**Meter (1 ?, override size X ?)


=anchorMode=
=anchorMode=
Line 276: Line 278:
**Extracted as "unk"
**Extracted as "unk"
***anchorMode="0x3200"
***anchorMode="0x3200"
=Lists ItemNum=
Some of the "list" objects have an attribute (always located at the first position in the group of specific attributes) that indicates how many children "items" objects there are. Rcomage (and this wiki page) names this attribute "ItemsCount", but it seems the codename is "ItemNum", this "list" objects seems to use it:
*paf::PhInfoList::SetItemNum(int)
*paf::PhList::SetItemNum(int)
*paf::PhXmList::SetItemNum(int)
*<strike>paf::PhXmBar::SetItemNum(int)</strike> doesnt exists
*<strike>paf::PhMenuList::SetItemNum(int)</strike> doesnt exists
*<strike>paf::PhCheckBoxList::SetItemNum(int)</strike> doesnt exists
*<strike>paf::PhLabelPrim::SetItemNum(int)</strike> doesnt exists


=Events notes=
=Events notes=
Line 281: Line 293:


*'''OnScrollIn''' and '''OnScrollOut''' are used in the "list" objects, the "In" and "Out" represents to move the cursor one item in the "list". The confusing detail is the "lists" can be horizontal (along X axis) or vertical (along Y axis). So it seems in a horizontal list (such the main XmBar) the "In/Out" are "Right/Left", and in a vertical list the "In/Out" should be "Down/Up" (this is just a theory based on the existence of vsh exports: ''paf::PhXmBar::ScrollRight(float, paf::PhEvent *)'' ...and... ''paf::PhXmBar::ScrollLeft(float, paf::PhEvent *)'', but has not been verifyed)
*'''OnScrollIn''' and '''OnScrollOut''' are used in the "list" objects, the "In" and "Out" represents to move the cursor one item in the "list". The confusing detail is the "lists" can be horizontal (along X axis) or vertical (along Y axis). So it seems in a horizontal list (such the main XmBar) the "In/Out" are "Right/Left", and in a vertical list the "In/Out" should be "Down/Up" (this is just a theory based on the existence of vsh exports: ''paf::PhXmBar::ScrollRight(float, paf::PhEvent *)'' ...and... ''paf::PhXmBar::ScrollLeft(float, paf::PhEvent *)'', but has not been verifyed)
=Spins identification=
*The object named '''ItemSpin''' by rcomage has been found using event names:
**event:native:/OnFocusLeft'''NumSpin'''WizardEventHandler
**event:native:/OnFocusRight'''NumSpin'''WizardEventHandler
*The object named '''Spin''' by rcomage has been found using event names:
**object2:lftv_page212_group000_'''ispin'''000 <--- this is loading another "object" so the name '''ispin''' belongs to the other object
**object2:lftv_page212_group000_'''ispin'''001 <--- this is loading another "object" so the name '''ispin''' belongs to the other object
The official codenames are '''ItemSpin''' and '''NumSpin''' but it seems in rcomage are swapped
Additionally there is another codename for '''Spin''' that is a bit confusing by now


=Links, etc...=
=Links, etc...=
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)