PARAM.SFO: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
m (→‎CATEGORY For HDD contents: more notes to 2G)
m (→‎SFO: separators in the table resized)
Line 3: Line 3:
'''SFO''' ('''S'''ystem '''F'''ile '''O'''bject) are used in folders wich content needs to be displayed in the [[XMB]].
'''SFO''' ('''S'''ystem '''F'''ile '''O'''bject) are used in folders wich content needs to be displayed in the [[XMB]].


The basic file/folder structure of a '''PS3 content''' is composed by a SFO, the multimedia [[Content Information Files]], and for speciall content like [[Game_Saves|SaveData]] or [[Trophy_files| Trophies]] there is a [[PARAM.PFD]] for security reasons, other type of content like games or apps needs an structure of subfolders with names as HTMLDIR, INSDIR, LICDIR, PKGDIR, TRPDIR, USRDIR, etc...
The basic file/folder structure of a '''PS3 content''' is composed by a SFO, the multimedia [[Content Information Files]], and for special content like [[Game_Saves|SaveData]] or [[Trophy_files| Trophies]] there is a [[PARAM.PFD]] for security reasons, other type of content like games or apps needs an structure of subfolders with names as HTMLDIR, INSDIR, LICDIR, PKGDIR, TRPDIR, USRDIR, etc...


The parameters contained in a SFO can be simplyfied as inputs/outputs for/from the content:
The parameters contained in a SFO can be simplyfied as inputs/outputs for/from the content:
* Boot modifyers (flags) that are sent to the content when is executed to activate speciall modes (e.g. audio and video modes of a game).
* Boot modifyers (flags) that are sent to the content when is executed to activate special modes (e.g. audio and video modes of a game).
* Information texts about the content and his restrictions (e.g. title and version of a game).
* Information texts about the content and his restrictions (e.g. title and version of a game).


Line 16: Line 16:




SFO's and SFX's can be chained in a structure of subfolders where the "main" SFO activates a speciall subfolder, and the subfolder contains another SFO that activates another subfolder and so on.
SFO's and SFX's can be chained in a structure of subfolders where the "main" SFO activates a special subfolder, and the subfolder contains another SFO that activates another subfolder and so on.


This structures are limited by the system and activated by a combination of [[#CATEGORY|CATEGORY]] and speciall flags on [[#ATTRIBUTE|ATTRIBUTE]].
This structures are limited by the system and activated by a combination of [[#CATEGORY|CATEGORY]] and special flags on [[#ATTRIBUTE|ATTRIBUTE]].


In Blu-Ray discs, the "main" PARAM.SFO itself is activated by another flag inside [[PS3_DISC.SFB]].
In Blu-Ray discs, the "main" PARAM.SFO itself is activated by another flag inside [[PS3_DISC.SFB]].
Line 51: Line 51:
</pre>
</pre>


The '''Data_Types''' are partially known based in some examples found in different content
====Data_Type====
Partially known based in some examples found in different content
 
{| class="wikitable"
{| class="wikitable"
|-
|-
! Data_Types !! Description !! Used in
! Data_Type !! Description !! Used in
|-
|-
| 04 00 || utf-8 Speciall Mode || ACCOUNT_ID, PARAMS, PARAMS2 (in SaveData)... and PADDING (in trophy)
| 04 00 || style="background-color:#00DDDD;" | utf-8 Special Mode || Data generated by the system: '''Game Saves''' (ACCOUNT_ID, PARAMS, PARAMS2, SAVEDATA_FILE_LIST, SAVEDATA_PARAMS)... and '''Trophies''' (PADDING)
|-
|-
| 04 02 || utf-8 ||
| 04 02 || style="background-color:#DDDD00;" | utf-8 ||
|-
|-
| 04 04 || integer ||
| 04 04 || style="background-color:#DD00DD;" | integer ||
|-
|-
|}
|}


The '''Data_Type''' 04 00 marked as "utf-8 Speciall Mode" has the particularity of return a "right" or "wrong" when comparing the string with a reference value, so it can be said that the difference between the simple "utf-8" and "utf-8 Speciall Mode" is only from the point of view of how the system manipulate this data. For more info read the section [[#ACCOUNT_ID|ACCOUNT_ID]].
*Speculation


*Speculation
The '''Data_Type''' = '''0400''' marked as "utf-8 Special Mode" has the particularity of return a "right" or "wrong" when comparing the string with a reference value, so it can be said that the difference between the simple "utf-8" and "utf-8 Special Mode" is only from the point of view of how the system manipulate this data. For more info read the section [[#ACCOUNT_ID|ACCOUNT_ID]].


If the "scale" used for the second byte follows the proportion of 2^X (e.g. 1, 2, 4, 8, 16, 32, etc...) then we are missing a "04 01" valid data type in the list
If the "scale" used for the second byte follows the proportion of 2^X (e.g. 1, 2, 4, 8, 16, 32, etc...) then we are missing a "04 01" valid data type in the list


===Name_Table===
===Name_Table===
The entries of this table (and the next table) can vary depending of the kind of content, but always are ordered by his names (alphabetically from A to Z), each entry of this table needs 1 blank byte after the name to separate them. The valid values used in known formats are grouped in [[#Parameters_Table|Parameters Table]] for a fast reference.
The entries of this table (and the next table) can vary depending of the kind of content, but are always ordered by names (alphabetically from A to Z), each entry of this table needs 1 blank byte after the name to separate them. The valid values used in known formats are grouped in [[#Parameters_Table|Parameters Table]] for a fast reference.


The table has padding at the end to fit the total size in bytes to a multiply or 4, this padding is added after the last blank byte of the last entry. If the last entry (included his blank byte) matches with a multiply of 4 this padding doesn't exist.
The table has padding at the end to fit the total size in bytes to a multiply or 4, this padding is added after the last blank byte of the last entry. If the last entry (included his blank byte) matches with a multiply of 4 this padding doesn't exist.
Line 78: Line 80:
This table has no padding between entries neither at the end, '''Data_Size_Total''' for each entry is stored in the '''Definition_Table''' and this sizes are fixed by each entry (e.g. RESOLUTION always has a '''Data_Size_Total''' of 4 bytes), so the space in '''Data_Table''' can be considered reserved (filled with zeroes when not used).
This table has no padding between entries neither at the end, '''Data_Size_Total''' for each entry is stored in the '''Definition_Table''' and this sizes are fixed by each entry (e.g. RESOLUTION always has a '''Data_Size_Total''' of 4 bytes), so the space in '''Data_Table''' can be considered reserved (filled with zeroes when not used).


*Integer entries uses all the reserved bytes, so his '''Data_Size_Used''' is the same than his '''Data_Size_Total'''.
*Integer entries uses all the reserved bytes, so the '''Data_Size_Used''' is the same as '''Data_Size_Total'''.
*utf-8 entries never uses all the reserved bytes, needs 1 blank byte after the last character of the text string, this blank byte can be considered part of the string to count the '''Data_Size_Used''' bytes for this entry (e.g. the title "my homebrew " has a '''Data_Size_Used''' of 12 bytes from the total of 128 reserved in his '''Data_Size_Total''').
*utf-8 entries never uses all the reserved bytes, needs 1 blank byte after the last character of the text string, this blank byte can be considered part of the string to count the '''Data_Size_Used''' bytes for this entry (e.g. the title "my homebrew " has a '''Data_Size_Used''' of 12 bytes from the total of 128 reserved in '''Data_Size_Total''').


==Internall Structure Examples==
==Internal Structure Examples==


===SFO===
===SFO===
This is an example of a hand made SFO structure, it contains only 1 entry (TITLE_ID), i choosed this one because his '''Data_Size_Total''' is short enought (16 bytes) to build the full structure in a minimall size, needs padding at the end of the '''Name_Table''', and the '''Data_Size_Used''' is smaller than '''Data_Size_Total'''.
This is an example of a hand made SFO structure, it contains only 1 entry (TITLE_ID), i used this one because the '''Data_Size_Total''' is short enough (16 bytes) to build the full structure in a minimal size, needs padding at the end of the '''Name_Table''', and the '''Data_Size_Used''' is smaller than '''Data_Size_Total'''.


  0x0000  00 50 53 46  01 01 00 00  24 00 00 00  30 00 00 00 | .PSF....$...0... |
  0x0000  00 50 53 46  01 01 00 00  24 00 00 00  30 00 00 00 | .PSF....$...0... |
Line 97: Line 99:
! Offset !! Size !! Content !! Conversion !! Value !! Notes
! Offset !! Size !! Content !! Conversion !! Value !! Notes
|-
|-
! Header
| || || colspan="1" style="text-align:center; background-color:#DDDDDD;" | Header
|-
|-
| 0x0000 || 0x04 || 00 50 53 46 || To utf-8 || PSF || Signature
| 0x0000 || 0x04 || 00 50 53 46 || To utf-8 || PSF || Signature
Line 109: Line 111:
| 0x0010 || 0x04 || 01 00 00 00 || Big endian, decimal || 1 || Number of entries in the tables
| 0x0010 || 0x04 || 01 00 00 00 || Big endian, decimal || 1 || Number of entries in the tables
|-
|-
! Definition_Table
| || ||colspan="1" style="text-align:center; background-color:#DDDDDD;" | Definition_Table
|-
|-
| 0x0014 || 0x02 || 0000 || Big endian || 0 || (Start of '''Name''') - (Start of '''Name_Table''') = 0x0024-0x0024 = 0
| 0x0014 || 0x02 || 0000 || Big endian || 0 || (Start of '''Name''') - (Start of '''Name_Table''') = 0x0024-0x0024 = 0
Line 121: Line 123:
| 0x0020 || 0x04 || 00000000 || Big endian || 0 || (Start of '''Data''') - (Start of '''Data_Table''') = 0x0030-0x0030 = 0
| 0x0020 || 0x04 || 00000000 || Big endian || 0 || (Start of '''Data''') - (Start of '''Data_Table''') = 0x0030-0x0030 = 0
|-
|-
! Name_Table
| || || colspan="1" style="text-align:center; background-color:#DDDDDD;" | Name_Table
|-
|-
| 0x0024 || 0x09 || 5449544C455F494400 ||  To utf-8 || TITLE_ID || '''Name''', included 1 blank byte at the end
| 0x0024 || 0x09 || 5449544C455F494400 ||  To utf-8 || TITLE_ID || '''Name''', included 1 blank byte at the end
Line 127: Line 129:
| 0x002D || 0x03 || 000000 || || || Padding (9 from the previous entry + 3 padding = 12 bytes)
| 0x002D || 0x03 || 000000 || || || Padding (9 from the previous entry + 3 padding = 12 bytes)
|-
|-
! Data_Table
| || || colspan="1" style="text-align:center; background-color:#DDDDDD;" | Data_Table
|-
|-
| 0x0030 || 0x0F || 41424344313233343500000000000000 || To utf-8 || ABCD12345 || '''Data'''. ('''Data_Size_Total'''=16 bytes. '''Data_Size_Used'''=10 bytes)
| 0x0030 || 0x0F || 41424344313233343500000000000000 || To utf-8 || ABCD12345 || '''Data'''. ('''Data_Size_Total'''=16 bytes. '''Data_Size_Used'''=10 bytes)
Line 134: Line 136:
*When you generate a non proper file playing with the flags, you can have a nice icon of "corrupted data", but in some cases the game boots normally. In other cases when adding or removing parameters the file is "partially" corrupted because a "break point" in the structure and the file is "partially" loaded (the PS3 loads the values before the structure "break point" normally, but after this point the values shown as corrupted or missing).
*When you generate a non proper file playing with the flags, you can have a nice icon of "corrupted data", but in some cases the game boots normally. In other cases when adding or removing parameters the file is "partially" corrupted because a "break point" in the structure and the file is "partially" loaded (the PS3 loads the values before the structure "break point" normally, but after this point the values shown as corrupted or missing).


*When adding "non-stadard" parameters to a "standard" SFO the system blocks this "not-expected" parameter. The SFO is loaded without problems, but the added parameters are ignored (e.g. when adding SUB_TITLE to a SFO for catergory "HG").
*When adding "non-standard" parameters to a "standard" SFO the system blocks this "not-expected" parameter. The SFO is loaded without problems, but the added parameters are ignored (e.g. when adding SUB_TITLE to a SFO for category "HG").


*The minimall structure tested (and working) for a hombrew can be copied/downloaded at the bottom of the page, its not "standard" but the PS3 doesnt complains, and probably can be reduced even more.
*The minimal structure tested (and working) for a homebrew can be copied/downloaded at the bottom of the page, its not "standard" but the PS3 doesn't complain, and probably can be reduced even more.


===SFX===
===SFX===
Line 153: Line 155:
This table contains all the parameters known/found in standard contents for a fast view and fast relinking to other sections of the page.
This table contains all the parameters known/found in standard contents for a fast view and fast relinking to other sections of the page.


Columns of the table are named by the [[#CATEGORY|CATEGORY]] used by this content.
Columns of the table are named by the [[#CATEGORY|CATEGORY]] used by this content. Note Trophies doesn't have CATEGORY inside his PARAM.SFO, the "" simbol is used as a reference.
 
{| class="wikitable"
|-
| '''HG''' = HDD Game || '''1P''' = PS1 Game || '''2G''' = PS2 Game || '''2P''' = PSN PS2 Game/Save Data || '''MN''' = Minis Game
|}


{| class="wikitable"
Other bootable content in other columns of XMB (CATEGORY's <abbr title="Photo">'''AP'''</abbr>, <abbr title="Music">'''AM'''</abbr>, <abbr title="Video">'''AV'''</abbr>, <abbr title="TV">'''AT'''</abbr>, <abbr title="Network">'''CB'''</abbr>, <abbr title="Playstation Network">'''HM'''</abbr>) uses the same parameters than <abbr title="HDD Game">'''HG'''</abbr>
|-
| '''GD''' = Game Data || '''2D''' = PS2 Data || '''SD''' = Save Data || '''MS''' = Minis Save Data || '''''' = Trophy Data
|}


{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable sortable" style="border:1px solid #999; border-collapse: collapse;"  
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable sortable" style="border:1px solid #999; border-collapse: collapse;"  
|- bgcolor="#cccccc"
|- bgcolor="#cccccc"
! Parameter !! Data_Type !! Data_Size_Total !! Data_Size_Used !! HG !! 1P !! 2G !! 2P !! MN !! !! GD !! 2D !! !! SD !! MS !! !!
! Parameter !! Data_Type !! Data_Size_Total !! Data_Size_Used !! <abbr title="HDD Game">HG</abbr> !! <abbr title="PS1 Game">1P</abbr> !! <abbr title="PS2 Disc Game">2G</abbr> !! <abbr title="PS2 Classics Game">2P</abbr> !! <abbr title="Minis Game">MN</abbr> !! <abbr title="Game Data">GD</abbr> !! <abbr title="PS2 Emulator Data">2D</abbr> !! <abbr title="Save Data">SD</abbr> !! <abbr title="Minis Save Data">MS</abbr> !! <abbr title="Trophy Data">♦</abbr> !! <abbr title="PSP Game">PP</abbr> !! <abbr title="PSvita Game">VT?</abbr>
|-
|-
| [[#ACCOUNT_ID|ACCOUNT_ID]] || 0400 || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}}
| || || || || colspan="5" style="text-align:center; background-color:#DDDDDD;" | '''Bootable''' || colspan="2" style="text-align:center; background-color:#DDDDDD;" | '''System Data''' || colspan="2" style="text-align:center; background-color:#DDDDDD;" | '''Saves''' || colspan="1" style="text-align:center; background-color:#DDDDDD;" | '''Trophy''' || colspan="2" style="text-align:center; background-color:#DDDDDD;" | '''Transferable'''
|-
|-
| [[#ACCOUNTID|ACCOUNTID]] || utf-8 || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#ACCOUNT_ID|ACCOUNT_ID]] || style="background-color:#00DDDD;" | 0400 || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#ANALOG_MODE|ANALOG_MODE]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#ACCOUNTID|ACCOUNTID]] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}}
|-
|-
| [[#APP_VER|APP_VER]] || utf-8 || 8 (0x8) || 6 (0x6) || {{Opt}} || {{No}} || ??? || {{No}} || {{Yes}} || || {{Opt}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#ANALOG_MODE|ANALOG_MODE]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || ??? || ???
|-
|-
| [[#ATTRIBUTE|ATTRIBUTE]] || integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{Yes}} || ??? || {{Opt}} || {{Yes}} || || {{Opt}} || {{No}} || || {{Yes}} || {{No}} || || {{No}}
| [[#APP_VER|APP_VER]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 6 (0x6) || {{Opt}} || {{No}} || ??? || {{No}} || {{Yes}} || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || ???
|-
|-
| [[#BOOTABLE|BOOTABLE]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#ATTRIBUTE|ATTRIBUTE]] || style="background-color:#DD00DD;" |  integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{Yes}} || ??? || {{Opt}} || {{Yes}} || {{Opt}} || {{No}} || {{Yes}} || {{No}} || {{No}} || ??
|-
|-
| [[#CATEGORY|CATEGORY]] || utf-8 || 4 (0x4) || 3 (0x3) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}}
| [[#BOOTABLE|BOOTABLE]] || style="background-color:#DD00DD;" |  integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || ?
|-
|-
| [[#CONTENT_ID|CONTENT_ID]] || utf-8 || 48 (0x30) || 37 (0x25) || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#CATEGORY|CATEGORY]] || style="background-color:#DDDD00;" | utf-8 || 4 (0x4) || 3 (0x3) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}
|-
|-
| [[#DETAIL|DETAIL]] || utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Opt}} || {{No}} || || {{No}}
| [[#CONTENT_ID|CONTENT_ID]] || style="background-color:#DDDD00;" | utf-8 || 48 (0x30) || 37 (0x25) || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#LANG|LANG]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#DETAIL|DETAIL]] || style="background-color:#DDDD00;" | utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}}
|-
|-
| [[#LICENSE|LICENSE]] || utf-8 || 512 (0x200) || variable || {{Yes}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#LANG|LANG]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}
|-
|-
| [[#NP_COMMUNICATION_ID|NP_COMMUNICATION_ID]] || utf-8 || 16 (0x10) || 13 (0xD) || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#LICENSE|LICENSE]] || style="background-color:#DDDD00;" | utf-8 || 512 (0x200) || variable || {{Yes}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#NPCOMMID|NPCOMMID]] || utf-8 || 16 (0x10) || 12 (0xC) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#NP_COMMUNICATION_ID|NP_COMMUNICATION_ID]] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 13 (0xD) || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#PADDING|PADDING]] || 0400 || 8 (0x8) || 0 (0x0) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#NPCOMMID|NPCOMMID]] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 12 (0xC) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}
|-
|-
| [[#PARAMS|PARAMS]] || 0400 || 1024 (0x400) || 1024 (0x400) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}}
| [[#PADDING|PADDING]] || style="background-color:#00DDDD;" | 0400 || 8 (0x8) || 0 (0x0) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}
|-
|-
| [[#PARAMS2|PARAMS2]] || 0400 || 12 (0xC) || 12 (0xC) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}}
| [[#PARAMS|PARAMS]] || style="background-color:#00DDDD;" | 0400 || 1024 (0x400) || 1024 (0x400) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}}
|-
|-
| [[#PARENTAL_LEVEL_x|PARENTAL_LEVEL_'''x''']] || integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} ||
| [[#PARAMS2|PARAMS2]] || style="background-color:#00DDDD;" | 0400 || 12 (0xC) || 12 (0xC) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}}
| {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
|-
|-
| [[#PARENTAL_LEVEL|PARENTAL_LEVEL]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{No}} || ??? || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}}
| [[#PARENTAL_LEVEL_x|PARENTAL_LEVEL_'''x''']] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#PARENTALLEVEL|PARENTALLEVEL]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#PARENTAL_LEVEL|PARENTAL_LEVEL]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{No}} || ??? || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}
|-
|-
| [[#PS3_SYSTEM_VER|PS3_SYSTEM_VER]] || utf-8 || 8 (0x8) || 8 (0x8) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || || {{Opt}} || {{Yes}} || || {{No}} || {{No}} || || {{No}}
| [[#PARENTALLEVEL|PARENTALLEVEL]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}
|-
|-
| [[#REGION_DENY|REGION_DENY]] || integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || ??? || {{Opt}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#PS3_SYSTEM_VER|PS3_SYSTEM_VER]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 8 (0x8) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || {{Opt}} || {{Yes}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#RESOLUTION|RESOLUTION]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{No}} || {{Yes}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#REGION_DENY|REGION_DENY]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || ??? || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#SAVEDATA_DETAIL|SAVEDATA_DETAIL]] || utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}}
| [[#RESOLUTION|RESOLUTION]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#SAVEDATA_DIRECTORY|SAVEDATA_DIRECTORY]] || utf-8 || 64 (0x40) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{Yes}} || || {{No}}
| [[#SAVEDATA_DETAIL|SAVEDATA_DETAIL]] || style="background-color:#DDDD00;" | utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}}
|-
|-
| [[#SAVEDATA_FILE_LIST|SAVEDATA_FILE_LIST]] || 0400 || 3168 (0xC60) || 3168 (0xC60) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}}
| [[#SAVEDATA_DIRECTORY|SAVEDATA_DIRECTORY]] || style="background-color:#DDDD00;" | utf-8 || 64 (0x40) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{No}}
|-
|-
| [[#SAVEDATA_LIST_PARAM|SAVEDATA_LIST_PARAM]] || utf-8 || 8 (0x8) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}}
| [[#SAVEDATA_FILE_LIST|SAVEDATA_FILE_LIST]] || style="background-color:#00DDDD;" | 0400 || 3168 (0xC60) || 3168 (0xC60) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}}
|-
|-
| [[#SAVEDATA_PARAMS|SAVEDATA_PARAMS]] || 0400 || 128 (0x80) || 128 (0x80) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}}
| [[#SAVEDATA_LIST_PARAM|SAVEDATA_LIST_PARAM]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}}
|-
|-
| [[#SAVEDATA_TITLE|SAVEDATA_TITLE]] || utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}}
| [[#SAVEDATA_PARAMS|SAVEDATA_PARAMS]] || style="background-color:#00DDDD;" | 0400 || 128 (0x80) || 128 (0x80) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}}
|-
|-
| [[#SOUND_FORMAT|SOUND_FORMAT]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{No}} || {{Yes}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#SAVEDATA_TITLE|SAVEDATA_TITLE]] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}}
|-
|-
| [[#SOURCE|SOURCE]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#SOUND_FORMAT|SOUND_FORMAT]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#SUB_TITLE|SUB_TITLE]] || utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Opt}} || {{No}} || || {{No}}
| [[#SOURCE|SOURCE]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}
|-
|-
| [[#TARGET_APP_VER|TARGET_APP_VER]] || utf-8 || 8 (0x8) || 6 (0x6) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{Opt}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#SUB_TITLE|SUB_TITLE]] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}}
|-
|-
| [[#TITLE|TITLE]] || utf-8 || 128 (0x80) || variable || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}}
| [[#TARGET_APP_VER|TARGET_APP_VER]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 6 (0x6) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#TITLE_ID|TITLE_ID]] || utf-8 || 16 (0x10) || 10 (0xA) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} || {{No}} || || {{No}}
| [[#TITLE|TITLE]] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}
|-
|-
| [[#TITLE_xx|TITLE_'''xx''']] || utf-8 || 128 (0x80) || variable || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}}
| [[#TITLE_ID|TITLE_ID]] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 10 (0xA) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#TITLEID0xx|TITLEID0'''xx''']] || utf-8 || 16 (0x10) || 9 (0x9) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}}
| [[#TITLE_xx|TITLE_'''xx''']] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{Opt}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}
|-
|-
| [[#VERSION|VERSION]] || utf-8 || 8 (0x8) || 6 (0x6) || {{Yes}} || {{Yes}} || ??? || {{No}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} || {{No}} || || {{Yes}}
| [[#TITLEID0xx|TITLEID0'''xx''']] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 9 (0x9) || {{No}} || {{No}} || ??? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}
|-
| [[#VERSION|VERSION]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 6 (0x6) || {{Yes}} || {{Yes}} || ??? || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{Yes}}
|-
|-
|}
|}
Line 249: Line 244:


===ACCOUNT_ID===
===ACCOUNT_ID===
  Data_Type: utf-8 Speciall Mode
  Data_Type: utf-8 Special Mode
  Data_Size_Total: 16 bytes
  Data_Size_Total: 16 bytes
  Data_Size_Used: 16 bytes
  Data_Size_Used: 16 bytes
  Used by: Save Data
  Used by: Save Data


PSN User Account stored as '''utf-8 Speciall Mode'''. The string is compared with the info contained in [[XRegistry.sys]]. The comparison can only return two values, right, or wrong, if the comparison returns right the SaveData is valid.
PSN User Account stored as '''utf-8 Special Mode'''. The string is compared with the info contained in [[XRegistry.sys]]. The comparison can only return two values, right, or wrong, if the comparison returns right the SaveData is valid.


Filled with zeroes when the user has not been registered in PSN.
Filled with zeroes when the user has not been registered in PSN.
Line 295: Line 290:


*Cummulative Patches
*Cummulative Patches
Game patches uses a bigger '''APP_VER''' as '''01.01''' for the first patch, but keeping the same [[#TITLE_ID|TITLE_ID]] from the originall release.
Game patches uses a bigger '''APP_VER''' as '''01.01''' for the first patch, but keeping the same [[#TITLE_ID|TITLE_ID]] from the original release.


===ATTRIBUTE===
===ATTRIBUTE===
Line 301: Line 296:
  Data_Size_Total: 4 bytes
  Data_Size_Total: 4 bytes
  Data_Size_Used: 4 bytes
  Data_Size_Used: 4 bytes
  Used by: HDD Game, PS1 Game, Minis Game, Game Data, Save Data
  Used by: HDD Game, PS1 Game, Minis Game, PCEngine game, NEOGEO game, Game Data, Save Data


Contains a maximun of 32 flags that can be turned on/off to activate/deactivate speciall boot modes and features of the content.
Contains a maximun of 32 flags that can be turned on/off to activate/deactivate special boot modes and features of the content.


Values are stored in "Little Endian" format inside the SFO, to represent the whole list in a "human readable" format is needed to convert them to "Big Endian" and then to "Binary".
Values are stored in "Little Endian" format inside the SFO, to represent the whole tables in a "human readable" format has been needed to convert them to "Big Endian" and then to "Binary".


====ATTRIBUTE in SaveData====
{| class="wikitable"
{| class="wikitable"
|-
|-
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
|-
|-
| '''01''' 00 00 00 || 00 00 00 '''01''' || 00000000 00000000 00000000 00000001 || '''PSP''' [[Remote_Play|'''Remote Play''']] in MPEG4 SP/ATRAC
| 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Copy Allowed
|-
|-
| '''02''' 00 00 00 || 00 00 00 '''02''' || 00000000 00000000 00000000 00000010 || [[http://manuals.playstation.net/document/en/ps3/current/game/copypsp.html '''PSP Export''']]
| 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Copy Protected
|-
|-
| '''04''' 00 00 00 || 00 00 00 '''04''' || 00000000 00000000 00000000 00000100 || '''PSP''' [[Remote_Play|'''Remote Play''']] in MPEG4 AVC/AAC
|}
 
*'''Copy Protected'''
Used only in SaveData ('''SD'''), not in MInis SaveData ('''MS'''). Removes the option "copy" from the side menu when pressing triangle over his icon in XMB.
 
====ATTRIBUTE in Discs Subfolders====
{| class="wikitable"
|-
|-
| '''08''' 00 00 00 || 00 00 00 '''08''' || 00000000 00000000 00000000 00001000 || [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] Forced Enabled
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
|-
|-
| '''10''' 00 00 00 || 00 00 00 '''10''' || 00000000 00000000 00000000 00010000 || [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] Disabled
| 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Subfolder Deactivated
|-
|-
| '''20''' 00 00 00 || 00 00 00 '''20''' || 00000000 00000000 00000000 00100000 || [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] Background Music
| 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Subfolder Activated
|-
|-
| '''40''' 00 00 00 || 00 00 00 '''40''' || 00000000 00000000 00000000 01000000 || Unknown !
|}
 
*'''Subfolder Activated'''
Used in Discs subfolders (CATEGORY '''TR''', '''VR''', '''DP''', '''XR''') to activate another subfolder.
 
====ATTRIBUTE in Patches====
{| class="wikitable"
|-
|-
| '''80''' 00 00 00 || 00 00 00 '''80''' || 00000000 00000000 00000000 10000000 || '''PSvita''' [[Remote_Play|'''Remote Play''']] in high quality ? (used by torne v3.52 patch)
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
|-
|-
! !! !! !!
| 00 00 '''04''' 00 || 00 '''04''' 00 00 || 00000000 00000100 00000000 00000000 || Overwrite RESOLUTION, SOUND_FORMAT, PSP Remote_Play
|-
|-
| 00 '''01''' 00 00 || 00 00 '''01''' 00 || 00000000 00000000 00000001 00000000 || '''Move Controller''' (warning screen)
| 00 00 '''10''' 00 || 00 '''10''' 00 00 || 00000000 00010000 00000000 00000000 || Overwrite XMB In-Game
|-
|-
| 00 '''02''' 00 00 || 00 00 '''02''' 00 || 00000000 00000000 00000010 00000000 || '''Navigation Controller''' (warning screen)
| 00 00 '''20''' 00 || 00 '''20''' 00 00 || 00000000 00100000 00000000 00000000 || Overwrite Move Controller warning screen
|-
|-
| 00 '''04''' 00 00 || 00 00 '''04''' 00 || 00000000 00000000 00000100 00000000 || '''Eye Cam''' (warning screen)
| 00 00 '''40''' 00 || 00 '''40''' 00 00 || 00000000 01000000 00000000 00000000 || Overwrite 3D warning screen
|-
|-
| 00 '''08''' 00 00 || 00 00 '''08''' 00 || 00000000 00000000 00001000 00000000 || '''Calibration''' (notification screen)
|}
 
*'''Patch.'''
*'''Patch..'''
*'''Patch...'''
 
====ATTRIBUTE In Bootable content====
{| class="wikitable"
|-
!  Little Endian !! Big Endian !! Flags (Binary) !! Description !! Introduced in || Flag Nº || Requires flag Nº
|-
| colspan="1" bgcolor="#DDDDDD" | First Byte
|-
| '''01''' 00 00 00 || 00 00 00 '''01''' || 00000000 00000000 00000000 0000000'''1''' || '''PSP Remote Play (v1)''' || fw1.10 (Nov 2006)|| 01 ||
|-
| '''02''' 00 00 00 || 00 00 00 '''02''' || 00000000 00000000 00000000 000000'''1'''0 || '''PSP Export''' || fw1.70 (Apr 2007)|| 02 ||
|-
| '''04''' 00 00 00 || 00 00 00 '''04''' || 00000000 00000000 00000000 00000'''1'''00 || '''PSP Remote Play (v2)''' || fw1.80 (May 2007) ?|| 03 || 01
|-
| '''08''' 00 00 00 || 00 00 00 '''08''' || 00000000 00000000 00000000 0000'''1'''000 || '''XMB In-Game (v2) Forced Enabled''' || fw2.40 (Jul 2008)|| 04 ||
|-
| '''10''' 00 00 00 || 00 00 00 '''10''' || 00000000 00000000 00000000 000'''1'''0000 || '''XMB In-Game (v2) Disabled''' || fw2.40 (Jul 2008)|| 05 ||
|-
| '''20''' 00 00 00 || 00 00 00 '''20''' || 00000000 00000000 00000000 00'''1'''00000 || '''XMB In-Game (v2) Background Music''' || fw2.40 (Jul 2008)|| 06 ||
|-
|-
| 00 '''10''' 00 00 || 00 00 '''10''' 00 || 00000000 00000000 00010000 00000000 || '''3D''' (warning screen)
| '''40''' 00 00 00 || 00 00 00 '''40''' || 00000000 00000000 00000000 0'''1'''000000 || Unknown !|||| 07 ||
|-
|-
| 00 '''20''' 00 00 || 00 00 '''20''' 00 || 00000000 00000000 00100000 00000000 || Not used yet ?
| '''80''' 00 00 00 || 00 00 00 '''80''' || 00000000 00000000 00000000 '''1'''0000000 || '''PSvita Remote Play''' ??? || fw4.00 (Nov 2011)|| 08 ||
|-
|-
| 00 '''40''' 00 00 || 00 00 '''40''' 00 || 00000000 00000000 01000000 00000000 || Not used yet ?
| colspan="1" bgcolor="#DDDDDD" | Second Byte
|-
|-
| 00 '''80''' 00 00 || 00 00 '''80''' 00 || 00000000 00000000 10000000 00000000 || Not used yet ?
| 00 '''01''' 00 00 || 00 00 '''01''' 00 || 00000000 00000000 0000000'''1''' 00000000 || '''Move Controller''' (warning screen) || fw3.40 (Jun 2010)|| 09 ||
|-
|-
! !! !! !!
| 00 '''02''' 00 00 || 00 00 '''02''' 00 || 00000000 00000000 000000'''1'''0 00000000 || '''Navigation Controller''' (warning screen) || fw3.40 (Jun 2010)|| 10 || 09
|-
|-
| 00 00 '''01''' 00 || 00 '''01''' 00 00 || 00000000 00000001 00000000 00000000 || '''Install Disc''' (containing only Install Packages)
| 00 '''04''' 00 00 || 00 00 '''04''' 00 || 00000000 00000000 00000'''1'''00 00000000 || '''Eye Cam''' (warning screen) || fw3.40 (Jun 2010)|| 11 || 09
|-
|-
| 00 00 '''02''' 00 || 00 '''02''' 00 00 || 00000000 00000010 00000000 00000000 || '''Install Packages''' (from folders PKGDIR or INSDIR in Discs)
| 00 '''08''' 00 00 || 00 00 '''08''' 00 || 00000000 00000000 0000'''1'''000 00000000 || '''Calibration''' (notification screen) || fw3.40 (Jun 2010)|| 12 ||
|-
|-
| 00 00 '''04''' 00 || 00 '''04''' 00 00 || 00000000 00000100 00000000 00000000 || Overwrite [[#RESOLUTION|RESOLUTION]], [[#SOUND_FORMAT|SOUND_FORMAT]], '''PSP''' [[Remote_Play|'''Remote Play''']] (Patches)
| 00 '''10''' 00 00 || 00 00 '''10''' 00 || 00000000 00000000 000'''1'''0000 00000000 || '''3D''' (warning screen) || fw3.40 (Jun 2010)|| 13 ||
|-
|-
| 00 00 '''08''' 00 || 00 '''08''' 00 00 || 00000000 00001000 00000000 00000000 || '''Game Purchase''' Enabled
| 00 '''20''' 00 00 || 00 00 '''20''' 00 || 00000000 00000000 00'''1'''00000 00000000 || Not used yet ? |||| 14 ||
|-
|-
| 00 00 '''10''' 00 || 00 '''10''' 00 00 || 00000000 00010000 00000000 00000000 || Overwrite [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] (Patches)
| 00 '''40''' 00 00 || 00 00 '''40''' 00 || 00000000 00000000 0'''1'''000000 00000000 || Not used yet ? |||| 15 ||
|-
|-
| 00 00 '''20''' 00 || 00 '''20''' 00 00 || 00000000 00100000 00000000 00000000 || Overwrite '''Move Controller warning screen''' (Patches)
| 00 '''80''' 00 00 || 00 00 '''80''' 00 || 00000000 00000000 '''1'''0000000 00000000 || Not used yet ? |||| 16 ||
|-
|-
| 00 00 '''40''' 00 || 00 '''40''' 00 00 || 00000000 01000000 00000000 00000000 || Overwrite '''3D warning screen''' (Patches)
| colspan="1" bgcolor="#DDDDDD" | Third Byte
|-
|-
| 00 00 '''80''' 00 || 00 '''80''' 00 00 || 00000000 10000000 00000000 00000000 || '''Move Controller''' Compatible
| 00 00 '''01''' 00 || 00 '''01''' 00 00 || 00000000 0000000'''1''' 00000000 00000000 || '''Install Disc''' |||| 17 ||
|-
|-
! !! !! !!
| 00 00 '''02''' 00 || 00 '''02''' 00 00 || 00000000 000000'''1'''0 00000000 00000000 || '''Install Packages''' |||| 18 ||
|-
|-
| 00 00 00 '''01''' || '''01''' 00 00 00 || 00000001 00000000 00000000 00000000 || Not used yet ?
| 00 00 '''04''' 00 || 00 '''04''' 00 00 || 00000000 00000'''1'''00 00000000 00000000 || Unknown ! |||| 19 ||
|-
|-
| 00 00 00 '''02''' || '''02''' 00 00 00 || 00000010 00000000 00000000 00000000 || Not used yet ?
| 00 00 '''08''' 00 || 00 '''08''' 00 00 || 00000000 0000'''1'''000 00000000 00000000 || '''Game Purchase Enabled''' |||| 20 ||
|-
|-
| 00 00 00 '''04''' || '''04''' 00 00 00 || 00000100 00000000 00000000 00000000 || Not used yet ? activated in category X4 ?
| 00 00 '''10''' 00 || 00 '''10''' 00 00 || 00000000 000'''1'''0000 00000000 00000000 || Unknown ! |||| 21 ||
|-
|-
| 00 00 00 '''08''' || '''08''' 00 00 00 || 00001000 00000000 00000000 00000000 || Not used yet ?
| 00 00 '''20''' 00 || 00 '''20''' 00 00 || 00000000 00'''1'''00000 00000000 00000000 || '''PCEngine''' (X0) || (Jul 2009) || 22 ||
|-
|-
| 00 00 00 '''10''' || '''10''' 00 00 00 || 00010000 00000000 00000000 00000000 || Not used yet ?
| 00 00 '''40''' 00 || 00 '''40''' 00 00 || 00000000 0'''1'''000000 00000000 00000000 || '''License Text Hidden''' |||| 23 ||
|-
|-
| 00 00 00 '''20''' || '''20''' 00 00 00 || 00100000 00000000 00000000 00000000 || Not used yet ?
| 00 00 '''80''' 00 || 00 '''80''' 00 00 || 00000000 '''1'''0000000 00000000 00000000 || '''Move Controller Compatible''' || fw3.40 (Jun 2010) || 24 ||
|-
|-
| 00 00 00 '''40''' || '''40''' 00 00 00 || 01000000 00000000 00000000 00000000 || Not used yet ?
| colspan="1" bgcolor="#DDDDDD" | Fourth Byte
|-
|-
| 00 00 00 '''80''' || '''80''' 00 00 00 || 10000000 00000000 00000000 00000000 || Not used yet ?
| 00 00 00 '''01''' || '''01''' 00 00 00 || 0000000'''1''' 00000000 00000000 00000000 || Reserved (X1) || || 25 || 22
|}
|-
 
| 00 00 00 '''02''' || '''02''' 00 00 00 || 000000'''1'''0 00000000 00000000 00000000 || Reserved (X2) || || 26 || 22
Flags can be used in groups, to remove or add a flag from the group is needed to make an addition or a substraction of the values.
|-
 
| 00 00 00 '''03''' || '''03''' 00 00 00 || 000000'''11''' 00000000 00000000 00000000 || Reserved (X3) || || 25+26 || 22
Some examples. If you find a game with a flag in his ATTRIBUTE that is not yet in the table, please add it
|-
{| class="wikitable"
| 00 00 00 '''04''' || '''04''' 00 00 00 || 00000'''1'''00 00000000 00000000 00000000 || '''NeoGeo''' (X4) || fw3.55 (Dec 2010) ?|| 27 || 22
|-
| 00 00 00 '''05''' || '''05''' 00 00 00 || 00000'''1'''0'''1''' 00000000 00000000 00000000 || Reserved (X5) || || 25+27 || 22
|-
| 00 00 00 '''06''' || '''06''' 00 00 00 || 00000'''11'''0 00000000 00000000 00000000 || Reserved (X6) || || 26+27 || 22
|-
| 00 00 00 '''07''' || '''07''' 00 00 00 || 00000'''111''' 00000000 00000000 00000000 || Reserved (X7) || || 25+26+27 || 22
|-
| 00 00 00 '''08''' || '''08''' 00 00 00 || 0000'''1'''000 00000000 00000000 00000000 || Not used yet ? || || 28 ||
|-
| 00 00 00 '''10''' || '''10''' 00 00 00 || 000'''1'''0000 00000000 00000000 00000000 || Not used yet ? || || 29 ||
|-
| 00 00 00 '''20''' || '''20''' 00 00 00 || 00'''1'''00000 00000000 00000000 00000000 || Not used yet ? || || 30 ||
|-
| 00 00 00 '''40''' || '''40''' 00 00 00 || 0'''1'''000000 00000000 00000000 00000000 || Not used yet ? || || 31 ||
|-
| 00 00 00 '''80''' || '''80''' 00 00 00 || '''1'''0000000 00000000 00000000 00000000 || Not used yet ? || || 32 ||
|-
|-
! Little Endian !! Big Endian !! Flags (Binary ) !!  Title !! Flags !! Description
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | '''Examples'''
|-
|-
| 05 17 80 00 || 00 80 17 05 || 00000000 10000000 00010111 00000101 || killzone 3 || 7 || Move compatible + 3D screen + 3 move screens + 2 Remote Play modes
| 05 17 80 00 || 00 80 17 05 || 00000000 10000000 00010111 00000101 || killzone 3 (disc) || || 01+03+09+10+11+13+24 ||
|-
|-
| 20 00 02 00 || 00 02 00 20 || 00000000 00000010 00000000 00100000 || Dead Space 2 || 2 || Installable Packages + "XMB in-game"
| 20 00 02 00 || 00 02 00 20 || 00000000 00000010 00000000 00100000 || Dead Space 2 (disc) || || 06+18 ||
|-
|-
| 85 00 00 00 || 00 00 00 85 || 00000000 00000000 00000000 10000101 || Torne v3.52 || 3 || 2 PSP Remote Play modes + 1 PSvita remote play mode ?
| 85 00 00 00 || 00 00 00 85 || 00000000 00000000 00000000 10000101 || Torne v3.52 (patch) || || 01+03+08 ||
|}
|}


====ATTRIBUTE Flags Descriptions====
*'''PSP Remote Play v1 and v2'''
*'''PSP Remote Play'''
Remote play is a feature that displays the PS3 screen on a PSP to enable remote operation over a wireless LAN. There are two PSP Remote Play modes, "v1" is in low quality using MPEG4 SP/ATRAC codecs, and "v2" uses MPEG4 AVC/AAC. See: [[Remote_Play|Remote Play]] page and [http://www.youtube.com/watch?v=nOTjB2lPUsw| Official video in youtube].
The format "MPEG4 AVC/AAC" only works when the other format "MPEG4 SP/ATRAC" is activated


*'''PSP Export'''
*'''PSP Export'''
Allows the copy of the content to a PSP by pressing triangle over his icon in XMB. Used by "PS1 Game" and "Minis Game"
Allows the copy of the content to a PSP by pressing triangle over his icon in XMB and the option "copy" in the side menu. Used by "PS1 Game" and "Minis Game". See: [http://manuals.playstation.net/document/en/ps3/current/game/copypsp.html| PS3 User Guide/Copying games to play on a PSP].


*'''"XMB In-Game" Forced Enable'''
*'''XMB In-Game v2 Forced Enable'''
[[http://www.blogcdn.com/www.engadget.com/media/2008/06/ps3-ingame-xmb-2.40-clock.jpg XMB In-Game (photo)]] was introduced in firmware 2.40, from now on i will call this menu "XMB In-Game v2" and the [[http://www.blogcdn.com/www.joystiq.com/media/2008/01/ps3-in-game-menu.jpg old menu (photo)]] "XMB In-Game v1". Games released before firmware 2.40 uses "XMB In-Game v1" even when launched in higher firmwares. This flag activates "XMB In-Game v2" for this old games, it has no effect in games released after 2.40.
[http://www.blogcdn.com/www.engadget.com/media/2008/06/ps3-ingame-xmb-2.40-clock.jpg XMB In-Game v2] was implemented in firmware 2.40, before 2.40 there was an old [http://www.blogcdn.com/www.joystiq.com/media/2008/01/ps3-in-game-menu.jpg XMB In-Game v1]. Games released before firmware 2.40 uses "XMB In-Game v1" even when launched in higher firmwares. This flag activates "XMB In-Game v2" for this old games, it has no effect in games released after 2.40 because this ones has XMB In-Game v2 activated by default. See: [http://www.viddler.com/simple/1ffb1ce3/ Official introduction video of the feature in fw 2.40].


*'''"XMB In-Game" Disabled'''
*'''XMB In-Game v2 Disabled'''
Replaces "XMB In-Game v2" by "XMB In-Game v1", usefull to free ram and to improve the loading time of the menu.
Replaces "XMB In-Game v2" by "XMB In-Game v1", works with all games, useful to free ram and to improve the loading time of the menu.


*'''"XMB In-Game" Background Music'''
*'''XMB In-Game v2 Background Music'''
Allows to pause the game (with the PS button), play your own music from the files stored in your HDD, and return to the game with your own music playing.
Allows to pause the game (with the PS button), play your own music from the files stored in your HDD, and return to the game while your music is playing.


*'''Move/Navigation/Eye (warning screens)'''
*'''Move/Navigation/Eye (warning screens)'''
Line 416: Line 462:


*'''Calibration (notification screen)'''
*'''Calibration (notification screen)'''
This is a calibration screen that appears when the controller has not been calibrated previously (or when is missconfigured).
This is a calibration screen that appears when the controller has not been calibrated previously (or when is miss-configured).


*'''Stereoscopic 3D (warning screen)'''
*'''Stereoscopic 3D (warning screen)'''
This is a warning screen similar than the ones related with move peripherals, only appears when the TV is "3D compatible".
This is a warning screen similar than the ones related with move peripherals, only appears when the TV is "3D compatible".


*'''Install Disc'''
*'''Instal Disc'''
Hides the primary icon of the disc (only the secondary icon is displayed), used when there is no bootable content on the "main" path PS3_GAME/USRDIR.
Hides the primary icon of the disc (only the secondary icon is displayed), used when the disc contains only "Install Packages" and there is no bootable content on the "main" path (PS3_GAME/USRDIR/EBOOT.BIN).


*'''Install Packages'''
*'''Instal Packages'''
Activates the subfolder structures PS3_GAME/PKGDIR & PS3_GAME/INSDIR by loading another SFO from this subfolders (the system loads the "main" SFO from PS3_GAME, and then "jumps" to the "secondary" SFO), everytime one of this SFO's inside substructures/subfolders is loaded... a new subicon/mount point is loaded in XMB
Activates the subfolder structures PS3_GAME/PKGDIR & PS3_GAME/INSDIR in discs by loading another SFO from this subfolders (the system loads the "main" SFO from PS3_GAME, and then "jumps" to the "secondary" SFO), every time one of these SFO's inside substructures/subfolders is loaded... a new subicon/mount point is loaded in XMB. See the "fake disc structure" examples in [[#CATEGORY_For_Disc_contents|CATEGORY For Disc contents]]
 
For more info about this blu-ray flags/substructures see the "fake disc structure" examples in [[#CATEGORY|CATEGORY]]


*'''Game Purchase Enabled'''
*'''Game Purchase Enabled'''
Activates the option to purchase the content by pressing triangle over his icon in XMB. is directly related with [[#CONTENT_ID|CONTENT_ID]]. When the content is purchased his CONTENT_ID is checked online to obtain the license. After the license is retrieved the game loads another PARAM.SFO from a subfolder with different values (e.g. TITLE changes from "demo" to "full") and different [[Content_Information_Files|Content Informations Files]]
Activates the option to purchase the content by pressing triangle over his icon in XMB. is directly related with [[#CONTENT_ID|CONTENT_ID]]. When the content is purchased his CONTENT_ID is checked online to obtain the license. After the license is retrieved the game loads another PARAM.SFO from a subfolder with different values (e.g. PARAM.SFO from the subfolder with the TITLE "Full" is loaded, and the main PARAM.SFO witht he TITLE "Demo" is ignored)


*'''Move Controller Compatible'''
*'''Move Controller Compatible'''
Enables support for the Move Controller (Navigation Controller and Eye Cam doesn't have/needs a flag)
Enables support for the Move Controller (Navigation Controller and Eye Cam doesn't have/needs a flag)


*'''License Text Hidden'''
Removes the "About this Game" option in Side Menu (by pressing triangle over the icon in XMB). This option ignores the [[#LICENSE|LICENSE]] text. Used by games that has his own license and not the sony one (e.g: PCengine & NeoGeo)
*'''Unknown flags, specifics, incomplete descriptions and speculation'''
'''PSvita Remote Play''' (Flag Nº8) <----- used for first time by "patch v3.52" for "torne" (IP9100-BCJB95006_00-TORNE0PATCH00352-A0352-V0352-PE). Previously torne had 2 flags for the two PSP remote play modes. This patch was released few days after PS3 firmware 4.00, in his chagelog there is a clear reference to PSvita conectivity with PS3 but its not verifyed (and cant be tested in a firmware before 4.00)
Flag can be used by the system as "bookmark" (and combine with Specifics Parameters) to make sure which category has to be loaded. In that case, it unclear how some others flags effects.
Some flags may only work under some Category or specifics FW or in a cumulative way.
Few of them can be used for PS vita for similar functions such as psp remote play/psp export. (and need more info on how PP works)
Boot logo Disable ? <-- this is the "license text hidden" flag ?
Chat Disable ?
Copy Disable ?
'''Descriptions From X0 to X7'''
They are not used as binary (only?) but as bits to set X category. If the value is 0 or end up with 0, and the X maker flag is set under right SFO X parameters, X0 (PCEngine) is read by the system. In that way, by activate the flag N27, in fact you set up the right bit value the system load X4 (NEOGEO)
Little Endian Value: 00 = X0  01 = X1  02 = X2  03 = X3  X4 = 04  05 = X5  06 = X6  07 = X7
X category appear as HG (sub cat?)but with different parameters and the last bytes of attribute used (also?) as little Endian value (so the PS3 can make difference between "real" HG and "fake" HG)
SFO TEST Tool from Deroad can boot and return to XMB under X category (when MINIS don t)
'''Folder position in XMB (in fw 3.55 with hand-made PARAM.SFO's):'''
By pressing square, some of them will be classify by the ps3 under: '''-''' (the 8 X category folders can appears at the same time in XMB)
*Playstation 3 (HG)
*minis
*Playstation 2 (2G)
*Playstation  (1P)
*'''X1'''
Mini icon: not present (-)
Same folder than SFO inside EBOOT.PBP of Minis (PS3 side with attribute :01 00 60 01)
*'''X2'''
Mini icon: not present (-)


*'''X0'''
Mini icon: '''PCEngine'''


Enables X category. Introduced initially as PCEngine


*'''Unknown flags'''
Jul 15, 2009
Few of them can be for PS vita for similar functions such as psp remote play or psp export (but even more restricted) are possible.
Works alone and can be used with any "HG" category content, its not clear what does this flag other than the content has his own "tiny grey icon" with a "PCE" logo and are placed inside his own subfolder when ordering contents (with square button) in the XMB (3.55, 3.41?).


Boot logo disable? (not used anymore)
*'''X3'''
Mini icon: not present (-)


Chat voice? (not used anymore)
*'''X4'''
Mini icon: '''NEOGEO'''


====ATTRIBUTE in SaveData====
Dec 21, 2010 (Few days after 3.55)
The only two valid values of ATTRIBUTE for SaveData ('''SD''') are a 0 (speciall function deactivated) or a 1 (speciall function activated).
Can be used with any "HG" category content. It has his own "tiny grey icon" with a "NEOGEO" logo and are placed inside his own subfolder when ordering contents (with square button) in the XMB (3.55, 3.41?).


{| class="wikitable"
*'''X5'''
|-
Mini icon: not present (-)
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
|-
| 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Copy Allowed
|-
| 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Copy Protected
|-
|}


====ATTRIBUTE in Subfolders====
*'''X6'''
The only two valid values of ATTRIBUTE for subfolder structures used in Discs ('''TR''', '''VR''', '''DP''', '''XR''') are a 0 (speciall function deactivated) or a 1 (speciall function activated).
Mini icon: not present (-)


{| class="wikitable"
*'''X7'''
|-
Mini icon: not present (-)
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
|-
| 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Subfolder Deactivated
|-
| 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Subfolder Activated
|-
|}


===BOOTABLE===
===BOOTABLE===
Line 502: Line 588:
!  Photo !! Music !! Video !! TV !! Game !! Network !! PlayStation Network !! Content Examples !! Notes
!  Photo !! Music !! Video !! TV !! Game !! Network !! PlayStation Network !! Content Examples !! Notes
|-
|-
| || || || || GD || || || Game Data || Game patches, and Game DLC
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | System Data
|-
|-
| || || || || 2D || || || [[http://manuals.playstation.net/document/en/ps3/current/game/hddinstall.html PS2 Data]] || Special patches/data for PS2 Emulator
| || || || || GD || || || '''Game Data''' || Game patches, and Game DLC
|-
|-
| || || || || SD || || || PS3 Save Data || PS3 Game Saves
| || || || || 2D || || || [[http://manuals.playstation.net/document/en/ps3/current/game/hddinstall.html '''PS2 Data''']] || Special patches/data for PS2 Emulator
|-
|-
| || || || || 2P || || || PS2 Save Data || PS2 Game Saves for PS2 classics (used when exporting the game save, but not confirmed if exists in the internall HDD)
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Save Data
|-
|-
| || || || || MS || || || [[Game_Saves#Minis_Saved_Games|Minis Save Data]] || Minis Game Saves
| || || || || SD || || || '''PS3 Save''' Data || PS3 Game Saves
|-
|-
| || || || || || || || Trophy Data || Trophies (doesn't have a CATEGORY)
| || || || || MS || || || [[Game_Saves#Minis_Saved_Games|'''Minis Save''' Data]] || Format inherited from PSP
|-
|-
|
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Trophy Data
|-
| || || || || ♦ || || || '''Trophy''' Data || Trophies uses a PARAM.SFO without CATEGORY, identifyed by the XMB by his path in internal HDD
|-
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Bootable Content
|-
|-
| AP || || || || || || || PlayMemories ||
| AP || || || || || || || PlayMemories ||
Line 528: Line 618:
| || || || || || || HM || PlayStation Home ||
| || || || || || || HM || PlayStation Home ||
|-
|-
| || || || || HG || || || PS3 Game ||
| || || || || HG || || || '''PS3''' Game || Some special contents (e.g: PCengine and NeoGeo Games) uses '''HG''' but are identifyed by the XMB by "speciall flags" inside his [[#PARAM.SFO|ATTRIBUTE]]
|-
|-
| || || || || 2G  || || || PS2 Disc Game || Real PS2 Discs installed in internall HDD, feature only available for "backward compatible" PS3's, and only a few games
| || || || || 2G  || || || '''PS2 Disc''' Game || Real PS2 Discs installed in internal HDD, feature only available for "backward compatible" PS3's, and only a few games
|-
|-
| || || || || 1P || || || PS1 Classics Game ||
| || || || || 1P || || || '''PS1 Classics''' Game || Re-edited PS1 games released as a .pkg from PSN
|-
|-
| || || || || 2P || || || PS2 Classics Game || Re-edited PS2 games released as a .pkg from PSN
| || || || || 2P || || || '''PS2 Classics''' Game || Re-edited PS2 games released as a .pkg from PSN
|-
|-
| || || || || MN || || || Minis Game ||
| || || || || MN || || || '''Minis''' Game || Format inherited from PSP
|-
|-
|
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Transferable content
|-
|-
| || || || || PP || || || PSP Game || Not bootable, but can be copyed to a PSP
| || || || || PP || || || '''PSP''' Game || Not bootable, but can be copyed to a PSP
|-
|-
| || || || || VT ? || || || PSvita Game || Not bootable, but can be copyed to a PSvita
| || || || || VT ? || || || '''PSvita''' Game || Not bootable, but can be copyed to a PSvita
|-
|-
|}
|}


There are 2 different "PS2 game" bootable contents (2P and 2G).
'''2P''' are released from PSN as "PS2 Classic", and '''2G''' are a few real "PS2 DVD discs" that can be installed in the HDD (e.g. Final Fantasy XI online).


*'''Unknown, untested, not listed yet, or speculation'''
Chronologically the implementation of the "DVD install process" is several years older and the files are installed in a '''special partition''' of the HDD. Its not clear yet how sony managed both types, how the "2G" installation works, where is this partition, and even if the XMB displays them as different.
X0 - '''Unknown''', related to Game patch overwrite atribute: move screen and 3D screen ?
 
X1 - '''Unknown'''


X2 - '''Unknown'''
The tests with "2G" was done with hand-made SFO's and no more files, when trying to boot the game there is an interesting error message: ''The game partition for this game cannot be created because the installed game is corrupted. To perform this operation, delete the game, and then reinstall the game using the disc.''


X3 -  '''Unknown'''
When exporting Game Saves for "PS2 classics" (CATEGORY 2P) to a external USB drive there is a "rare" PARAM.SFO exported. This PARAM.SFO seems to be a copy of the main PARAM.SFO from the installed game folder with an added "signature" "injected" at the end of the file (out of his structure) with a lenght of 20 bytes. Is supposed to be a security feature when exporting the gamesave, is not confirmed if this PARAM.SFO (with the injected "signature" out of his structure) exists in the internal HDD (when importing, or present at some time with the "PS2 virtual memory cards").


X4 - '''Unknown''', same as X0 + 1 unknown flag ?
*'''Unknown, untested, not listed yet, or speculation
 
X5 - '''Unknown'''
 
X6 -  '''Unknown'''
 
X7 - '''Unknown'''
 
XI - '''System File for Extra Content Item''' , related to another disc structure, related with folders EX_GAME & EX_VIDEO ?


XI - '''Confirmed''' ---> '''System File for Extra Content Item''' , related to another disc structure, related with folders EX_GAME & EX_VIDEO ?


VT - '''Speculation''', refered as "VT" in one his related PS3 packages: NP0001-NPXS10002_00-VTSTORELIVEAREA0.pkg
VT - '''Speculation''', refered as "VT" in one his related PS3 packages: NP0001-NPXS10002_00-VTSTORELIVEAREA0.pkg
2P and 2G - '''Confirmed''', there are 2 different "PS2 game" installable contents. The ones released from PSN as "PS2 Classic" are "2P" (Saves for PS2 Classics use '2P' as well). And a few real "PS2 DVD discs" that can be installed in the HDD are "2G". Chronologically the implementation of the "DVD install process" is severall years older and the files are installed to a '''speciall partition''' of the HDD. Its not clear yet how sony managed both types and even if the XMB displays them as different. The tests with "2G" was done with frankenstein SFO's and no more files, when trying to boot one of this frankenstein SFO's there is an interesting error message: ''The game partition for this game cannot be created because the installed game is corrupted. To perform this operation, delete the game, and then reinstall the game using the disc.''


====CATEGORY For Disc contents====
====CATEGORY For Disc contents====
Line 593: Line 673:
|}
|}


These are "fake Blu-Ray discs" with the minimall parameters inside SFO's/SFX's needed for the structure to work, and the needed '''HYBRID_FLAG''''s inside the main [[PS3_DISC.SFB]]. All the files are 100% hand made from scratch and tested.
These are "fake Blu-Ray discs" with the minimal parameters inside SFO's/SFX's needed for the structure to work, and the needed '''HYBRID_FLAG''''s inside the main [[PS3_DISC.SFB]]. All the files are 100% hand made from scratch and tested.


'''Game discs in folder PS3_GAME'''
'''Game discs in folder PS3_GAME'''
Line 728: Line 808:
When the text is too long to fit in the screen it scrolls vertically from bottom to top, if the '''Data_Used_Size''' is not correct this scroll doesn't flow properly.
When the text is too long to fit in the screen it scrolls vertically from bottom to top, if the '''Data_Used_Size''' is not correct this scroll doesn't flow properly.


To displace the text to the next row is used the speciall byte "'''0A'''", this way it can be done long messages with severall horizontall lines.
To displace the text to the next row is used the special byte "'''0A'''", this way it can be done long messages with several horizontall lines.


===LANG===
===LANG===
Line 765: Line 845:


===PADDING===
===PADDING===
  Data_Type: utf-8 Speciall Mode
  Data_Type: utf-8 Special Mode
  Data_Size_Total: 8 bytes
  Data_Size_Total: 8 bytes
  Data_Size_Used: 0 bytes
  Data_Size_Used: 0 bytes
Line 773: Line 853:


===PARAMS===
===PARAMS===
  Data_Type: utf-8 Speciall Mode
  Data_Type: utf-8 Special Mode
  Data_Size_Total: 1024 bytes
  Data_Size_Total: 1024 bytes
  Data_Size_Used: 1024 bytes
  Data_Size_Used: 1024 bytes
  Used by: Save Data
  Used by: Save Data


This parameter is intented to store user (and console?) specific data. Is the only one known parameter that contains an internall structure with severall strings, and his size is huge for being an integer.
This parameter is intended to store user (and console?) specific data. Is the only one known parameter that contains an internal structure with several strings, and his size is huge for being an integer.


{| class="wikitable"
{| class="wikitable"
Line 792: Line 872:
| 0x0014 || 4 (0x4) || 03000000 || Unknown ||
| 0x0014 || 4 (0x4) || 03000000 || Unknown ||
|-
|-
| 0x0018 || 4 (0x4) || 01000000 || '''userid''' || User identificator number from [[XRegistry.sys]]
| 0x0018 || 4 (0x4) || 01000000 || '''userid''' || User identification number from [[XRegistry.sys]]
|-
|-
| 0x001C || 16 (0x10) || FEDCBA9876543210FEDCBA9876543210 || '''psid''' || More info: [[PSID]]
| 0x001C || 16 (0x10) || FEDCBA9876543210FEDCBA9876543210 || '''psid''' || More info: [[PSID]]
|-
|-
| 0x002C || 4 (0x4) || 01000000 || '''userid''' || User identificator number from [[XRegistry.sys]]
| 0x002C || 4 (0x4) || 01000000 || '''userid''' || User identification number from [[XRegistry.sys]]
|-
|-
| 0x0030 || 16 (0x10) || 0123456789ABCDEF0123456789ABCDEF || '''accountid''' || PSN account identificator from  [[XRegistry.sys]]
| 0x0030 || 16 (0x10) || 0123456789ABCDEF0123456789ABCDEF || '''accountid''' || PSN account identification from  [[XRegistry.sys]]
|-
|-
| 0x0040 || 960 (0x3C0) || 00000000........ || Unknown || Big chunk of zeroes, probably used or reserved for other formats
| 0x0040 || 960 (0x3C0) || 00000000........ || Unknown || Big chunk of zeroes, probably used or reserved for other formats
Line 805: Line 885:


*Notes:
*Notes:
** The string used in the paramater ACCOUNT_ID is the same than '''accountid''' inside PARAMS. When PARAMS & ACCOUNT_ID are present in the SFO the string can be found two times in the file.
** The string used in the paramater ACCOUNT_ID is the same than '''accountid''' inside PARAMS. When PARAMS & ACCOUNT_ID are present in the SFO the string can be found twice in the file.


===PARAMS2===
===PARAMS2===
  Data_Type: utf-8 Speciall Mode
  Data_Type: utf-8 Special Mode
  Data_Size_Total: 12 bytes
  Data_Size_Total: 12 bytes
  Data_Size_Used: 12 bytes
  Data_Size_Used: 12 bytes
Line 863: Line 943:
  Used by: HDD Game, Minis Game, Game Data, Save Data, Minis Save Data
  Used by: HDD Game, Minis Game, Game Data, Save Data, Minis Save Data


Is an scale to rate the content for the different users based in his user profile settings and internationall rating systems as: [[http://en.wikipedia.org/wiki/Pan_European_Game_Information | PEGI]], [[http://en.wikipedia.org/wiki/Entertainment_Software_Rating_Board | ESRB]], [[http://en.wikipedia.org/wiki/Computer_Entertainment_Rating_Organization | CERO]], etc...
It is a scale to rate the content for the different users based in user profile settings and international rating systems as: [[http://en.wikipedia.org/wiki/Pan_European_Game_Information | PEGI]], [[http://en.wikipedia.org/wiki/Entertainment_Software_Rating_Board | ESRB]], [[http://en.wikipedia.org/wiki/Computer_Entertainment_Rating_Organization | CERO]], etc...


The higher the level the higher the restriction e.g:
The higher the level the higher the restriction e.g:
Line 955: Line 1,035:
|-
|-
| FF F7 FF FF || FF FF F7 FF || 11111111 11111111 11110111 11111111 || 11 || Hong Kong ||
| FF F7 FF FF || FF FF F7 FF || 11111111 11111111 11110111 11111111 || 11 || Hong Kong ||
|-
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Examples
|-
| 01 F0 FF FF || FF FF F0 01 || 11111111 11111111 11110000 00000001 || || Allowed Region From 1 to 11 || [[http://ps3.mediagen.fr/badregion-4_0900051787.jpg | Photo]] of a PS3 DEX with '''Allowed Region=1-11''' (note region 0=Japan is not allowed)
|-
|-
|}
|}
[[http://ps3.mediagen.fr/badregion-4_0900051787.jpg | Photo]] of a DEX with the the text: '''Allowed Region=1-11''' (note region 0=Japan is not allowed).


===RESOLUTION===
===RESOLUTION===
Line 968: Line 1,050:
TV video modes supported by the content.
TV video modes supported by the content.


When there are severall flags activated the PS3 will use the one with higher quality supported by the TV.
When there are several flags activated the PS3 will use the one with higher quality supported by the TV.


{| class="wikitable"
{| class="wikitable"
Line 986: Line 1,068:
| 20 00 00 00 || 00 00 00 20 || 00000000 00000000 00000000 00100000 || 576  (16:9)
| 20 00 00 00 || 00 00 00 20 || 00000000 00000000 00000000 00100000 || 576  (16:9)
|-
|-
|
| colspan="4" style="text-align:center; background-color:#DDDDDD;" | Examples
|-
|-
| 3F 00 00 00 || 00 00 00 3F || 00000000 00000000 00000000 00111111 || All
| 3F 00 00 00 || 00 00 00 3F || 00000000 00000000 00000000 00111111 || All video modes supported
|-
|-
|}
|}
Line 1,017: Line 1,099:
  Used by: Minis Save Data
  Used by: Minis Save Data


Contains a list with an space reserved for 99 entries, each entry 32 bytes long, for a totall size of 3168 bytes (99 * 32 = 3168)
Contains a list with an space reserved for 99 entries, each entry 32 bytes long, for a total size of 3168 bytes (99 * 32 = 3168)


Entries refer to other files from the folder, example of one entry:
Entries refer to other files from the folder, example of one entry:
Line 1,083: Line 1,165:
{| class="wikitable"
{| class="wikitable"
|-
|-
!  Little Endian !! Big Endian !! Flags (Binary) !! Description
!  Little Endian !! Big Endian !! Flags (Binary) !! Description !! Flag Nº !! Requires Flag Nº
|-
| 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 2.0 || 01 ||
|-
|-
| 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 2.0
| 02 00 00 00 || 00 00 00 02 || 00000000 00000000 00000000 00000010 || || 02 ||
|-
|-
| 04 00 00 00 || 00 00 00 04 || 00000000 00000000 00000000 00000100 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 5.1
| 04 00 00 00 || 00 00 00 04 || 00000000 00000000 00000000 00000100 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 5.1 || 03 ||
|-
|-
| 10 00 00 00 || 00 00 00 10 || 00000000 00000000 00000000 00010000 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 7.1
| 10 00 00 00 || 00 00 00 10 || 00000000 00000000 00000000 00010000 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 7.1 || 05 ||
|-
|-
| 02 01 00 00 || 00 00 01 02 || 00000000 00000000 00000001 00000010 || [[http://en.wikipedia.org/wiki/Dolby_Digital#Dolby_Digital Dolby Digital]] 5.1
| 00 01 00 00 || 00 00 01 00 || 00000000 00000000 00000001 00000000 || [[http://en.wikipedia.org/wiki/Dolby_Digital#Dolby_Digital Dolby Digital]] 5.1 || 09 || 02
|-
|-
| 02 02 00 00 || 00 00 02 02 || 00000000 00000000 00000010 00000010 || [[http://en.wikipedia.org/wiki/DTS_%28sound_system%29 Digital Theater Systems (DTS)]] 5.1
| 00 02 00 00 || 00 00 02 00 || 00000000 00000000 00000010 00000000 || [[http://en.wikipedia.org/wiki/DTS_%28sound_system%29 Digital Theater Systems (DTS)]] 5.1 || 10 || 02
|-
|-
|
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Examples
|-
|-
| 17 03 00 00 || 00 00 03 17 || 00000000 00000000 00000011 00010111 || All
| 17 03 00 00 || 00 00 03 17 || 00000000 00000000 00000011 00010111 || All sound modes supported || ||
|}
|}


Line 1,152: Line 1,236:


*HDD games or apps:
*HDD games or apps:
**'''WX''' is the [[Environments|Network Enviroment]]: ('''NP'''=Retail)
**'''WX''' is the [[Environments|Network Environment]]: ('''NP'''=Retail)
**'''Y''' is the region: ('''E'''=Europe, '''I'''=Internationall?, '''H'''=Hong Kong, '''J'''=Japan, '''U'''=USA)
**'''Y''' is the region: ('''E'''=Europe, '''I'''=International?, '''H'''=Hong Kong, '''J'''=Japan, '''U'''=USA)
**'''Z''' is the ?: ('''A'''=?, '''B'''=?, '''F'''=?, '''G'''=?, '''I'''=?, '''J'''=?, '''K'''=?, '''L'''=?, '''O'''=?, '''W'''=?, '''Z'''=?)
**'''Z''' is the ?: ('''A'''=?, '''B'''=?, '''F'''=?, '''G'''=?, '''I'''=?, '''J'''=?, '''K'''=?, '''L'''=?, '''O'''=?, '''W'''=?, '''Z'''=?)
**'''12345'''
**'''12345'''


*Other TITLE_ID's
*Other TITLE_ID's
**TEST12345 (in savedata). When mounting a disc in a backup manager using the option "direct boot", the mounted disc use the TITLE_ID from backup manager (TITLE_ID from backup manager has not been unloaded properly and the disc addopts it). The SaveData of this game will use TEST12345. When several different games are mounted and "direct launched", his savedatas will be corrupted/invalid (because the overwriting of PARAM.SFO). TEST12345 seems to a common TITLE_ID used in all backup managers, the name probably is derived from official tools or internall firmware functions (Described as tips with ps3.gen.exe:"setting the TITLE_ID to TEST-XXXXX or disc version to "00.00" enable the program to build the disc image).
**TEST12345 (in savedata). When mounting a disc in a backup manager using the option "direct boot", the mounted disc use the TITLE_ID from backup manager (TITLE_ID from backup manager has not been unloaded properly and the disc adopts it). The savedata of this game will use TEST12345. When several different games are mounted and "direct launched", the savedata will be corrupted/invalid (because the overwriting of PARAM.SFO). TEST12345 seems to a common TITLE_ID used in all backup managers, the name probably is derived from official tools or internal firmware functions (Described as tips with ps3.gen.exe:"setting the TITLE_ID to TEST-XXXXX or disc version to "00.00" enable the program to build the disc image).
**MRTC00001 STAR OCEAN THE LAST HOPE (the first internationall blu-ray release)
**MRTC00001 STAR OCEAN THE LAST HOPE (the first international blu-ray release)


===TITLE_xx===
===TITLE_xx===
Line 1,169: Line 1,253:
Same than TITLE but for localized languages.
Same than TITLE but for localized languages.


An .SFO can contain severall TITLE_'''xx''' where '''xx''' is a number for a regional code. See: [[Content_Information_Files|Content Information Files]].
An .SFO can contain several TITLE_'''xx''' where '''xx''' is a number for a regional code. See: [[Content_Information_Files|Content Information Files]].


The "default" TITLE is always present when other "localized" TITLE_'''xx''' are used.
The "default" TITLE is always present when other "localized" TITLE_'''xx''' are used.
Line 1,191: Line 1,275:
  Used by: HDD Game, PS1 Game, Minis Game, Game Data, Trophy
  Used by: HDD Game, PS1 Game, Minis Game, Game Data, Trophy


Disc revision, or Package revision. The number increases when the content is re-released or re-packaged for whatever reason that doesn't affect the main executable (e.g. when a disc game reaches platinum sales, or "game of the year edition" incuding extra contents).
Disc revision, or Package revision. The number increases when the content is re-released or re-packaged for whatever reason that doesn't affect the main executable (e.g. when a disc game reaches platinum sales, or "game of the year edition" including extra contents).


When the main executable is uptaded, his '''APP_VER''' increases (this can be done with patches)... but the '''VERSION''' of the patch (or the re-released disc) returns to '''01.00'''.
When the main executable is updated, the '''APP_VER''' increases (this can be done with patches)... but the '''VERSION''' of the patch (or the re-released disc) returns to '''01.00'''.


Additionally this gives the possibility to release different versions of the same patch (used when the original patch contains a bug, needs to be replaced, and is not cummulative)
Additionally this gives the possibility to release different versions of the same patch (used when the original patch contains a bug, needs to be replaced, and is not cumulative)


The format is '''XX.YY''' where "'''XX'''" and "'''YY'''" are numbers, and the point "'''.'''" is included in the string, e.g: '''01.00'''.
The format is '''XX.YY''' where "'''XX'''" and "'''YY'''" are numbers, and the point "'''.'''" is included in the string, e.g: '''01.00'''.
Line 1,201: Line 1,285:
*When used in a SFO for a trophy it has a '''Data_Size_Used''' of 3 bytes, with the format: '''X.Y''' e.g: '''1.0'''
*When used in a SFO for a trophy it has a '''Data_Size_Used''' of 3 bytes, with the format: '''X.Y''' e.g: '''1.0'''


==Tools, manuals and externall links==
==Tools, manuals and external links==
Sorry if im missing some link, severall things of this page was copy-pasted months ago by googling in random forums.
Sorry if im missing some link, several things of this page was copy-pasted months ago by googling in random forums.


*Tools
*Tools

Revision as of 08:06, 23 March 2012


SFO (System File Object) are used in folders wich content needs to be displayed in the XMB.

The basic file/folder structure of a PS3 content is composed by a SFO, the multimedia Content Information Files, and for special content like SaveData or Trophies there is a PARAM.PFD for security reasons, other type of content like games or apps needs an structure of subfolders with names as HTMLDIR, INSDIR, LICDIR, PKGDIR, TRPDIR, USRDIR, etc...

The parameters contained in a SFO can be simplyfied as inputs/outputs for/from the content:

  • Boot modifyers (flags) that are sent to the content when is executed to activate special modes (e.g. audio and video modes of a game).
  • Information texts about the content and his restrictions (e.g. title and version of a game).


SFX (System File in XML format) is similar than SFO but without the data related to his structure (the SFO metadata that has no real value).

The conversion between the 2 formats is direct because the important values contained in both formats are the same (File_Version, Parameter (name), Data_Type, Data_Total_Size & Parameter (value)).


SFO's and SFX's can be chained in a structure of subfolders where the "main" SFO activates a special subfolder, and the subfolder contains another SFO that activates another subfolder and so on.

This structures are limited by the system and activated by a combination of CATEGORY and special flags on ATTRIBUTE.

In Blu-Ray discs, the "main" PARAM.SFO itself is activated by another flag inside PS3_DISC.SFB.


Internal Structure

Header

 struct Header
 {
 uint32_t File_Signature; /* Always PSF */
 uint32_t File_Version; /* Usually 1.1 */
 uint32_t Name_Table_Start; /* Start position of the Name_Table */
 uint32_t Data_Table_Start; /* Start position of the Data_Table */
 uint32_t Entries_Number; /* Number of entries */
 };

Definition_Table

This structure repeats one time for every Entries_Number defined in the header. All values are in Little Endian.

 struct Definition_Table
 {
 uint16_t Name_Table_Offset; /* Offset of the Name of the entry, from start of Name_Table */
 uint16_t Data_Type; /* Type of data of the entry in the Data_Table */
 uint32_t Data_Size_Used; /* Used Bytes by the entry in the Data_Table */
 uint32_t Data_Size_Total; /* Total bytes reserved for the entry in the Data_Table */
 uint32_t Data_Table_Offset; /* Offset of the Data of the entry, from start of Data_Table */
 };

Data_Type

Partially known based in some examples found in different content

Data_Type Description Used in
04 00 utf-8 Special Mode Data generated by the system: Game Saves (ACCOUNT_ID, PARAMS, PARAMS2, SAVEDATA_FILE_LIST, SAVEDATA_PARAMS)... and Trophies (PADDING)
04 02 utf-8
04 04 integer
  • Speculation

The Data_Type = 0400 marked as "utf-8 Special Mode" has the particularity of return a "right" or "wrong" when comparing the string with a reference value, so it can be said that the difference between the simple "utf-8" and "utf-8 Special Mode" is only from the point of view of how the system manipulate this data. For more info read the section ACCOUNT_ID.

If the "scale" used for the second byte follows the proportion of 2^X (e.g. 1, 2, 4, 8, 16, 32, etc...) then we are missing a "04 01" valid data type in the list

Name_Table

The entries of this table (and the next table) can vary depending of the kind of content, but are always ordered by names (alphabetically from A to Z), each entry of this table needs 1 blank byte after the name to separate them. The valid values used in known formats are grouped in Parameters Table for a fast reference.

The table has padding at the end to fit the total size in bytes to a multiply or 4, this padding is added after the last blank byte of the last entry. If the last entry (included his blank byte) matches with a multiply of 4 this padding doesn't exist.

Data_Table

This table has no padding between entries neither at the end, Data_Size_Total for each entry is stored in the Definition_Table and this sizes are fixed by each entry (e.g. RESOLUTION always has a Data_Size_Total of 4 bytes), so the space in Data_Table can be considered reserved (filled with zeroes when not used).

  • Integer entries uses all the reserved bytes, so the Data_Size_Used is the same as Data_Size_Total.
  • utf-8 entries never uses all the reserved bytes, needs 1 blank byte after the last character of the text string, this blank byte can be considered part of the string to count the Data_Size_Used bytes for this entry (e.g. the title "my homebrew " has a Data_Size_Used of 12 bytes from the total of 128 reserved in Data_Size_Total).

Internal Structure Examples

SFO

This is an example of a hand made SFO structure, it contains only 1 entry (TITLE_ID), i used this one because the Data_Size_Total is short enough (16 bytes) to build the full structure in a minimal size, needs padding at the end of the Name_Table, and the Data_Size_Used is smaller than Data_Size_Total.

0x0000  00 50 53 46  01 01 00 00  24 00 00 00  30 00 00 00 | .PSF....$...0... |
0x0010  01 00 00 00  00 00 04 02  0A 00 00 00  0F 00 00 00 | ................ |
0x0020  00 00 00 00  54 49 54 4C  45 5F 49 44  00 00 00 00 | ....TITLE_ID.... |
0x0030  41 42 43 44  31 32 33 34  35 00 00 00  00 00 00 00 | ABCD12345....... |

All the blocks of the file are explained in the next list, it has separated sections for header and the three tables.

Offset Size Content Conversion Value Notes
Header
0x0000 0x04 00 50 53 46 To utf-8 PSF Signature
0x0004 0x04 01 01 00 00 Big endian, decimal 1.1 Version (the point is added by the system)
0x0008 0x04 24 00 00 00 Big endian 0x0024 Start of Name_Table
0x000C 0x04 30 00 00 00 Big endian 0x0030 Start of Data_Table
0x0010 0x04 01 00 00 00 Big endian, decimal 1 Number of entries in the tables
Definition_Table
0x0014 0x02 0000 Big endian 0 (Start of Name) - (Start of Name_Table) = 0x0024-0x0024 = 0
0x0016 0x02 0402 Unknown Data_Type
0x0018 0x04 0A000000 Big endian, decimal 10 Data_Size_Used (ABCD12345 are 9 bytes + 1 blank = 10)
0x001C 0x04 0F000000 Big endian, decimal 16 Data_Size_Total (TITLE_ID Data_Size_Total is always 16 bytes)
0x0020 0x04 00000000 Big endian 0 (Start of Data) - (Start of Data_Table) = 0x0030-0x0030 = 0
Name_Table
0x0024 0x09 5449544C455F494400 To utf-8 TITLE_ID Name, included 1 blank byte at the end
0x002D 0x03 000000 Padding (9 from the previous entry + 3 padding = 12 bytes)
Data_Table
0x0030 0x0F 41424344313233343500000000000000 To utf-8 ABCD12345 Data. (Data_Size_Total=16 bytes. Data_Size_Used=10 bytes)
  • When you generate a non proper file playing with the flags, you can have a nice icon of "corrupted data", but in some cases the game boots normally. In other cases when adding or removing parameters the file is "partially" corrupted because a "break point" in the structure and the file is "partially" loaded (the PS3 loads the values before the structure "break point" normally, but after this point the values shown as corrupted or missing).
  • When adding "non-standard" parameters to a "standard" SFO the system blocks this "not-expected" parameter. The SFO is loaded without problems, but the added parameters are ignored (e.g. when adding SUB_TITLE to a SFO for category "HG").
  • The minimal structure tested (and working) for a homebrew can be copied/downloaded at the bottom of the page, its not "standard" but the PS3 doesn't complain, and probably can be reduced even more.

SFX

This is the same file converted to SFX format, its more simple because it has no metadata related with the structure. Are used by some blu-rays, and can be used as "templates" to generate SFO files (manually by now, because there is no tool yet).

The entries and values are self explanatory, can be created using a SFO as the source with the program SFO2SFX.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<paramsfo add_hidden="false">
  <param key="TITLE_ID" fmt="utf8" max_len="16">ABCD12345</param>
</paramsfo>

Parameters Table

This table contains all the parameters known/found in standard contents for a fast view and fast relinking to other sections of the page.

Columns of the table are named by the CATEGORY used by this content. Note Trophies doesn't have CATEGORY inside his PARAM.SFO, the "♦" simbol is used as a reference.

Other bootable content in other columns of XMB (CATEGORY's AP, AM, AV, AT, CB, HM) uses the same parameters than HG

Parameter Data_Type Data_Size_Total Data_Size_Used HG 1P 2G 2P MN GD 2D SD MS PP VT?
Bootable System Data Saves Trophy Transferable
ACCOUNT_ID 0400 16 (0x10) 16 (0x10) No No ??? No No No No Yes No No No No
ACCOUNTID utf-8 16 (0x10) 16 (0x10) No No ??? No No No No No No Yes No No
ANALOG_MODE integer 4 (0x4) 4 (0x4) No Yes ??? No No No No No No No ??? ???
APP_VER utf-8 8 (0x8) 6 (0x6) Opt No ??? No Yes Opt No No No No ???
ATTRIBUTE integer 4 (0x4) 4 (0x4) Opt Yes ??? Opt Yes Opt No Yes No No ??
BOOTABLE integer 4 (0x4) 4 (0x4) Yes Yes ??? Yes Yes No No No No No ?
CATEGORY utf-8 4 (0x4) 3 (0x3) Yes Yes ??? Yes Yes Yes Yes Yes Yes No
CONTENT_ID utf-8 48 (0x30) 37 (0x25) Opt No ??? No No No No No No No
DETAIL utf-8 1024 (0x400) variable No No ??? No No No No Opt No No
LANG integer 4 (0x4) 4 (0x4) No No ??? No No No No No No Yes
LICENSE utf-8 512 (0x200) variable Yes No ??? No No No No No No No
NP_COMMUNICATION_ID utf-8 16 (0x10) 13 (0xD) Opt No ??? No No No No No No No
NPCOMMID utf-8 16 (0x10) 12 (0xC) No No ??? No No No No No No Yes
PADDING 0400 8 (0x8) 0 (0x0) No No ??? No No No No No No Yes
PARAMS 0400 1024 (0x400) 1024 (0x400) No No ??? No No No No Yes No No
PARAMS2 0400 12 (0xC) 12 (0xC) No No ??? No No No No Yes No No
PARENTAL_LEVEL_x integer 4 (0x4) 4 (0x4) Opt No ??? No No No No No No No
PARENTAL_LEVEL integer 4 (0x4) 4 (0x4) Yes No ??? Yes Yes Yes Yes Yes Yes No
PARENTALLEVEL integer 4 (0x4) 4 (0x4) No Yes ??? No No No No No No Yes
PS3_SYSTEM_VER utf-8 8 (0x8) 8 (0x8) Yes Yes ??? Yes Yes Opt Yes No No No
REGION_DENY integer 4 (0x4) 4 (0x4) Opt No ??? Opt No No No No No No
RESOLUTION integer 4 (0x4) 4 (0x4) Yes Yes ??? No Yes No No No No No
SAVEDATA_DETAIL utf-8 1024 (0x400) variable No No ??? No No No No No Yes No
SAVEDATA_DIRECTORY utf-8 64 (0x40) variable No No ??? No No No No Yes Yes No
SAVEDATA_FILE_LIST 0400 3168 (0xC60) 3168 (0xC60) No No ??? No No No No No Yes No
SAVEDATA_LIST_PARAM utf-8 8 (0x8) variable No No ??? No No No No Yes No No
SAVEDATA_PARAMS 0400 128 (0x80) 128 (0x80) No No ??? No No No No No Yes No
SAVEDATA_TITLE utf-8 128 (0x80) variable No No ??? No No No No No Yes No
SOUND_FORMAT integer 4 (0x4) 4 (0x4) Yes Yes ??? No Yes No No No No No
SOURCE integer 4 (0x4) 4 (0x4) No No ??? No No No No No No Yes
SUB_TITLE utf-8 128 (0x80) variable No No ??? No No No No Opt No No
TARGET_APP_VER utf-8 8 (0x8) 6 (0x6) No No ??? No No Opt No No No No
TITLE utf-8 128 (0x80) variable Yes Yes ??? Yes Yes Yes Yes Yes Yes No
TITLE_ID utf-8 16 (0x10) 10 (0xA) Yes Yes ??? Yes Yes Yes Yes No No No
TITLE_xx utf-8 128 (0x80) variable Opt No ??? No No No No No No No
TITLEID0xx utf-8 16 (0x10) 9 (0x9) No No ??? No No No No No No Yes
VERSION utf-8 8 (0x8) 6 (0x6) Yes Yes ??? No Yes Yes Yes No No Yes

Parameters Descriptions

ACCOUNT_ID

Data_Type: utf-8 Special Mode
Data_Size_Total: 16 bytes
Data_Size_Used: 16 bytes
Used by: Save Data

PSN User Account stored as utf-8 Special Mode. The string is compared with the info contained in XRegistry.sys. The comparison can only return two values, right, or wrong, if the comparison returns right the SaveData is valid.

Filled with zeroes when the user has not been registered in PSN.

ACCOUNTID

Data_Type: utf-8
Data_Size_Total: 16 bytes
Data_Size_Used: 16 bytes
Used by: Trophy

Same string than ACCOUNT_ID but stored as utf-8 because the system uses it for normal functions (in this case is sent to PSN to synchronize the trophy data with your online account).

ANALOG_MODE

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: PS1 Game

Enables compatibility with the analog sticks of the Dualshock Controller.

Little Endian Big Endian Flags (Binary) Description
00 00 00 00 00 00 00 00 00000000 00000000 00000000 00000000 Disabled
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 Enabled

APP_VER

Data_Type: utf-8
Data_Size_Total: 8 bytes
Data_Size_Used: 6 bytes
Used by: HDD Game, Minis Game, Game Data

Application version (or patch version). Not used in old games.

The format is XX.YY where "XX" and "YY" are numbers, and the point "." is included in the string, e.g: 01.00 for the first stable version released.

  • Cummulative Patches

Game patches uses a bigger APP_VER as 01.01 for the first patch, but keeping the same TITLE_ID from the original release.

ATTRIBUTE

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game, PS1 Game, Minis Game, PCEngine game, NEOGEO game, Game Data, Save Data

Contains a maximun of 32 flags that can be turned on/off to activate/deactivate special boot modes and features of the content.

Values are stored in "Little Endian" format inside the SFO, to represent the whole tables in a "human readable" format has been needed to convert them to "Big Endian" and then to "Binary".

ATTRIBUTE in SaveData

Little Endian Big Endian Flags (Binary) Description
00 00 00 00 00 00 00 00 00000000 00000000 00000000 00000000 Copy Allowed
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 Copy Protected
  • Copy Protected

Used only in SaveData (SD), not in MInis SaveData (MS). Removes the option "copy" from the side menu when pressing triangle over his icon in XMB.

ATTRIBUTE in Discs Subfolders

Little Endian Big Endian Flags (Binary) Description
00 00 00 00 00 00 00 00 00000000 00000000 00000000 00000000 Subfolder Deactivated
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 Subfolder Activated
  • Subfolder Activated

Used in Discs subfolders (CATEGORY TR, VR, DP, XR) to activate another subfolder.

ATTRIBUTE in Patches

Little Endian Big Endian Flags (Binary) Description
00 00 04 00 00 04 00 00 00000000 00000100 00000000 00000000 Overwrite RESOLUTION, SOUND_FORMAT, PSP Remote_Play
00 00 10 00 00 10 00 00 00000000 00010000 00000000 00000000 Overwrite XMB In-Game
00 00 20 00 00 20 00 00 00000000 00100000 00000000 00000000 Overwrite Move Controller warning screen
00 00 40 00 00 40 00 00 00000000 01000000 00000000 00000000 Overwrite 3D warning screen
  • Patch.
  • Patch..
  • Patch...

ATTRIBUTE In Bootable content

Little Endian Big Endian Flags (Binary) Description Introduced in Flag Nº Requires flag Nº
First Byte
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 PSP Remote Play (v1) fw1.10 (Nov 2006) 01
02 00 00 00 00 00 00 02 00000000 00000000 00000000 00000010 PSP Export fw1.70 (Apr 2007) 02
04 00 00 00 00 00 00 04 00000000 00000000 00000000 00000100 PSP Remote Play (v2) fw1.80 (May 2007) ? 03 01
08 00 00 00 00 00 00 08 00000000 00000000 00000000 00001000 XMB In-Game (v2) Forced Enabled fw2.40 (Jul 2008) 04
10 00 00 00 00 00 00 10 00000000 00000000 00000000 00010000 XMB In-Game (v2) Disabled fw2.40 (Jul 2008) 05
20 00 00 00 00 00 00 20 00000000 00000000 00000000 00100000 XMB In-Game (v2) Background Music fw2.40 (Jul 2008) 06
40 00 00 00 00 00 00 40 00000000 00000000 00000000 01000000 Unknown ! 07
80 00 00 00 00 00 00 80 00000000 00000000 00000000 10000000 PSvita Remote Play ??? fw4.00 (Nov 2011) 08
Second Byte
00 01 00 00 00 00 01 00 00000000 00000000 00000001 00000000 Move Controller (warning screen) fw3.40 (Jun 2010) 09
00 02 00 00 00 00 02 00 00000000 00000000 00000010 00000000 Navigation Controller (warning screen) fw3.40 (Jun 2010) 10 09
00 04 00 00 00 00 04 00 00000000 00000000 00000100 00000000 Eye Cam (warning screen) fw3.40 (Jun 2010) 11 09
00 08 00 00 00 00 08 00 00000000 00000000 00001000 00000000 Calibration (notification screen) fw3.40 (Jun 2010) 12
00 10 00 00 00 00 10 00 00000000 00000000 00010000 00000000 3D (warning screen) fw3.40 (Jun 2010) 13
00 20 00 00 00 00 20 00 00000000 00000000 00100000 00000000 Not used yet ? 14
00 40 00 00 00 00 40 00 00000000 00000000 01000000 00000000 Not used yet ? 15
00 80 00 00 00 00 80 00 00000000 00000000 10000000 00000000 Not used yet ? 16
Third Byte
00 00 01 00 00 01 00 00 00000000 00000001 00000000 00000000 Install Disc 17
00 00 02 00 00 02 00 00 00000000 00000010 00000000 00000000 Install Packages 18
00 00 04 00 00 04 00 00 00000000 00000100 00000000 00000000 Unknown ! 19
00 00 08 00 00 08 00 00 00000000 00001000 00000000 00000000 Game Purchase Enabled 20
00 00 10 00 00 10 00 00 00000000 00010000 00000000 00000000 Unknown ! 21
00 00 20 00 00 20 00 00 00000000 00100000 00000000 00000000 PCEngine (X0) (Jul 2009) 22
00 00 40 00 00 40 00 00 00000000 01000000 00000000 00000000 License Text Hidden 23
00 00 80 00 00 80 00 00 00000000 10000000 00000000 00000000 Move Controller Compatible fw3.40 (Jun 2010) 24
Fourth Byte
00 00 00 01 01 00 00 00 00000001 00000000 00000000 00000000 Reserved (X1) 25 22
00 00 00 02 02 00 00 00 00000010 00000000 00000000 00000000 Reserved (X2) 26 22
00 00 00 03 03 00 00 00 00000011 00000000 00000000 00000000 Reserved (X3) 25+26 22
00 00 00 04 04 00 00 00 00000100 00000000 00000000 00000000 NeoGeo (X4) fw3.55 (Dec 2010) ? 27 22
00 00 00 05 05 00 00 00 00000101 00000000 00000000 00000000 Reserved (X5) 25+27 22
00 00 00 06 06 00 00 00 00000110 00000000 00000000 00000000 Reserved (X6) 26+27 22
00 00 00 07 07 00 00 00 00000111 00000000 00000000 00000000 Reserved (X7) 25+26+27 22
00 00 00 08 08 00 00 00 00001000 00000000 00000000 00000000 Not used yet ? 28
00 00 00 10 10 00 00 00 00010000 00000000 00000000 00000000 Not used yet ? 29
00 00 00 20 20 00 00 00 00100000 00000000 00000000 00000000 Not used yet ? 30
00 00 00 40 40 00 00 00 01000000 00000000 00000000 00000000 Not used yet ? 31
00 00 00 80 80 00 00 00 10000000 00000000 00000000 00000000 Not used yet ? 32
Examples
05 17 80 00 00 80 17 05 00000000 10000000 00010111 00000101 killzone 3 (disc) 01+03+09+10+11+13+24
20 00 02 00 00 02 00 20 00000000 00000010 00000000 00100000 Dead Space 2 (disc) 06+18
85 00 00 00 00 00 00 85 00000000 00000000 00000000 10000101 Torne v3.52 (patch) 01+03+08
  • PSP Remote Play v1 and v2

Remote play is a feature that displays the PS3 screen on a PSP to enable remote operation over a wireless LAN. There are two PSP Remote Play modes, "v1" is in low quality using MPEG4 SP/ATRAC codecs, and "v2" uses MPEG4 AVC/AAC. See: Remote Play page and Official video in youtube.

  • PSP Export

Allows the copy of the content to a PSP by pressing triangle over his icon in XMB and the option "copy" in the side menu. Used by "PS1 Game" and "Minis Game". See: PS3 User Guide/Copying games to play on a PSP.

  • XMB In-Game v2 Forced Enable

XMB In-Game v2 was implemented in firmware 2.40, before 2.40 there was an old XMB In-Game v1. Games released before firmware 2.40 uses "XMB In-Game v1" even when launched in higher firmwares. This flag activates "XMB In-Game v2" for this old games, it has no effect in games released after 2.40 because this ones has XMB In-Game v2 activated by default. See: Official introduction video of the feature in fw 2.40.

  • XMB In-Game v2 Disabled

Replaces "XMB In-Game v2" by "XMB In-Game v1", works with all games, useful to free ram and to improve the loading time of the menu.

  • XMB In-Game v2 Background Music

Allows to pause the game (with the PS button), play your own music from the files stored in your HDD, and return to the game while your music is playing.

  • Move/Navigation/Eye (warning screens)

This warning screens are displayed before the game is launched (around 3 seconds each), are an explain of the correct way to use the "move controller", "navigation controller", and "eye cam" respectively. The game waits for them to appear so is a good idea to remove them to improve the loading time, the removing of this 3 screens has no effect over the controller, move controller will work without them.

  • Calibration (notification screen)

This is a calibration screen that appears when the controller has not been calibrated previously (or when is miss-configured).

  • Stereoscopic 3D (warning screen)

This is a warning screen similar than the ones related with move peripherals, only appears when the TV is "3D compatible".

  • Instal Disc

Hides the primary icon of the disc (only the secondary icon is displayed), used when the disc contains only "Install Packages" and there is no bootable content on the "main" path (PS3_GAME/USRDIR/EBOOT.BIN).

  • Instal Packages

Activates the subfolder structures PS3_GAME/PKGDIR & PS3_GAME/INSDIR in discs by loading another SFO from this subfolders (the system loads the "main" SFO from PS3_GAME, and then "jumps" to the "secondary" SFO), every time one of these SFO's inside substructures/subfolders is loaded... a new subicon/mount point is loaded in XMB. See the "fake disc structure" examples in CATEGORY For Disc contents

  • Game Purchase Enabled

Activates the option to purchase the content by pressing triangle over his icon in XMB. is directly related with CONTENT_ID. When the content is purchased his CONTENT_ID is checked online to obtain the license. After the license is retrieved the game loads another PARAM.SFO from a subfolder with different values (e.g. PARAM.SFO from the subfolder with the TITLE "Full" is loaded, and the main PARAM.SFO witht he TITLE "Demo" is ignored)

  • Move Controller Compatible

Enables support for the Move Controller (Navigation Controller and Eye Cam doesn't have/needs a flag)

  • License Text Hidden

Removes the "About this Game" option in Side Menu (by pressing triangle over the icon in XMB). This option ignores the LICENSE text. Used by games that has his own license and not the sony one (e.g: PCengine & NeoGeo)



  • Unknown flags, specifics, incomplete descriptions and speculation

PSvita Remote Play (Flag Nº8) <----- used for first time by "patch v3.52" for "torne" (IP9100-BCJB95006_00-TORNE0PATCH00352-A0352-V0352-PE). Previously torne had 2 flags for the two PSP remote play modes. This patch was released few days after PS3 firmware 4.00, in his chagelog there is a clear reference to PSvita conectivity with PS3 but its not verifyed (and cant be tested in a firmware before 4.00)


Flag can be used by the system as "bookmark" (and combine with Specifics Parameters) to make sure which category has to be loaded. In that case, it unclear how some others flags effects. Some flags may only work under some Category or specifics FW or in a cumulative way.

Few of them can be used for PS vita for similar functions such as psp remote play/psp export. (and need more info on how PP works)

Boot logo Disable ? <-- this is the "license text hidden" flag ?

Chat Disable ?

Copy Disable ?

Descriptions From X0 to X7 They are not used as binary (only?) but as bits to set X category. If the value is 0 or end up with 0, and the X maker flag is set under right SFO X parameters, X0 (PCEngine) is read by the system. In that way, by activate the flag N27, in fact you set up the right bit value the system load X4 (NEOGEO)

Little Endian Value: 00 = X0 01 = X1 02 = X2 03 = X3 X4 = 04 05 = X5 06 = X6 07 = X7


X category appear as HG (sub cat?)but with different parameters and the last bytes of attribute used (also?) as little Endian value (so the PS3 can make difference between "real" HG and "fake" HG)

SFO TEST Tool from Deroad can boot and return to XMB under X category (when MINIS don t)

Folder position in XMB (in fw 3.55 with hand-made PARAM.SFO's):

By pressing square, some of them will be classify by the ps3 under: - (the 8 X category folders can appears at the same time in XMB)

  • Playstation 3 (HG)
  • minis
  • Playstation 2 (2G)
  • Playstation (1P)
  • X1

Mini icon: not present (-)

Same folder than SFO inside EBOOT.PBP of Minis (PS3 side with attribute :01 00 60 01)

  • X2

Mini icon: not present (-)

  • X0

Mini icon: PCEngine

Enables X category. Introduced initially as PCEngine

Jul 15, 2009 Works alone and can be used with any "HG" category content, its not clear what does this flag other than the content has his own "tiny grey icon" with a "PCE" logo and are placed inside his own subfolder when ordering contents (with square button) in the XMB (3.55, 3.41?).

  • X3

Mini icon: not present (-)

  • X4

Mini icon: NEOGEO

Dec 21, 2010 (Few days after 3.55) Can be used with any "HG" category content. It has his own "tiny grey icon" with a "NEOGEO" logo and are placed inside his own subfolder when ordering contents (with square button) in the XMB (3.55, 3.41?).

  • X5

Mini icon: not present (-)

  • X6

Mini icon: not present (-)

  • X7

Mini icon: not present (-)

BOOTABLE

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game, PS1 Game, Minis Game

If the content is bootable or not, useful when you are going to make a data pkg.

Little Endian Big Endian Flags (Binary) Description
00 00 00 00 00 00 00 00 00000000 00000000 00000000 00000000 Not bootable
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 Bootable

CATEGORY

Data_Type: utf-8
Data_Size_Total: 4 bytes
Data_Size_Used: 3 bytes
Used by: All but Trophy

CATEGORY For HDD contents

This table represent the columns where the content is placed in the XMB and the CATEGORY asociated.

Photo Music Video TV Game Network PlayStation Network Content Examples Notes
System Data
GD Game Data Game patches, and Game DLC
2D [PS2 Data] Special patches/data for PS2 Emulator
Save Data
SD PS3 Save Data PS3 Game Saves
MS Minis Save Data Format inherited from PSP
Trophy Data
Trophy Data Trophies uses a PARAM.SFO without CATEGORY, identifyed by the XMB by his path in internal HDD
Bootable Content
AP PlayMemories
AM Qriocity Music Unlimited
AV Netflix, LoveFilm
AT QOOK TV, Now TV, Torne Column hidden when no installed content
CB Life with PlayStation, Folding@home
HM PlayStation Home
HG PS3 Game Some special contents (e.g: PCengine and NeoGeo Games) uses HG but are identifyed by the XMB by "speciall flags" inside his ATTRIBUTE
2G PS2 Disc Game Real PS2 Discs installed in internal HDD, feature only available for "backward compatible" PS3's, and only a few games
1P PS1 Classics Game Re-edited PS1 games released as a .pkg from PSN
2P PS2 Classics Game Re-edited PS2 games released as a .pkg from PSN
MN Minis Game Format inherited from PSP
Transferable content
PP PSP Game Not bootable, but can be copyed to a PSP
VT ? PSvita Game Not bootable, but can be copyed to a PSvita

There are 2 different "PS2 game" bootable contents (2P and 2G). 2P are released from PSN as "PS2 Classic", and 2G are a few real "PS2 DVD discs" that can be installed in the HDD (e.g. Final Fantasy XI online).

Chronologically the implementation of the "DVD install process" is several years older and the files are installed in a special partition of the HDD. Its not clear yet how sony managed both types, how the "2G" installation works, where is this partition, and even if the XMB displays them as different.

The tests with "2G" was done with hand-made SFO's and no more files, when trying to boot the game there is an interesting error message: The game partition for this game cannot be created because the installed game is corrupted. To perform this operation, delete the game, and then reinstall the game using the disc.

When exporting Game Saves for "PS2 classics" (CATEGORY 2P) to a external USB drive there is a "rare" PARAM.SFO exported. This PARAM.SFO seems to be a copy of the main PARAM.SFO from the installed game folder with an added "signature" "injected" at the end of the file (out of his structure) with a lenght of 20 bytes. Is supposed to be a security feature when exporting the gamesave, is not confirmed if this PARAM.SFO (with the injected "signature" out of his structure) exists in the internal HDD (when importing, or present at some time with the "PS2 virtual memory cards").

  • Unknown, untested, not listed yet, or speculation

XI - Confirmed ---> System File for Extra Content Item , related to another disc structure, related with folders EX_GAME & EX_VIDEO ?

VT - Speculation, refered as "VT" in one his related PS3 packages: NP0001-NPXS10002_00-VTSTORELIVEAREA0.pkg

CATEGORY For Disc contents

This table represent the columns where the content is placed in the XMB and the CATEGORY asociated.

Photo Music Video TV Game Network PlayStation Network Content Examples Notes
DG Disc Game dev_bdvd/TITLE_ID/PS3_GAME
DP (IP) Disc Packages dev_bdvd/TITLE_ID/PS3_GAME/PKGDIR
AR Disc Patches, and DLC dev_bdvd/TITLE_ID/PS3_GAME/INSDIR
XR (IP, TI, VI) Disc Packages, Themes, and Videos dev_bdvd/TITLE_ID/PS3_EXTRA
TR Disc Themes dev_bdvd/TITLE_ID/PS3_CONTENT/THEMEDIR
VR (VI) Disc Videos dev_bdvd/TITLE_ID/PS3_CONTENT/VIDEODIR
DM Disc Movie dev_bdvd/TITLE_ID/PS3_VPRM

These are "fake Blu-Ray discs" with the minimal parameters inside SFO's/SFX's needed for the structure to work, and the needed HYBRID_FLAG's inside the main PS3_DISC.SFB. All the files are 100% hand made from scratch and tested.

Game discs in folder PS3_GAME The basic structure of a game disc.

0GAM00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0GAM00001)
|--- PS3_GAME
     |--- PARAM.SFO <--- CATEGORY (DG), TITLE_ID (0GAM00001)
     |--- USRDIR
          |--- EBOOT.BIN

Movie discs in folder PS3_VPRM This is the part of a Blue-Ray movie structure related with the PS3 system... the rest are the standard folders/files of a Blue-Ray movie and is not needed to be explained here.

0MOV00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (v), TITLE_ID (blank)
|--- PS3_VPRM
     |--- PARAM.SFO <--- CATEGORY (DM)

Game discs in folder PS3_CONTENT Themes folder is mounted as a "secndary icon" under the "main game icon". Doesn't need/admit an SFO/SFX, the icon contained in the theme is resized and displayed inside a bubble, also the TITLE of the Theme is used for the content.

0CONT00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (TV), TITLE_ID (0CONT00001)
|--- PS3_CONTENT
     |--- THEMEDIR
     |    |--- PARAM.SFO <--- ATTRIBUTE (01000000), CATEGORY (TR), TITLE (Themes)
     |    |--- D000
     |         |--- DATA001.P3T
     |         |--- DATA002.P3T
     |--- VIDEODIR
          |--- PARAM.SFO <--- ATTRIBUTE (01000000), CATEGORY (VR), TITLE (Videos)
          |--- D001
          |    |--- PARAM.SFO <--- CATEGORY (VI), TITLE (Video 1)
          |    |--- DATA000.MP4
          |--- D002
               |--- PARAM.SFO <--- CATEGORY (VI), TITLE (Video 2)
               |--- DATA000.MP4

Game discs in folder PS3_GAME/PKGDIR Can be considered an "expansion" of the basic blu-ray structure of a game disc, activated by the flag 00000200 in the ATTRIBUTE of the PARAM.SFO inside PS3_GAME. Packages are displayed in subfolders inside bubbles with his icons resized.

When the packages are installed, the file PARAM.SFO from PKGDIR is renamed to DISC.SFO and copyed inside the installation folder with the purpose of ??? (unknown, his info is not displayed in XMB)

0PKG00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0PKG00001)
|--- PS3_GAME
     |--- PARAM.SFO <--- ATTRIBUTE (00000200), CATEGORY (DG)
     |--- PKGDIR
          |--- PARAM.SFO <--- ATTRIBUTE (0100000), CATEGORY (DP), TITLE (Packages)
          |--- PKG01
          |    |--- PARAM.SFO <--- CATEGORY (IP), TITLE (Package 1)
          |    |--- INSTALL.PKG
          |--- PKG02
               |--- PARAM.SFO <--- CATEGORY (IP), TITLE (Package 2)
               |--- INSTALL.PKG

Game discs in folder PS3_GAME/INSDIR Can be considered an "expansion" of the basic blu-ray structure of a game disc, activated by the flag 00000200 in the ATTRIBUTE of the PARAM.SFO inside PS3_GAME

Used for "game patches" and "game expansion packs". The PARAM.SFO inside "INSDIR" contains the "APP_VER" of the bigger patch of the folder. Note that "download content" packages doesnt contains "APP_VER" so his installation doesnt updates the main game. For this reason "APP_VER" is only related with patches and is only needed when there are patches in the foler.

0INS00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0INS00001)
|--- PS3_GAME
     |--- PARAM.SFO <--- ATTRIBUTE (00000200), CATEGORY (DG)
     |--- INSDIR
          |--- PARAM.SFO <--- APP_VER (01.02), CATEGORY (AR)
          |--- DATA000.PKG
          |--- DATA001.PKG

Game discs in folder PS3_EXTRA Icon sizes is the same used in "PStore news" menu ([big squares of 486x405 pixels]). see: [Content_Information_Files|Content Information Files]] Similar as PKGDIR, the file PARAM.SFO from PKGDIR is renamed to DISC.SFO Used in BLJM60372 Biohazard revival

0EXT00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0EXT00001)
|--- PS3_GAME
|    |--- PARAM.SFO <--- CATEGORY (DG)
|--- PS3_EXTRA
     |--- PARAM.SFO <--- ATTRIBUTE (0100000), CATEGORY (XR), TITLE (Extras)
     |--- D001
     |    |--- PARAM.SFX <--- CATEGORY (IP), TITLE (Package 1)
     |    |--- DATA000.PKG
     |--- D002
     |    |--- PARAM.SFX <--- CATEGORY (IP), TITLE (Package 2)
     |    |--- DATA000.PKG
     |--- D003
     |    |--- PARAM.SFX <--- CATEGORY (VI), TITLE (Video 1)
     |    |--- DATA000.MP4
     |--- D004
     |    |--- PARAM.SFX <--- CATEGORY (VI), TITLE (Video 2)
     |    |--- DATA000.MP4
     |--- D005
     |    |--- PARAM.SFX <--- CATEGORY (TI), TITLE (Theme 1)
     |    |--- DATA000.P3T
     |--- D006
          |--- PARAM.SFX <--- CATEGORY (TI), TITLE (Theme 2)
          |--- DATA000.P3T

You can download this structures to experiment with them or to look how SFO's SFX's are built ---> [Blu-Ray fake discs by sandungas]

CONTENT_ID

Data_Type: utf-8
Data_Size_Total: 48 bytes
Data_Size_Used: 37 bytes
Used by: HDD Game

Content Identificator for Gamepurchase feature. Used in games that runs in "demo mode" and can be purchased (unlocked) by pressing triangle over his icon in XMB.

The format is: XXYYYY-NP_COMMUNICATION_ID-LICENSE_ID where:

  • XX is ?
  • YYYY is ?
  • - is a separator character (mandatory)
  • NP_COMMUNICATION_ID is explained in NP_COMMUNICATION_ID
  • - is a separator character (mandatory)
  • LICENSE_ID is ?

This games has a minimal folder structure with two PARAM.SFO like this:

NPxx12345
|--- PARAM.SFO <--- ATTRIBUTE (00000800), CATEGORY (HG), TITLE (GAME Trial) ... & others
|--- USRDIR
|    |--- EBOOT.BIN
|--- C00
     |--- PARAM.SFO <--- ATTRIBUTE (00000800), CATEGORY (HG), TITLE (GAME Full) ... & others

DETAIL

Data_Type: utf-8
Data_Size_Total: 1024 bytes
Data_Size_Used: variable
Used by: Save Data

Text lines displayed under SUBTITLE text. Used only for SaveData to store long texts from the game like the name of the level you was playing, the equipment of your character (in a RPG), or the car you was driving (in a race simulator), etc...

When the text is too long to fit in the screen it scrolls vertically from bottom to top, if the Data_Used_Size is not correct this scroll doesn't flow properly.

To displace the text to the next row is used the special byte "0A", this way it can be done long messages with several horizontall lines.

LANG

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: Trophy

Language used when the "trophy config file" TROPCONF.SFM was installed. Valid values for languages are the same ones used for Regional codes

LICENSE

Data_Type: utf-8
Data_Size_Total: 512 bytes
Data_Size_Used: variable
Used by: HDD Game

License text of the content, hidden by the system in actual firmwares

NP_COMMUNICATION_ID

Data_Type: utf-8
Data_Size_Total: 16 bytes
Data_Size_Used: 13 bytes
Used by: HDD Game

Name of the folder containing the trophy installer (TROPHY.TRP)

The format is NPWRxxyyy_zz (e.g. NPWR00001_00)

NPCOMMID

Data_Type: utf-8
Data_Size_Total: 16 bytes
Data_Size_Used: 12 bytes
Used by: Trophy

Same than NP_COMMUNICATION_ID but with a Data_Size_Used of 12 bytes

PADDING

Data_Type: utf-8 Special Mode
Data_Size_Total: 8 bytes
Data_Size_Used: 0 bytes
Used by: Trophy

Unknown

PARAMS

Data_Type: utf-8 Special Mode
Data_Size_Total: 1024 bytes
Data_Size_Used: 1024 bytes
Used by: Save Data

This parameter is intended to store user (and console?) specific data. Is the only one known parameter that contains an internal structure with several strings, and his size is huge for being an integer.

Offset length Example Description Notes
0x0000 12 (0xC) 030401020300000000000000 Unknown
0x000C 4 (0x4) 08000000 Unknown
0x0010 4 (0x4) 7D000000 Unknown
0x0014 4 (0x4) 03000000 Unknown
0x0018 4 (0x4) 01000000 userid User identification number from XRegistry.sys
0x001C 16 (0x10) FEDCBA9876543210FEDCBA9876543210 psid More info: PSID
0x002C 4 (0x4) 01000000 userid User identification number from XRegistry.sys
0x0030 16 (0x10) 0123456789ABCDEF0123456789ABCDEF accountid PSN account identification from XRegistry.sys
0x0040 960 (0x3C0) 00000000........ Unknown Big chunk of zeroes, probably used or reserved for other formats
  • Notes:
    • The string used in the paramater ACCOUNT_ID is the same than accountid inside PARAMS. When PARAMS & ACCOUNT_ID are present in the SFO the string can be found twice in the file.

PARAMS2

Data_Type: utf-8 Special Mode
Data_Size_Total: 12 bytes
Data_Size_Used: 12 bytes
Used by: Save Data

Unknown, usually filled with zeroes

PARENTAL_LEVEL_x

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game

Used to restrict the content to a specific License Area

The "x" at the end of the name PARENTAL_LEVEL_x defines the License Area wich is one of this list.

Parameter License Area Regions
PARENTAL_LEVEL_A SCEA US, Canada (North America), Mexico, Central America, South America
PARENTAL_LEVEL_C SCH China
PARENTAL_LEVEL_E SCEE Europe/Middle East/Africa, U.K./Ireland, Australia/New Zealand (Oceania), Russia, Ukraine, India, Central Asia
PARENTAL_LEVEL_H SCEH Singapore/Malaysia (Southeast Asia), Taiwan, Hong Kong
PARENTAL_LEVEL_J SCEJ Japan
PARENTAL_LEVEL_K SCEK Korea (South Korea)
  • All this parameters are used in group, and preceded by a "standard" PARENTAL_LEVEL with the value 00000000 (disabled)
  • Valid values are the same than PARENTAL_LEVEL (an scale from 1 to 11) with the only difference that the value for disable is FFFFFFFF
---example string---
00000000 05000000 0A000000 01000000 FFFFFFFF 06000000 0B000000
---example explain---
PARENTAL_LEVEL = 00000000 (disabled)
PARENTAL_LEVEL_A = 05000000 (level 5)
PARENTAL_LEVEL_C = 0A000000 (level 10)
PARENTAL_LEVEL_E = 01000000 (level 1)
PARENTAL_LEVEL_H = FFFFFFFF (disabled)
PARENTAL_LEVEL_J = 06000000 (level 6)
PARENTAL_LEVEL_K = 0B000000 (level 11)

PARENTAL_LEVEL

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game, Minis Game, Game Data, Save Data, Minis Save Data

It is a scale to rate the content for the different users based in user profile settings and international rating systems as: [| PEGI], [| ESRB], [| CERO], etc...

The higher the level the higher the restriction e.g:

  • A game rated 11 will be displayed with an "locked" icon in XMB and requires the "unlock PIN" for a user with level 1.
  • A game rated 1 can be played by all levels, from 1 to 11.
  • Level 0 is disabled.
Little Endian Big Endian Decimal Rating
00 00 00 00 00 00 00 00 0 Disabled
01 00 00 00 00 00 00 01 1 Lower restriction
02 00 00 00 00 00 00 02 2
03 00 00 00 00 00 00 03 3
04 00 00 00 00 00 00 04 4
05 00 00 00 00 00 00 05 5
06 00 00 00 00 00 00 06 6
07 00 00 00 00 00 00 07 7
08 00 00 00 00 00 00 08 8
09 00 00 00 00 00 00 09 9
0A 00 00 00 00 00 00 0A 10
0B 00 00 00 00 00 00 0B 11 Higher restriction

PARENTALLEVEL

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: PS1 Game, Trophy

Same than PARENTAL_LEVEL

PS3_SYSTEM_VER

Data_Type: utf-8
Data_Size_Total: 8 bytes
Data_Size_Used: 8 bytes
Used by: HDD Game, PS1 Game, Minis Game, Game Data

Minimum PS3 System Software required for the content to be bootable.

The format is XX.YYYY where "XX" and "YYYY" are numbers, and the point "." is included in the string, e.g: 03.4100.

REGION_DENY

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game

Regional restrictions for the content.

There are 12 valid Regions, each region has a position assigned in the binary string, this positions are marked with an "1" when the region is prohibited, and a "0". when is allowed.

Little Endian Big Endian Flags (Binary) Region Nº Allowed Region Notes
FE FF FF FF FF FF FF FE 11111111 11111111 11111111 11111110 0 Japan
FD FF FF FF FF FF FF FD 11111111 11111111 11111111 11111101 1 US, Canada (North America) Used in Netflix
FB FF FF FF FF FF FF FB 11111111 11111111 11111111 11111011 2 Europe / Middle East / Africa
F7 FF FF FF FF FF FF F7 11111111 11111111 11111111 11110111 3 Korea (South Korea)
EF FF FF FF FF FF FF EF 11111111 11111111 11111111 11101111 4 U.K. / Ireland
DF FF FF FF FF FF FF DF 11111111 11111111 11111111 11011111 5 Mexico, Central America, South America
BF FF FF FF FF FF FF BF 11111111 11111111 11111111 10111111 6 Australia / New Zealand (Oceania)
7F FF FF FF FF FF FF 7F 11111111 11111111 11111111 01111111 7 Singapore / Malaysia (Southeast Asia)
FF FE FF FF FF FF FE FF 11111111 11111111 11111110 11111111 8 Taiwan
FF FD FF FF FF FF FD FF 11111111 11111111 11111101 11111111 9 Russia, Ukraine, India, Central Asia
FF FB FF FF FF FF FB FF 11111111 11111111 11111011 11111111 10 China
FF F7 FF FF FF FF F7 FF 11111111 11111111 11110111 11111111 11 Hong Kong
Examples
01 F0 FF FF FF FF F0 01 11111111 11111111 11110000 00000001 Allowed Region From 1 to 11 [| Photo] of a PS3 DEX with Allowed Region=1-11 (note region 0=Japan is not allowed)

RESOLUTION

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game, PS1 Game, Minis Game

TV video modes supported by the content.

When there are several flags activated the PS3 will use the one with higher quality supported by the TV.

Little Endian Big Endian Flags (Binary) Description
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 480 (4:3)
02 00 00 00 00 00 00 02 00000000 00000000 00000000 00000010 576 (4:3)
04 00 00 00 00 00 00 04 00000000 00000000 00000000 00000100 720 (16:9)
08 00 00 00 00 00 00 08 00000000 00000000 00000000 00001000 1080 (16:9)
10 00 00 00 00 00 00 10 00000000 00000000 00000000 00010000 480 (16:9)
20 00 00 00 00 00 00 20 00000000 00000000 00000000 00100000 576 (16:9)
Examples
3F 00 00 00 00 00 00 3F 00000000 00000000 00000000 00111111 All video modes supported

SAVEDATA_DETAIL

Data_Type: utf-8
Data_Size_Total: 1024 bytes
Data_Size_Used: variable
Used by: Minis Save Data

Used to store texts generated by the game, the format s the same than DETAIL

SAVEDATA_DIRECTORY

Data_Type: utf-8
Data_Size_Total: 64 bytes
Data_Size_Used: variable
Used by: Save Data, Minis Save Data

Name of the folder where the game stores his SaveData. The format is: TITLE_ID-xxx, e.g;: BLUS00001-savedata where:

  • TITLE_ID is explained in TITLE_ID.
  • - is a separation character (mandatory).
  • xxx is a variable string with variable lenght, are texts to separate different SaveDatas from the same game.

SAVEDATA_FILE_LIST

Data_Type: 04 00
Data_Size_Total: 3168 bytes
Data_Size_Used: 3168 bytes
Used by: Minis Save Data

Contains a list with an space reserved for 99 entries, each entry 32 bytes long, for a total size of 3168 bytes (99 * 32 = 3168)

Entries refer to other files from the folder, example of one entry:

0x0550  53 45 43 55  52 45 2E 42  49 4E 00 00  00 72 93 A5 | SECURE.BIN...... |
0x0560  8B 8A D4 FA  8E B8 2B 3F  A6 61 BC ED  A6 00 00 00 | .z....+?.a...... |
53 45 43 55  52 45 2E 42  49 4E <------------------------ file name
72 93 A5 8B  8A D4 FA 8E  B8 2B 3F A6  61 BC ED A6 <----- file hash ??? (changes when the file is updated)

SAVEDATA_LIST_PARAM

Data_Type: utf-8
Data_Size_Total: 8 bytes
Data_Size_Used: variable
Used by: Save Data

Unknown, usually filled with zeroes, but with a Data_Used_Size of 1 byte

  • Gran turismo 5 contains the string "GAMEDAT"

SAVEDATA_PARAMS

Data_Type: 04 00
Data_Size_Total: 128 bytes
Data_Size_Used: 128 bytes
Used by: Minis Save Data

Example

Offset length Example Description Notes
0x11B0 16 (0x10) 41000000000000000000000000000000 Unknown allways the same value found ("A" in utf-8)
0x11C0 16 (0x10) FEDCBA9876543210FEDCBA9876543210 Unknown changes when the savedata is updated
0x11D0 16 (0x10) 0123456789ABCDEF0123456789ABCDEF Unknown changes when the savedata is updated
0x11E0 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x11F0 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x1200 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x1210 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x1220 16 (0x10) ABCDEF0123456789ABCDEF0123456789 Unknown changes when the savedata is updated

SAVEDATA_TITLE

Data_Type: utf-8
Data_Size_Total: 128 bytes
Data_Size_Used: variable
Used by: Minis Save Data

Subtitle of the Save, the format is the same than SUBTITLE

SOUND_FORMAT

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: HDD Game, PS1 Game, Minis Game

Sound modes supported by the content.

Little Endian Big Endian Flags (Binary) Description Flag Nº Requires Flag Nº
01 00 00 00 00 00 00 01 00000000 00000000 00000000 00000001 [LPCM] 2.0 01
02 00 00 00 00 00 00 02 00000000 00000000 00000000 00000010 02
04 00 00 00 00 00 00 04 00000000 00000000 00000000 00000100 [LPCM] 5.1 03
10 00 00 00 00 00 00 10 00000000 00000000 00000000 00010000 [LPCM] 7.1 05
00 01 00 00 00 00 01 00 00000000 00000000 00000001 00000000 [Dolby Digital] 5.1 09 02
00 02 00 00 00 00 02 00 00000000 00000000 00000010 00000000 [Digital Theater Systems (DTS)] 5.1 10 02
Examples
17 03 00 00 00 00 03 17 00000000 00000000 00000011 00010111 All sound modes supported

SOURCE

Data_Type: uint32_t
Data_Size_Total: 4 bytes
Data_Size_Used: 4 bytes
Used by: Trophy

Unknown, usually filled with zeroes

SUB_TITLE

Data_Type: utf-8
Data_Size_Total: 128 bytes
Data_Size_Used: variable
Used by: Save Data

The line of text displayed under TITLE text, used only in SaveData to store short texts from the game like your player name, your play time, photo used or your rank in the game

When the text is too long to fit in the screen it scrolls horizontally from right to left, if the Data_Used_Size is not correct this scroll doesn't flow properly. The same behaviour happens with TITLE, TITLE_xx, TITLEID0xx and TITLE_ID

TARGET_APP_VER

Data_Type: utf-8
Data_Size_Total: 8 bytes
Data_Size_Used: 6 bytes
Used by: Game Data

Target application version for incremental patches. Patches containing TARGET_APP_VER can be installed over the game with the same APP_VER.

The format is XX.YY where "XX" and "YY" are numbers, and the point "." is included in the string, e.g: 01.00

TITLE

Data_Type: utf-8
Data_Size_Total: 128 bytes
Data_Size_Used: variable
Used by: All but Trophy

Default "title of the game" for all languages. The text is displayed right to the ICON0.PNG.

TITLE_ID

Data_Type: utf-8
Data_Size_Total: 16 bytes
Data_Size_Used: 10
Used by: HDD Game, PS1 Game, Minis Game, Game Data

Identifier of the content, in the format WXYZ12345. Must be the same ID inside the Makefile when compiling the .SELF, or/and when creating the .PKG

  • Discs:
    • W is the media: (B=Blu-ray, S=CD/DVD)
    • X is the license: (C=Official, L=Licensed)
    • Y is the region: (A=Asia, E=Europe, J=Japan, U=USA)
    • Z is the kind of content: (D=Demo, M=Malayan Release, S=Retail release)
    • 12345 is the game ID in chronological order
  • HDD games or apps:
    • WX is the Network Environment: (NP=Retail)
    • Y is the region: (E=Europe, I=International?, H=Hong Kong, J=Japan, U=USA)
    • Z is the ?: (A=?, B=?, F=?, G=?, I=?, J=?, K=?, L=?, O=?, W=?, Z=?)
    • 12345
  • Other TITLE_ID's
    • TEST12345 (in savedata). When mounting a disc in a backup manager using the option "direct boot", the mounted disc use the TITLE_ID from backup manager (TITLE_ID from backup manager has not been unloaded properly and the disc adopts it). The savedata of this game will use TEST12345. When several different games are mounted and "direct launched", the savedata will be corrupted/invalid (because the overwriting of PARAM.SFO). TEST12345 seems to a common TITLE_ID used in all backup managers, the name probably is derived from official tools or internal firmware functions (Described as tips with ps3.gen.exe:"setting the TITLE_ID to TEST-XXXXX or disc version to "00.00" enable the program to build the disc image).
    • MRTC00001 STAR OCEAN THE LAST HOPE (the first international blu-ray release)

TITLE_xx

Data_Type: utf-8
Data_Size_Total: 128 bytes
Data_Size_Used: variable
Used by: HDD Game

Same than TITLE but for localized languages.

An .SFO can contain several TITLE_xx where xx is a number for a regional code. See: Content Information Files.

The "default" TITLE is always present when other "localized" TITLE_xx are used.

TITLEID0xx

Data_Type: utf-8
Data_Size_Total: 16 bytes
Data_Size_Used: 9
Used by: Trophy

SFO's for trophies contains a full list of 16 TITLEID0xx parameters for all languages where xx is a number for a regional code. See: Content Information Files.

All them can contain data, or only the default TITLEID000. The ones without data are marked with a Data_Used_Size = 0 bytes

The text contained inside default TITLEID000 is the same than TITLE_ID

VERSION

Data_Type: utf-8
Data_Size_Total: 8 bytes
Data_Size_Used: 6 bytes (or 3 bytes when used in trophy)
Used by: HDD Game, PS1 Game, Minis Game, Game Data, Trophy

Disc revision, or Package revision. The number increases when the content is re-released or re-packaged for whatever reason that doesn't affect the main executable (e.g. when a disc game reaches platinum sales, or "game of the year edition" including extra contents).

When the main executable is updated, the APP_VER increases (this can be done with patches)... but the VERSION of the patch (or the re-released disc) returns to 01.00.

Additionally this gives the possibility to release different versions of the same patch (used when the original patch contains a bug, needs to be replaced, and is not cumulative)

The format is XX.YY where "XX" and "YY" are numbers, and the point "." is included in the string, e.g: 01.00.

  • When used in a SFO for a trophy it has a Data_Size_Used of 3 bytes, with the format: X.Y e.g: 1.0

Tools, manuals and external links

Sorry if im missing some link, several things of this page was copy-pasted months ago by googling in random forums.

  • Tools

SFO_tools_-_linux-64bit-compiles.rar (23.61 KB)

https://github.com/an0nym0u5/PSL1GHT/commit/75013299710d2bde224e2052284461a665a071bf

read_sfo.tar.bz2 (6.33 KB)

PS3SFOEdit.zip (47.59 KB)

SFO reader

  • Sources

http://www.ps3hax.net/showthread.php?t=28704

http://ps3dev.wikispaces.com/PARAM.SFO

  • Examples

A little collection of SFO's ordered by categories http://www.sendspace.com/file/oy270g

CATEGORY "2P"(PSN Converted PS2 game/saves) SFO examples http://dl.dropbox.com/u/60710927/XMBMPLUS/DEVELOPMENT_SOURCES/PS2_GAME_SFO/PS2_GAME_SFO.rar. There are three files, one SFO file taken from the PS2 Game directory and two SFO files taken from two different saves generated by that game.