Param.sfo
PARAM.SFO
See also Discussion page
Samples: param.sfo/samples
SFO (System File Object) file format can be also found on PSP, PSVITA, PS3. This page, as well as talk page, is mostly speculation about this content information file.
The values contained in a parameter (other naming: key) of the SFO can be simplified as inputs/outputs for/from the content:
- Boot modifiers (flags).
- Information texts.
External Structure
Speculation about the Container wrapping the Data of the param.sfo File (only on disc?)
- length: 0x800 always?
- or first chunk starting at 0x38, ending at 0x208.
Offset | Size | Name | Example | Value (conversion) | Notes | |||
---|---|---|---|---|---|---|---|---|
First chunk | ||||||||
0x00 | 0x08 | Magic ? | 50 53 41 52 | SCECDF | ? | |||
0x08 | 0x08 | Version ? | 01 00 00 00 01 00 00 00 | v1.1? | ? | |||
0x08 | 0x08 | - | 01 00 00 00 00 00 00 00 | ? | ? | |||
0x08 | 0x08 | - | 00 00 00 00 00 00 00 00 | ? | Start Of File offset? | |||
0x20 | 0x08 | - | 02 00 00 00 00 00 00 00 | ? | ? | |||
0x28 | 0x08 | Length total ? | AC 09 00 00 00 00 00 00 | 09 AC | total length of the file/End Of File offset? (container+param.sfo) | |||
0x30 | 0x08 | - | 00 00 00 00 00 00 00 00 | -- | not used? | |||
0x38 | 0x08 | Length first chunk/start second chunk? | D0 01 00 00 00 00 00 00 | 01 D0 | length first chunk/start second chunk offset? | |||
0x40 | 0x08 | - | 30 04 00 00 00 00 00 00 | ? | ? | |||
0x48 | 0x02 | - | 01 00 | ? | ? | |||
0x4A | 0x20 | - | xx ... xx | ? | ? | |||
0x6A | 0x16 | - | FF FF ... 00 00 | ? | not used? | |||
0x80 | 0x08 | - | 01 00 00 00 00 00 00 00 | ? | ? | |||
0x08 | 0x08 | - | 00 08 00 00 00 00 00 00 | ? | Start Of PARAM.SFO offset? | |||
0x90 | 0x08 | Length PARAM.SFO? | AC 01 00 00 00 00 00 00 | 01 AC | length PARAM.SFO? | |||
0x98 | 0x02 | - | 01 00 | ? | ? | |||
0x9A | 0x20 | - | xx ... xx | ? | ? | |||
0xBA | 0x16 | - | FF FF ... 00 00 | ? | not used? | |||
0xD0 | 0x100 | - | xx ... xx | ? | ? | |||
Second chunk | ||||||||
0x1D0 | 0x04 | - | 01 00 00 00 | ? | ? | |||
0x1D4 | 0x04 | FW version ? | 52 01 | 1.52 | System Firmware should be similar to one of the SFO parameter? | |||
0x1D8 | 0x10? | Product code ? | 43 55 53 41 30 30 32 35 30 00 00 00 00 00 00 00 | CUSA00250 | Productcode should be similar to the Title id parameter | |||
0x1E8 | 0x10 | - | xx xx | ? | not used? | |||
0x1F8 | 0x02 | - | xx xx | ? | decimal of the product code? | |||
0x1FA | 0x06 | - | C2 AC 03 00 00 34 | ? | ? | |||
0x200 | 0x02 | - | xx xx | ? | decimal of the product code? | |||
0x202 | 0x06 | - | C2 AC 03 00 00 35 | ? | ? | |||
... | ||||||||
0x800 | 0x04 | Magic of PARAM.SFO | 00 50 53 46 | PSF | The PARAM.SFO start, see internal structure |
Internal Structure
Header SFO
This is the Header of a SFO file.
Offset | Data | Length | Notes |
0x00 | 00 50 53 46 | 0x04 | " PSF" Magic |
0x04 | 01 01 00 00 | 0x04 | Version |
0x08 | xx xx 00 00 | 0x04 | Key table start offset |
0x0C | xx xx 00 00 | 0x04 | Data table start offset |
0x10 | xx 00 00 00 | 0x04 | № of entries in index table |
typedef struct{ int magic; //PSF int version; //1.1 int keyTableOffset; int dataTableOffset; int indexTableEntries; } sfo_header_t;
Index table
Starting at offset 0x14, this structure (0x10) is repeated the number of times defined in the header ( № of parameters)
Offset | Data | Length | Notes |
0x14 | 00 00 | 0x02 | Key table offset |
0x16 | 04 0x | 0x02 | param_fmt (type of data) |
0x18 | xx xx 00 00 | 0x04 | parameter length |
0x1C | xx xx 00 00 | 0x04 | parameter max length |
0x20 | 00 00 00 00 | 0x04 | Data table offset |
typedef struct{ u16 keyOffset; //offset of keytable + keyOffset u16 param_fmt; //enum (see below) u32 paramLen; u32 paramMaxLen; u32 dataOffset; //offset of datatable + dataOffset } indexTableEntry_t;
Used on index table, type of data are:
param_fmt | Format | Notes |
04 00 | utf-8 Special Mode | Used in contents generated by the system (e.g.: save data) |
04 02 | utf-8 | Character string, NULL finished (0x00) |
04 04 | integer | 32 bits unsigned |
Key table
Ordered alphabetically, each name of parameters of this table is NULL terminated with 1 blank byte (0x00) to separate them.
The table has padding at the end to align their size to a multiply of 4 ( if matches with a multiply of 4 this padding doesn't exist)
Data table
- UTF-8 entries never uses all the reserved bytes, needs 1 blank byte (0x00) after the last character.
- Integer entries uses all the reserved bytes.
Parameters Descriptions
APP_TYPE
Value | Standard name | Note |
0 | Not Specified | |
1 | Paid Standalone Full App | allows only the purchased user and users on the same activated console to play with certain number of console limitation. |
2 | Upgradable App | single application binary that can be upgraded from free trial to paid full application based on the purchased status of skus on PlayStation®Store or license information on Blu-ray Disc. Trial sku can be also played on Kiosk unit. |
3 | Demo App | has no limitation on number of consoles to be played. Demo application is typically distributed from PlayStation®Store or Disc for free. This application can be played on Kiosk unit. This application cannot have trophies.
e.g. A non-upgradable demo application, a free full application without an AC, applications created for specific events |
4 | Freemium App | free full application that comes with paid additional contents. This application may have trophies of freemium game scope. |
APP_VER
The format is XX.YY where "XX" and "YY" are numbers, and the point "." is included in the string, e.g: 01.00 for the first stable version released.
ATTRIBUTE
Can contains 32 flags that can be turned on/off to activate/deactivate features allowed for the game/apps content.
FW min for FW column (SYSTEM_VER) seen.
Flag № column is for easy wikify/chat.
Hexadecimal | Decimal | Binary (flags) |
Notes (feature) |
FW | Flag № (flag required) | |
---|---|---|---|---|---|---|
little endian | big endian | |||||
??? | ||||||
01 00 00 00 | 00 00 00 01 | 1 | 00000000 00000000 00000000 00000001 | The application does support the initial user's logout | - | 01 |
02 00 00 00 | 00 00 00 02 | 2 | 00000000 00000000 00000000 00000010 | Enter Button Assignment Cross button | 1.05? | 02 |
04 00 00 00 | 00 00 00 04 | 4 | 00000000 00000000 00000000 00000100 | Menu for Warming Dialog for PS Move is displayed in the option menu | - | 03 |
08 00 00 00 | 00 00 00 08 | 8 | 00000000 00000000 00000000 00001000 | The application supports Stereoscopic 3D | - | 04 |
10 00 00 00 | 00 00 00 10 | 16 | 00000000 00000000 00000000 00010000 | The application is suspended when PS button is pressed (e.g. Amazon Instant Video) | 1.05? | 05 |
20 00 00 00 | 00 00 00 20 | 32 | 00000000 00000000 00000000 00100000 | - | - | 06 |
40 00 00 00 | 00 00 00 40 | 64 | 00000000 00000000 00000000 01000000 | The application overwrites the default behavior of the Share Menu | - | 07 |
80 00 00 00 | 00 00 00 80 | 128 | 00000000 00000000 00000000 10000000 | - | - | 08 |
??? | ||||||
00 01 00 00 | 00 00 01 00 | 256 | 00000000 00000000 00000001 00000000 | The application is suspended when the special output resolution is set and PS button is pressed | - | 09 (05) |
00 02 00 00 | 00 00 02 00 | 512 | 00000000 00000000 00000010 00000000 | HDCP is enabled | - | 10 |
00 04 00 00 | 00 00 04 00 | 1024 | 00000000 00000000 00000100 00000000 | HDCP is disabled for non games app | - | 11 |
00 08 00 00 | 00 00 08 00 | 2048 | 00000000 00000000 00001000 00000000 | - | - | 12 |
00 10 00 00 | 00 00 10 00 | 4096 | 00000000 00000000 00010000 00000000 | - | - | 13 |
00 20 00 00 | 00 00 20 00 | 8192 | 00000000 00000000 00100000 00000000 | - | - | 14 |
00 40 00 00 | 00 00 40 00 | 16384 | 00000000 00000000 01000000 00000000 | - | - | 15 |
00 80 00 00 | 00 00 80 00 | 32768 | 00000000 00000000 10000000 00000000 | - | - | 16 |
??? | ||||||
00 00 01 00 | 00 01 00 00 | 65536 | 00000000 00000001 00000000 00000000 | - | - | 17 |
00 00 02 00 | 00 02 00 00 | 131072 | 00000000 00000010 00000000 00000000 | - | - | 18 |
00 00 04 00 | 00 04 00 00 | 262144 | 00000000 00000100 00000000 00000000 | - | - | 19 |
00 00 08 00 | 00 08 00 00 | 524288 | 00000000 00001000 00000000 00000000 | - | - | 20 |
00 00 10 00 | 00 10 00 00 | 1048576 | 00000000 00010000 00000000 00000000 | - | - | 21 |
00 00 20 00 | 00 20 00 00 | 2097152 | 00000000 00100000 00000000 00000000 | - | - | 22 |
00 00 40 00 | 00 40 00 00 | 4194304 | 00000000 01000000 00000000 00000000 | - | - | 23 |
00 00 80 00 | 00 80 00 00 | 8388608 | 00000000 10000000 00000000 00000000 | - | - | 24 |
??? | ||||||
00 00 00 01 | 01 00 00 00 | 16777216 | 00000001 00000000 00000000 00000000 | - | - | 25 |
00 00 00 02 | 02 00 00 00 | 33554432 | 0000001 000000000 00000000 00000000 | - | - | 26 |
00 00 00 04 | 04 00 00 00 | 262144 | 00000100 00000000 00000000 00000000 | - | - | 27 |
00 00 00 08 | 08 00 00 00 | 134217728 | 00001000 00000000 00000000 00000000 | - | - | 28 |
00 00 00 10 | 10 00 00 00 | 268435456 | 00010000 00000000 00000000 00000000 | - | - | 29 |
00 00 00 20 | 20 00 00 00 | 536870912 | 00100000 00000000 00000000 00000000 | - | - | 30 |
00 00 00 40 | 40 00 00 00 | 1073741824 | 01000000 00000000 00000000 00000000 | - | - | 31 |
00 00 00 80 | 80 00 00 00 | 2147483648 | 10000000 00000000 00000000 00000000 | - | - | 32 |
- / button assignment can be set per title using the param.sfo - it is however recommended to not deviate from the system standard as set per region/country. Without a value set, it defaults to the system standard.
CATEGORY
See PS Vita Category
Value | Standard name |
ac | Additional Content |
bd | Blu-ray Disc? |
gd | Game Application |
gdc | Non-Game Big App |
gde | Non-Game Mini App / Video Service Native App |
gdk | Video Service Web App |
gdl | PS Cloud Beta App |
gp | Game Application Patch |
gpc | Non-Game Big App Patch |
gpe | Non-Game Mini App Patch / Video Service Native App Patch |
gpk | Video Service Web App Patch |
gpl | PS Cloud Beta App Patch |
CONTENT_ID
See Content ID
CONTENT_VER
e.g.: "01.00"
DISC_NUMBER
Disc number: count from 01.
DISC_TOTAL
Total number of discs for this game.
DISP_LOCATION_x
DISP_LOCATION_1 : Initial State
DISP_LOCATION_2 : Triggered State
Value | Standard name |
0 | Content Area |
1 | TV & Video |
DOWNLOAD_DATA_SIZE
The application does not use the Download Data if 0 MiB
- 0 MiB
- 64 MiB
- 128 MiB
- 256 Mib
- 512 Mib
- 1 GiB
FORMAT
"obs"
INSTALL_DIR_SAVEDATA
Similar to TITLE_ID, identifier ( Productcode ) of the content, in the format WXYZ12345.
Used by demo trials/cross platforms titles.
IRO_TAG
Seen: 0x2
PARENTAL_LEVEL
It is a scale to rate the content for the different users based in user profile settings and international rating systems as: PEGI, ESRB, CERO, etc...
PROVIDER
e.g.: "Sony Computer Entertainment"
PROVIDER_xx
Same parameter than PROVIDER, outnumbered from _00 to _20 (for localized languages?)
PS3_TITLE_ID_LIST_FOR_BOOT
Title IDs of the PS3 key Disc (upto 32 titles) required when booting
PUBTOOLINFO
Contains infos (UTF-8) separated by a comma (0x2C):
- c_date=yyyymmdd (creation date format?)
- bgmhome_loud=-36.48 (used on Additional Content ps4 theme)
- sdk_ver=xxxxxxxx (digits to indicate PS4 SDK version?)
- st_type=
seen: "bd25", "digital50" on gd. "digital25" on gp
- asa=
- img0_l0_size=
- img0_l1_size=
- img0_ch_size=
- img0_sc_ksize=
- img0_pc_ksize=
PUBTOOL_VERSION
Seen: 0x1530000
REMOTE_PLAY_KEY_ASSIGN
The Application uses one of the key assignment patterns for the Remote Play (PS4 SDK version 1.500 or newer)
Value | Standard name |
0 | Pattern A |
1 | Pattern B |
2 | Pattern C |
3 | Pattern D |
SERVICE_ID_ADDCONT_ADD_x
Same parameter outnumbered from _1 to _7.
SYSTEM_ROOT_VER
Minimum System Firmware needed to play this title
SYSTEM_VER
Minimum System Firmware needed to play this title (conveniently, the [PS4VOLUME]/PS4/UPDATE/PS4UPDATE.PUP file (Blu-ray Disc) will be at least this version)
TITLE
Default "title of the game" for all languages.
TITLE_xx
Same than TITLE but for localized languages.
An .SFO can contain several TITLE_xx where xx is a number for a regional code.
The "default" TITLE is always present when other "localized" TITLE_xx are used.
TITLE_ID
Identifier ( Productcode ) of the content, in the format WXYZ12345.
USER_DEFINED_PARAM_x
Same parameter outnumbered from _1 to _4.
...
VERSION
Version content of the game: Disc revision, or Package revision. The number increases when the content is re-released or re-packaged for whatever reason that doesn't affect the main executable (e.g. when a disc game reaches platinum sales, or "game of the year edition" including extra contents).
e.g.: "01.00"
Notes
See Discussion page.