Editing XMB Layouts
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: | ||
{{wikify}} | {{wikify}} | ||
=Description= | =Description= | ||
This files contains a list of values that | This files contains a list of numeric values that seems to define the positions, sizes, etc of most/all the items displayed in XMB. Are divided in 4 resolution modes by its heigths: (272, 480, 720, 1080), and its types: (factor, and grid). Factor ones contains less values and seems to be derivated from Grid ones (grid ones are much bigger). | ||
Some of the values seems to be related with the [http://manuals.playstation.net/document/en/ps3/current/settings/videooutput.html video resolution/settings] | |||
{{XMB Layout Tables}} | {{XMB Layout Tables}} | ||
*The values at grid lines 8 & 9 are loaded by the object '''ps3logo_back_color''' that belongs to '''page_gameboot''' from inside '''[[gamelib_plugin]].rco'''. Are the '''sizeX''' and '''sizeY''' of a full screen plane recolored to pure black | |||
=Versions= | =Versions= | ||
Line 19: | Line 19: | ||
==Factor== | ==Factor== | ||
{{layout_factor_tables}} | {{layout_factor_tables}} | ||
=RCO override attributes= | =RCO override attributes= | ||
'''All "Override" attributes are pointers to a value stored in a line of [[XMB Layouts]] .txt files, the override indicates the line number in the .txt and the value in that line is loaded by the .rco | '''All "Override" attributes are pointers to a value stored in a line of [[XMB Layouts]] .txt files, the override indicates the line number in the .txt and the value in that line is loaded by the .rco | ||
**Some values used by [[RCOXML Objects | **Some values used by [[RCOXML Objects]] are loaded externally to be able to scale the whole XMB interface for different screen resolution modes. Sony was adding more stuff in the XMB along the different firmware versions, and some of this "new" items used this same method, the result is more "override" values was added to the [[XMB Layouts]] .txt files, and as a consequence some of the other "old" values was "displaced" a few lines down in the [[XMB Layouts]] .txt files. This is the reason why in the changelog of custom_render_plugin.rco (and i bet most of the others .rco's using overrides) the value increases just a few units for every new version of the .rco (that units are a few lines that was added for that firmware in the .txt) | ||
**The reason why the new values added in the .txt displaces the old values... is because the list of values inside the .txt are ordered "by rco ownership". First are stored all the values for rco nº1... then all the values for rco nº2... and so on... obviouslly custom_render_plugin is not at top of the list because it stores his values around line 500. It has other values from other rco's before it and when that others had some addition this made the values of custom_render_plugins to be displaced some lines down in the list | **The reason why the new values added in the .txt displaces the old values... is because the list of values inside the .txt are ordered "by rco ownership". First are stored all the values for rco nº1... then all the values for rco nº2... and so on... obviouslly custom_render_plugin is not at top of the list because it stores his values around line 500. It has other values from other rco's before it and when that others had some addition this made the values of custom_render_plugins to be displaced some lines down in the list | ||
***I have no idea wich position in the [[XMB Layouts]] .txt files uses every .rco probably are ordered by using one of the lists from a .sprx or vsh.self... or maybe the order depends of the compilation enviroment sony uses for the official firmware | ***I have no idea wich position in the [[XMB Layouts]] .txt files uses every .rco probably are ordered by using one of the lists from a .sprx or vsh.self... or maybe the order depends of the compilation enviroment sony uses for the official firmware | ||
*Usually the override values from a specific .rco file are stored consecutivelly in the [[XMB | *Usually the override values from a specific .rco file are stored consecutivelly in the [[XMB Layout]] files | ||
*But other values can be loaded by several .rco files. As example, the "plane" object "ps3logo" (children of "page" object "page_gameboot") is defined inside custom_render_plugin.rco and inside gamelib_plugin.rco both uses overrides to scale the playstation logo in size and the overrides of both are pointing to the same line number in the [[XMB | *But other values can be loaded by several .rco files. As example, the "plane" object "ps3logo" (children of "page" object "page_gameboot") is defined inside custom_render_plugin.rco and inside gamelib_plugin.rco both uses overrides to scale the playstation logo in size and the overrides of both are pointing to the same line number in the [[XMB Layout]] files | ||
*There are 122 .rco files in firmware 4.76, the order of how are stored here the groups of values for every .rco is not clear, some posible options: | *There are 122 .rco files in firmware 4.76, the order of how are stored here the groups of values for every .rco is not clear, some posible options: | ||
Line 53: | Line 49: | ||
In firmware 4.76 custom_render_plugin.rco contains 3 '''plane''' [[RCOXML Objects]] using the 21 standard attributes and 2 specific attributes: | In firmware 4.76 custom_render_plugin.rco contains 3 '''plane''' [[RCOXML Objects]] using the 21 standard attributes and 2 specific attributes: | ||
*Page object '''page_coldboot''' - is the old/classic coldboot from firmware 1.00 used when the console boots | *Page object '''page_coldboot''' - is the old/classic coldboot from firmware 1.00 used when the console boots | ||
**Plane object '''scelogo''' - is an image of | **Plane object '''scelogo''' - is an image of 512x32 pixels size. Uses grid pointers | ||
*Page object '''page_coldboot2''' - is the new coldboot introduced in firmware 2.70 | *Page object '''page_coldboot2''' - is the new coldboot introduced in firmware 2.70 | ||
**Plane object '''coldboot_ps3logo''' - is a placeholder for the [[coldboot.raf]] animation. Doesnt uses grid pointers | **Plane object '''coldboot_ps3logo''' - is a placeholder for the [[coldboot.raf]] animation. Doesnt uses grid pointers | ||
*Page object '''page_gameboot''' - used when a game boots | *Page object '''page_gameboot''' - used when a game boots | ||
**Plane object '''ps3logo''' - is an image of | **Plane object '''ps3logo''' - is an image of 512x54 pixels size. Uses grid pointers | ||
{{spoiler|custom_render_plugin.rco.xml (cropped)| | |||
{{ | {{Boxcode|content=<syntaxhighlight lang="xml"> | ||
<RcoFile> | <RcoFile> | ||
<MainTree> | <MainTree> | ||
Line 76: | Line 72: | ||
</RcoFile> | </RcoFile> | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
}} | |||
This is the same code, using linefeeds and tabs for a better overview of the attributes | |||
{{Boxcode|content=<syntaxhighlight lang="xml"> | |||
<RcoFile> | <RcoFile> | ||
<MainTree> | <MainTree> | ||
Line 139: | Line 137: | ||
***stdPositionX="0" stdPositionY="0" stdPositionZ="0" <------------------------------------------------------------------------ positions are empty ! | ***stdPositionX="0" stdPositionY="0" stdPositionZ="0" <------------------------------------------------------------------------ positions are empty ! | ||
***stdSizeX="0" stdSizeY="0" stdSizeZ="0" <-------------------------------------------------------------------------------------- sizes are empty ! | ***stdSizeX="0" stdSizeY="0" stdSizeZ="0" <-------------------------------------------------------------------------------------- sizes are empty ! | ||
***stdOverridePositionX="0x98020000" stdOverridePositionY="0x99020000" stdOverridePositionZ="0x0" <------- grid | ***stdOverridePositionX="0x98020000" stdOverridePositionY="0x99020000" stdOverridePositionZ="0x0" <------- grid pointers, overrides the values of attributes '''stdPositionX''' and '''stdPositionY''' | ||
***stdOverrideSizeX="0x9a020100" stdOverrideSizeY="0x9b020100" stdOverrideSizeZ="0x100" <------------------- grid | ***stdOverrideSizeX="0x9a020100" stdOverrideSizeY="0x9b020100" stdOverrideSizeZ="0x100" <------------------- grid pointers, overrides the values of attributes '''stdSizeX''' and '''stdSizeY''' | ||
*'''page_coldboot2''' | *'''page_coldboot2''' | ||
Line 154: | Line 152: | ||
***stdSizeX="0" stdSizeY="0" stdSizeZ="0" <-------------------------------------------------------------------------------------- sizes are empty ! | ***stdSizeX="0" stdSizeY="0" stdSizeZ="0" <-------------------------------------------------------------------------------------- sizes are empty ! | ||
***stdOverridePositionX="0x0" stdOverridePositionY="0x0" stdOverridePositionZ="0x0" <------------------------------ override positions are empty ! | ***stdOverridePositionX="0x0" stdOverridePositionY="0x0" stdOverridePositionZ="0x0" <------------------------------ override positions are empty ! | ||
***stdOverrideSizeX="0x9c020100" stdOverrideSizeY="0x9d020100" stdOverrideSizeZ="0x100" <------------------- grid | ***stdOverrideSizeX="0x9c020100" stdOverrideSizeY="0x9d020100" stdOverrideSizeZ="0x100" <------------------- grid pointers, overrides the values of attributes '''stdSizeX''' and '''stdSizeY''' | ||
---- | ---- | ||
Before calculating the grid pointers is needed to convert the values manually to the correct format. Every one of the attributes used for grid pointers is composed by 2 values, the first one is the grid pointer (first 2 bytes), and the second is | Before calculating the grid pointers is needed to convert the values manually to the correct format. Every one of the attributes used for grid pointers is composed by 2 values, the first one is the grid pointer itself (first 2 bytes), and the second one is unknown (last 2 bytes). Is needed to cut the attribute at half and swap the bytes | ||
*'''scelogo''' grid pointers | *'''scelogo''' grid pointers | ||
**position | **position | ||
***stdOverridePositionX="0x98020000" <----------- this is 0x0'''298''' (grid pointer) and 0x0000 ( | ***stdOverridePositionX="0x98020000" <----------- this is 0x0'''298''' (grid pointer) and 0x0000 (unknown) | ||
***stdOverridePositionY="0x99020000" <----------- this is 0x0'''299''' (grid pointer) and 0x0000 ( | ***stdOverridePositionY="0x99020000" <----------- this is 0x0'''299''' (grid pointer) and 0x0000 (unknown) | ||
***stdOverridePositionZ="0x0" <---------------------- this is 0x0000 (grid pointer | ***stdOverridePositionZ="0x0" <---------------------- this is 0x0000 (not a grid pointer) and 0x0000 (unknown) | ||
**size | **size | ||
***stdOverrideSizeX="0x9a020100" <----------- this is 0x0'''29a''' (grid pointer) and 0x000'''1''' ( | ***stdOverrideSizeX="0x9a020100" <----------- this is 0x0'''29a''' (grid pointer) and 0x000'''1''' (unknown) | ||
***stdOverrideSizeY="0x9b020100" <----------- this is 0x0'''29b''' (grid pointer) and 0x000'''1''' ( | ***stdOverrideSizeY="0x9b020100" <----------- this is 0x0'''29b''' (grid pointer) and 0x000'''1''' (unknown) | ||
***stdOverrideSizeZ="0x100" <------------------- this is 0x0000 (grid pointer | ***stdOverrideSizeZ="0x100" <------------------- this is 0x0000 (not a grid pointer) and 0x000'''1''' (unknown) | ||
*'''ps3logo''' grid pointers | *'''ps3logo''' grid pointers | ||
**size | **size | ||
***stdOverrideSizeX="0x9c020100" <----------- this is 0x0'''29c''' (grid pointer) and 0x000'''1''' ( | ***stdOverrideSizeX="0x9c020100" <----------- this is 0x0'''29c''' (grid pointer) and 0x000'''1''' (unknown) | ||
***stdOverrideSizeY="0x9d020100" <----------- this is 0x0'''29d''' (grid pointer) and 0x000'''1''' ( | ***stdOverrideSizeY="0x9d020100" <----------- this is 0x0'''29d''' (grid pointer) and 0x000'''1''' (unknown) | ||
***stdOverrideSizeZ="0x100" <------------------- this is 0x0000 (grid pointer | ***stdOverrideSizeZ="0x100" <------------------- this is 0x0000 (not a grid pointer) and 0x000'''1''' (unknown) | ||
---- | ---- | ||
Now to get the correct value from the grid pointers is needed to look at the [[XMB Layouts]] files '''from the same firmware !!!''' | Now to get the correct value from the grid pointers is needed to look at the [[XMB Layouts]] files '''from the same firmware !!!''' | ||
The pointer | The grid pointer value needs to be converted to decimal, and added a +1 (because the first value posible is 0, must match with the first line in a .txt file that is 1) | ||
*'''scelogo''' grid pointers | *'''scelogo''' grid pointers | ||
Line 225: | Line 223: | ||
****Y=0 | ****Y=0 | ||
****Z=0 | ****Z=0 | ||
***size (the image tex_scelogo.gim is 1024x64 | ***size (the original image tex_scelogo.gim is 512x32 pixels, but is displayed exactlly at double his size 1024x64) | ||
****X=1024 | ****X=1024 | ||
****Y=64 | ****Y=64 | ||
Line 236: | Line 234: | ||
****Y=0 | ****Y=0 | ||
****Z=0 | ****Z=0 | ||
***size (the image tex_ps3logo.gim is 1200x128 | ***size (the original image tex_ps3logo.gim is 512x54 pixels, but displayed at 1200x128<!--aspect ratio broken (by a sony mistake or on purpose ?), the correct size to preserve the aspect ratio of the original after scaling is 1200x127-->) | ||
****X=1200 | ****X=1200 | ||
****Y=128 | ****Y=128 | ||
Line 243: | Line 241: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| [[File:Page coldboot 1080.png| | | [[File:Page coldboot 1080.png|600px|thumb|left|coldboot]] || [[File:Page gameboot 1080.png|600px|thumb|left|gameboot]] | ||
| | |||
| | |||
|- | |- | ||
| | | {{#ev:youtube|tgPXlMbchFM}} || {{#ev:youtube|GUb1gIKhwMU}} | ||
|} | |} | ||
{{File Formats}}<noinclude>[[Category:Main]]</noinclude> | {{File Formats}}<noinclude>[[Category:Main]]</noinclude> |