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 | |||
XMB layout references in | XMB layout references in 4.88 | ||
0x3f0d0100 <--- line number 3392 | 0x3f0d0100 <--- line number 3392 | ||
0x400d0100 <--- line number 3393 | 0x400d0100 <--- line number 3393 | ||
0x410d0100 <--- line number 3394 | 0x410d0100 <--- line number 3394 | ||
0x420d0100 <--- line number 3395 | 0x420d0100 <--- line number 3395 | ||
0xf7100100 <--- line number 4344 | |||
0xf9100100 <--- line number 4346 | |||
XMB layout references in 4.89 | |||
XMB layout references in | |||
0x460d0100 <--- line number 3399 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | 0x460d0100 <--- line number 3399 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | ||
0x470d0100 <--- line number 3400 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | 0x470d0100 <--- line number 3400 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | ||
0x480d0100 <--- line number 3401 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | 0x480d0100 <--- line number 3401 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | ||
0x490d0100 <--- line number 3402 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | 0x490d0100 <--- line number 3402 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | ||
0xfe100100 <--- line number 4351 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | |||
0x110100 <----- line number 4353 (increased in +7 units, as a consequence of the displacement in the XMB layout files) | |||
The references to the XMB layouts in the xml file generated by rcomage are in little endian, to convert them to "human readable" needs to be splitted in 2 chunks of 2 bytes each, first chunk is the "grid" and second chunk is the "factor". In this sample it can be seen how all the references to the "grid" was increased in +7 units<br> | |||
In firmware 4.89 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) | |||
XMB layout references in 4.88 | |||
offset:0x1C7E = 0x0D3C <--- line number 3389 ? | |||
offset:0x2EFA = 0x0D3C <--- line number 3389 ? | |||
XMB layout references in 4.89 | |||
offset:0x1C7E = 0x0D43 <--- line number 3396 ? (increased in +7 units, as a consequence of the displacement in the XMB layout files) | |||
offset:0x2EFA = 0x0D43 <--- line number 3396 ? (increased in +7 units, as a consequence of the displacement in the XMB layout files) | |||
In the "human readable" conversion for rco values im adding a +1 because in code the first line of a .txt file is line 0, but in a text editor the first line is 1... so im guessing is also neeed to do this +1 addition in the values from the sprx<br> | |||
The 2 bytes updated in this sprx for 4.89 are the references to the XMB layouts, and both are a references to the same line number of the XMB layouts, so this sprx only stores a single value in the XMB layouts (located 3 lines before the values stored by the associated rco)<br> | |||
From this behaviour in the order of how the values are stored in the XMB layouts we can deduce that "the sprx stores first" (and the slave rco stores last), it makes some sense to to be that way but maybe this is just a coincidence and not an strict rule | |||
< | |||
The | |||