Editing Talk: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 19: | Line 19: | ||
===XMB layout references inside SPRX files=== | ===XMB layout references inside SPRX files=== | ||
In between firmwares 4.88 and 4.89 sony made some minor changes to the XMB that required to update the source code of a couple of sprx files and the content of his associated rco files to add a couple of [[RCOXML Objects]] in them. The new RCOXML objects added for 4.89 required to store 7 new values at line 2580 (from a total of 4602 lines) in the XMB layout files. The new values added at an intermediate position of the XMB layout files caused a displacement of +7 units in all the references to the values located after line 2580 of the layout files. As a consequence of that displacement it was needed to update 76 sprx files and 43 rco files to increase in +7 units the XMB layout references inside them | In between firmwares 4.88 and 4.89 sony made some minor changes to the XMB that required to update the source code of a couple of sprx files and the content of his associated rco files to add a couple of [[RCOXML Objects]] in them. The new RCOXML objects added for 4.89 required to store 7 new values at line 2580 (from a total of 4602 lines) in the XMB layout files. The new values added at an intermediate position of the XMB layout files caused a displacement of +7 units in all the references to the values located after line 2580 of the layout files. As a consequence of that displacement it was needed to update 76 sprx files and 43 rco files to increase in +7 units the XMB layout references inside them<br> | ||
The way how works the XMB layout references inside rco files has been documented before, but the way how works inside the sprx files has been just an unproven theory since many time ago. This experiment is a sample of how it works, it throws an small ray of light at how the sprx files applyes "patches" over the [[RCOXML Objects]]<br> | The way how works the XMB layout references inside rco files has been documented before, but the way how works inside the sprx files has been just an unproven theory since many time ago. This experiment is a sample of how it works, it throws an small ray of light at how the sprx files applyes "patches" over the [[RCOXML Objects]]<br> | ||
The theory behind this experiment is based on the hipotesys that in between 4.88 and 4.99 there was maaaaany sprx files where the only thing that was updated in them is just a couple of bytes "here and there" that are the references to a line number of the XMB layout files, and the hipotesys that there are many times where the rco is storing the values inside the XMB layouts consecutivelly (so it could happen that the rco and the sprx could store all his values consecutivelly). So for this experiment it was needed to find a guinea pig where both, the sprx and the rco was updated in 4.89, also his function should be something trivial just to be sure sony was not trying to update anything important, and | The theory behind this experiment is based on the hipotesys that in between 4.88 and 4.99 there was maaaaany sprx files where the only thing that was updated in them is just a couple of bytes "here and there" that are the references to a line number of the XMB layout files, and the hipotesys that there are many times where the rco is storing the values inside the XMB layouts consecutivelly (so it could happen that the rco and the sprx could store all his values consecutivelly). So for this experiment it was needed to find a guinea pig where both, the sprx and the rco was updated in 4.89, also his function should be something trivial just to be sure sony was not trying to update anything important, and last consideration is to find the files with the smallest size posible just to simplify the research with hexeditors/IDA... and the winner combo is... eula_hcopy_plugin.sprx (27 KB) / eula_hcopy_plugin.rco (60 KB) | ||
The samples below are stripped | The samples below are stripped version from the main XML file generated by rcomage, where has been left only: the [[RCOXML Objects|RCOXML Object name]] (e.g: <IList>), the unique name (e.g: list_eula_start), and the attrobute that difers in between 4.88 and 4.89 (the "overrides", responsibles of loading a value from a line of the XMB layout .txt files) | ||
{{Boxcode|title=eula_hcopy_plugin.rco (4.88)|code=<syntaxhighlight lang="xml"> | {{Boxcode|title=eula_hcopy_plugin.rco (4.88)|code=<syntaxhighlight lang="xml"> | ||
Line 50: | Line 34: | ||
<Button name="button_sync_trophy_no" positionOverrideX="0xf9100100" positionOverrideY="0x420d0100"> | <Button name="button_sync_trophy_no" positionOverrideX="0xf9100100" positionOverrideY="0x420d0100"> | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
{{Boxcode|title=eula_hcopy_plugin.rco (4.89)|code=<syntaxhighlight lang="xml"> | {{Boxcode|title=eula_hcopy_plugin.rco (4.89)|code=<syntaxhighlight lang="xml"> | ||
Line 71: | Line 43: | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
In total there are 11 attributes updated in between 4.88 and 4.89 in eula_hcopy_plugin.rco but some of them contains the same hex value (for optimization purposes, are references to the same line in the XMB layout files) | |||
If we count only the unique values (to get an idea at how much lines this rco is using from the XMB layout files) we have a total of 6 references to the XMB layouts | |||
0x460d0100 <--- line number 3399 | |||
0x470d0100 <--- line number 3400 | |||
0x480d0100 <--- line number 3401 | |||
0x490d0100 <--- line number 3402 | |||
0xfe100100 <--- line number 4351 | |||
0x110100 <----- line number 4353 | |||
So this rco is storing 4 values consecutivelly at lines 3399, 3400, 3401, 3402. And additionally is storing another 2 values at lines 4351 and 4353 (not consecutivelly, there is a gap in between them used by something else) | |||
---- | ---- | ||
When comparing the (decrypted) 4.88 and 4.89 versions of eula_hcopy_plugin.sprx there are only 2 bytes that differs (that belongs to 2 values of 2 bytes length each) | |||
offset:0x1C7E = 0x0D3C | |||
offset:0x2EFA = 0x0D43 | |||