Editing SILKPADD
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: | ||
==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 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 files are located in paths: | |||
**dev_flash/vsh/resource/silk/data/'''CEFramework.bin''' | |||
**dev_flash/vsh/resource/silk/data/'''CEHtmlApi.bin''' | |||
**dev_flash/vsh/resource/silk/data/'''CEHtmlUI.bin''' | |||
**dev_flash/vsh/resource/silk/data/'''CEPhWeb.bin''' | |||
**dev_flash/vsh/resource/silk/data/'''CEHtmlBrowserApp.bin''' (removed/replaced in firmware 2.20) | |||
**dev_flash/vsh/resource/silk/data/'''CEHtmlBrowserAppXaiWidget.bin''' (removed/replaced in firmware 2.20) | |||
**dev_flash/vsh/resource/silk_nas/data/'''CEFramework.bin''' | |||
**dev_flash/vsh/resource/silk_nas/data/'''CEHtmlApi.bin''' | |||
**dev_flash/vsh/resource/silk_nas/data/'''CEHtmlUI.bin''' | |||
**dev_flash/vsh/resource/silk_nas/data/'''CEPhWeb.bin''' | |||
**dev_flash/vsh/resource/silk_webkit/data/'''CEFramework.bin''' | |||
**dev_flash/vsh/resource/silk_webkit/data/'''CEHtmlApi.bin''' | |||
**dev_flash/vsh/resource/silk_webkit/data/'''CEHtmlUI.bin''' | |||
**dev_flash/vsh/resource/silk_webkit/data/'''webcoreapp.bin''' | |||
==Structure== | ==Structure== | ||
Line 81: | Line 30: | ||
! Offset !! Length !! Example !! Name !! Notes | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| 0x00 || 0x04 || | | 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 || | | 0x04 || 0x04 || 50 41 44 44 || '''padd_signature''' | ||
|- | |- | ||
| 0x08 || 0x02 || 00 00 || {{cellcolors|#ff6666}} ''hdr_unk2'' || Always zeroes ? | | 0x08 || 0x02 || 00 00 || {{cellcolors|#ff6666}} ''hdr_unk2'' || Always zeroes ? | ||
Line 132: | Line 81: | ||
| 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_length''' || Length of the next text string + 1 null byte at the end (<abbr title="In Big Endian">b.e.</abbr>) | ||
|- | |- | ||
| 0x04 || ''varies'' || | | 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 | <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 235: | Line 184: | ||
! Offset !! Length !! Example !! Name !! Notes | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| 0x00 || 0x04 || 00 00 00 08 || ''' | | 0x00 || 0x04 || 00 00 00 08 || '''text_string_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>) | ||
|- | |- | ||
| 0x04 || 0x08 || CEBinary || ''' | | 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 || {{cellcolors|#ff6666}} ''bin_unk2'' || Always zeroes ? | ||
|- | |- | ||
| 0x0E || 0x04 || 00 00 00 09 || ''' | | 0x0E || 0x04 || 00 00 00 09 || '''text_string_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>) | ||
|- | |- | ||
| 0x12 || ''varies'' || image\gif || ''' | | 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 (<abbr title="In Big Endian">b.e.</abbr>) | ||
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 | 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 || ''' | | 0x00 || 0x04 || 00 00 00 08 || '''text_string_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>) | ||
|- | |- | ||
| | | 0x04 || 0x08 || CEDialog || '''text_string''' || CEDialog data type. Without the null termination ! | ||
|- | |- | ||
| | | 0x0C || 0x04 || 00 00 27 56 || '''data_id''' || Unique ID (<abbr title="In Big Endian">b.e.</abbr>), 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 | ||
|- | |- | ||
| 0x10 || 0x04 || 00 00 00 00 || ''unknown'' || Other examples: CERectComponent=0x0A, CELabel=0x2D, CEbutton(1)=0x3C, CEbutton(2)=0x73, CEbutton(3)=0xAA | | 0x10 || 0x04 || 00 00 00 00 || ''unknown'' || Other examples: CERectComponent=0x0A, CELabel=0x2D, CEbutton(1)=0x3C, CEbutton(2)=0x73, CEbutton(3)=0xAA | ||
Line 311: | Line 258: | ||
|- | |- | ||
| 0x2C || 0x04 || 00 00 00 0C || ''unknown'' || Font size ? | | 0x2C || 0x04 || 00 00 00 0C || ''unknown'' || Font size ? | ||
|} | |-{{cellcolors|lightgrey}} | ||
| colspan="5" | | |||
| | |||
|- | |- | ||
| 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 05 || '''children_count''' || Number of chidrens under the root '''CEDialog''' (in this example there are 5 children: 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) ? | | 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... | |||
|} | |} | ||
For | For CEButton at 0x30 | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset !! Length !! Example !! Name !! Notes | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| 0x30 || 0x01 || | | 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>) | ||
|- | |||
| 0x34 || ''varies'' || Ok || '''text_string''' || Ok, Cancel, Retry, etc... | |||
|- | |||
| ''varies'' || 0x01 || 00 || '''null''' || | |||
|- | |||
| ''varies''|| 0x02 || 00 00 || ''unknown'' || Always zero ? | |||
|- | |||
| ''varies'' || 0x01 || 01 || ''unknown'' || Always 1 ? | |||
|} | |} | ||
Line 339: | Line 291: | ||
| 0x30 || 0x04 || 00 00 00 00 || '''text_string_length''' ? || | | 0x30 || 0x04 || 00 00 00 00 || '''text_string_length''' ? || | ||
|- | |- | ||
| | | ''varies''|| 0x02 || 00 00 || ''unknown'' || Always zero ? | ||
|- | |- | ||
| | | ''varies'' || 0x01 || 01 || ''unknown'' || Always 1 ? | ||
|} | |} | ||
For | For CERectComponent at 0x30 | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset !! Length !! Example !! Name !! Notes | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| ''varies'' || 0x01 || 01 || ''unknown'' || Always 1 ? | |||
| ''varies'' || 0x01 || | |||
|} | |} | ||
Line 372: | Line 316: | ||
=====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 '''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 | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset !! Length !! Example !! Name !! Notes | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| | | 0x00 || 0x04 || 00 00 00 06 || '''text_string_length''' || Length of the next text string (<abbr title="In Big Endian">b.e.</abbr>) | ||
|- | |- | ||
| | | 0x04 || 0x06 || CEMenu || '''text_string''' || CEMenu data type. Without the null termination ! | ||
|- | |- | ||
| | | 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}} | |||
| 0x0E || colspan="4" | Etc... | |||
The | |||
|- | |||
| | |||
|} | |} | ||