Param.sfo

From PS4 Developer wiki
Jump to navigation Jump to search

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?
Offset Size Name Example Value (conversion) Notes
PARAM.SFO container
First chunk
0x00 0x08 magic ? 50 53 41 52 SCECDF ?
0x08 0x08 version ? 01 00 00 00 01 00 00 00 v1.1? ?
0x10 0x16 - 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ? ?
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? (container+param.sfo)
0x38 0x08 Length first chunk? D0 01 00 00 00 00 00 00 01 D0 length first chunk
0x40 0x08 - 30 04 00 00 00 00 00 00 ? ?
...
Second chunk
0x1D6 0x02? FW version ? 52 01 1.52 System Firmware should be similar to one of the SFO parameter?
0x1D8 0x02? Product code ? 43 55 53 41 30 30 32 35 30 CUSA00250 Productcode should be similar to the Title id parameter?

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

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch

...

APP_VER

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: 0x6 (6 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch

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

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch, Additional Content

Can contains 32 flags that can be turned on/off to activate/deactivate features allowed for the game/apps content.

CATEGORY

Info
param_fmt: utf-8
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc), PS4 Game (Digital), PS4 Game Patch, Additional Content

See PS Vita Category

Value Standard name
ac Additional Content?
bd Blu-ray Disc?
gd Game Digital??
gdk Non-Game Application Digital_k??
gp Game Patch?

CONTENT_ID

Info
param_fmt: utf-8
param_max_len: 0x30 (48 bytes)
param_len: 0x25 (37 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch, Additional Content

See Content ID

DISC_NUMBER

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc)

Disc number: count from 01.

DISC_TOTAL

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc)

Total number of discs for this game.

DISP_LOCATION_x

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x1? (1 bytes?)
Tip
Used by: PS4 Game (Digital)

DISP_LOCATION_1 & DISP_LOCATION_2

DOWNLOAD_DATA_SIZE

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game Patch

...

FORMAT

Info
param_fmt: utf-8
param_max_len: 0x4 (4 bytes)
param_len: 0x4? (4 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc), PS4 Game (Digital), PS4 Game Patch, Additional Content

"obs"

PARENTAL_LEVEL

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch

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...

PUBTOOLINFO

Info
param_fmt: utf-8
param_max_len: 0x200 (512 bytes)
param_len:variable
Tip
Used by: PS4 Game (Digital), Additional Content

Contains infos:

  • c_date=
  • sdk_ver=
  • st_type=
  • asa=
  • img0_l0_size=
  • img0_l1_size=
  • img0_ch_size=

SERVICE_ID_ADDCONT_ADD_x

Info
param_fmt: utf-8
param_max_len: 0x14 (20 bytes)
param_len:Not used?
Tip
Used by: PS4 Game (Digital), PS4 Game Patch

Same parameter outnumbered from _1 to _7.

SYSTEM_ROOT_VER

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc)

Minimum System Firmware needed to play this title

SYSTEM_VER

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc), PS4 Game (Digital), PS4 Game Patch

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

Info
param_fmt: utf-8
param_max_len: 0x80 (128 bytes)
param_len: variable
Tip
Used by: PS4 Game (Blu-ray Disc), PS4 Game Patch, DLC

Default "title of the game" for all languages.

TITLE_xx

Info
param_fmt: utf-8
param_max_len: 0x80 (128 bytes)
param_len: variable
Tip
Used by: PS4 Game (Digital), PS4 Game Patch, Additional Content

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

Info
param_fmt: utf-8
param_max_len: 0x0C (12 bytes)
param_len: 0xA (10 bytes)
Tip
Used by: PS4 Game (Blu-ray Disc), PS4 Game (Digital), PS4 Game Patch, Additional Content

Identifier ( Productcode ) of the content, in the format WXYZ12345.

VERSION

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: 0x6 (6 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch, Additional Content

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).

Notes

See talk page.