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 wich content needs to be displayed in the [[XMB]]. | |||
The basic file/folder structure of a '''PS3 content''' is composed by a SFO, the multimedia [[Content Information Files]], and for speciall content like [[Game_Saves|SaveData]] or [[Trophy_files| Trophies]] there is a [[PARAM.PFD]] for security reasons, other type of content like games or apps needs an structure of subfolders with names as HTMLDIR, INSDIR, LICDIR, PKGDIR, TRPDIR, USRDIR, etc... | |||
The parameters contained in a SFO can be simplyfied as inputs/outputs for/from the content: | |||
* Boot modifyers (flags) that are sent to the content when is executed to activate speciall modes (e.g. audio and video modes of a game). | |||
* 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 speciall subfolder, and the subfolder contains another SFO that activates another subfolder and so on. | |||
This structures are limited by the system and activated by a combination of [[#CATEGORY|CATEGORY]] and speciall flags on [[#ATTRIBUTE|ATTRIBUTE]]. | |||
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=== | ||
<pre> | |||
struct Header | |||
struct | { | ||
{ | 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 */ | ||
uint32_t | }; | ||
}; | </pre> | ||
</ | |||
=== | ===Definition_Table=== | ||
This structure repeats one time for every '''Entries_Number''' defined in the header. All values are in Little Endian. | |||
<pre> | |||
struct Definition_Table | |||
{ | |||
uint16_t Name_Table_Offset; /* Offset of the Name of the entry, from start of Name_Table */ | |||
uint16_t Data_Type; /* Type of data of the entry in the Data_Table */ | |||
uint32_t Data_Size_Used; /* Used Bytes by the entry in the Data_Table */ | |||
uint32_t Data_Size_Total; /* Total bytes reserved for the entry in the Data_Table */ | |||
uint32_t Data_Table_Offset; /* Offset of the Data of the entry, from start of Data_Table */ | |||
}; | |||
</pre> | |||
The '''Data_Types''' are partially known based in some examples found in different content | |||
{| class="wikitable" | |||
{| class="wikitable" | |||
|- | |- | ||
! | ! Data_Types !! Description !! Used in | ||
|- | |- | ||
| 04 00 || | | 04 00 || utf-8 Speciall Mode || ACCOUNT_ID, PARAMS, PARAMS2 (in SaveData)... and PADDING (in trophy) | ||
|- | |- | ||
| 04 02 || | | 04 02 || utf-8 || | ||
|- | |- | ||
| 04 04 | | 04 04 || integer || | ||
|- | |- | ||
|} | |} | ||
The '''Data_Type''' 04 00 marked as "utf-8 Speciall Mode" has the particularity of return a "right" or "wrong" when comparing the string with a reference value, so it can be said that the difference between the simple "utf-8" and "utf-8 Speciall Mode" is only from the point of view of how the system manipulate this data. For more info read the section [[#ACCOUNT_ID|ACCOUNT_ID]]. | |||
*Speculation | |||
If the "scale" used for the second byte follows the proportion of 2^X (e.g. 1, 2, 4, 8, 16, 32, etc...) then we are missing a "04 01" valid data type in the list | |||
===Name_Table=== | |||
The entries of this table (and the next table) can vary depending of the kind of content, but always are ordered by his names (alphabetically from A to Z), each entry of this table needs 1 blank byte after the name to separate them. The valid values used in known formats are grouped in [[#Parameters_Table|Parameters Table]] for a fast reference. | |||
The 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 his '''Data_Size_Used''' is the same than his '''Data_Size_Total'''. | |||
*utf-8 entries never uses all the reserved bytes, needs 1 blank byte after the last character of the text string, this blank byte can be considered part of the string to count the '''Data_Size_Used''' bytes for this entry (e.g. the title "my homebrew " has a '''Data_Size_Used''' of 12 bytes from the total of 128 reserved in his '''Data_Size_Total'''). | |||
==Internall Structure Examples== | |||
===SFO=== | ===SFO=== | ||
This is an example of a hand made SFO structure, it contains only 1 entry (TITLE_ID), i choosed this one because his '''Data_Size_Total''' is short enought (16 bytes) to build the full structure in a minimall size, needs padding at the end of the '''Name_Table''', and the '''Data_Size_Used''' is smaller than '''Data_Size_Total'''. | |||
0x0000 00 50 53 46 01 01 00 00 24 00 00 00 30 00 00 00 | .PSF....$...0... | | |||
0x0010 01 00 00 00 00 00 04 02 0A 00 00 00 0F 00 00 00 | ................ | | |||
0x0020 00 00 00 00 54 49 54 4C 45 5F 49 44 00 00 00 00 | ....TITLE_ID.... | | |||
0x0030 41 42 43 44 31 32 33 34 35 00 00 00 00 00 00 00 | ABCD12345....... | | |||
All the blocks of the file are explained in the next list, it has separated sections for header and the three tables. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Offset !! Size !! Content !! Conversion !! Value !! Notes | ||
|- | |||
! Header | |||
|- | |||
| 0x0000 || 0x04 || 00 50 53 46 || To utf-8 || PSF || Signature | |||
|- | |||
| 0x0004 || 0x04 || 01 01 00 00 || Big endian, decimal || 1.1 || Version (the point is added by the system) | |||
|- | |||
| 0x0008 || 0x04 || 24 00 00 00 || Big endian || 0x0024 || Start of '''Name_Table''' | |||
|- | |||
| 0x000C || 0x04 || 30 00 00 00 || Big endian || 0x0030 || Start of '''Data_Table''' | |||
|- | |- | ||
| 0x0010 || 0x04 || 01 00 00 00 || Big endian, decimal || 1 || Number of entries in the tables | |||
| | |||
|- | |- | ||
! Definition_Table | |||
|- | |- | ||
| | | 0x0014 || 0x02 || 0000 || Big endian || 0 || (Start of '''Name''') - (Start of '''Name_Table''') = 0x0024-0x0024 = 0 | ||
|- | |- | ||
| | | 0x0016 || 0x02 || 0402 || Unknown || || '''Data_Type''' | ||
|- | |- | ||
| | | 0x0018 || 0x04 || 0A000000 || Big endian, decimal || 10 || '''Data_Size_Used''' (ABCD12345 are 9 bytes + 1 blank = 10) | ||
|- | |- | ||
| 0x001C || 0x04 || 0F000000 || Big endian, decimal || 16 || '''Data_Size_Total''' (TITLE_ID Data_Size_Total is always 16 bytes) | |||
| | |||
|- | |- | ||
| | | 0x0020 || 0x04 || 00000000 || Big endian || 0 || (Start of '''Data''') - (Start of '''Data_Table''') = 0x0030-0x0030 = 0 | ||
|- | |- | ||
! Name_Table | |||
|- | |- | ||
| | | 0x0024 || 0x09 || 5449544C455F494400 || To utf-8 || TITLE_ID || '''Name''', included 1 blank byte at the end | ||
|- | |- | ||
| | | 0x002D || 0x03 || 000000 || || || Padding (9 from the previous entry + 3 padding = 12 bytes) | ||
|- | |- | ||
! | ! Data_Table | ||
|- | |- | ||
| 0x0030 || 0x0F || 41424344313233343500000000000000 || To utf-8 || ABCD12345 || '''Data'''. ('''Data_Size_Total'''=16 bytes. '''Data_Size_Used'''=10 bytes) | |||
| | |||
|} | |} | ||
*When you generate a non proper file playing with the flags, you can have a nice icon of "corrupted data", but in some cases the game boots normally. In other cases when adding or removing parameters the file is "partially" corrupted because a "break point" in the structure and the file is "partially" loaded (the PS3 loads the values before the structure "break point" normally, but after this point the values shown as corrupted or missing). | |||
*When adding "non-stadard" parameters to a "standard" SFO the system blocks this "not-expected" parameter. The SFO is loaded without problems, but the added parameters are ignored (e.g. when adding SUB_TITLE to a SFO for catergory "HG"). | |||
*The minimall structure tested (and working) for a hombrew can be copied/downloaded at the bottom of the page, its not "standard" but the PS3 doesnt complains, and probably can be reduced even more. | |||
===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). | |||
The entries and values are self explanatory, can be created using a SFO as the source with the program [[Dev_Tools#SFO2SFX|SFO2SFX]]. | |||
<pre> | |||
<?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> | ||
</ | </pre> | ||
==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. | |||
{| class="wikitable | {| class="wikitable" | ||
|- | |- | ||
| '''HG''' = HDD Game || '''1P''' = PS1 Game || '''2G''' = PS2 Game || '''MN''' = Minis Game | |||
|} | |||
{| class="wikitable" | |||
|- | |- | ||
| '''GD''' = Game Data || '''2D''' = PS2 Data || '''SD''' = Save Data || '''MS''' = Minis Save Data || '''♦''' = Trophy Data | |||
|} | |||
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable sortable" style="border:1px solid #999; border-collapse: collapse;" | |||
|- bgcolor="#cccccc" | |||
! Parameter !! Data_Type !! Data_Size_Total !! Data_Size_Used !! HG !! 1P !! 2G !! MN !! !! GD !! 2D !! !! SD !! MS !! !! ♦ | |||
|- | |- | ||
| [[#ACCOUNT_ID|ACCOUNT_ID]] || 0400 || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}} | |||
|- | |- | ||
| [[#ACCOUNTID|ACCOUNTID]] || utf-8 || 16 (0x10) || 16 (0x10) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | |||
|- | |- | ||
| [[# | | [[#ANALOG_MODE|ANALOG_MODE]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#APP_VER|APP_VER]] || utf-8 || 8 (0x8) || 6 (0x6) || {{Opt}} || {{No}} || ??? || {{Yes}} || || {{Opt}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#ATTRIBUTE|ATTRIBUTE]] || integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{Yes}} || ??? || {{Yes}} || || {{Opt}} || {{No}} || || {{Yes}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#BOOTABLE|BOOTABLE]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#CATEGORY|CATEGORY]] || utf-8 || 4 (0x4) || 3 (0x3) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} | ||
|- | |- | ||
| [[# | | [[#CONTENT_ID|CONTENT_ID]] || utf-8 || 48 (0x30) || 37 (0x25) || {{Opt}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#DETAIL|DETAIL]] || utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Opt}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#LANG|LANG]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#LICENSE|LICENSE]] || utf-8 || 512 (0x200) || variable || {{Yes}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#NP_COMMUNICATION_ID|NP_COMMUNICATION_ID]] || utf-8 || 16 (0x10) || 13 (0xD) || {{Opt}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| | |||
|- | |- | ||
| [[# | | [[#NPCOMMID|NPCOMMID]] || utf-8 || 16 (0x10) || 12 (0xC) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#PADDING|PADDING]] || 0400 || 8 (0x8) || 0 (0x0) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#PARAMS|PARAMS]] || 0400 || 1024 (0x400) || 1024 (0x400) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#PARAMS2|PARAMS2]] || 0400 || 12 (0xC) || 12 (0xC) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#PARENTAL_LEVEL_x|PARENTAL_LEVEL_'''x''']] || integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#PARENTAL_LEVEL|PARENTAL_LEVEL]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{No}} || ??? || {{Yes}} || || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#PARENTALLEVEL|PARENTALLEVEL]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{Yes}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#PS3_SYSTEM_VER|PS3_SYSTEM_VER]] || utf-8 || 8 (0x8) || 8 (0x8) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{Opt}} || {{Yes}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#REGION_DENY|REGION_DENY]] || integer || 4 (0x4) || 4 (0x4) || {{Opt}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{Opt}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#RESOLUTION|RESOLUTION]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{Yes}} || {{ | |||
|- | |- | ||
| [[# | | [[#SAVEDATA_DETAIL|SAVEDATA_DETAIL]] || utf-8 || 1024 (0x400) || variable || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}} | ||
| {{No}} || {{ | |||
|- | |- | ||
| [[# | | [[#SAVEDATA_DIRECTORY|SAVEDATA_DIRECTORY]] || utf-8 || 64 (0x40) || variable || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{Yes}} || || {{No}} | ||
| ? | |||
|- | |- | ||
| [[# | | [[#SAVEDATA_FILE_LIST|SAVEDATA_FILE_LIST]] || 0400 || 3168 (0xC60) || 3168 (0xC60) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#SAVEDATA_LIST_PARAM|SAVEDATA_LIST_PARAM]] || utf-8 || 8 (0x8) || variable || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Yes}} || {{No}} || || {{No}} | ||
| | |||
|- | |- | ||
| [[# | | [[#SAVEDATA_PARAMS|SAVEDATA_PARAMS]] || 0400 || 128 (0x80) || 128 (0x80) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#SAVEDATA_TITLE|SAVEDATA_TITLE]] || utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{Yes}} || || {{No}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#SOUND_FORMAT|SOUND_FORMAT]] || integer || 4 (0x4) || 4 (0x4) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#SOURCE|SOURCE]] || integer || 4 (0x4) || 4 (0x4) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#SUB_TITLE|SUB_TITLE]] || utf-8 || 128 (0x80) || variable || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{Opt}} || {{No}} || || {{No}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#TARGET_APP_VER|TARGET_APP_VER]] || utf-8 || 8 (0x8) || 6 (0x6) || {{No}} || {{No}} || ??? || {{No}} || || {{Opt}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#TITLE|TITLE]] || utf-8 || 128 (0x80) || variable || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{Yes}} || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} | ||
| | |||
|- | |- | ||
| [[# | | [[#TITLE_ID|TITLE_ID]] || utf-8 || 16 (0x10) || 10 (0xA) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} || {{No}} || || {{No}} | ||
| {{Yes}} || {{Yes}} || {{Yes}} || | |||
|- | |- | ||
| [[# | | [[#TITLE_xx|TITLE_'''xx''']] || utf-8 || 128 (0x80) || variable || {{Opt}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{No}} | ||
| {{ | |||
|- | |- | ||
| [[# | | [[#TITLEID0xx|TITLEID0'''xx''']] || utf-8 || 16 (0x10) || 9 (0x9) || {{No}} || {{No}} || ??? || {{No}} || || {{No}} || {{No}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{No}} || {{No}} || | |||
|- | |- | ||
| [[# | | [[#VERSION|VERSION]] || utf-8 || 8 (0x8) || 6 (0x6) || {{Yes}} || {{Yes}} || ??? || {{Yes}} || || {{Yes}} || {{Yes}} || || {{No}} || {{No}} || || {{Yes}} | ||
| {{ | |||
|- | |- | ||
|} | |} | ||
==Parameters Descriptions== | ==Parameters Descriptions== | ||
===ACCOUNT_ID=== | ===ACCOUNT_ID=== | ||
Data_Type: utf-8 Speciall Mode | |||
Data_Size_Total: 16 bytes | |||
Data_Size_Used: 16 bytes | |||
Used by: Save Data | |||
PSN User Account stored as ''' | PSN User Account stored as '''utf-8 Speciall Mode'''. The string is compared with the info contained in [[XRegistry.sys]]. The comparison can only return two values, right, or wrong, if the comparison returns right the SaveData is valid. | ||
Filled with zeroes when the user has not been registered in PSN. | |||
===ACCOUNTID=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 16 bytes | |||
Data_Size_Used: 16 bytes | |||
Used by: Trophy | |||
Same string than ACCOUNT_ID but stored as '''utf-8''' because the system uses it for normal functions (in this case is sent to PSN to synchronize the trophy data with your online account). | |||
===ANALOG_MODE=== | |||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: PS1 Game | |||
Enables compatibility with the analog sticks of the Dualshock Controller. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Little Endian !! Big Endian !! Flags (Binary) !! Description | ||
|- | |||
| 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Disabled | |||
|- | |- | ||
| | | 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Enabled | ||
|- | |- | ||
|} | |} | ||
===APP_VER=== | ===APP_VER=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 8 bytes | |||
Data_Size_Used: 6 bytes | |||
Used by: HDD Game, Minis Game, Game Data | |||
Application version (or patch version). Not used in old games. | Application version (or patch version). Not used in old games. | ||
Line 331: | Line 294: | ||
*Cummulative Patches | *Cummulative Patches | ||
Game patches uses a bigger '''APP_VER''' as '''01.01''' for the first patch, but keeping the same [[#TITLE_ID|TITLE_ID]] from the | Game patches uses a bigger '''APP_VER''' as '''01.01''' for the first patch, but keeping the same [[#TITLE_ID|TITLE_ID]] from the originall release. | ||
===ATTRIBUTE=== | ===ATTRIBUTE=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game, PS1 Game, Minis Game, Game Data, Save Data | |||
Contains a maximun of 32 flags that can be turned on/off to activate/deactivate | Contains a maximun of 32 flags that can be turned on/off to activate/deactivate speciall boot modes and features of the content. | ||
Values are stored in "Little Endian" format inside the SFO, to represent the whole | Values are stored in "Little Endian" format inside the SFO, to represent the whole list in a "human readable" format is needed to convert them to "Big Endian" and then to "Binary". | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Little Endian !! Big Endian !! Flags (Binary) !! Description | ||
|- | |- | ||
| | | '''01''' 00 00 00 || 00 00 00 '''01''' || 00000000 00000000 00000000 00000001 || '''PSP''' [[Remote_Play|'''Remote Play''']] in MPEG4 SP/ATRAC | ||
|- | |- | ||
| | | '''02''' 00 00 00 || 00 00 00 '''02''' || 00000000 00000000 00000000 00000010 || [[http://manuals.playstation.net/document/en/ps3/current/game/copypsp.html '''PSP Export''']] | ||
|- | |- | ||
| | | '''04''' 00 00 00 || 00 00 00 '''04''' || 00000000 00000000 00000000 00000100 || '''PSP''' [[Remote_Play|'''Remote Play''']] in MPEG4 AVC/AAC | ||
|- | |- | ||
| | | '''08''' 00 00 00 || 00 00 00 '''08''' || 00000000 00000000 00000000 00001000 || [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] Forced Enabled | ||
|- | |- | ||
| | | '''10''' 00 00 00 || 00 00 00 '''10''' || 00000000 00000000 00000000 00010000 || [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] Disabled | ||
|- | |- | ||
| | | '''20''' 00 00 00 || 00 00 00 '''20''' || 00000000 00000000 00000000 00100000 || [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] Background Music | ||
|- | |- | ||
| | | '''40''' 00 00 00 || 00 00 00 '''40''' || 00000000 00000000 00000000 01000000 || Unknown ! | ||
|- | |- | ||
| | | '''80''' 00 00 00 || 00 00 00 '''80''' || 00000000 00000000 00000000 10000000 || '''PSvita''' [[Remote_Play|'''Remote Play''']] in high quality ? (used by torne v3.52 patch) | ||
|- | |- | ||
! !! !! !! | |||
|- | |- | ||
| | | 00 '''01''' 00 00 || 00 00 '''01''' 00 || 00000000 00000000 00000001 00000000 || '''Move Controller''' (warning screen) | ||
|- | |- | ||
| | | 00 '''02''' 00 00 || 00 00 '''02''' 00 || 00000000 00000000 00000010 00000000 || '''Navigation Controller''' (warning screen) | ||
|- | |- | ||
| | | 00 '''04''' 00 00 || 00 00 '''04''' 00 || 00000000 00000000 00000100 00000000 || '''Eye Cam''' (warning screen) | ||
|- | |- | ||
| | | 00 '''08''' 00 00 || 00 00 '''08''' 00 || 00000000 00000000 00001000 00000000 || '''Calibration''' (notification screen) | ||
|- | |- | ||
| | | 00 '''10''' 00 00 || 00 00 '''10''' 00 || 00000000 00000000 00010000 00000000 || '''3D''' (warning screen) | ||
|- | |- | ||
| | | 00 '''20''' 00 00 || 00 00 '''20''' 00 || 00000000 00000000 00100000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 '''40''' 00 00 || 00 00 '''40''' 00 || 00000000 00000000 01000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 '''80''' 00 00 || 00 00 '''80''' 00 || 00000000 00000000 10000000 00000000 || Not used yet ? | ||
|- | |- | ||
! !! !! !! | |||
|- | |- | ||
| | | 00 00 '''01''' 00 || 00 '''01''' 00 00 || 00000000 00000001 00000000 00000000 || '''Install Disc''' (containing only Install Packages) | ||
|- | |- | ||
| | | 00 00 '''02''' 00 || 00 '''02''' 00 00 || 00000000 00000010 00000000 00000000 || '''Install Packages''' (from folders PKGDIR or INSDIR in Discs) | ||
|- | |- | ||
| | | 00 00 '''04''' 00 || 00 '''04''' 00 00 || 00000000 00000100 00000000 00000000 || Overwrite [[#RESOLUTION|RESOLUTION]], [[#SOUND_FORMAT|SOUND_FORMAT]], '''PSP''' [[Remote_Play|'''Remote Play''']] (Patches) | ||
|- | |- | ||
| | | 00 00 '''08''' 00 || 00 '''08''' 00 00 || 00000000 00001000 00000000 00000000 || '''Game Purchase''' Enabled | ||
|- | |- | ||
| | | 00 00 '''10''' 00 || 00 '''10''' 00 00 || 00000000 00010000 00000000 00000000 || Overwrite [[http://www.viddler.com/simple/1ffb1ce3/ '''XMB In-Game''']] (Patches) | ||
|- | |- | ||
| | | 00 00 '''20''' 00 || 00 '''20''' 00 00 || 00000000 00100000 00000000 00000000 || Overwrite '''Move Controller warning screen''' (Patches) | ||
|- | |- | ||
| | | 00 00 '''40''' 00 || 00 '''40''' 00 00 || 00000000 01000000 00000000 00000000 || Overwrite '''3D warning screen''' (Patches) | ||
|- | |- | ||
| | | 00 00 '''80''' 00 || 00 '''80''' 00 00 || 00000000 10000000 00000000 00000000 || '''Move Controller''' Compatible | ||
|- | |- | ||
! !! !! !! | |||
|- | |- | ||
| | | 00 00 00 '''01''' || '''01''' 00 00 00 || 00000001 00000000 00000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 00 00 '''02''' || '''02''' 00 00 00 || 00000010 00000000 00000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 00 00 '''04''' || '''04''' 00 00 00 || 00000100 00000000 00000000 00000000 || Not used yet ? activated in category X4 ? | ||
|- | |- | ||
| | | 00 00 00 '''08''' || '''08''' 00 00 00 || 00001000 00000000 00000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 00 00 '''10''' || '''10''' 00 00 00 || 00010000 00000000 00000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 00 00 '''20''' || '''20''' 00 00 00 || 00100000 00000000 00000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 00 00 '''40''' || '''40''' 00 00 00 || 01000000 00000000 00000000 00000000 || Not used yet ? | ||
|- | |- | ||
| | | 00 00 00 '''80''' || '''80''' 00 00 00 || 10000000 00000000 00000000 00000000 || Not used yet ? | ||
|} | |||
Flags can be used in groups, to remove or add a flag from the group is needed to make an addition or a substraction of the values. | |||
Some examples. If you find a game with a flag in his ATTRIBUTE that is not yet in the table, please add it | |||
{| class="wikitable" | |||
|- | |- | ||
! Little Endian !! Big Endian !! Flags (Binary ) !! Title !! Flags !! Description | |||
|- | |- | ||
| | | 05 17 80 00 || 00 80 17 05 || 00000000 10000000 00010111 00000101 || killzone 3 || 7 || Move compatible + 3D screen + 3 move screens + 2 Remote Play modes | ||
|- | |- | ||
| | | 20 00 02 00 || 00 02 00 20 || 00000000 00000010 00000000 00100000 || Dead Space 2 || 2 || Installable Packages + "XMB in-game" | ||
|- | |- | ||
| | | 85 00 00 00 || 00 00 00 85 || 00000000 00000000 00000000 10000101 || Torne v3.52 || 3 || 2 PSP Remote Play modes + 1 PSvita remote play mode ? | ||
|} | |} | ||
| | |||
====ATTRIBUTE Flags Descriptions==== | |||
*'''PSP Remote Play''' | |||
The format "MPEG4 AVC/AAC" only works when the other format "MPEG4 SP/ATRAC" is activated | |||
*'''PSP Export''' | |||
Allows the copy of the content to a PSP by pressing triangle over his icon in XMB. Used by "PS1 Game" and "Minis Game" | |||
*'''"XMB In-Game" Forced Enable''' | |||
[[http://www.blogcdn.com/www.engadget.com/media/2008/06/ps3-ingame-xmb-2.40-clock.jpg XMB In-Game (photo)]] was introduced in firmware 2.40, from now on i will call this menu "XMB In-Game v2" and the [[http://www.blogcdn.com/www.joystiq.com/media/2008/01/ps3-in-game-menu.jpg old menu (photo)]] "XMB In-Game v1". Games released before firmware 2.40 uses "XMB In-Game v1" even when launched in higher firmwares. This flag activates "XMB In-Game v2" for this old games, it has no effect in games released after 2.40. | |||
*'''"XMB In-Game" Disabled''' | |||
Replaces "XMB In-Game v2" by "XMB In-Game v1", usefull to free ram and to improve the loading time of the menu. | |||
*'''"XMB In-Game" Background Music''' | |||
Allows to pause the game (with the PS button), play your own music from the files stored in your HDD, and return to the game with your own music playing. | |||
*'''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 missconfigured). | |||
*'''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". | |||
*'''Install Disc''' | |||
Hides the primary icon of the disc (only the secondary icon is displayed), used when there is no bootable content on the "main" path PS3_GAME/USRDIR. | |||
*'''Install Packages''' | |||
Activates the subfolder structures PS3_GAME/PKGDIR & PS3_GAME/INSDIR by loading another SFO from this subfolders (the system loads the "main" SFO from PS3_GAME, and then "jumps" to the "secondary" SFO), everytime one of this SFO's inside substructures/subfolders is loaded... a new subicon/mount point is loaded in XMB | |||
For more info about this blu-ray flags/substructures see the "fake disc structure" examples in [[#CATEGORY|CATEGORY]] | |||
*'''Game Purchase Enabled''' | |||
Activates the option to purchase the content by pressing triangle over his icon in XMB. is directly related with [[#CONTENT_ID|CONTENT_ID]]. When the content is purchased his CONTENT_ID is checked online to obtain the license. After the license is retrieved the game loads another PARAM.SFO from a subfolder with different values (e.g. TITLE changes from "demo" to "full") and different [[Content_Information_Files|Content Informations Files]] | |||
*'''Move Controller Compatible''' | |||
Enables support for the Move Controller (Navigation Controller and Eye Cam doesn't have/needs a flag) | |||
*'''Unknown flags''' | |||
Few of them can be for PS vita for similar functions such as psp remote play or psp export (but even more restricted) are possible. | |||
Boot logo disable? (not used anymore) | |||
Chat voice? (not used anymore) | |||
====ATTRIBUTE in SaveData==== | |||
The only two valid values of ATTRIBUTE for SaveData ('''SD''') are a 0 (speciall function deactivated) or a 1 (speciall function activated). | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Little Endian !! Big Endian !! Flags (Binary) !! Description | ||
|- | |- | ||
| | | 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Copy Allowed | ||
|- | |- | ||
| | | 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Copy Protected | ||
|- | |- | ||
| | |} | ||
====ATTRIBUTE in Subfolders==== | |||
The only two valid values of ATTRIBUTE for subfolder structures used in Discs ('''TR''', '''VR''', '''DP''', '''XR''') are a 0 (speciall function deactivated) or a 1 (speciall function activated). | |||
{| class="wikitable" | |||
|- | |- | ||
! Little Endian !! Big Endian !! Flags (Binary) !! Description | |||
|- | |- | ||
| | | 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Subfolder Deactivated | ||
|- | |- | ||
| | | 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Subfolder Activated | ||
|- | |- | ||
| | |} | ||
===BOOTABLE=== | |||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game, PS1 Game, Minis Game | |||
If the content is bootable or not, useful when you are going to make a data pkg. | |||
{| class="wikitable" | |||
|- | |- | ||
! Little Endian !! Big Endian !! Flags (Binary) !! Description | |||
|- | |- | ||
| | | 00 00 00 00 || 00 00 00 00 || 00000000 00000000 00000000 00000000 || Not bootable | ||
|- | |- | ||
| | | 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || Bootable | ||
|- | |- | ||
| | |} | ||
===CATEGORY=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 3 bytes | |||
Used by: All but Trophy | |||
====CATEGORY For HDD contents==== | |||
This table represent the columns where the content is placed in the [[XMB]] and the CATEGORY asociated. | |||
{| class="wikitable" | |||
|- | |- | ||
! Photo !! Music !! Video !! TV !! Game !! Network !! PlayStation Network !! Content Examples !! Notes | |||
|- | |- | ||
| | | || || || || GD || || || Game Data || Game patches, and Game DLC | ||
|- | |- | ||
| | | || || || || 2D || || || [[http://manuals.playstation.net/document/en/ps3/current/game/hddinstall.html PS2 Data]] || Special patches/data for PS2 Emulator | ||
|- | |- | ||
| | | || || || || SD || || || PS3 Save Data || PS3 Game Saves | ||
|- | |- | ||
| | | || || || || 2P || || || PS2 Save Data || PS2 Game Saves (for PS2 games converted for use on all ps3 models) | ||
|- | |- | ||
| | | || || || || MS || || || [[Game_Saves#Minis_Saved_Games|Minis Save Data]] || Minis Game Saves | ||
|- | |- | ||
| | | || || || || ♦ || || || Trophy Data || Trophies (doesn't have a CATEGORY) | ||
|- | |- | ||
| | | | ||
|- | |- | ||
| | | AP || || || || || || || PlayMemories || | ||
|- | |- | ||
| | | || AM || || || || || || Qriocity Music Unlimited || | ||
|- | |- | ||
| | | || || AV || || || || || Netflix, LoveFilm || | ||
|- | |- | ||
| | | || || || AT || || || || QOOK TV, Now TV, Torne || Column hidden when no installed content | ||
|- | |- | ||
| | | || || || || || CB || || Life with PlayStation, Folding@home | ||
|- | |- | ||
| | | || || || || || || HM || PlayStation Home || | ||
|- | |- | ||
| | | || || || || HG || || || PS3 Game || | ||
|- | |- | ||
| | | || || || || 1P || || || PS1 Game || | ||
|- | |- | ||
| | | || || || || 2G || || || PS2 Game || | ||
|- | |- | ||
| | | || || || || MN || || || Minis Game || | ||
|- | |- | ||
| | | | ||
|- | |- | ||
| | | || || || || PP || || || PSP Game || Not bootable, but can be copyed to a PSP | ||
|- | |- | ||
| | | || || || || VT ? || || || PSvita Game || Not bootable, but can be copyed to a PSvita | ||
|- | |- | ||
|} | |} | ||
*'''Unknown, untested, not listed yet, or speculation''' | |||
X0 - '''Unknown''', related to Game patch overwrite atribute: move screen and 3D screen ? | |||
X1 - '''Unknown''' | |||
X2 - '''Unknown''' | |||
''' | X3 - '''Unknown''' | ||
X4 - '''Unknown''', same as X0 + 1 unknown flag ? | |||
X5 - '''Unknown''' | |||
''' | X6 - '''Unknown''' | ||
X7 - '''Unknown''' | |||
XI - '''Unknown''', related to another disc structure, related with folders EX_GAME & EX_VIDEO ? | |||
VT - '''Speculation''', refered as "VT" in one his related PS3 packages: NP0001-NPXS10002_00-VTSTORELIVEAREA0.pkg | |||
2P - '''Speculation''', Probably not correct, but moved here as speculation because there are 2 different "PS2 game" installable content. The ones released from PSN as "PS2 Classic". And a few real "PS2 DVD discs" that can be installed in the HDD. Chronologically the implementation of the "DVD install process" is severall years older and the files are installed to a '''speciall partition''' of the HDD. Its not clear yet how sony managed both types and even if the XMB displays them as different. | |||
2G - '''Confirmed''', but the tests was done with frankenstein SFO's and no more files, when trying to boot the game there is an interesting message: ''The game partition for this game cannot be created because the installed game is corrupted. To perform this operation, delete the game, and then reinstall the game using the disc.'' | |||
====CATEGORY For Disc contents==== | |||
This table represent the columns where the content is placed in the [[XMB]] and the CATEGORY asociated. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Photo !! Music !! Video !! TV !! Game !! Network !! PlayStation Network !! Content Examples !! Notes | ||
|- | |||
| || || || || DG || || || Disc Game || dev_bdvd/TITLE_ID/PS3_GAME | |||
|- | |||
| || || || || DP (IP) || || || Disc Packages || dev_bdvd/TITLE_ID/PS3_GAME/PKGDIR | |||
|- | |- | ||
| || || || || AR || || || Disc Patches, and DLC || dev_bdvd/TITLE_ID/PS3_GAME/INSDIR | |||
|- | |- | ||
| | | || || || || XR (IP, TI, VI) || || || Disc Packages, Themes, and Videos || dev_bdvd/TITLE_ID/PS3_EXTRA | ||
|- | |- | ||
| | | || || || || TR || || || Disc Themes || dev_bdvd/TITLE_ID/PS3_CONTENT/THEMEDIR | ||
|- | |- | ||
| | | || || VR (VI) || || || || || Disc Videos || dev_bdvd/TITLE_ID/PS3_CONTENT/VIDEODIR | ||
|- | |- | ||
| || || DM || || || || || Disc Movie || dev_bdvd/TITLE_ID/PS3_VPRM | |||
|} | |} | ||
''' | These are "fake Blu-Ray discs" with the minimall parameters inside SFO's/SFX's needed for the structure to work, and the needed '''HYBRID_FLAG''''s inside the main [[PS3_DISC.SFB]]. All the files are 100% hand made from scratch and tested. | ||
'''Game discs in folder PS3_GAME''' | |||
The basic structure of a game disc. | |||
0GAM00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0GAM00001) | |||
|--- PS3_GAME | |||
|--- PARAM.SFO <--- CATEGORY (DG), TITLE_ID (0GAM00001) | |||
|--- USRDIR | |||
|--- EBOOT.BIN | |||
'''Movie discs in folder PS3_VPRM''' | |||
This is the part of a Blue-Ray movie structure related with the PS3 system... the rest are the standard folders/files of a Blue-Ray movie and is not needed to be explained here. | |||
0MOV00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (v), TITLE_ID (blank) | |||
|--- PS3_VPRM | |||
|--- PARAM.SFO <--- CATEGORY (DM) | |||
'''Game discs in folder PS3_CONTENT''' | |||
Themes folder is mounted as a "secndary icon" under the "main game icon". Doesn't need/admit an SFO/SFX, the icon contained in the theme is resized and displayed inside a bubble, also the '''TITLE''' of the Theme is used for the content. | |||
0CONT00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (TV), TITLE_ID (0CONT00001) | |||
|--- PS3_CONTENT | |||
|--- THEMEDIR | |||
| |--- PARAM.SFO <--- ATTRIBUTE (01000000), CATEGORY (TR), TITLE (Themes) | |||
| |--- D000 | |||
| |--- DATA001.P3T | |||
| |--- DATA002.P3T | |||
|--- VIDEODIR | |||
|--- PARAM.SFO <--- ATTRIBUTE (01000000), CATEGORY (VR), TITLE (Videos) | |||
|--- D001 | |||
| |--- PARAM.SFO <--- CATEGORY (VI), TITLE (Video 1) | |||
| |--- DATA000.MP4 | |||
|--- D002 | |||
|--- PARAM.SFO <--- CATEGORY (VI), TITLE (Video 2) | |||
|--- DATA000.MP4 | |||
''' | '''Game discs in folder PS3_GAME/PKGDIR''' | ||
Can be considered an "expansion" of the basic blu-ray structure of a game disc, activated by the flag '''00000200''' in the [[#ATTRIBUTE|ATTRIBUTE]] of the PARAM.SFO inside PS3_GAME. Packages are displayed in subfolders inside bubbles with his icons resized. | |||
When the packages are installed, the file PARAM.SFO from PKGDIR is renamed to DISC.SFO and copyed inside the installation folder with the purpose of ??? (unknown, his info is not displayed in XMB) | |||
0PKG00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0PKG00001) | |||
|--- PS3_GAME | |||
|--- PARAM.SFO <--- ATTRIBUTE (00000200), CATEGORY (DG) | |||
|--- PKGDIR | |||
|--- PARAM.SFO <--- ATTRIBUTE (0100000), CATEGORY (DP), TITLE (Packages) | |||
|--- PKG01 | |||
| |--- PARAM.SFO <--- CATEGORY (IP), TITLE (Package 1) | |||
| |--- INSTALL.PKG | |||
|--- PKG02 | |||
|--- PARAM.SFO <--- CATEGORY (IP), TITLE (Package 2) | |||
|--- INSTALL.PKG | |||
'''Game discs in folder PS3_GAME/INSDIR''' | |||
Can be considered an "expansion" of the basic blu-ray structure of a game disc, activated by the flag '''00000200''' in the [[#ATTRIBUTE|ATTRIBUTE]] of the PARAM.SFO inside PS3_GAME | |||
Used for "game patches" and "game expansion packs". The PARAM.SFO inside "'''INSDIR'''" contains the "'''APP_VER'''" of the bigger patch of the folder. Note that "download content" packages doesnt contains "'''APP_VER'''" so his installation doesnt updates the main game. For this reason "'''APP_VER'''" is only related with patches and is only needed when there are patches in the foler. | |||
0INS00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0INS00001) | |||
|--- PS3_GAME | |||
|--- PARAM.SFO <--- ATTRIBUTE (00000200), CATEGORY (DG) | |||
|--- INSDIR | |||
|--- PARAM.SFO <--- APP_VER (01.02), CATEGORY (AR) | |||
|--- DATA000.PKG | |||
|--- DATA001.PKG | |||
'''Game discs in folder PS3_EXTRA''' | |||
Icon sizes is the same used in "PStore news" menu ([[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 Used in BLJM60372 Biohazard revival | |||
0EXT00001 | |||
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0EXT00001) | |||
|--- PS3_GAME | |||
| |--- PARAM.SFO <--- CATEGORY (DG) | |||
|--- PS3_EXTRA | |||
|--- PARAM.SFO <--- ATTRIBUTE (0100000), CATEGORY (XR), TITLE (Extras) | |||
|--- D001 | |||
| |--- PARAM.SFX <--- CATEGORY (IP), TITLE (Package 1) | |||
| |--- DATA000.PKG | |||
|--- D002 | |||
| |--- PARAM.SFX <--- CATEGORY (IP), TITLE (Package 2) | |||
| |--- DATA000.PKG | |||
|--- D003 | |||
| |--- PARAM.SFX <--- CATEGORY (VI), TITLE (Video 1) | |||
| |--- DATA000.MP4 | |||
|--- D004 | |||
| |--- PARAM.SFX <--- CATEGORY (VI), TITLE (Video 2) | |||
| |--- DATA000.MP4 | |||
|--- D005 | |||
| |--- PARAM.SFX <--- CATEGORY (TI), TITLE (Theme 1) | |||
| |--- DATA000.P3T | |||
|--- D006 | |||
|--- PARAM.SFX <--- CATEGORY (TI), TITLE (Theme 2) | |||
|--- DATA000.P3T | |||
You can download this structures to experiment with them or to look how SFO's SFX's are built ---> [[http://www.sendspace.com/file/o95vde| Blu-Ray fake discs by sandungas]] | |||
===CONTENT_ID=== | ===CONTENT_ID=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 48 bytes | |||
Data_Size_Used: 37 bytes | |||
Used by: HDD Game | |||
Content Identificator for Gamepurchase feature. Used in games that runs in "demo mode" and can be purchased (unlocked) by pressing triangle over | 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 718: | ||
===DETAIL=== | ===DETAIL=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 1024 bytes | |||
Data_Size_Used: variable | |||
Used by: Save Data | |||
Text lines displayed under [[#SUBTITLE|SUBTITLE]] text. Used only for SaveData to store long texts from the game like the name of the level you was playing, the equipment of your character (in a RPG), or the car you was driving (in a race simulator), etc... | Text lines displayed under [[#SUBTITLE|SUBTITLE]] text. Used only for SaveData to store long texts from the game like the name of the level you was playing, the equipment of your character (in a RPG), or the car you was driving (in a race simulator), etc... | ||
Line 723: | Line 727: | ||
When the text is too long to fit in the screen it scrolls vertically from bottom to top, if the '''Data_Used_Size''' is not correct this scroll doesn't flow properly. | When the text is too long to fit in the screen it scrolls vertically from bottom to top, if the '''Data_Used_Size''' is not correct this scroll doesn't flow properly. | ||
To displace the text to the next row is used the speciall byte "'''0A'''", this way it can be done long messages with severall horizontall lines. | |||
===LANG=== | ===LANG=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: Trophy | |||
Language used when the "trophy config file" [[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=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 512 bytes | |||
Data_Size_Used: variable | |||
Used by: HDD Game | |||
License text of the content, hidden by the system in actual firmwares | License text of the content, hidden by the system in actual firmwares | ||
=== NP_COMMUNICATION_ID === | ===NP_COMMUNICATION_ID=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 16 bytes | |||
Data_Size_Used: 13 bytes | |||
Used by: HDD Game | |||
Name of the folder containing the trophy installer (TROPHY.TRP) | |||
The format is | The format is NPWRxxyyy_zz (e.g. NPWR00001_00) | ||
===NPCOMMID=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 16 bytes | |||
Data_Size_Used: 12 bytes | |||
Used by: Trophy | |||
Same than NP_COMMUNICATION_ID but with a ''' | Same than NP_COMMUNICATION_ID but with a '''Data_Size_Used''' of 12 bytes | ||
===PADDING=== | ===PADDING=== | ||
Data_Type: utf-8 Speciall Mode | |||
Data_Size_Total: 8 bytes | |||
Data_Size_Used: 0 bytes | |||
Used by: Trophy | |||
Unknown | Unknown | ||
===PARAMS=== | ===PARAMS=== | ||
Data_Type: utf-8 Speciall Mode | |||
Data_Size_Total: 1024 bytes | |||
Data_Size_Used: 1024 bytes | |||
Used by: Save Data | |||
This parameter is intented to store user (and console?) specific data. Is the only one known parameter that contains an internall structure with severall strings, and his size is huge for being an integer. | |||
{| 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 identificator number from [[XRegistry.sys]] | ||
|- | |- | ||
| 0x001C || 16 (0x10) || FEDCBA9876543210FEDCBA9876543210 || '''psid''' || More info: [[PSID]] | |||
| | |||
|- | |- | ||
| | | 0x002C || 4 (0x4) || 01000000 || '''userid''' || User identificator number from [[XRegistry.sys]] | ||
|- | |- | ||
| | | 0x0030 || 16 (0x10) || 0123456789ABCDEF0123456789ABCDEF || '''accountid''' || PSN account identificator 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 two times in the file. | ||
===PARAMS2=== | ===PARAMS2=== | ||
Data_Type: utf-8 Speciall Mode | |||
Data_Size_Total: 12 bytes | |||
Data_Size_Used: 12 bytes | |||
Used by: Save Data | |||
Unknown, usually filled with zeroes | Unknown, usually filled with zeroes | ||
=== | ===PARENTAL_LEVEL_x=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game | |||
Used to restrict the content to a specific | 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 826: | ||
{| 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 856: | ||
PARENTAL_LEVEL_K = 0B000000 (level 11) | PARENTAL_LEVEL_K = 0B000000 (level 11) | ||
=== | ===PARENTAL_LEVEL=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game, Minis Game, Game Data, Save Data, Minis Save Data | |||
Is an scale to rate the content for the different users based in his user profile settings and internationall rating systems as: [[http://en.wikipedia.org/wiki/Pan_European_Game_Information | PEGI]], [[http://en.wikipedia.org/wiki/Entertainment_Software_Rating_Board | ESRB]], [[http://en.wikipedia.org/wiki/Computer_Entertainment_Rating_Organization | CERO]], etc... | |||
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" | |||
|- | |||
! Little Endian !! Big Endian !! Decimal !! Rating | |||
|- | |||
| 00 00 00 00 || 00 00 00 00 || 0 || Disabled | |||
|- | |||
| 01 00 00 00 || 00 00 00 01 || 1 || Lower restriction | |||
|- | |||
| 02 00 00 00 || 00 00 00 02 || 2 || | |||
|- | |||
| 03 00 00 00 || 00 00 00 03 || 3 || | |||
|- | |||
| 04 00 00 00 || 00 00 00 04 || 4 || | |||
|- | |||
| 05 00 00 00 || 00 00 00 05 || 5 || | |||
|- | |||
| 06 00 00 00 || 00 00 00 06 || 6 || | |||
|- | |||
| 07 00 00 00 || 00 00 00 07 || 7 || | |||
|- | |||
| 08 00 00 00 || 00 00 00 08 || 8 || | |||
|- | |||
| 09 00 00 00 || 00 00 00 09 || 9 || | |||
|- | |||
| 0A 00 00 00 || 00 00 00 0A || 10 || | |||
|- | |||
| 0B 00 00 00 || 00 00 00 0B || 11 || Higher restriction | |||
|- | |||
|} | |||
=== | ===PARENTALLEVEL=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: PS1 Game, Trophy | |||
Same than PARENTAL_LEVEL | |||
===PS3_SYSTEM_VER=== | ===PS3_SYSTEM_VER=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 8 bytes | |||
Data_Size_Used: 8 bytes | |||
Used by: HDD Game, PS1 Game, Minis Game, Game Data | |||
Minimum PS3 [[System_Software|System Software]] required for the content to be bootable. | Minimum PS3 [[System_Software|System Software]] required for the content to be bootable. | ||
Line 949: | Line 918: | ||
===REGION_DENY=== | ===REGION_DENY=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game | |||
There are 12 valid [[Regions]], each region has a position assigned in the binary string, marked with an "'''1'''" when the region is prohibited, | Regional restrictions for the content. | ||
There are 12 valid [[Regions]], each region has a position assigned in the binary string, this positions are marked with an "'''1'''" when the region is prohibited, and a "'''0'''". when is allowed. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Little Endian !! Big Endian !! Flags (Binary) !! Region Nº !! Allowed Region !! Notes | ||
|- | |- | ||
| | | FE FF FF FF || FF FF FF FE || 11111111 11111111 11111111 11111110 || 0 || Japan || | ||
|- | |- | ||
| | | FD FF FF FF || FF FF FF FD || 11111111 11111111 11111111 11111101 || 1 || US, Canada (North America) || Used in Netflix | ||
|- | |- | ||
| | | FB FF FF FF || FF FF FF FB || 11111111 11111111 11111111 11111011 || 2 || Europe / Middle East / Africa || | ||
|- | |- | ||
| | | F7 FF FF FF || FF FF FF F7 || 11111111 11111111 11111111 11110111 || 3 || Korea (South Korea) || | ||
|- | |- | ||
| | | EF FF FF FF || FF FF FF EF || 11111111 11111111 11111111 11101111 || 4 || U.K. / Ireland || | ||
|- | |- | ||
| | | DF FF FF FF || FF FF FF DF || 11111111 11111111 11111111 11011111 || 5 || Mexico, Central America, South America || | ||
|- | |- | ||
| | | BF FF FF FF || FF FF FF BF || 11111111 11111111 11111111 10111111 || 6 || Australia / New Zealand (Oceania) || | ||
|- | |- | ||
| | | 7F FF FF FF || FF FF FF 7F || 11111111 11111111 11111111 01111111 || 7 || Singapore / Malaysia (Southeast Asia) || | ||
|- | |- | ||
| | | FF FE FF FF || FF FF FE FF || 11111111 11111111 11111110 11111111 || 8 || Taiwan || | ||
|- | |- | ||
| | | FF FD FF FF || FF FF FD FF || 11111111 11111111 11111101 11111111 || 9 || Russia, Ukraine, India, Central Asia || | ||
|- | |- | ||
| | | FF FB FF FF || FF FF FB FF || 11111111 11111111 11111011 11111111 || 10 || China || | ||
|- | |- | ||
| | | FF F7 FF FF || FF FF F7 FF || 11111111 11111111 11110111 11111111 || 11 || Hong Kong || | ||
|- | |- | ||
|} | |} | ||
[[http://ps3.mediagen.fr/badregion-4_0900051787.jpg | Photo]] of a DEX with the the text: '''Allowed Region=1-11''' (note region 0=Japan is not allowed). | |||
===RESOLUTION=== | ===RESOLUTION=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game, PS1 Game, Minis Game | |||
TV video modes supported by the content. | TV video modes supported by the content. | ||
When there are | When there are severall flags activated the PS3 will use the one with higher quality supported by the TV. | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Little Endian !! Big Endian !! Flags (Binary) !! Description | ||
|- | |- | ||
| | | 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || 480 (4:3) | ||
|- | |- | ||
| | | 02 00 00 00 || 00 00 00 02 || 00000000 00000000 00000000 00000010 || 576 (4:3) | ||
|- | |- | ||
| | | 04 00 00 00 || 00 00 00 04 || 00000000 00000000 00000000 00000100 || 720 (16:9) | ||
|- | |- | ||
| | | 08 00 00 00 || 00 00 00 08 || 00000000 00000000 00000000 00001000 || 1080 (16:9) | ||
|- | |- | ||
| | | 10 00 00 00 || 00 00 00 10 || 00000000 00000000 00000000 00010000 || 480 (16:9) | ||
|- | |- | ||
| | | 20 00 00 00 || 00 00 00 20 || 00000000 00000000 00000000 00100000 || 576 (16:9) | ||
|- | |- | ||
| | | | ||
|- | |- | ||
| | | 3F 00 00 00 || 00 00 00 3F || 00000000 00000000 00000000 00111111 || All | ||
|- | |- | ||
|} | |} | ||
===SAVEDATA_DETAIL=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 1024 bytes | |||
Data_Size_Used: variable | |||
Used by: Minis Save Data | |||
Used to store texts generated by the game, the format s the same than [[PARAM.SFO#DETAIL|DETAIL]] | |||
===SAVEDATA_DIRECTORY=== | ===SAVEDATA_DIRECTORY=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 64 bytes | |||
Data_Size_Used: variable | |||
Used by: Save Data, Minis Save Data | |||
Name of the folder where the game stores | Name of the folder where the game stores his SaveData. The format is: '''TITLE_ID-xxx''', e.g;: '''BLUS00001-savedata''' where: | ||
*'''TITLE_ID''' | *'''TITLE_ID''' is explained in [[#TITLE_ID|TITLE_ID]]. | ||
*''' | *'''-''' is a separation character (mandatory). | ||
*'''xxx''' is a variable string with variable lenght, are texts to separate different SaveDatas from the same game. | |||
===SAVEDATA_FILE_LIST=== | ===SAVEDATA_FILE_LIST=== | ||
Data_Type: 04 00 | |||
Data_Size_Total: 3168 bytes | |||
Data_Size_Used: 3168 bytes | |||
Used by: Minis Save Data | |||
Contains a list with an space reserved for 99 entries, each entry 32 bytes long, for a | Contains a list with an space reserved for 99 entries, each entry 32 bytes long, for a totall size of 3168 bytes (99 * 32 = 3168) | ||
Entries refer to other files from the folder, example of one entry: | Entries refer to other files from the folder, example of one entry: | ||
Line 1,048: | Line 1,026: | ||
===SAVEDATA_LIST_PARAM=== | ===SAVEDATA_LIST_PARAM=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 8 bytes | |||
Data_Size_Used: variable | |||
Used by: Save Data | |||
Unknown, usually filled with zeroes, but with a '''Data_Used_Size''' of 1 byte | |||
*Gran turismo 5 contains the string "GAMEDAT" | |||
===SAVEDATA_PARAMS=== | ===SAVEDATA_PARAMS=== | ||
Data_Type: 04 00 | |||
Data_Size_Total: 128 bytes | |||
Data_Size_Used: 128 bytes | |||
Used by: Minis Save Data | |||
Example | Example | ||
Line 1,100: | Line 1,046: | ||
! 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,063: | ||
|- | |- | ||
|} | |} | ||
===SAVEDATA_TITLE=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 128 bytes | |||
Data_Size_Used: variable | |||
Used by: Minis Save Data | |||
Subtitle of the Save, the format is the same than [[PARAM.SFO#SUBTITLE|SUBTITLE]] | |||
===SOUND_FORMAT=== | ===SOUND_FORMAT=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: HDD Game, PS1 Game, Minis Game | |||
Sound modes supported by the content. | Sound modes supported by the content. | ||
Line 1,126: | Line 1,082: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Little Endian !! Big Endian !! Flags (Binary) !! Description | ||
|- | |- | ||
| | | 01 00 00 00 || 00 00 00 01 || 00000000 00000000 00000000 00000001 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 2.0 | ||
|- | |- | ||
| | | 04 00 00 00 || 00 00 00 04 || 00000000 00000000 00000000 00000100 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 5.1 | ||
|- | |- | ||
| | | 10 00 00 00 || 00 00 00 10 || 00000000 00000000 00000000 00010000 || [[http://en.wikipedia.org/wiki/Lpcm LPCM]] 7.1 | ||
|- | |- | ||
| | | 02 01 00 00 || 00 00 01 02 || 00000000 00000000 00000001 00000010 || [[http://en.wikipedia.org/wiki/Dolby_Digital#Dolby_Digital Dolby Digital]] 5.1 | ||
|- | |- | ||
| | | 02 02 00 00 || 00 00 02 02 || 00000000 00000000 00000010 00000010 || [[http://en.wikipedia.org/wiki/DTS_%28sound_system%29 Digital Theater Systems (DTS)]] 5.1 | ||
|- | |- | ||
| | | | ||
|- | |- | ||
| | | 17 03 00 00 || 00 00 03 17 || 00000000 00000000 00000011 00010111 || All | ||
|} | |} | ||
===SOURCE=== | ===SOURCE=== | ||
Data_Type: uint32_t | |||
Data_Size_Total: 4 bytes | |||
Data_Size_Used: 4 bytes | |||
Used by: Trophy | |||
Unknown, usually filled with zeroes | Unknown, usually filled with zeroes | ||
===SUB_TITLE=== | ===SUB_TITLE=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 128 bytes | |||
Data_Size_Used: variable | |||
Used by: Save Data | |||
The line of text displayed under [[#TITLE|TITLE]] text, used only in SaveData to store short texts from the game like your player name, your play time, photo used or your rank in the game | The line of text displayed under [[#TITLE|TITLE]] text, used only in SaveData to store short texts from the game like your player name, your play time, photo used or your rank in the game | ||
When the text is too long to fit in the screen it scrolls horizontally from right to left, if the '''Data_Used_Size''' is not correct this scroll doesn't flow properly. The same behaviour happens with TITLE, TITLE_xx, TITLEID0xx and TITLE_ID | 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=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 8 bytes | |||
Data_Size_Used: 6 bytes | |||
Used by: Game Data | |||
Target application version for incremental patches. Patches containing '''TARGET_APP_VER''' can be installed over the game with the same '''APP_VER'''. | Target application version for incremental patches. Patches containing '''TARGET_APP_VER''' can be installed over the game with the same '''APP_VER'''. | ||
Line 1,190: | Line 1,128: | ||
===TITLE=== | ===TITLE=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 128 bytes | |||
Data_Size_Used: variable | |||
Used by: All but Trophy | |||
Default "title of the game" for all languages. The text is displayed right to the ICON0.PNG. | Default "title of the game" for all languages. The text is displayed right to the ICON0.PNG. | ||
===TITLE_ID=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 16 bytes | |||
Data_Size_Used: 10 | |||
Used by: HDD Game, PS1 Game, Minis Game, Game Data | |||
Identifier of the content, in the format '''WXYZ12345'''. Must be the same ID inside the Makefile when compiling the .SELF, or/and when creating the .PKG | |||
*Discs: | |||
**'''W''' is the media: ('''B'''=Blu-ray, '''S'''=CD/DVD) | |||
**'''X''' is the license: ('''C'''=Official, '''L'''=Licensed) | |||
**'''Y''' is the region: ('''A'''=Asia, '''E'''=Europe, '''J'''=Japan, '''U'''=USA) | |||
**'''Z''' is the kind of content: ('''D'''=Demo, '''M'''=Malayan Release, '''S'''=Retail release) | |||
**'''12345''' is the game ID in chronological order | |||
*HDD games or apps: | |||
**'''WX''' is the [[Environments|Network Enviroment]]: ('''NP'''=Retail) | |||
**'''Y''' is the region: ('''E'''=Europe, '''I'''=Internationall?, '''H'''=Hong Kong, '''J'''=Japan, '''U'''=USA) | |||
**'''Z''' is the ?: ('''A'''=?, '''B'''=?, '''F'''=?, '''G'''=?, '''I'''=?, '''J'''=?, '''K'''=?, '''L'''=?, '''O'''=?, '''W'''=?, '''Z'''=?) | |||
**'''12345''' | |||
The " | *Other TITLE_ID's | ||
**TEST12345 (in savedata). When mounting a disc in a backup manager using the option "direct boot", the mounted disc use the TITLE_ID from backup manager (TITLE_ID from backup manager has not been unloaded properly and the disc addopts it). The SaveData of this game will use TEST12345. When several different games are mounted and "direct launched", his savedatas will be corrupted/invalid (because the overwriting of PARAM.SFO). TEST12345 seems to a common TITLE_ID used in all backup managers, the name probably is derived from official tools or internall firmware functions (Described as tips with ps3.gen.exe:"setting the TITLE_ID to TEST-XXXXX or disc version to "00.00" enable the program to build the disc image). | |||
**MRTC00001 STAR OCEAN THE LAST HOPE (the first internationall blu-ray release) | |||
===TITLE_xx=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 128 bytes | |||
Data_Size_Used: variable | |||
Used by: HDD Game | |||
Same than TITLE but for localized languages. | |||
An .SFO can contain severall 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=== | |||
Data_Type: utf-8 | |||
Data_Size_Total: 16 bytes | |||
Data_Size_Used: 9 | |||
Used by: Trophy | |||
SFO's for trophies contains a full list of 16 TITLEID0'''xx''' parameters for all languages where '''xx''' is a number for a regional code. See: [[Content_Information_Files|Content Information Files]]. | |||
SFO's for trophies contains a full list of 16 TITLEID0'''xx''' for all languages where '''xx''' is a number for a | |||
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=== | ||
Data_Type: utf-8 | |||
Data_Size_Total: 8 bytes | |||
Data_Size_Used: 6 bytes (or 3 bytes when used in trophy) | |||
Used by: HDD Game, PS1 Game, Minis Game, Game Data, Trophy | |||
Disc revision, or Package revision. The number increases when the content is re-released or re-packaged for whatever reason that doesn't affect the main executable (e.g. when a disc game reaches platinum sales, or "game of the year edition" | Disc revision, or Package revision. The number increases when the content is re-released or re-packaged for whatever reason that doesn't affect the main executable (e.g. when a disc game reaches platinum sales, or "game of the year edition" incuding extra contents). | ||
When the main executable is | When the main executable is uptaded, his '''APP_VER''' increases (this can be done with patches)... but the '''VERSION''' of the patch (or the re-released disc) returns to '''01.00'''. | ||
Additionally this gives the possibility to release different versions of the same patch (used when the original patch contains a bug, needs to be replaced, and is not | Additionally this gives the possibility to release different versions of the same patch (used when the original patch contains a bug, needs to be replaced, and is not cummulative) | ||
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''' | ||
==Tools, manuals and externall links== | |||
Sorry if im missing some link, severall things of this page was copy-pasted months ago by googling in random forums. | |||
==Tools, manuals and | |||
Sorry if im missing some link, | |||
*Tools | *Tools | ||
Line 1,513: | Line 1,214: | ||
[[Dev_Tools#SFO_Reader|SFO reader]] | [[Dev_Tools#SFO_Reader|SFO reader]] | ||
*Sources | |||
*Sources | |||
http://www.ps3hax.net/showthread.php?t=28704 | http://www.ps3hax.net/showthread.php?t=28704 | ||
http://ps3dev.wikispaces.com/PARAM.SFO | http://ps3dev.wikispaces.com/PARAM.SFO | ||
*Examples | *Examples | ||
A little collection of SFO's ordered by categories http://www.sendspace.com/file/oy270g | A little collection of SFO's ordered by categories http://www.sendspace.com/file/oy270g | ||