Editing PARAM.SFO
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
[[Category:Software]] | |||
'''SFO''' ('''S'''ystem '''F'''ile '''O'''bject) are used in folders which content needs to be displayed in the [[XMB]]. | '''SFO''' ('''S'''ystem '''F'''ile '''O'''bject) are used in folders which 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 [[Game Saves]] or [[Trophy files]] there is a [[PARAM.PFD]] for security reasons, other type of content like games or apps needs an structure of subfolders with names as 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]] or [[Trophy files]] there is a [[PARAM.PFD]] for security reasons, other type of content like games or apps needs an structure of subfolders with names as 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''' ('''S'''ystem '''F'''ile in '''X'''ML 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. | 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 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]]. | ||
---- | |||
==Internal Structure== | ==Internal Structure== | ||
=== | ===Header=== | ||
{{Boxcode|content=<syntaxhighlight lang="c"> | |||
{{Boxcode| | struct Header | ||
struct | |||
{ | { | ||
uint32_t | uint32_t File_Signature; /* Always PSF */ | ||
uint32_t | uint32_t File_Version; /* Usually 1.1 */ | ||
uint32_t | uint32_t Name_Table_Start; /* Start position of the Name_Table */ | ||
uint32_t | uint32_t Data_Table_Start; /* Start position of the Data_Table */ | ||
uint32_t | uint32_t Entries_Number; /* Number of entries */ | ||
}; | }; | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
=== | ===Definition_Table=== | ||
This structure repeats one time for every '''Entries_Number''' defined in the header. All values are in Little Endian. | |||
{{Boxcode|content=<syntaxhighlight lang="c"> | |||
struct Definition_Table | |||
{{Boxcode| | |||
struct | |||
{ | { | ||
uint16_t | uint16_t Name_Table_Offset; /* Offset of the Name of the entry, from start of Name_Table */ | ||
uint16_t | uint16_t Data_Type; /* Type of data of the entry in the Data_Table */ | ||
uint32_t | uint32_t Data_Size_Used; /* Used Bytes by the entry in the Data_Table */ | ||
uint32_t | uint32_t Data_Size_Total; /* Total bytes reserved for the entry in the Data_Table */ | ||
uint32_t | uint32_t Data_Table_Offset; /* Offset of the Data of the entry, from start of Data_Table */ | ||
}; | }; | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
{| class="wikitable" | *'''Data_Type''' | ||
Partially known based in some examples found in different content | |||
{| class="wikitable" | |||
|- | |- | ||
! | ! Data_Type !! Description !! Used in | ||
|- | |- | ||
| 04 00 || | | 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 || | | 04 02 || style="background-color:#DDDD00;" | utf-8 || | ||
|- | |- | ||
| 04 04 || | | 04 04 || style="background-color:#DD00DD;" | integer || | ||
|- | |- | ||
|} | |} | ||
=== | ===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|Parameters Table]] for a fast reference. | |||
The end | 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== | ==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'''. | |||
0x00 00 50 53 46 01 01 00 00 24 00 00 00 30 00 00 00 | .PSF....$...0... | | |||
0x10 01 00 00 00 00 00 04 02 0A 00 00 00 0F 00 00 00 | ................ | | |||
0x20 00 00 00 00 54 49 54 4C 45 5F 49 44 00 00 00 00 | ....TITLE_ID.... | | |||
0x30 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. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Offset !! Size !! Content !! Conversion !! Value !! Notes | ||
|- | |- | ||
| || || colspan="1" style="text-align:center; background-color:#DDDDDD;" | Header | |||
| | |||
|- | |- | ||
| 0x04 || | | 0x00 || 0x04 || 00 50 53 46 || To utf-8 || PSF || Signature | ||
|- | |- | ||
| | | 0x04 || 0x04 || 01 01 00 00 || Big endian, decimal || 1.1 || Version (the point is added by the system) | ||
|- | |- | ||
| | | 0x08 || 0x04 || 24 00 00 00 || Big endian || 0x0024 || Start of '''Name_Table''' | ||
|- | |- | ||
| | | 0x0C || 0x04 || 30 00 00 00 || Big endian || 0x0030 || Start of '''Data_Table''' | ||
|- | |- | ||
| 0x10 || 0x04 || 01 00 00 00 || Big endian, decimal || 1 || Number of entries in the tables | |||
| | |||
|- | |- | ||
| | | || ||colspan="1" style="text-align:center; background-color:#DDDDDD;" | Definition_Table | ||
|- | |- | ||
| | | 0x14 || 0x02 || 0000 || Big endian || 0 || (Start of '''Name''') - (Start of '''Name_Table''') = 0x0024-0x0024 = 0 | ||
|- | |- | ||
| | | 0x16 || 0x02 || 0402 || Unknown || || '''Data_Type''' | ||
|- | |- | ||
| | | 0x18 || 0x04 || 0A000000 || Big endian, decimal || 10 || '''Data_Size_Used''' (ABCD12345 are 9 bytes + 1 blank = 10) | ||
|- | |- | ||
| 0x1C || 0x04 || 0F000000 || Big endian, decimal || 16 || '''Data_Size_Total''' (TITLE_ID Data_Size_Total is always 16 bytes) | |||
| | |||
|- | |- | ||
| 0x20 || 0x04 || 00000000 || Big endian || 0 || (Start of '''Data''') - (Start of '''Data_Table''') = 0x0030-0x0030 = 0 | |||
| | |- | ||
| || || colspan="1" style="text-align:center; background-color:#DDDDDD;" | Name_Table | |||
|- | |||
| 0x24 || 0x09 || 5449544C455F494400 || To utf-8 || TITLE_ID || '''Name''', included 1 blank byte at the end | |||
|- | |||
| 0x2D || 0x03 || 000000 || || || Padding (9 from the previous entry + 3 padding = 12 bytes) | |||
|- | |||
| || || colspan="1" style="text-align:center; background-color:#DDDDDD;" | Data_Table | |||
|- | |||
| 0x30 || 0x0F || 41424344313233343500000000000000 || To utf-8 || ABCD12345 || '''Data'''. ('''Data_Size_Total'''=16 bytes. '''Data_Size_Used'''=10 bytes) | |||
|} | |} | ||
===SFX=== | ===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). | |||
{{Boxcode| | The entries and values are self explanatory, can be created using a SFO as the source with the program [[Dev_Tools#SFO2SFX|SFO2SFX]]. | ||
{{Boxcode|content=<syntaxhighlight lang="xml"> | |||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
<paramsfo add_hidden="false"> | <paramsfo add_hidden="false"> | ||
<param key="TITLE_ID" fmt="utf8" max_len="16"> | <param key="TITLE_ID" fmt="utf8" max_len="16">ABCD12345</param> | ||
</paramsfo> | </paramsfo> | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
==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|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 <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> and '''BV''','''WT''') uses the same parameters than <abbr title="HDD Game">'''HG'''</abbr> | |||
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable sortable" style="border:1px solid #999; border-collapse: collapse;" | |||
|- bgcolor="#cccccc" | |||
! 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="PSP Remasters">PE</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> !! style="color:#CCCC00;" | <abbr title="Trophy Data">☼</abbr> !! <abbr title="PSP Game">PP</abbr> !! <abbr title="PSvita Game">VT?</abbr> | |||
|- | |- | ||
| | | || || || || colspan="6" 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''' | ||
| | |||
|- | |- | ||
| [[# | | [[#ACCOUNT_ID|ACCOUNT_ID]] || style="background-color:#00DDDD;" | utf-8 Special Mode || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{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}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#ANALOG_MODE|ANALOG_MODE]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || ??? | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#APP_VER|APP_VER]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 6 (0x6) || {{Opt}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || ?? | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#ATTRIBUTE|ATTRIBUTE]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{Yes}} || {{Yes}} || {{Opt}} || {{Yes}} || {{Yes}} || {{Opt}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || ? | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#BOOTABLE|BOOTABLE]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#CATEGORY|CATEGORY]] || style="background-color:#DDDD00;" | utf-8 || 4 (0x4) || 3 (0x3) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#CONTENT_ID|CONTENT_ID]] || style="background-color:#DDDD00;" | utf-8 || 48 (0x30) || 37 (0x25) || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| | |||
|- | |- | ||
| [[# | | [[#DETAIL|DETAIL]] || style="background-color:#DDDD00;" | utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#ITEM_PRIORITY|ITEM_PRIORITY]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{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}} || {{No}} || {{No}} || {{Yes}} || {{No}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#LICENSE|LICENSE]] || style="background-color:#DDDD00;" | utf-8 || 512 (0x200) || variable || {{Yes}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#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}} || {{No}} || {{No}} || {{No}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#NPCOMMID|NPCOMMID]] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 12 (0xC) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#PADDING|PADDING]] || style="background-color:#00DDDD;" | utf-8 Special Mode || 8 (0x8) || 0 (0x0) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#PARAMS|PARAMS]] || style="background-color:#00DDDD;" | utf-8 Special Mode || 1024 (0x400) || 1024 (0x400) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#PARAMS2|PARAMS2]] || style="background-color:#00DDDD;" | utf-8 Special Mode || 12 (0xC) || 12 (0xC) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{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}} || {{No}} || {{No}} || {{No}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#PARENTAL_LEVEL|PARENTAL_LEVEL]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#PARENTALLEVEL|PARENTALLEVEL]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || | ||
| | |||
|- | |- | ||
| [[#PS3_SYSTEM_VER|PS3_SYSTEM_VER]] || | | [[#PS3_SYSTEM_VER|PS3_SYSTEM_VER]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 8 (0x8) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Opt}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || | ||
| {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{ | |||
|- | |- | ||
| [[#REGION_DENY|REGION_DENY]] || | | [[#REGION_DENY|REGION_DENY]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| {{Opt}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | |||
|- | |- | ||
| [[#RESOLUTION|RESOLUTION]] || | | [[#RESOLUTION|RESOLUTION]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | |||
|- | |- | ||
| [[#SAVEDATA_DETAIL|SAVEDATA_DETAIL]] | | [[#SAVEDATA_DETAIL|SAVEDATA_DETAIL]] || style="background-color:#DDDD00;" | utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SAVEDATA_DIRECTORY|SAVEDATA_DIRECTORY]] | | [[#SAVEDATA_DIRECTORY|SAVEDATA_DIRECTORY]] || style="background-color:#DDDD00;" | utf-8 || 64 (0x40) || variable || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SAVEDATA_FILE_LIST|SAVEDATA_FILE_LIST]] || | | [[#SAVEDATA_FILE_LIST|SAVEDATA_FILE_LIST]] || style="background-color:#00DDDD;" | utf-8 Special Mode || 3168 (0xC60) || 3168 (0xC60) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SAVEDATA_LIST_PARAM|SAVEDATA_LIST_PARAM]] | | [[#SAVEDATA_LIST_PARAM|SAVEDATA_LIST_PARAM]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || variable || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SAVEDATA_PARAMS|SAVEDATA_PARAMS]] || | | [[#SAVEDATA_PARAMS|SAVEDATA_PARAMS]] || style="background-color:#00DDDD;" | utf-8 Special Mode || 128 (0x80) || 128 (0x80) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SAVEDATA_TITLE|SAVEDATA_TITLE]] | | [[#SAVEDATA_TITLE|SAVEDATA_TITLE]] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SOUND_FORMAT|SOUND_FORMAT]] || | | [[#SOUND_FORMAT|SOUND_FORMAT]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | |||
|- | |- | ||
| [[#SOURCE|SOURCE]] || | | [[#SOURCE|SOURCE]] || style="background-color:#DD00DD;" | integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#SUB_TITLE|SUB_TITLE]] | | [[#SUB_TITLE|SUB_TITLE]] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#TARGET_APP_VER|TARGET_APP_VER]] | | [[#TARGET_APP_VER|TARGET_APP_VER]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 6 (0x6) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Opt}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#TITLE|TITLE]] | | [[#TITLE|TITLE]] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || | ||
| {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{ | |||
|- | |- | ||
| [[#TITLE_ID|TITLE_ID]] | | [[#TITLE_ID|TITLE_ID]] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 10 (0xA) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || | ||
| {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{ | |||
|- | |- | ||
| [[#TITLE_xx|TITLE_'''xx''']] | | [[#TITLE_xx|TITLE_'''xx''']] || style="background-color:#DDDD00;" | utf-8 || 128 (0x80) || variable || {{Opt}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || | ||
| {{Opt}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} | |||
|- | |- | ||
| [[#TITLEID0xx|TITLEID0'''xx''']] | | [[#TITLEID0xx|TITLEID0'''xx''']] || style="background-color:#DDDD00;" | utf-8 || 16 (0x10) || 9 (0x9) || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || | ||
| {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{ | |||
|- | |- | ||
| [[#VERSION|VERSION]] | | [[#VERSION|VERSION]] || style="background-color:#DDDD00;" | utf-8 || 8 (0x8) || 6 (0x6) || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || | ||
| {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{ | |||
|- | |- | ||
|} | |} | ||
==Parameters Descriptions== | ==Parameters Descriptions== | ||
===ACCOUNT_ID=== | ===ACCOUNT_ID=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8 Special Mode<br />'''Data_Size_Total''': 0x10 (16 bytes)<br />'''Data_Size_Used''': 0x10 (16 bytes)}} | ||
{{Boxtip1|content='''Used by''': Save Data}} | {{Boxtip1|content='''Used by''': Save Data}} | ||
PSN User Account stored as ''' | 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=== | |||
{{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x10 (16 bytes)<br />'''Data_Size_Used''': 0x10 (16 bytes)}} | |||
{{Boxinfo3|content=''' | |||
{{Boxtip1|content='''Used by''': Trophy}} | {{Boxtip1|content='''Used by''': Trophy}} | ||
Same string than ACCOUNT_ID but stored as ''' | 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=== | ===ANALOG_MODE=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': PS1 Game}} | {{Boxtip1|content='''Used by''': PS1 Game}} | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 300: | Line 255: | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | ! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || 00000000 00000000 00000000 00000001 || '''Analog Mode Enabled''' | ||
|- | |- | ||
|} | |} | ||
Line 306: | Line 261: | ||
*'''Analog Mode Enabled''' | *'''Analog Mode Enabled''' | ||
Enables compatibility with the analog sticks of the Dualshock Controller. | Enables compatibility with the analog sticks of the Dualshock Controller. | ||
===APP_VER=== | ===APP_VER=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x8 (8 bytes)<br />'''Data_Size_Used''': 0x6 (6 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game, Minis Game, PSP Remasters Game, Game Data}} | {{Boxtip1|content='''Used by''': HDD Game, Minis Game, PSP Remasters Game, Game Data}} | ||
Line 334: | Line 275: | ||
===ATTRIBUTE=== | ===ATTRIBUTE=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game, PCEngine game, NEOGEO game, Game Data, Save Data}} | {{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters 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. | 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 " | 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". | ||
{| style=" | ====ATTRIBUTE In Bootable content==== | ||
{| class="wikitable" | |||
|- | |||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) !! Firmware <br /> (date) || Flag Nº <br /> (flag required) | |||
|- bgcolor="#DDDDDD" | |||
| style="background-color:black;" | || colspan="6" style="text-align:center;" | Firmware features | |||
|- | |||
| {{stylematrix}} '''01''' 00 00 00 || 00 00 00 '''01''' || 1 || 00000000 00000000 00000000 0000000'''1''' || '''PSP Remote Play (v1)''' || 1.10 (Nov 2006) || bgcolor="#DD6666" | 01 | |||
|- | |||
| {{stylematrix}} '''02''' 00 00 00 || 00 00 00 '''02''' || 2 || 00000000 00000000 00000000 000000'''1'''0 || '''PSP Export''' || 1.70 (Apr 2007) || 02 | |||
|- | |||
| {{stylematrix}} '''04''' 00 00 00 || 00 00 00 '''04''' || 4 || 00000000 00000000 00000000 00000'''1'''00 || '''PSP Remote Play (v2)''' || 1.80 (May 2007) || bgcolor="#DD6666" | 03 (01) | |||
|- | |- | ||
| | | {{stylematrix}} '''08''' 00 00 00 || 00 00 00 '''08''' || 8 || 00000000 00000000 00000000 0000'''1'''000 || '''XMB In-Game (v2) Forced Enabled''' || 2.40 (Jul 2008) || 04 | ||
{| | |- | ||
| | | {{stylematrix}} '''10''' 00 00 00 || 00 00 00 '''10''' || 16 || 00000000 00000000 00000000 000'''1'''0000 || '''XMB In-Game (v2) Disabled''' || 2.40 (Jul 2008) || 05 | ||
|- | |||
| {{stylematrix}} '''20''' 00 00 00 || 00 00 00 '''20''' || 32 || 00000000 00000000 00000000 00'''1'''00000 || '''XMB In-Game (v2) Background Music''' || 2.40 (Jul 2008) || 06 | |||
|- | |||
| {{stylematrix}} '''40''' 00 00 00 || 00 00 00 '''40''' || 64 || 00000000 00000000 00000000 0'''1'''000000 || '''XMB In-Game Chat Voice Disabled'''? |||| 07 | |||
|- | |||
| {{stylematrix}} '''80''' 00 00 00 || 00 00 00 '''80''' || 128 || 00000000 00000000 00000000 '''1'''0000000 || '''PSvita Remote Play only''' || 4.00 (Nov 2011) || 08 | |||
|- bgcolor="#DDDDDD" | |||
| style="background-color:black;" | || colspan="6" style="text-align:center;" | Firmware Screens ??? | |||
|- | |- | ||
| {{stylematrix}} 00 '''01''' 00 00 || 00 00 '''01''' 00 || 256 || 00000000 00000000 0000000'''1''' 00000000 || '''Move Controller''' (warning screen) || 3.40 (Jun 2010) || bgcolor="#66DD66" | 09 | |||
|- | |- | ||
| | | {{stylematrix}} 00 '''02''' 00 00 || 00 00 '''02''' 00 || 512 || 00000000 00000000 000000'''1'''0 00000000 || '''Navigation Controller''' (warning screen) || 3.40 (Jun 2010) || bgcolor="#66DD66" | 10 (09) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 '''04''' 00 00 || 00 00 '''04''' 00 || 1024 || 00000000 00000000 00000'''1'''00 00000000 || '''Eye Cam''' (warning screen) || 3.40 (Jun 2010) || bgcolor="#66DD66" | 11 (09) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 '''08''' 00 00 || 00 00 '''08''' 00 || 2048 || 00000000 00000000 0000'''1'''000 00000000 || '''Calibration''' (notification screen) || 3.40 (Jun 2010) || 12 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 '''10''' 00 00 || 00 00 '''10''' 00 || 4096 || 00000000 00000000 000'''1'''0000 00000000 || '''3D''' (warning screen) || 3.40 (Jun 2010) || 13 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 '''20''' 00 00 || 00 00 '''20''' 00 || 8192 || 00000000 00000000 00'''1'''00000 00000000 || Not used yet ? |||| 14 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 '''40''' 00 00 || 00 00 '''40''' 00 || 16384 || 00000000 00000000 0'''1'''000000 00000000 || Not used yet ? |||| 15 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 '''80''' 00 00 || 00 00 '''80''' 00 || 32768 || 00000000 00000000 '''1'''0000000 00000000 || Not used yet ? |||| 16 | ||
|- bgcolor="#DDDDDD" | |||
| style="background-color:black;" | || colspan="6" style="text-align:center;" | Game Features ??? | |||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''01''' 00 || 00 '''01''' 00 00 || 65536 || 00000000 0000000'''1''' 00000000 00000000 || '''Install Disc''' |||| 17 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''02''' 00 || 00 '''02''' 00 00 || 131072 || 00000000 000000'''1'''0 00000000 00000000 || '''Install Packages''' |||| 18 | ||
|- | |- | ||
| | | {{stylematrix}} 00 00 '''04''' 00 || 00 '''04''' 00 00 || 262144 || 00000000 00000'''1'''00 00000000 00000000 || Unknown ! |||| 19 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''08''' 00 || 00 '''08''' 00 00 || 524288 || 00000000 0000'''1'''000 00000000 00000000 || '''Game Purchase Enabled''' |||| 20 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''10''' 00 || 00 '''10''' 00 00 || 1048576 || 00000000 000'''1'''0000 00000000 00000000 || Unknown ! |||| 21 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''20''' 00 || 00 '''20''' 00 00 || 2097152 || 00000000 00'''1'''00000 00000000 00000000 || '''PCEngine''' (X0) || works in 3.41 || bgcolor="#6666DD" | 22 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''40''' 00 || 00 '''40''' 00 00 || 4194304 || 00000000 0'''1'''000000 00000000 00000000 || '''License Text Hidden''' |||| 23 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''80''' 00 || 00 '''80''' 00 00 || 8388608 || 00000000 '''1'''0000000 00000000 00000000 || '''Move Controller Compatible''' || 3.40 (Jun 2010) || 24 | ||
|- bgcolor="#DDDDDD" | |||
| style="background-color:black;" | || colspan="6" style="text-align:center;" | ??? | |||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''01''' || '''01''' 00 00 00 || 16777216 || 0000000'''1''' 00000000 00000000 00000000 || Reserved (X1) || || bgcolor="#6666DD" | 25 (22) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''02''' || '''02''' 00 00 00 || 33554432 || 000000'''1'''0 00000000 00000000 00000000 || Reserved (X2) || || bgcolor="#6666DD" | 26 (22) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''03''' || '''03''' 00 00 00 || 50331648 || 000000'''11''' 00000000 00000000 00000000 || Reserved (X3) || || bgcolor="#6666DD" | 25+26 (22) | ||
|- | |- | ||
| | | {{stylematrix}} 00 00 00 '''04''' || '''04''' 00 00 00 || 67108864 || 00000'''1'''00 00000000 00000000 00000000 || '''NeoGeo''' (X4) || works in 3.41 || bgcolor="#6666DD" | 27 (22) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''05''' || '''05''' 00 00 00 || 83886080 || 00000'''1'''0'''1''' 00000000 00000000 00000000 || Reserved (X5) || || bgcolor="#6666DD" | 25+27 (22) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''06''' || '''06''' 00 00 00 || 100663296 || 00000'''11'''0 00000000 00000000 00000000 || Reserved (X6) || || bgcolor="#6666DD" | 26+27 (22) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''07''' || '''07''' 00 00 00 || 117440512 || 00000'''111''' 00000000 00000000 00000000 || Reserved (X7) || || bgcolor="#6666DD" | 25+26+27 (22) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''08''' || '''08''' 00 00 00 || 134217728 || 0000'''1'''000 00000000 00000000 00000000 || Not used yet ? || || 28 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''10''' || '''10''' 00 00 00 || 268435456 || 000'''1'''0000 00000000 00000000 00000000 || Not used yet ? || || 29 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''20''' || '''20''' 00 00 00 || 536870912 || 00'''1'''00000 00000000 00000000 00000000 || Not used yet ? || || 30 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''40''' || '''40''' 00 00 00 || 1073741824 || 0'''1'''000000 00000000 00000000 00000000 || Not used yet ? || || 31 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 00 '''80''' || '''80''' 00 00 00 || 2147483648 || '''1'''0000000 00000000 00000000 00000000 || Not used yet ? || || 32 | ||
|} | |||
*'''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|Remote Play]] page and [http://www.youtube.com/watch?v=nOTjB2lPUsw| 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", "Minis Game" and "PSP 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 v2 Forced Enable''' | |||
[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]. | |||
If pressing home button for fews seconds, XMB In-Game V1 will appear in recents games. Somes games such as Fritz chess got even 3 differents XMB In Game: V2 when the game is launched, V1 during autosave feature screen, and a kind of V1.5 after (ICONS barely visible and no background visible) | |||
*'''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. This feature enables a SPU (inside CELL) that runs an specific thread to play the music independently of the other game threads (is a feature of the firmware, not of the game) | |||
*'''PSvita Remote Play only''' 480p (852x480) | |||
Used for first time by "patch v3.52" for "[[torne |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) | |||
*'''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 structure PS3_GAME/PKGDIR in discs by loading another SFO from this subfolder (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]] | |||
*'''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. PARAM.SFO from the subfolder, as C00, with the TITLE "Full" is loaded, and the main PARAM.SFO with the 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|LICENSE]] text. Used by games that has his own license and not the sony one (e.g: PCengine & NeoGeo) | |||
====ATTRIBUTE in Patches==== | |||
When a patch for a game (e.g: a disc game) is installed, the game boots from the "patch installation" folder, XMB loads from this folder his [[Content Information Files]], a new [[PARAM.SFO]], and a new [[EBOOT.BIN]] | |||
After one of this installations PS3 loads both PARAM.SFO's (the "original.sfo" one from disc + the new from the "patch.sfo" folder)... some values are taken from the "original.sfo" (e.g: BOOTABLE, RESOLUTION, SOUND_FORMAT... are not present in patches)... and others are taken from the "patch.sfo" (e.g: APP_VER increases in every patch) | |||
Patches uses a system of "overwrite flag/parameter" that makes the PS3 ignore the "original.sfo" value and use the value from the "patch.sfo"... this can be used in combination with the "standard flags" (one flag indicates the value must be taken from the patch... and the other flag activates the feature) | |||
{| class="wikitable" | |||
|- | |- | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | |||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''01''' 00 || 00 '''01''' 00 00 || 65536 || 00000000 00000001 00000000 00000000 || Overwrite: ???unknown??? | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''02''' 00 || 00 '''02''' 00 00 || 131072 || 00000000 00000010 00000000 00000000 || Overwrite: ???unknown??? | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''04''' 00 || 00 '''04''' 00 00 || 262144 || 00000000 00000100 00000000 00000000 || Overwrite: '''RESOLUTION''', '''SOUND_FORMAT''', '''Remote Play''' | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''08''' 00 || 00 '''08''' 00 00 || 524288 || 00000000 00001000 00000000 00000000 || Overwrite: ???unknown??? | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''10''' 00 || 00 '''10''' 00 00 || 1048576 || 00000000 00010000 00000000 00000000 || Overwrite: ATTRIBUTE flag: '''XMB In-Game''' | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''20''' 00 || 00 '''20''' 00 00 || 2097152 || 00000000 00100000 00000000 00000000 || Overwrite: ATTRIBUTE flag: '''Move Controller warning screen''' | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''40''' 00 || 00 '''40''' 00 00 || 4194304 || 00000000 01000000 00000000 00000000 || Overwrite: ATTRIBUTE flag: '''3D warning screen''' | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 00 '''80''' 00 || 00 '''80''' 00 00 || 8388608 || 00000000 10000000 00000000 00000000 || Overwrite: ATTRIBUTE flag: '''Move Controller Compatible''' | ||
|- | |- | ||
| | |} | ||
*'''Overwrite: ???unknown???''' | |||
TITLE ? | |||
*'''Overwrite: ???unknown???''' | |||
PARENTAL_LEVEL ? | |||
*'''Overwrite RESOLUTION, SOUND_FORMAT, PSP Remote Play''' | |||
For remote play: you need to add one of the flag related to remote play. E.G. 262272 (0x40080) for PS VITA only added. | |||
*'''Overwrite: ???unknown???''' | |||
*'''Overwrite XMB In-Game''' | |||
wich one?, there are 4... all them? | |||
*'''Overwrite Move Controller warning screen''' | |||
*'''Overwrite 3D warning screen''' | |||
*'''Overwrite Move Controller Compatible''' | |||
====ATTRIBUTE in SaveData==== | |||
{| class="wikitable" | |||
|- | |- | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | |||
|- | |- | ||
| {{ | | {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || 00000000 00000000 00000000 00000001 || '''Save Data Copy Protected''' | ||
|- | |- | ||
|} | |} | ||
*'''Save Data 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" | {| class="wikitable" | ||
|- | |- | ||
! | ! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | ||
|- | |||
| {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || 00000000 00000000 00000000 00000001 || '''Subfolder Activated''' | |||
|- | |- | ||
| | |} | ||
*'''Subfolder Activated''' | |||
Used in Discs subfolders (CATEGORY '''TR''', '''VR''', '''DP''', '''XR''') to activate another subfolder. | |||
===BOOTABLE=== | |||
{{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | |||
{{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game}} | |||
{| class="wikitable" | |||
|- | |- | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | |||
|- | |- | ||
| {{ | | {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || 00000000 00000000 00000000 00000001 || '''Bootable''' | ||
|- | |- | ||
| | |} | ||
*'''Bootable''' | |||
If the content is bootable or not, useful when you are going to make a data pkg. | |||
===CATEGORY=== | |||
{{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x3 (3 bytes)}} | |||
{{Boxtip1|content='''Used by''': All but Trophy}} | |||
The next tables represents the columns where the content is placed in the [[XMB]] and the CATEGORY asociated. | |||
====CATEGORY For HDD contents==== | |||
{| class="wikitable" | |||
|- | |- | ||
! {{icontinyphoto}} !! {{icontinymusic}} !! {{icontinyvideo}} !! {{icontinytv}} !! {{icontinygame}} !! {{icontinynetwork}} !! {{icontinypsn}} !! Tiny-Icon !! Standard name !! Source/generated by: !! Notes & Examples | |||
|- | |- | ||
| | | colspan="7" style="text-align:center; background-color:#DDDDDD;" | System Data | ||
|- | |- | ||
| | | || || || || GD || || || {{iconps3}} || '''Game Data''' || PS3 Disc and .PKG || PS3 disc installations, Game patches, Game Expansions, "Common user" data generated by the game (e.g: GT5) | ||
|- | |- | ||
| | | || || || || 2D || || || {{iconps2}} || '''PS2 Data''' || PS2 Disc and .PKG || PS2 Emulator Data, PS2 expansions for disc games. See: [[Emulation]] | ||
|- | |- | ||
| | | colspan="7" style="text-align:center; background-color:#DDDDDD;" | Game Save Data | ||
|- | |- | ||
| | | || || || || SD || || || {{iconps3}} || '''Save Data''' || PS3 game || See: [[Game_Saves#Game_Saves_PS3 | Game Saves - PS3]] | ||
|- | |- | ||
| {{ | | || || || || {{No}} || || || {{iconps2}} || '''Virtual MemCard.VM2''' || PS2 game || PS2 game saves are stored in a Virtual Memory Card, dont use a PARAM.SFO. See: [[Game_Saves#Game_Saves_PS2 | Game Saves - PS2]] | ||
|- | |- | ||
| {{ | | || || || || {{No}} || || || {{iconps1}} || '''Virtual MemCard.VM1''' || PS1 game || PS1 game saves are stored in a Virtual Memory Card, dont use a PARAM.SFO. See: [[Game_Saves#Game_Saves_PS1 | Game Saves - PS1]] | ||
|- | |- | ||
| | | || || || || MS || || || {{iconpspminis}} || '''Minis Save''' || PSP Minis game || See: [[Game_Saves#Game_Saves_Minis | Game Saves - Minis]] | ||
|- | |- | ||
| {{ | | || || || || ?? || || || {{iconpspremaster}} || PSP Save ??? || PSP Remaster game || Speculation. See: [[Game_Saves#Game_Saves_PSP_Remaster | Game Saves - PSP Remaster]] | ||
|- | |- | ||
| | | colspan="7" style="text-align:center; background-color:#DDDDDD;" | Trophy Data | ||
|- | |- | ||
| {{ | | || || || || {{No}} || || || || '''Trophy''' || PS3 game (TROPHY.TRP) || Trophies uses a PARAM.SFO without CATEGORY, identifyed by the XMB by his path in internal HDD. See: [[Trophy files]] | ||
|- | |- | ||
| | | colspan="7" style="text-align:center; background-color:#DDDDDD;" | Bootable Content | ||
|- | |- | ||
| | | AP || || || || || || || {{iconps3}} || '''App Photo''' || .PKG || PlayMemories | ||
|- | |- | ||
| | | || AM || || || || || || {{iconps3}} || '''App Music''' || .PKG || Qriocity Music Unlimited | ||
|- | |- | ||
| | | || || AV || || || || || {{iconps3}} || '''App Video''' || .PKG || Netflix, LoveFilm | ||
|- | |- | ||
| | | || || || AT || || || || {{iconps3}} || '''App TV''' || .PKG || QOOK TV, Now TV, Torne (Column hidden when no installed content) | ||
|- | |- | ||
| | | || || || || || CB || || {{iconps3}} || '''???''' || .PKG || Life with PlayStation, Folding@home | ||
|- | |- | ||
| | | || || || || || || HM || {{iconps3}} || '''Home''' || .PKG || PlayStation Home | ||
|- | |- | ||
| {{ | | || || || || HG || || || {{iconps3}} || '''HDD Game''' || .PKG || {{iconpcengine}} and {{iconneogeo}} uses '''HG''', but are identifyed by XMB using "flags" inside his [[PARAM.SFO#ATTRIBUTE | ATTRIBUTE]] | ||
|- | |- | ||
| | | || || || || 2G || || || {{iconps2}} || '''PS2 Game''' || PS2 Disc || Real PS2 Discs installed in internal HDD, feature only available for "backward compatible" PS3's. See: [[Emulation]] | ||
|- | |- | ||
| | | || || || || 2P || || || {{iconps2}} || '''PS2 PSN''' ? || .PKG || "'''PS2 Classics'''". Re-edited PS2 games released as a .pkg in "PlayStation Store" | ||
|- | |- | ||
| | | || || || || 1P || || || {{iconps1}} || '''PS1 PSN''' ? || .PKG || "'''PS1 Classics'''". Re-edited PS1 games released as a .pkg in "PlayStation Store" | ||
|- | |- | ||
| | | || || || || MN || || || {{iconpspminis}} || '''Minis''' || .PKG || "'''PSP Minis'''". Format inherited from PSP | ||
|- | |- | ||
| | | || || || || PE || || || {{iconpspremaster}} || '''PSP Emulator''' || .PKG || "'''PSP Remasters'''". Re-edited PSP games released as a .pkg inside a "Install disc". Implemented in firmware 3.70 | ||
|- | |- | ||
| | | colspan="7" style="text-align:center; background-color:#DDDDDD;" | Transferable content | ||
|- | |- | ||
| | | || || || || PP || || || {{iconpsp}} || '''PSP''' || .PKG || Not bootable, but can be copyed to a PSP | ||
|- | |- | ||
| | |} | ||
====CATEGORY For Disc contents==== | |||
{| class="wikitable" | |||
|- | |- | ||
! {{icontinyphoto}} !! {{icontinymusic}} !! {{icontinyvideo}} !! {{icontinytv}} !! {{icontinygame}} !! {{icontinynetwork}} !! {{icontinypsn}} !! Standard name !! Path !! Notes | |||
|- | |- | ||
| | | || || || || DG || || || PS3 '''Disc Game''' || dev_bdvd/TITLE_ID/PS3_GAME/PARAM.SFO || Main content of a Game Disc | ||
|- | |- | ||
| | | || || || || DP (IP) || || || '''Disc Packages''' ('''Install package''') || dev_bdvd/TITLE_ID/PS3_GAME/PKGDIR/PARAM.SFO (.../PKG00/PARAM.SFO) || Installable Packages | ||
|- | |- | ||
| | | || || || || AR || || || '''Auto PKG for Disc Game Root''' || dev_bdvd/TITLE_ID/PS3_GAME/INSDIR/PARAM.SFO || Game Patches and Installable Packages | ||
|- | |- | ||
| | | || || || || XR (IP, TI, VI) || || || '''Extra Root''' ('''Install package, Theme Item, Video Item''') || dev_bdvd/TITLE_ID/PS3_EXTRA/PARAM.SFO (.../D000/PARAM.SFX) || Installable Packages, Themes, and Videos | ||
|- | |- | ||
| | | || || || || TR || || || '''Theme Root''' || dev_bdvd/TITLE_ID/PS3_CONTENT/THEMEDIR/PARAM.SFO || Themes | ||
|- | |- | ||
| | | || || VR (VI) || || || || || '''Video Root''' ('''Video Item''') || dev_bdvd/TITLE_ID/PS3_CONTENT/VIDEODIR/PARAM.SFO (.../D000/PARAM.SFO) || Videos | ||
|- | |- | ||
| | | || || DM || || || || || '''Disc Movie''' || dev_bdvd/TITLE_ID/PS3_VPRM/PARAM.SFO || Main content of a Movie Disc | ||
| | |||
|} | |} | ||
*Note values inside parentheses indicates the structure has another subfolder with another PARAM.SFO. | |||
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) | |||
E.G.: BLJM93009 | |||
'''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|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, see also DISC.SFO on PS3_EXTRA for possible use) | |||
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 default ? | |||
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 folder. | |||
0INS00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0INS00001) | |||
|--- PS3_GAME | |||
|--- PARAM.SFO <--- 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 ([[http://www.blogcdn.com/www.joystiq.com/media/2009/08/firmrwae300ps3.jpg 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 (e.g.: BLJM60372 Biohazard revival) | |||
The purpose of this DISC.SFO seems to force the user to start the installed game with the original disc with this message on XMB: | |||
"to play this game, you must insert the following disc. Insert the disc, and then start the game again. (8001003E) Install disc" | |||
(can be resolve by launching BD emulator, remove the disc.sfo file or using the original disc) | |||
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 ---> [[http://www.sendspace.com/file/o95vde| Blu-Ray fake discs by sandungas]] | |||
===CONTENT_ID=== | ===CONTENT_ID=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x30 (48 bytes)<br />'''Data_Size_Used''': 0x25 (37 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game}} | {{Boxtip1|content='''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 | 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: | The format is: '''XXYYYY-NP_COMMUNICATION_ID-LICENSE_ID''' where: | ||
Line 716: | Line 721: | ||
===DETAIL=== | ===DETAIL=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x400 (1024 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': Save Data}} | {{Boxtip1|content='''Used by''': Save Data}} | ||
Line 724: | Line 729: | ||
The special byte "'''0A'''" displaces the text to the next line (a linefeed), this can be used to create long texts composed by several horizontall lines. | The special byte "'''0A'''" displaces the text to the next line (a linefeed), this can be used to create long texts composed by several horizontall lines. | ||
===ITEM_PRIORITY=== | ===ITEM_PRIORITY=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': integer<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': | {{Boxtip1|content='''Used by''': PS2 Game}} | ||
Used | Used only in category "2G" for "PS2 game discs" that can be installed in the PS3 internal HDD. Always filled with zeroes in the examples found | ||
===LANG=== | ===LANG=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': Trophy}} | {{Boxtip1|content='''Used by''': Trophy}} | ||
Language used when the "trophy config file" [[Trophy_files#TROPCONF.SFM|TROPCONF.SFM]] was installed. | Language used when the "trophy config file" [[Trophy_files#TROPCONF.SFM|TROPCONF.SFM]] was installed. Valid values for languages are the same ones used for [[Content_Information_Files#Regional_codes_in_file_names_.28languages.29|Regional codes]] | ||
===LICENSE=== | ===LICENSE=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x200 (512 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': HDD Game}} | {{Boxtip1|content='''Used by''': HDD Game}} | ||
License text of the content, hidden by the system in actual firmwares | License text of the content, hidden by the system in actual firmwares | ||
=== NP_COMMUNICATION_ID === | ===NP_COMMUNICATION_ID=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x10 (16 bytes)<br />'''Data_Size_Used''': 0xD (13 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game}} | {{Boxtip1|content='''Used by''': HDD Game}} | ||
Comm ID for Bootable message. Also is the name of the folder containing the trophy installer: [[Trophy_files#Trophy_Installer | TROPHY.TRP]] | |||
The format is | The format is NPWRxxyyy_zz (e.g. NPWR00001_00) | ||
===NPCOMMID=== | |||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x10 (16 bytes)<br />'''Data_Size_Used''': 0xC (12 bytes)}} | ||
{{Boxtip1|content='''Used by''': Trophy}} | {{Boxtip1|content='''Used by''': Trophy}} | ||
Same than NP_COMMUNICATION_ID but with a ''' | Same than NP_COMMUNICATION_ID but with a '''Data_Size_Used''' of 12 bytes | ||
===PADDING=== | ===PADDING=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8 Special Mode<br />'''Data_Size_Total''': 0x8 (8 bytes)<br />'''Data_Size_Used''': 0x0 (0 bytes)}} | ||
{{Boxtip1|content='''Used by''': Trophy}} | {{Boxtip1|content='''Used by''': Trophy}} | ||
Line 779: | Line 769: | ||
===PARAMS=== | ===PARAMS=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8 Special Mode<br />'''Data_Size_Total''': 0x400 (1024 bytes)<br />'''Data_Size_Used''': 0x400 (1024 bytes)}} | ||
{{Boxtip1|content='''Used by''': | {{Boxtip1|content='''Used by''': Save Data}} | ||
This parameter is intended to store user (and console?) specific data. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! 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: | *Notes: | ||
**The | ** 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=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8 Special Mode<br />'''Data_Size_Total''': 0xC (12 bytes)<br />'''Data_Size_Used''': 0xC (12 bytes)}} | ||
{{Boxtip1|content='''Used by''': Save Data}} | {{Boxtip1|content='''Used by''': Save Data}} | ||
Unknown, usually filled with zeroes | Unknown, usually filled with zeroes | ||
===PARENTAL_LEVEL_x=== | |||
{{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | |||
{{Boxinfo3|content=''' | |||
{{Boxtip1|content='''Used by''': HDD Game}} | {{Boxtip1|content='''Used by''': HDD Game}} | ||
Used to restrict the content to a specific | Used to restrict the content to a specific [[Regions|License Area]] | ||
The "'''x'''" at the end of the name PARENTAL_LEVEL_'''x''' defines the '''License Area''' wich is one of this list. | The "'''x'''" at the end of the name PARENTAL_LEVEL_'''x''' defines the '''License Area''' wich is one of this list. | ||
Line 898: | Line 817: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Parameter !! License Area !! Regions | ||
|- | |- | ||
| PARENTAL_LEVEL_A ||SCEA | | PARENTAL_LEVEL_A ||SCEA || US, Canada (North America), Mexico, Central America, South America | ||
|- | |- | ||
| PARENTAL_LEVEL_C || SCH | | PARENTAL_LEVEL_C || SCH || China | ||
|- | |- | ||
| PARENTAL_LEVEL_E || SCEE | | PARENTAL_LEVEL_E || SCEE || Europe/Middle East/Africa, U.K./Ireland, Australia/New Zealand (Oceania), Russia, Ukraine, India, Central Asia | ||
|- | |- | ||
| PARENTAL_LEVEL_H || SCEH | | PARENTAL_LEVEL_H || SCEH || Singapore/Malaysia (Southeast Asia), Taiwan, Hong Kong | ||
|- | |- | ||
| PARENTAL_LEVEL_J || SCEJ | | PARENTAL_LEVEL_J || SCEJ || Japan | ||
|- | |- | ||
| PARENTAL_LEVEL_K || SCEK | | PARENTAL_LEVEL_K || SCEK || Korea (South Korea) | ||
|- | |- | ||
|} | |} | ||
*All this parameters are used in group | *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''' | *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''' | ||
Line 928: | Line 847: | ||
PARENTAL_LEVEL_K = 0B000000 (level 11) | PARENTAL_LEVEL_K = 0B000000 (level 11) | ||
==== | ===PARENTAL_LEVEL=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game, Minis Game, PSP Remasters 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: [[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: | |||
*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. | |||
{| class="wikitable" | |||
|- | |||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Rating | |||
|- | |||
| {{stylematrix}} 00 00 00 00 || 00 00 00 00 || 0 || Disabled | |||
|- | |||
| {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || Lower restriction | |||
|- | |||
| {{stylematrix}} 02 00 00 00 || 00 00 00 02 || 2 || | |||
|- | |||
| {{stylematrix}} 03 00 00 00 || 00 00 00 03 || 3 || | |||
|- | |||
| {{stylematrix}} 04 00 00 00 || 00 00 00 04 || 4 || | |||
|- | |||
| {{stylematrix}} 05 00 00 00 || 00 00 00 05 || 5 || | |||
|- | |||
| {{stylematrix}} 06 00 00 00 || 00 00 00 06 || 6 || | |||
|- | |||
| {{stylematrix}} 07 00 00 00 || 00 00 00 07 || 7 || | |||
|- | |||
| {{stylematrix}} 08 00 00 00 || 00 00 00 08 || 8 || | |||
|- | |||
| {{stylematrix}} 09 00 00 00 || 00 00 00 09 || 9 || | |||
|- | |||
| {{stylematrix}} 0A 00 00 00 || 00 00 00 0A || 10 || | |||
|- | |||
| {{stylematrix}} 0B 00 00 00 || 00 00 00 0B || 11 || Higher restriction | |||
|- | |||
|} | |||
===PARENTALLEVEL=== | |||
{{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | |||
{{Boxtip1|content='''Used by''': PS1 Game, Trophy}} | {{Boxtip1|content='''Used by''': PS1 Game, Trophy}} | ||
Same than PARENTAL_LEVEL | Same than PARENTAL_LEVEL | ||
===PS3_SYSTEM_VER=== | ===PS3_SYSTEM_VER=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x8 (8 bytes)<br />'''Data_Size_Used''': 0x8 (8 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game, Game Data}} | {{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game, Game Data}} | ||
Line 949: | Line 903: | ||
===REGION_DENY=== | ===REGION_DENY=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game}} | {{Boxtip1|content='''Used by''': HDD Game}} | ||
Regions restrictions for the content, added in firmware 3.30 | |||
There are 12 valid [[Regions]], each region has a position assigned in the binary string, marked with an "'''1'''" when the region is prohibited, or a "'''0'''". when is allowed. | There are 12 valid [[Regions]], each region has a position assigned in the binary string, marked with an "'''1'''" when the region is prohibited, or a "'''0'''". when is allowed. | ||
Line 960: | Line 914: | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Binary <br /> (flags) !! Region Nº !! Target Territory !! Notes | ! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Binary <br /> (flags) !! Region Nº !! Target Territory !! Notes | ||
|- | |- | ||
| {{ | | {{stylematrix}} FE FF FF FF || FF FF FF FE || 11111111 11111111 11111111 11111110 || 0 || Japan || | ||
|- | |- | ||
| {{ | | {{stylematrix}} FD FF FF FF || FF FF FF FD || 11111111 11111111 11111111 11111101 || 1 || US, Canada (North America) || Used in Netflix | ||
|- | |- | ||
| {{ | | {{stylematrix}} FB FF FF FF || FF FF FF FB || 11111111 11111111 11111111 11111011 || 2 || Europe / Middle East / Africa || | ||
|- | |- | ||
| {{ | | {{stylematrix}} F7 FF FF FF || FF FF FF F7 || 11111111 11111111 11111111 11110111 || 3 || Korea (South Korea) || | ||
|- | |- | ||
| {{ | | {{stylematrix}} EF FF FF FF || FF FF FF EF || 11111111 11111111 11111111 11101111 || 4 || U.K. / Ireland || | ||
|- | |- | ||
| {{ | | {{stylematrix}} DF FF FF FF || FF FF FF DF || 11111111 11111111 11111111 11011111 || 5 || Mexico, Central America, South America || | ||
|- | |- | ||
| {{ | | {{stylematrix}} BF FF FF FF || FF FF FF BF || 11111111 11111111 11111111 10111111 || 6 || Australia / New Zealand (Oceania) || | ||
|- | |- | ||
| {{ | | {{stylematrix}} 7F FF FF FF || FF FF FF 7F || 11111111 11111111 11111111 01111111 || 7 || Singapore / Malaysia (Southeast Asia) || | ||
|- | |- | ||
| {{ | | {{stylematrix}} FF FE FF FF || FF FF FE FF || 11111111 11111111 11111110 11111111 || 8 || Taiwan || | ||
|- | |- | ||
| {{ | | {{stylematrix}} FF FD FF FF || FF FF FD FF || 11111111 11111111 11111101 11111111 || 9 || Russia, Ukraine, India, Central Asia || | ||
|- | |- | ||
| {{ | | {{stylematrix}} FF FB FF FF || FF FF FB FF || 11111111 11111111 11111011 11111111 || 10 || China || | ||
|- | |- | ||
| {{ | | {{stylematrix}} 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 | | colspan="7" style="text-align:center; background-color:#DDDDDD;" | Examples | ||
|- | |- | ||
| {{ | | {{stylematrix}} 01 F0 FF FF || FF FF F0 01 || 11111111 11111111 11110000 00000001 || || From 1 to 11 || [[http://ps3.mediagen.fr/badregion-4_0900051787.jpg Photo]] of a PS3 DEX with '''Allowed Region=1-11''' (region 0 not allowed) | ||
|- | |- | ||
|} | |} | ||
===RESOLUTION=== | ===RESOLUTION=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game, PS1 Classics Game, Minis Game, PSP Remasters Game}} | {{Boxtip1|content='''Used by''': HDD Game, PS1 Classics Game, Minis Game, PSP Remasters Game}} | ||
Line 1,002: | Line 956: | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | ! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || 00000000 00000000 00000000 00000001 || 480 (4:3) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 02 00 00 00 || 00 00 00 02 || 2 || 00000000 00000000 00000000 00000010 || 576 (4:3) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 04 00 00 00 || 00 00 00 04 || 4 || 00000000 00000000 00000000 00000100 || 720 (16:9) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 08 00 00 00 || 00 00 00 08 || 8 || 00000000 00000000 00000000 00001000 || 1080 (16:9) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 10 00 00 00 || 00 00 00 10 || 16 || 00000000 00000000 00000000 00010000 || 480 (16:9) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 20 00 00 00 || 00 00 00 20 || 32 || 00000000 00000000 00000000 00100000 || 576 (16:9) | ||
|- | |- | ||
| colspan="5" style="text-align:center; background-color:#DDDDDD;" | Examples | | colspan="5" style="text-align:center; background-color:#DDDDDD;" | Examples | ||
|- | |- | ||
| {{ | | {{stylematrix}} 3F 00 00 00 || 00 00 00 3F || 63 || 00000000 00000000 00000000 00111111 || All video modes supported | ||
|- | |- | ||
|} | |} | ||
*Note the resolution for originall PS1 disc games can vary (See: [[Emulation#Resolution|Emulation Resolution]]). The RESOLUTION flags used in PARAM.SFO's of "PS1 Classics Game" from PSN seems to be specific and not fixed sizes (e.g: 01 00 00 00). This will need another table if more are found | |||
===SAVEDATA_DETAIL=== | |||
{{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x400 (1024 bytes)<br />'''Data_Size_Used''': variable}} | |||
{{Boxtip1|content='''Used by''': Minis Save Data}} | |||
Used to store texts generated by the game, the format s the same than [[PARAM.SFO#DETAIL|DETAIL]] | |||
===SAVEDATA_DIRECTORY=== | ===SAVEDATA_DIRECTORY=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x40 (64 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': Save Data, Minis Save Data}} | {{Boxtip1|content='''Used by''': Save Data, Minis Save Data}} | ||
Name of the folder where the game stores | Name of the folder where the game stores his SaveData. The format is: '''TITLE_IDxxxxx''' (9 bytes + 22 bytes max), e.g;: '''BLUS00001_savedata_01''' where: | ||
*'''TITLE_ID''' Identifier of the content. Explained in [[#TITLE_ID|TITLE_ID]]. | *'''TITLE_ID''' Identifier of the content. Explained in [[#TITLE_ID|TITLE_ID]]. | ||
*'''xxxxx''' Are texts (with variable | *'''xxxxx''' Are texts (with variable lenght) to difference all the SaveDatas generated from the same game by the same user. | ||
===SAVEDATA_FILE_LIST=== | ===SAVEDATA_FILE_LIST=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8 Special Mode<br />'''Data_Size_Total''': 0xC60 (3168 bytes)<br />'''Data_Size_Used''': 0xC60 (3168 bytes)}} | ||
{{Boxtip1|content='''Used by''': Minis Save Data}} | {{Boxtip1|content='''Used by''': Minis Save Data}} | ||
Line 1,048: | Line 1,004: | ||
===SAVEDATA_LIST_PARAM=== | ===SAVEDATA_LIST_PARAM=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x8 (8 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': | {{Boxtip1|content='''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=== | ===SAVEDATA_PARAMS=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8 Special Mode<br />'''Data_Size_Total''': 0x80 (128 bytes)<br />'''Data_Size_Used''': 0x80 (128 bytes)}} | ||
{{Boxtip1|content='''Used by''': Minis Save Data}} | {{Boxtip1|content='''Used by''': Minis Save Data}} | ||
Line 1,100: | Line 1,020: | ||
! Offset!! length !! Example !! Description !! Notes | ! Offset!! length !! Example !! Description !! Notes | ||
|- | |- | ||
| 0x11B0 || 16 (0x10) || 41000000000000000000000000000000 || Unknown || allways the same value found ("A" in | | 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 | | 0x11C0 || 16 (0x10) || FEDCBA9876543210FEDCBA9876543210 || Unknown || changes when the savedata is updated | ||
Line 1,117: | Line 1,037: | ||
|- | |- | ||
|} | |} | ||
===SAVEDATA_TITLE=== | |||
{{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x80 (128 bytes)<br />'''Data_Size_Used''': variable}} | |||
{{Boxtip1|content='''Used by''': Minis Save Data}} | |||
Subtitle of the Save, the format is the same than [[PARAM.SFO#SUBTITLE|SUBTITLE]] | |||
===SOUND_FORMAT=== | ===SOUND_FORMAT=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game}} | {{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game}} | ||
Line 1,128: | Line 1,054: | ||
! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) !! Flag Nº <br /> (flag required) | ! Hexadecimal <br /> (little endian) !! Hexadecimal <br /> (big endian) !! Decimal !! Binary <br /> (flags) !! Feature <br /> (notes) !! Flag Nº <br /> (flag required) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 01 00 00 00 || 00 00 00 01 || 1 || 00000000 00000000 00000000 00000001 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 2.0 || 01 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 02 00 00 00 || 00 00 00 02 || 2 || 00000000 00000000 00000000 00000010 || || bgcolor="#DD6666" | 02 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 04 00 00 00 || 00 00 00 04 || 4 || 00000000 00000000 00000000 00000100 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 5.1 || 03 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 10 00 00 00 || 00 00 00 10 || 16 || 00000000 00000000 00000000 00010000 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 7.1 || 05 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 01 00 00 || 00 00 01 00 || 256 || 00000000 00000000 00000001 00000000 || [[http://en.wikipedia.org/wiki/Dolby_Digital#Dolby_Digital Dolby Digital]] 5.1 || bgcolor="#DD6666" | 09 (02) | ||
|- | |- | ||
| {{ | | {{stylematrix}} 00 02 00 00 || 00 00 02 00 || 512 || 00000000 00000000 00000010 00000000 || [[http://en.wikipedia.org/wiki/DTS_%28sound_system%29 Digital Theater Systems (DTS)]] 5.1 || bgcolor="#DD6666" | 10 (02) | ||
|- | |- | ||
| colspan="6" style="text-align:center; background-color:#DDDDDD;" | Examples | | colspan="6" style="text-align:center; background-color:#DDDDDD;" | Examples | ||
|- | |- | ||
| {{ | | {{stylematrix}} 15 00 00 00 || 00 00 00 15 || 21 || 00000000 00000000 00000000 00010101 || All LPCM modes || 1+3+5 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 02 01 00 00 || 00 00 01 02 || 258 || 00000000 00000000 00000001 00000010 || Only Dolby Digital 5.1 || 2+9 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 17 01 00 00 || 00 00 01 17 || 279 || 00000000 00000000 00000001 00010111 || All LPCM modes + Dolby Digital 5.1 || 1+2+3+5+9 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 02 02 00 00 || 00 00 02 02 || 514 || 00000000 00000000 00000010 00000010 || Only Digital Theater Systems (DTS) 5.1 || 2+10 | ||
|- | |- | ||
| {{ | | {{stylematrix}} 17 03 00 00 || 00 00 03 17 || 791 || 00000000 00000000 00000011 00010111 || All sound modes || 1+2+3+5+9+10 | ||
|} | |} | ||
===SOURCE=== | ===SOURCE=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': uint32_t<br />'''Data_Size_Total''': 0x4 (4 bytes)<br />'''Data_Size_Used''': 0x4 (4 bytes)}} | ||
{{Boxtip1|content='''Used by''': Trophy}} | {{Boxtip1|content='''Used by''': Trophy}} | ||
Line 1,165: | Line 1,086: | ||
===SUB_TITLE=== | ===SUB_TITLE=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x80 (128 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': Save Data}} | {{Boxtip1|content='''Used by''': Save Data}} | ||
Line 1,171: | Line 1,092: | ||
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 | 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=== | ===TARGET_APP_VER=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x8 (8 bytes)<br />'''Data_Size_Used''': 0x6 (6 bytes)}} | ||
{{Boxtip1|content='''Used by''': Game Data}} | {{Boxtip1|content='''Used by''': Game Data}} | ||
Line 1,190: | Line 1,102: | ||
===TITLE=== | ===TITLE=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x80 (128 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': All but Trophy}} | {{Boxtip1|content='''Used by''': All but Trophy}} | ||
Line 1,197: | Line 1,109: | ||
The special byte "'''0A'''" displaces the text to the next line (a linefeed), this can be used to create long texts composed by several horizontall lines, the maximun number of horizontal text lines allowed for the TITLE is 3 (in other words... you can use the "linefeed" byte 2 times) | The special byte "'''0A'''" displaces the text to the next line (a linefeed), this can be used to create long texts composed by several horizontall lines, the maximun number of horizontal text lines allowed for the TITLE is 3 (in other words... you can use the "linefeed" byte 2 times) | ||
=== | ===TITLE_ID=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x10 (16 bytes)<br />'''Data_Size_Used''': 0xA (10 bytes)}} | ||
{{Boxtip1|content='''Used by''': HDD Game}} | {{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters 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 [[Environments|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 even when errors are found). | |||
**MRTC00001 STAR OCEAN THE LAST HOPE (the first international blu-ray release) | |||
=== | ===TITLE_xx=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x80 (128 bytes)<br />'''Data_Size_Used''': variable}} | ||
{{Boxtip1|content='''Used by''': HDD Game | {{Boxtip1|content='''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|Content Information Files]]. | |||
The "default" TITLE is always present when other "localized" TITLE_'''xx''' are used. | |||
===TITLEID0xx=== | |||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x10 (16 bytes)<br />'''Data_Size_Used''': 0x9 (9 bytes)}} | ||
{{Boxtip1|content='''Used by''': Trophy}} | {{Boxtip1|content='''Used by''': Trophy}} | ||
SFO's for trophies contains a full list of 16 TITLEID0'''xx''' for all languages where '''xx''' is a number for a | SFO's for trophies contains a full list of 16 TITLEID0'''xx''' parameters for all languages where '''xx''' is a number for a regional code. See: [[Content_Information_Files|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 | 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|TITLE_ID]] | The text contained inside default TITLEID000 is the same than [[#TITLE_ID|TITLE_ID]] | ||
===VERSION=== | ===VERSION=== | ||
{{Boxinfo3|content=''' | {{Boxinfo3|content='''Data_Type''': utf-8<br />'''Data_Size_Total''': 0x8 (8 bytes)<br />'''Data_Size_Used''': 0x6 (6 bytes)... or 0x3 (3 bytes) when used in trophy}} | ||
{{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game, Game Data, Trophy}} | {{Boxtip1|content='''Used by''': HDD Game, PS1 Game, Minis Game, PSP Remasters Game, Game Data, Trophy}} | ||
Line 1,247: | Line 1,164: | ||
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'''. | ||
*When used in a SFO for a trophy it has a ''' | *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''' | ||
==Tips & Tricks== | ==Tips & Tricks== | ||
Line 1,453: | Line 1,174: | ||
To be sure that the new PARAM.SFO has been loaded you can change the '''TITLE''' (Paid attention also to '''TITLE_xx''') , this way you can see the new name displayed in XMB, is a good idea to use something that identifyes the change as "My test 01". | To be sure that the new PARAM.SFO has been loaded you can change the '''TITLE''' (Paid attention also to '''TITLE_xx''') , this way you can see the new name displayed in XMB, is a good idea to use something that identifyes the change as "My test 01". | ||
*The most convenient and quick way to "refresh" the XMB is as simple as booting the game one time (by pressing X button over | *The most convenient and quick way to "refresh" the XMB is as simple as booting the game one time (by pressing X button over his icon)... inside the game press "PS" button and exit with "quit"... then return to the XMB and the new PARAM.SFO has been loaded. So in resume... the XMB is refreshed when you boot it for first time so you need to boot it one time and quit to load the new PARAM.SFO. | ||
*The other solution is by using the option "rebuild database" from the recovery menu (this re-indexes all the files in the internall HDD), is long but can fix rare problems. This can be used when the PARAM.SFO you are playing with is not '''BOOTABLE''' (you cant boot it to "refresh" the XMB) | *The other solution is by using the option "rebuild database" from the recovery menu (this re-indexes all the files in the internall HDD), is long but can fix rare problems. This can be used when the PARAM.SFO you are playing with is not '''BOOTABLE''' (you cant boot it to "refresh" the XMB) | ||
When replacing a PARAM.SFO manually in a Game Disc (to be loaded later by a backup manager) sometimes the system ignores it. This happens because the system is storing a "duplicated" copy of the old disc structure included | When replacing a PARAM.SFO manually in a Game Disc (to be loaded later by a backup manager) sometimes the system ignores it. This happens because the system is storing a "duplicated" copy of the old disc structure included his PARAM.SFO (iirc). The trick to "refresh the XMB" is again by booting the game (pressing X in the main icon)... for this to work is needed to have a EBOOT.BIN in the main path inside USRDIR folder (e.g: the EBOOT.BIN from the "move demo disc" just plays a video in .MP4 and is tiny) | ||
===Creating a frankenstein PARAM.SFO=== | ===Creating a frankenstein PARAM.SFO=== | ||
The first step is to go to the [[#Parameters_Table|Parameters Table]] to look what parameters are mandatory and wich ones can be removed or zeroed (note this table has a lot of YES that probably are OPT, is just that this ones has not been verifyed or found) | |||
The first step is to go to the | |||
*When you generate a non proper file you can have a nice icon of "corrupted data", but in some cases the game boots normally. In other cases when adding or removing | *When you generate a non proper file 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 there is 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" | *When adding "non-standard" parameters to a "standard" SFO the system blocks this "not-expected" parameters. 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. | *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. | ||
Line 1,482: | Line 1,201: | ||
For install packages (max: 100, FW min: 1.80) you can use PS3_EXTRA or PKGDIR both will work but are displayed different | For install packages (max: 100, FW min: 1.80) you can use PS3_EXTRA or PKGDIR both will work but are displayed different | ||
For themes ( max: 200, FW min: 2.50) and videos (max: 200, FW min: 2.40) use PS3_EXTRA or PS3_CONTENT remember themes includes | For themes ( max: 200, FW min: 2.50) and videos (max: 200, FW min: 2.40) use PS3_EXTRA or PS3_CONTENT remember themes includes his own icon and title, videos are mounted in video colum when using PS3_CONTENT pretty nice for chapters of series, video manuals, etc... | ||
(Max items & FW min are theory, not tested) | (Max items & FW min are theory, not tested) | ||
For patches use INSDIR, | For patches use INSDIR, his installation is more automated | ||
===Creating Patches=== | ===Creating Patches=== | ||
The type of patch is defined by | The type of patch is defined by his '''APP_VER''', '''TARGET_APP_VER''', and '''VERSION'''. There is no way to update an installed content without '''APP_VER''' | ||
The standard way to install a patch is by using the same '''TITLE_ID''' of the previous release and a bigger '''APP_VER''', when the patch is installed | The standard way to install a patch is by using the same '''TITLE_ID''' of the previous release and a bigger '''APP_VER''', when the patch is installed his PARAM.SFO replaces the old one, consequently his '''APP_VER''' increases | ||
But there are some tricks related with this patching system that can be used to add files to the install folder without keeping this standard: | But there are some tricks related with this patching system that can be used to add files to the install folder without keeping this standard: | ||
Line 1,497: | Line 1,216: | ||
*Using the same '''APP_VER''' and '''TARGET_APP_VER''' in the patch and in the app | *Using the same '''APP_VER''' and '''TARGET_APP_VER''' in the patch and in the app | ||
This will replace the PARAM.SFO by other with the same values, so is similar than the previous one, but keeping | This will replace the PARAM.SFO by other with the same values, so is similar than the previous one, but keeping his version. Additionally this assures you that the files are compatibles with this version of the app (e.g: a theme that only works with a specific version) | ||
==Tools, manuals and external links== | ==Tools, manuals and external links== | ||
Line 1,513: | Line 1,232: | ||
[[Dev_Tools#SFO_Reader|SFO reader]] | [[Dev_Tools#SFO_Reader|SFO reader]] | ||
[https://github.com/Rancido/PS3-Tools Another | [https://github.com/Rancido/PS3-Tools Another SF0 reader] | ||
[http://www. | [http://www.mediafire.com/?325cq3iea259c3j SFO Test(217.99KB)] Deroad SFO test homebrew ( really usefull for fast test, can boot under X category so it refresh the SFO and avoid stuck SFO and games, XMB in game is not "visible") | ||
[[http://ps3zone.ifcaro.net/archivos/PkgView_1.3.rar PkgView]] (by ifcaro): The fastest, lighter, and intuitive PKG extractor ever. Very usefull to extract individual files or to take a look inside the PKG without extracting | [[http://ps3zone.ifcaro.net/archivos/PkgView_1.3.rar PkgView]] (by ifcaro): The fastest, lighter, and intuitive PKG extractor ever. Very usefull to extract individual files or to take a look inside the PKG without extracting | ||
*Sources | |||
*Sources | |||
http://www.ps3hax.net/showthread.php?t=28704 | http://www.ps3hax.net/showthread.php?t=28704 | ||
Line 1,530: | Line 1,245: | ||
https://github.com/ps3dev/PSL1GHT/blob/master/tools/ps3py/sfo.py (old way) | https://github.com/ps3dev/PSL1GHT/blob/master/tools/ps3py/sfo.py (old way) | ||
https://github.com/an0nym0u5/PSL1GHT/tree/master/tools/make_sfo (new/better way) | https://github.com/an0nym0u5/PSL1GHT/tree/master/tools/make_sfo (new/better way) | ||
[http://www.multiupload.com/T9V8WMXR60 read_sfo.tar.bz2 (6.32 KB)] | [http://www.multiupload.com/T9V8WMXR60 read_sfo.tar.bz2 (6.32 KB)] | ||
http://ps3tutorials.wikispaces.com/Edit+the+sfo.xml+Tutorial | http://ps3tutorials.wikispaces.com/Edit+the+sfo.xml+Tutorial | ||
*Examples | *Examples | ||
Line 1,543: | Line 1,255: | ||
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. | 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. | ||