Editing SILKPADD

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:
==Description==
==Description==
*SILKPADD Is a container format used by the Silk [[Web Browser]]. The meaning of the name "PADD" is unknown, some speculations: '''P'''rogram '''ADD'''resses ?... or... '''PAD''' '''D'''ata ?
SILKPADD ('''SILK''' <abbr title="Program ?">'''P'''...?</abbr> <abbr title="ADDresses ?">'''ADD'''...?</abbr>)


==Silkpadd files and Versions==
*Located in path:
Total 22 files in PS3 firmwares
**dev_flash/vsh/resource/silk/data/'''CEFramework.bin'''
 
**dev_flash/vsh/resource/silk/data/'''CEHtmlApi.bin'''
{| class="wikitable" style="font-size:small;"
**dev_flash/vsh/resource/silk/data/'''CEHtmlUI.bin'''
|+ SILKPADD files in PS3 firmwares
**dev_flash/vsh/resource/silk/data/'''CEPhWeb.bin'''
! File !! Version !! Size !! MD5 !! Notes/Changes
**dev_flash/vsh/resource/silk/data/'''CEHtmlBrowserApp.bin''' (removed/replaced in firmware 2.20)
|-{{cellcolors|#9999ff|#ffffff|center}}
**dev_flash/vsh/resource/silk/data/'''CEHtmlBrowserAppXaiWidget.bin''' (removed/replaced in firmware 2.20)
| colspan="5" | dev_flash/vsh/resource/'''silk'''/data/
**dev_flash/vsh/resource/silk_nas/data/'''CEFramework.bin'''
|-
**dev_flash/vsh/resource/silk_nas/data/'''CEHtmlApi.bin'''
| rowspan="3" | CEFramework.bin || [[1.02 CEX|1.02]]~[[1.60 CEX|1.60]] || style="text-align:right;" | 12.288 || style="font-family:monospace;" | 347337F4E26A8AFB38389C5997952D2A ||
**dev_flash/vsh/resource/silk_nas/data/'''CEHtmlUI.bin'''
|-
**dev_flash/vsh/resource/silk_nas/data/'''CEPhWeb.bin'''
| [[1.70 CEX|1.70]]~[[2.36 CEX|2.36]] || style="text-align:right;" | 40.141 || style="font-family:monospace;" | DC2E8183C00213FDF6AC609F1839484D ||
**dev_flash/vsh/resource/silk_webkit/data/'''CEFramework.bin'''
|-
**dev_flash/vsh/resource/silk_webkit/data/'''CEHtmlApi.bin'''
| [[2.40 CEX|2.40]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 40.141 || style="font-family:monospace;" | 650C67EA9E56ABAC1B771296A32396A1 ||
**dev_flash/vsh/resource/silk_webkit/data/'''CEHtmlUI.bin'''
|-
**dev_flash/vsh/resource/silk_webkit/data/'''webcoreapp.bin'''
| CEHtmlApi.bin || [[1.02 CEX|1.02]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 1.699 || style="font-family:monospace;" | 2F237A4B98DD2733D13286842C5B103D || Never was updated. Contains 12 tiny '''CEBinary''' files of type '''image\gif'''
|-
| CEHtmlBrowserApp.bin || [[1.02 CEX|1.02]]~[[2.17 CEX|2.17]] || style="text-align:right;" | 54.013 || style="font-family:monospace;" | 2BC8ACF9A9952AEB6F1A181357E6648F || Removed in firmware [[2.20 CEX|2.20]]
|-
| CEHtmlBrowserAppXaiWidget.bin || [[1.02 CEX|1.02]]~[[2.17 CEX|2.17]] || style="text-align:right;" | 53.985 || style="font-family:monospace;" | 493DD038DE219DAAA543A014410DB0A6 || Removed in firmware [[2.20 CEX|2.20]]
|-
| rowspan="5" | CEHtmlUI.bin || [[1.02 CEX|1.02]] || style="text-align:right;" | 15.396 || style="font-family:monospace;" | 04F60F47751CD376860ED476A5BEC717 ||
|-
| [[1.10 CEX|1.10]]~[[2.01 CEX|2.01]] || style="text-align:right;" | 14.776 || style="font-family:monospace;" | EF2DA3A37BD8B57CC2782BD9C9708C59 ||
|-
| [[2.10 CEX|2.10]]~[[2.36 CEX|2.36]] || style="text-align:right;" | 14.777 || style="font-family:monospace;" | CDAFFB6C81230E371AEA262433511679 ||
|-
| [[2.40 CEX|2.40]]~[[2.43 CEX|2.43]] || style="text-align:right;" | 14.841 || style="font-family:monospace;" | 73958AE1FAC54A8C098B1574BF3B16FA ||
|-
| [[2.50 CEX|2.50]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 14.857 || style="font-family:monospace;" | E130F653D00C46886B1C8AA6C904A970 ||
|-
| rowspan="7" | CEPhWeb.bin || [[1.02 CEX|1.02]]~[[1.60 CEX|1.60]] || style="text-align:right;" | 41.719 || style="font-family:monospace;" | 87FE0D9A7E1EB3FF17392F3A4EA41697 ||
|-
| [[1.70 CEX|1.70]]~[[2.01 CEX|2.01]] || style="text-align:right;" | 42.452 || style="font-family:monospace;" | 42DA163F761A7B44521BBE2B2E6E4F5D ||
|-
| [[2.10 CEX|2.10]]~[[2.36 CEX|2.36]] || style="text-align:right;" | 42.453 || style="font-family:monospace;" | 2D60C7858680CD10969069BA9D7F899E ||
|-
| [[2.40 CEX|2.40]]~[[2.43 CEX|2.43]] || style="text-align:right;" | 42.813 || style="font-family:monospace;" | 12889911D357E2DFE9E346720ADBCD24 ||
|-
| [[2.50 CEX|2.50]]~[[2.60 CEX|2.60]] || style="text-align:right;" | 50.347 || style="font-family:monospace;" | A025D7E2B17DC49856D213857F3221EF ||
|-
| [[2.70 CEX|2.70]]~[[3.01 CEX|3.01]] || style="text-align:right;" | 50.351 || style="font-family:monospace;" | EE84DBA482F532B298C59016E5774025 ||
|-
| [[3.10 CEX|3.10]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 50.995 || style="font-family:monospace;" | DC4F6D763022CFBE4E672940B9F95709 ||
|-{{cellcolors|#9999ff|#ffffff|center}}
| colspan="5" | dev_flash/vsh/resource/'''silk_nas'''/data/
|-{{cellcolors|lightgrey}}
| CEFramework.bin || [[2.20 CEX|2.20]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 40.141 || style="font-family:monospace;" | DC2E8183C00213FDF6AC609F1839484D || Same file under '''silk''' path in firmwares [[1.70 CEX|1.70]]~[[2.36 CEX|2.36]]
|-{{cellcolors|lightgrey}}
| CEHtmlApi.bin || [[2.20 CEX|2.20]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 1.699 || style="font-family:monospace;" | 2F237A4B98DD2733D13286842C5B103D || Same file under '''silk''' path in firmwares [[1.02 CEX|1.02]]~[[4.83 CEX|4.83]]
|-{{cellcolors|lightgrey}}
| CEHtmlUI.bin || [[2.20 CEX|2.20]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 14.777 || style="font-family:monospace;" | CDAFFB6C81230E371AEA262433511679 || Same file under '''silk''' path in firmwares [[2.10 CEX|2.10]]~[[2.36 CEX|2.36]]
|-{{cellcolors|lightgrey}}
| CEPhWeb.bin || [[2.20 CEX|2.20]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 42.453 || style="font-family:monospace;" | 2D60C7858680CD10969069BA9D7F899E || Same file under '''silk''' path in firmwares [[2.10 CEX|2.10]]~[[2.36 CEX|2.36]]
|-{{cellcolors|#9999ff|#ffffff|center}}
| colspan="5" | dev_flash/vsh/resource/'''silk_webkit'''/data/
|-
| CEFramework.bin || [[4.10 CEX|4.10]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 39.077 || style="font-family:monospace;" | FB0BB25EA510A200040A25062458BCC1 ||
|-{{cellcolors|lightgrey}}
| CEHtmlApi.bin || [[4.10 CEX|4.10]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 1.699 || style="font-family:monospace;" | 2F237A4B98DD2733D13286842C5B103D || Same file under '''silk''' path in firmwares [[1.02 CEX|1.02]]~[[4.83 CEX|4.83]]
|-
| CEHtmlUI.bin || [[4.10 CEX|4.10]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 36.918 || style="font-family:monospace;" | 386417CECD1539CA141AB8EE909A5FC9 ||
|-
| rowspan="2" | webcoreapp.bin || [[4.10 CEX|4.10]]~[[4.26 SEX|4.26]] || style="text-align:right;" | 59.133 || style="font-family:monospace;" | DF0F948BC03FAC412E81BE32BA8540D0 ||
|-
| [[4.30 CEX|4.30]]~[[4.83 CEX|4.83]] || style="text-align:right;" | 59.938 || style="font-family:monospace;" | 8030618238A6756EE27B893A5C94FF1B ||
|}


==Structure==
==Structure==
Line 81: Line 30:
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x00 || 0x04 || SILK || '''silk_signature''' || rowspan="2" | By now this is represented in wiki as two separated signatures just incase the format allows for other variants, like SILKFLAT, SILKPLUS, etc... but maybe the 8 bytes are a single signature
| 0x00 || 0x04 || 53 49 4C 4B || '''silk_signature''' || rowspan="2" | By now this 2 are represented in wiki separated just incase the format allows for other variants, like SILKFLAT, SILKCRAP, or any other names, but maybe the 8 bytes are processed together
|-
|-
| 0x04 || 0x04 || PADD|| '''padd_signature'''
| 0x04 || 0x04 || 50 41 44 44 || '''padd_signature'''
|-
|-
| 0x08 || 0x02 || 00 00 || {{cellcolors|#ff6666}} ''hdr_unk2'' || Always zeroes ?
| 0x08 || 0x02 || 00 00 || ''unknown'' || Always zeroes ?
|-
|-
| 0x0A || 0x02 || 0C 00 || '''entry_count''' || Number of entries in the file (<abbr title="In Little Endian">l.e.</abbr>)
| 0x0A || 0x02 || 0C 00 || '''entry_count''' || Number of entries in the file (in little endian)
|-
|-
| 0x0C || 0x04 || 00 00 00 00 || {{cellcolors|#ff6666}} ''hdr_unk4'' || Always zeroes ?
| 0x0C || 0x04 || 00 00 00 00 || ''padding'' ? || Always zeroes ?
|}
|}


===Index table===
===Index table===
The index table starts at offset 0x10, every entry in the index table is 0xC bytes length and is composed by 3 values. All values in the index table are in little endian. There is no gap or padding at the end of the index table
The index table starts at offset 0x10, every entry in the index table is 0xC bytes lenght and is composed by 3 values. All values in the index table are in little endian. There is no gap or padding at the end of the index table


Example of the first entry in the index table of CEHtmlApi.bin
Example of the first entry in the index table of CEHtmlApi.bin
Line 104: Line 53:
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x00 || 0x04 || B9 0B 00 00 || '''data_id''' || A unique ID for the data, used by the web browser to identify and to access the data (<abbr title="In Little Endian">l.e.</abbr>)
| 0x00 || 0x04 || B9 0B 00 00 || '''data_id''' || A unique ID for the data, used by the web browser to identify and to access the data (in little endian)  
|-
|-
| 0x04 || 0x04 || A0 00 00 00 || '''data_offset''' || Absolute offset of the data (<abbr title="In Little Endian">l.e.</abbr>)
| 0x04 || 0x04 || A0 00 00 00 || '''data_offset''' || Absolute offset of the data (in little endian)  
|-
|-
| 0x08 || 0x04 || 9B 00 00 00 || '''data_length''' || Size of the data (<abbr title="In Little Endian">l.e.</abbr>)
| 0x08 || 0x04 || 9B 00 00 00 || '''data_lenght''' || Size of the data (in little endian)  
|}
|}


Line 117: Line 66:


====Data types====
====Data types====
All data entries starts with 4 bytes + a text string. The first 4 bytes indicates the length of the text string located inmediatly after. So the first bytes that needs to be readed are the 4 bytes + the length indicated by that 4 bytes
All data entries starts with 4 bytes + a text string. The first 4 bytes indicates the length of the text string located inmediatly after. So the first bytes that needs to be readed are the 4 bytes + the lenght indicated by that 4 bytes


=====Text string=====
=====Text string=====
This is the most basic example, the entry can be identifyed as a "text string" because is null terminated (note how the '''text_string_length'''=5 of the example below includes the null byte 0x00 at the end)
This is the most basic example, the entry can be identifyed as a "text string" because is null terminated (note how the '''text_string_lenght'''=5 of the example below includes the null byte 0x00 at the end)


  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Line 130: Line 79:
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x00 || 0x04 || 00 00 00 05 || '''text_string_length''' || Length of the next text string + 1 null byte at the end (<abbr title="In Big Endian">b.e.</abbr>)
| 0x00 || 0x04 || 00 00 00 05 || '''text_string_lenght''' || Lenght of the next text string + 1 null byte at the end (in big endian)  
|-
|-
| 0x04 || ''varies'' || Test || '''text_string''' || A normal text string (starting with random characters that doesnt matches the search patterns for the other data type checks)
| 0x04 || ''varies'' || 54 65 73 74 || '''text_string''' || A normal text string (starting with random characters that doesnt matches the search patterns for the other data type checks)
|-
|-
| ''varies'' || 0x01 || 00 || '''null''' || This is the null termination of the previous string
| ''varies'' || 0x01 || 00 || '''null''' || This is the null termination of the previous string
Line 153: Line 102:
  <nowiki>00000070  3A 6C 69 6E 6B 09 09 09 7B 66 6F 6E 74 3A 38 70  :link...{font:8p</nowiki>
  <nowiki>00000070  3A 6C 69 6E 6B 09 09 09 7B 66 6F 6E 74 3A 38 70  :link...{font:8p</nowiki>
  <nowiki>00000080  74 2F 31 31 70 74 20 76 65 72 64 61 6E 61 3B 20  t/11pt verdana; </nowiki>
  <nowiki>00000080  74 2F 31 31 70 74 20 76 65 72 64 61 6E 61 3B 20  t/11pt verdana; </nowiki>
  <nowiki>00000090  63 6F 6C 6F 72 3A 72 65 64 7D 0A 09 09 09 09 09  color:red!important}......</nowiki>
  <nowiki>00000090  63 6F 6C 6F 72 3A 72 65 64 7D 0A 09 09 09 09 09  color:red}......</nowiki>
  <nowiki>000000A0  09 61 3A 76 69 73 69 74 65 64 09 09 7B 66 6F 6E  .a:visited..{fon</nowiki>
  <nowiki>000000A0  09 61 3A 76 69 73 69 74 65 64 09 09 7B 66 6F 6E  .a:visited..{fon</nowiki>
  <nowiki>000000B0  74 3A 38 70 74 2F 31 31 70 74 20 76 65 72 64 61  t:8pt/11pt verda</nowiki>
  <nowiki>000000B0  74 3A 38 70 74 2F 31 31 70 74 20 76 65 72 64 61  t:8pt/11pt verda</nowiki>
Line 208: Line 157:
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x00 || 0x04 || 00 00 03 A9 || '''text_string_length''' || Size of the HTML file + 1 null byte at the end (<abbr title="In Big Endian">b.e.</abbr>)
| 0x00 || 0x04 || 00 00 03 A9 || '''text_string_lenght''' || Size of the HTML file + 1 null byte at the end (in big endian)  
|-
|-
| 0x04 || ''varies'' || <nowiki><!DOCTYPE HTML</nowiki>, etc... || '''text_string''' || HTML file
| 0x04 || ''varies'' || <nowiki><!DOCTYPE HTML</nowiki>, etc... || '''text_string''' || HTML file
Line 235: Line 184:
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x00 || 0x04 || 00 00 00 08 || '''data_type_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>)
| 0x00 || 0x04 || 00 00 00 08 || '''text_string_lenght''' || Lenght of the next text string (in big endian)
|-
|-
| 0x04 || 0x08 || CEBinary || '''data_type''' || CEBinary data type. Without the null termination !
| 0x04 || 0x08 || CEBinary || '''text_string''' || CEBinary data type. Without the null termination !
|-
|-
| 0x0C || 0x02 || 00 00 || {{cellcolors|#ff6666}} ''bin_unk2'' || Always zeroes ?
| 0x0C || 0x02 || 00 00 || ''unknown'' || Always zeroes ?
|-
|-
| 0x0E || 0x04 || 00 00 00 09 || '''file_type_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>)
| 0x0E || 0x04 || 00 00 00 09 || '''text_string_lenght''' || Lenght of the next text string (in big endian)
|-
|-
| 0x12 || ''varies'' || image\gif || '''file_type''' || File type. Without the null termination !. Some predefined filetypes found:<br>'''image\png'''<br>'''image\gif'''<br>'''image\gifPushed''' (it seems this files are png)<br>'''image\ms-cursor''' (microsoft .cur file extension)<br>'''image\ms-icon''' (microsoft .ico file extension)<br>etc...<!--to fill later-->
| 0x12 || ''varies'' || image\gif || '''text_string''' || File type. Without the null termination !. Some predefined filetypes found:<br>'''image\png'''<br>'''image\gif'''<br>'''image\gifPushed''' (it seems this files are png)<br>'''image\ms-cursor''' (microsoft .cur file extension)<br>'''image\ms-icon''' (microsoft .ico file extension)<br>etc...<!--to fill later-->
|-
|-
| ''varies'' || 0x04 || 00 00 00 7C || '''file_legth''' || Indicates the size of the file (<abbr title="In Big Endian">b.e.</abbr>)
| ''varies'' || 0x04 || 00 00 00 7C || '''file_legth''' || Indicates the size of the file (in big endian)
|-
|-
| ''varies'' || ''varies'' || GIF, etc... || '''file_data''' || This is the file
| ''varies'' || ''varies'' || GIF, etc... || '''file_data''' || This is the file
Line 251: Line 200:


=====CEDialog=====
=====CEDialog=====
The '''CEDialog''' is a complex data type that represents the root of a hierarchy of parent/chidren/brothers. Every one of them have an unique ID of the same type than the ones at the index table. The ID of CEDialog (root of this hierarchy) is the only that appears duplicated in the index table, the IDs of the children of CEDialog doesnt appears in the index table
The '''CEDialog''' is a complex data type that represents the root of a hierarchy of parent/chidren/brothers. Every one of them have an unique ID


  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Line 282: Line 231:
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x00 || 0x04 || 00 00 00 08 || '''data_type_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>)
| 0x00 || 0x04 || 00 00 00 08 || '''text_string_lenght''' || Lenght of the next text string (in big endian)
|-
|-
| 0x04 || 0x08 || CEDialog || '''data_type''' || CEDialog data type. Without the null termination !
| 0x04 || 0x08 || CEDialog || '''text_string''' || CEDialog data type. Without the null termination !
|-
|-
| 0x0C || 0x02 || 00 00 || ''unknown'' || Always zero for CEDialog ?
| 0x0C || 0x04 || 00 00 27 56 || '''data_id''' || Unique ID,  is the same type of ID than the ones at the index table<br>The ID of CEDialog (root of this hierarchy) is the only that appears duplicated in the index, the IDs of the childrens of CEDialog doesnt appears in the index table
|-
|-
| 0x0E || 0x02 || 27 56 || '''data_id''' || Unique ID (<abbr title="In Big Endian">b.e.</abbr>)
| 0x10 || 0x04 || 00 00 00 00 || ''unknown'' || This one always increments. CERectComponent=0x0000000A, CELabel=0x0000002D, first CEbutton=0x0000003C, second CEbutton=0x00000073, third CEbutton=0x000000AA
|-
|-
| 0x10 || 0x04 || 00 00 00 00 || ''unknown'' || Other examples: CERectComponent=0x0A, CELabel=0x2D, CEbutton(1)=0x3C, CEbutton(2)=0x73, CEbutton(3)=0xAA
| 0x14 || 0x04 || 00 00 00 00 || ''unknown'' || Always 0x00000064 for CEButton ?, CERectComponent=0x00000008, CELabel=0x00000019
|-
|-
| 0x14 || 0x04 || 00 00 00 00 || ''unknown'' || Other examples: CERectComponent=0x08, CELabel=0x19, CEbutton(1,2,3)=0x64
| 0x18 || 0x04 || 00 00 01 09 || ''unknown'' || Always 0x00000032 for CEButton ?, CERectComponent=0x00000020, CELabel=0x000000B4
|-
|-
| 0x18 || 0x04 || 00 00 01 09 || ''unknown'' || Other examples: CERectComponent=0x20, CELabel=0xB4, CEbutton(1,2,3)=0x32
| 0x1C || 0x04 || 00 00 00 55 || ''unknown'' || Always 0x00000014 for CEButton ?, CERectComponent=0x00000020, CELabel=0x00000032
|-
|-
| 0x1C || 0x04 || 00 00 00 55 || ''unknown'' || Other examples: CERectComponent=0x20, CELabel=0x32, CEbutton(1,2,3)=0x14
| 0x20 || 0x01 || 00 || ''unknown'' || First CEbutton of the example = 0x1A, second=0x22, third=0x02. , CERectComponent=0x00, CELabel=0x00
|-
|-
| 0x20 || 0x01 || 00 || ''unknown'' || Other examples: CERectComponent=0x00, CELabel=0x00, CEbutton(1)=0x1A, CEbutton(2)=0x22, CEbutton(3)=0x02
| 0x21 || 0x01 || 01 || ''unknown'' || First CEbutton of the example = 0xA8, second=0xA8, third=0xA8. , CERectComponent=0x00, CELabel=0x0B
|-
|-
| 0x21 || 0x01 || 01 || ''unknown'' || Other examples: CERectComponent=0x00, CELabel=0x0B, CEbutton(1,2,3)=0xA8
| 0x22 || 0x01 || 00 || ''unknown'' || Always 0x00 for CEButton ?, CERectComponent=0x00, CELabel=0x20
|-
|-
| 0x22 || 0x01 || 00 || ''unknown'' || Other examples: CERectComponent=0x00, CELabel=0x20, CEbutton(1,2,3)=0x00
| 0x23 || 0x01 || 63 || ''unknown'' || Always 0x1B for CEButton ?, CERectComponent=0x83, CELabel=0x8B
|-
|-
| 0x23 || 0x01 || 63 || ''unknown'' || Other examples: CERectComponent=0x83, CELabel=0x8B, CEbutton(1,2,3)=0x1B
| 0x24 || 0x04 || FF C0 C0 C0 || '''bg_color''' || Background color (in #ABGR format ?)
|-
|-
| 0x24 || 0x04 || FF C0 C0 C0 || '''bg_color''' || Background color (in #ARGB format?, or #ABGR format ?)
| 0x28 || 0x04 || FF 00 00 00 || '''color''' || Color (in #ABGR format ?)
|-
|-
| 0x28 || 0x04 || FF 00 00 00 || '''color''' || Color (in #ARGB format?, or #ABGR format ?)
| 0x2C || 0x04 || 00 00 00 0C || ''unknown'' ||  
|-
|-
| 0x2C || 0x04 || 00 00 00 0C || ''unknown'' || Font size ?
| 0x30 || 0x04 || 00 00 00 05 || '''children_count''' || Number of "chidren" items under the root item '''CEDialog''' (in this example there are 5 childrens: CERectComponent, CELabel, CEButton, CEButton, CEButton)
|-
| 0x34 || 0x01 || 01 || '''read_next''' ? || Always 1 ? (and 0 for the last entry). Indicates if there is an entry next (or a brother at the same level of the hierarchy) ?
|-{{cellcolors|lightgrey}}
| 0x35 || colspan="4" | All the previous values seems to be definitions of the root '''CEDialog'''. After them continues with the definitions of the first children of the hierarchy named '''CERectComponent'''... and so on...
|}
|}
The values above seems to be commonly used by all the "items" of the hierarchy, after them (at relative offset 0x30) appears other values that are specific for each "item"


For CEDialog at 0x30
For CEButton at 0x30
{| class="wikitable"
{| class="wikitable"
|-
|-
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x30 || 0x04 || 00 00 00 05 || '''children_count''' || Number of chidrens under the root '''CEDialog''' (in this example there are 5 children: CERectComponent, CELabel, CEButton, CEButton, CEButton)
| 0x30 || 0x04 || 00 00 00 03 || '''text_string_lenght''' || Lenght of the next text string + the null byte (in big endian)
|-
|-
| 0x34 || 0x01 || 01 || '''read_next''' ? || Always 1 ? (and 0 for the last entry). Indicates if there is an entry next (or a brother at the same level of the hierarchy) ?
| 0x34 || ''varies'' || Ok || '''text_string''' || Ok, Cancel, Retry, etc...
|}
|-
 
| ''varies'' || 0x01 || 00 || '''null''' ||
For CERectComponent at 0x30
{| class="wikitable"
|-
|-
! Offset !! Length !! Example !! Name !! Notes
| ''varies''|| 0x02 || 00 00 || ''unknown'' || Always zero ?
|-
|-
| 0x30 || 0x01 || 01 || '''read_next''' ? ||  
| ''varies'' || 0x01 || 01 || ''unknown'' || Always 1 ?
|}
|}


For CELabel at 0x30 (same than CEButton, but in this example without the text string)
For CELabel at 0x30 (same than CEButton, but with a zero bytes lenght text string)
{| class="wikitable"
{| class="wikitable"
|-
|-
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x30 || 0x04 || 00 00 00 00 || '''text_string_length''' ? ||  
| 0x30 || 0x04 || 00 00 00 00 || '''text_string_lenght''' ? ||  
|-
|-
| 0x34 || 0x02 || 00 00 || '''key_shorcut''' ? || Always zero for CELabel ?
| ''varies''|| 0x02 || 00 00 || ''unknown'' || Always zero ?
|-
|-
| 0x36 || 0x01 || 01 || '''read_next''' ? ||  
| ''varies'' || 0x01 || 01 || ''unknown'' || Always 1 ?
|}
|}


For CEButton at 0x30
For CERectComponent at 0x30
{| class="wikitable"
{| class="wikitable"
|-
|-
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x30 || 0x04 || 00 00 00 03 || '''text_string_length''' || Length of the next text string + the null byte (<abbr title="In Big Endian">b.e.</abbr>)
| ''varies'' || 0x01 || 01 || ''unknown'' || Always 1 ?
|-
| 0x34 || ''varies'' || Ok || '''text_string''' || Ok, Cancel, Retry, etc...
|-
| ''varies'' || 0x01 || 00 || '''null''' ||
|-
| ''varies''|| 0x02 || 00 00 || '''key_shorcut''' ? || Always zero for CEButton ?
|-
| ''varies'' || 0x01 || 01 || '''read_next''' ? ||
|}
|}


Line 369: Line 311:
***0x275B (10075 in decimal) - CEButton (fifth children) with the text '''Retry'''
***0x275B (10075 in decimal) - CEButton (fifth children) with the text '''Retry'''
***The ID of the root is the same of the index table (converted to decimal in the "SILKPADD editor" app to 10070), the IDs of the 5 childrens of 10070 doesnt appears on the index but are 10071, 10072, 10073, 10074, 10075. This is why the next CEDialog ID in the index inmediatly after 10070 is 100076 (because the IDs 10071 up to 10075 are used by the 5 childrens of 10070)
***The ID of the root is the same of the index table (converted to decimal in the "SILKPADD editor" app to 10070), the IDs of the 5 childrens of 10070 doesnt appears on the index but are 10071, 10072, 10073, 10074, 10075. This is why the next CEDialog ID in the index inmediatly after 10070 is 100076 (because the IDs 10071 up to 10075 are used by the 5 childrens of 10070)
*Some items found... (the list could be huge)
**CERectComponent - Rectangled frame ?
**CELabel - ?
**CEButton - Displays a text string (and probably a button icon next to it). The 3 CEButtons of this example displays the text strings: '''Ok''', '''Cancel''', and '''Retry'''
**etc...


=====CEMenu=====
=====CEMenu=====
The '''CEMenu''' is a complex data type that represents the root of a hierarchy of parent/chidren/brothers. Every one of them have an unique ID
The '''CEDialog''' is a complex data type that represents the root of a hierarchy of parent/chidren/brothers. Every one of them have an unique ID
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  00 00 00 06 43 45 4D 65 6E 75 00 00 75 BA 00 00  ....CEMenu..uº..
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 32  ...............2
00000020  04 0B FF FF FF FF FF 00 00 00 00 00 00 0C 00 00  ..ÿÿÿÿÿ.........
00000030  00 05 48 65 6C 70 00 00 48 00 01 00 01 75 BB 00  ..Help..H....u».
00000040  00 00 06 41 62 6F 75 74 00 00 00 00 00 00 41 00  ...About......A.
 


First appears the same values than the ones used in CEDialog, and after them (at relative offset 0x2E)
{| class="wikitable"
{| class="wikitable"
|-
|-
! Offset !! Length !! Example !! Name !! Notes
! Offset !! Length !! Example !! Name !! Notes
|-
|-
| 0x2E || 0x04 || 00 00 00 05 || '''text_string_length''' ||  
| 0x00 || 0x04 || 00 00 00 06 || '''text_string_lenght''' || Lenght of the next text string (in big endian)
|-
|-
| 0x32 || ''varies'' || Help || '''text_string''' || Displays the text '''Help'''
| 0x04 || 0x06 || CEMenu || '''text_string''' || CEMenu data type. Without the null termination !
|-
|-
| ''varies'' || 0x01 || 00 || '''null''' ||  
| 0x0A || 0x04 || 00 00 75 BB || '''data_id''' || Unique ID,  is the same type of ID than the ones at the index table<br>The ID of CEMenu (root of this hierarchy) is the only that appears duplicated in the index, the IDs of the childrens of CEMenu doesnt appears in the index table
|-
|-{{cellcolors|lightgrey}}
| ''varies'' || 0x02 || H || '''key_shorcut''' || Keyboard shorcut (in this example "'''H'''" for "Help")
| 0x0E || colspan="4" | Etc...
|-
| ''varies''|| 0x02 || 00 01 || ''navbar_position'' ? || This value seems to indicate the Menu location on the web browser navigation bar, some examples found:<br>0x1=Help<br>0x2=Bookmarks<br>0x4=Tools<br>0x6=File<br>0x7=Edit<br>0x9=Debug<br>0xA=Debug<br>0xD=View
|}
|}
The values above seems to be the definition of a menu in the main "navigation bar"
The values below seems to be every one of the entries inside a "collapsable list"
{| class="wikitable"
|-
! Offset !! Length !! Example !! Name !! Notes
|-
| ''varies''|| 0x02 || 00 01 || ''parent'' ? || This seems to indicate who is the parent/owner of this entry, in this example this entry is '''data_id'''=0x75BB and the parent is '''data_id'''=0x75BA
|-
| ''varies''|| 0x02 || 75 BB || '''data_id''' || Weird, this ID is pointing to a problem of how is splitted the CEDialog/CEMenu structure in this wiki page
|-
| ''varies'' || 0x04 || 00 00 00 06 || '''text_string_length''' ||
|-
| ''varies'' || ''varies'' || About || '''text_string''' || Displays the text '''About'''
|-
| ''varies'' || 0x01 || 00 || '''null''' ||
|-
| ''varies''|| 0x02 || 00 00 || ''unknown'' ||
|-
| ''varies''|| 0x02 || 00 00 || ''unknown'' ||
|-
| ''varies'' || 0x02 || A || '''key_shorcut''' || Keyboard shorcut (in this example "'''A'''" for "About")
|-
| ''varies''|| 0x02 || 00 00 || ''unknown'' ||
|-
| ''varies''|| 0x01 || 00 || '''read_next''' ? ||
|}
==Links and Tools==
*[http://www.psx-place.com/threads/i-did-it-offline-html-from-the-browser.20797/ SILKPADD Editor by NewFile] (and research/discussion talk)


{{File Formats}}
{{File Formats}}
<noinclude>[[Category:Main]]</noinclude>
<noinclude>[[Category:Main]]</noinclude>
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)