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?
  • or first chunk starting at 0x38, ending at 0x208.
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? ?
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 ? sha256 hmac of (0x1F0 to 0x620)
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 ? sha256 hmac of (0x1F0 to end)
0xBA 0x16 - FF FF ... 00 00 ? not used?
0xD0 0x100 - xx ... xx ? Signature (sha256 of first 0xD0 bytes, RSASSA-PKCS1-v1_5 2048bit)
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 sfo_header_t {
     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 indexTableEntry_t {
     unsigned int16 keyOffset; //offset of keytable + keyOffset
     unsigned int16 param_fmt; //enum (see below)
     unsigned int32 paramLen;
     unsigned int32 paramMaxLen;
     unsigned int32 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, PS2 Classic
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

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, PS2 Classic

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, PS2 Classic

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 for the common dialog: Cross button 1.05? 02
04 00 00 00 00 00 00 04 4 00000000 00000000 00000000 00000100 Menu for Warning 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 Enter Button Assignment for the common dialog: Assigned by the System Software - 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 This Application supports PlayStation VR - 15
00 80 00 00 00 00 80 00 32768 00000000 00000000 10000000 00000000 The application does not use the Download Data (?) CPU mode (6 CPU) - 16
???
00 00 01 00 00 01 00 00 65536 00000000 00000001 00000000 00000000 CPU mode (7 CPU) - 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 The application supports NEO mode (PS4 pro) - 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 This Application Supports HDR 4.50(?) 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 Display Location (?) - 32
00 00 00 80 80 00 00 00 67125248 10000000 00000000 00000000 00000000 The Application Requires PlayStation VR 4.50(?) 33
  • The application does not support the initial user's logout is set per default.
  • Dualshock cross button / Dualshock circle button 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.

ATTRIBUTE2

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

...

CATEGORY

Info
param_fmt: utf-8
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: All?

Merged with PS Vita Category

Value Description PSVita PS4 Note
ac Additional Content Yes Yes (PS4 theme also) e.g.: TOY MAKER for THE PLAYROOM (PS4)
bd Blu-ray Disc? Unknown Yes
gc Game Content(?) Yes Unknown
gd Game Digital Application Yes Yes
gda System Application Yes Unknown
gdb - Yes Unknown
gdc Non-Game Big Application Yes Yes(?) e.g.: PS VITA Wake-up Club and others PCSx title ID (PSVita)
gdd BG Application Yes Yes
gde Non-Game Mini App / Video Service Native App Unknown Yes
gdk Video Service Web App Unknown Yes e.g.: Amazon Instant Video (PS4)
gdl PS Cloud Beta App Unknown Yes
gdO PS2 Classic Unknown Yes previous typo:gd0 or gdO?
gp Game Application Patch Yes Yes
gpc Non-Game Big App Patch Yes Unknown
gpd BG Application patch Yes Unknown
gpe Non-Game Mini App Patch / Video Service Native App Patch Unknown Yes
gpk Video Service Web App Patch Unknown Yes
gpl PS Cloud Beta App Patch Unknown Yes
sd Save Data Yes Yes
la License Area (Vita)? Unknown Unknown
wda - Yes Unknown e.g.: (Vita) User's Guide NPXS10060

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, PS2 Classic

See Content ID

CONTENT_VER

Info
param_fmt: utf-8
param_max_len: 0x08 (8 bytes)
param_len: 0x06 (6 bytes)
Tip
Used by: Additional Content

e.g.: "01.00"

DEV_FLAG

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, PS2 Classic

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 : Initial State

DISP_LOCATION_2 : Triggered State

Value Standard name
0 Content Area
1 TV & Video

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, PS2 Classic

The application does not use the Download Data if 0 MiB

  • 0 MiB
  • 64 MiB
  • 128 MiB
  • 256 Mib
  • 512 Mib
  • 1 GiB

EMU_VERSION

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS2 Classic
  • 258 (0x102)

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, PS2 Classic

"obs"

INSTALL_DIR_SAVEDATA

Info
param_fmt: utf-8
param_max_len: 0xc (12 bytes)
param_len: 0x9? (9 bytes)
Tip
Used by: PS4 Game (Digital), PS4 Game Patch

Similar to TITLE_ID, identifier ( Productcode ) of the content, in the format WXYZ12345.

Used by demo trials/cross platforms titles.

IRO_TAG

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: Additional Content

Seen: 0x2

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, PS2 Classic

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

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

e.g.: "Sony Computer Entertainment"

PROVIDER_xx

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

Same parameter than PROVIDER, outnumbered from _00 to _20 (for localized languages?)

PS3_TITLE_ID_LIST_FOR_BOOT

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

Title IDs of the PS3 key Disc (upto 32 titles) required when booting

PUBTOOLINFO

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

Contains infos (UTF-8) separated by a comma (0x2C):

  • c_date= yyyymmdd format (creation date)
  • bgmhome_loud=-36.48 (used on Additional Content ps4 theme)
  • st_type= (Storage Type)
Value Standard name
bd25 Blu-ray Distribution max 25 GB
bd50 Blu-ray Distribution max 50 GB
digital25 Digital Distribution max 25 GB
digital50 Digital Distribution max 50 GB
  • asa=
  • img0_l0_size=
  • img0_l1_size=
  • img0_ch_size=
  • img0_sc_ksize=
  • img0_pc_ksize=

PUBTOOL_VERSION

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: Additional Content, PS2 Classic

Or typo and name of this parameter is PUBTOOL_VER?

Seen: 0x1530000, 0x1930000, 0x2670000

REMOTE_PLAY_KEY_ASSIGN

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

The Application uses one of the key assignment patterns (from A to H) for the Remote Play (PS4 SDK version 1.500 or newer)

  • 0x19 for PS2 Classic
Value Standard name
0 Pattern A
1 Pattern B
2 Pattern C
3 Pattern D

SAVE_DATA_TRANSFER_TITLE_ID_LIST_x

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

Same parameter outnumbered from _1 to _7.

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, PS2 Classic

Same parameter outnumbered from _1 to _7.

  • Value: 20

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, PS2 Classic

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, Additional Content, PS2 Classic

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, PS2 Classic

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

USER_DEFINED_PARAM_x

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

Same parameter outnumbered from _1 to _4.

...

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, PS2 Classic

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.