PARAM.SFO

From PS3 Developer wiki
Revision as of 14:22, 12 November 2012 by Sandungas (talk | contribs) (→‎CATEGORY: PSvita from talk page)
Jump to navigation Jump to search


SFO (System File Object) are used in folders which content needs to be displayed in the XMB.

The basic file/folder structure of a PS3 content is composed by a SFO, the multimedia Content Information Files, and for special content like Game Saves or Trophy files there is a PARAM.PFD for security reasons, other type of content like games or apps needs an structure of subfolders with names as INSDIR, LICDIR, PKGDIR, TRPDIR, USRDIR, etc...

The values contained in a SFO can be simplyfied as inputs/outputs for/from the content:

  • Boot modifyers (flags) that are sent to the content when is executed to activate special modes (e.g. audio and video modes of a game).
  • Information texts about the content and his restrictions (e.g. title and version of a game).


SFX (System File in XML 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 (version, param_key, param_fmt, param_max_len & param_data).


SFO's and SFX's can be chained in a structure of subfolders where the "main" SFO activates a special subfolder, and the subfolder contains another SFO that activates another subfolder and so on.

This structures are limited by the system and activated by a combination of CATEGORY and special flags on ATTRIBUTE.

In Blu-Ray discs, the "main" PARAM.SFO itself is activated by another flag inside PS3_DISC.SFB.


Internal Structure

header

Code Sample

index_table

This structure is repeated the number of times defined in index_table_entries in the header. All values are in Little Endian.

Code Sample

key_table

The entries of this table (and the next table) can vary depending of the kind of content. Are always ordered alphabetically (from A to Z), each entry of this table is NULL terminated with 1 blank byte (0x00) to separate them. The valid values used in the most common content types are grouped in Parameters Table for a fast reference.

The table has padding at the end to align their size 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, param_max_len for each entry is stored in the index_table and this sizes are fixed by each entry (e.g. RESOLUTION always has a param_max_len of 4 bytes), so the space in data_table can be considered reserved (filled with zeroes when not used).

  • Integer entries uses all the reserved bytes, so the param_len is the same as param_max_len.
  • 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 param_len bytes for this entry (e.g. the title "my homebrew " has a param_len of 12 bytes from the total of 128 reserved in param_max_len).
Notice
param_fmt: Partially known based in some examples found in different content
param_fmt Format Notes
04 00 utf-8 Special Mode Used in contents generated by the system, e.g: Game Saves (ACCOUNT_ID, PARAMS, PARAMS2, SAVEDATA_FILE_LIST, SAVEDATA_PARAMS)... and Trophies (PADDING)
04 02 utf-8 Character string, NULL finished (0x00)
04 04 integer 32 bits unsigned

Internal Structure Examples

Both example files (SFO & SFX) are hand made (the structure is correct but are only a minimal example). Both contains the same info but in different format: only 1 entry (TITLE_ID) and the value for this entry (BLUS12345)

The difference between them is SFO contains the "metadata" info related with his structure, and SFX dont (its XML code).

SFO

0x00  00 50 53 46  01 01 00 00  24 00 00 00  30 00 00 00 | .PSF....$...0... |
0x10  01 00 00 00  00 00 04 02  0A 00 00 00  0F 00 00 00 | ................ |
0x20  00 00 00 00  54 49 54 4C  45 5F 49 44  00 00 00 00 | ....TITLE_ID.... |
0x30  42 4C 55 53  31 32 33 34  35 00 00 00  00 00 00 00 | BLUS12345....... |
Areas Offset Size Name Example Value (conversion) Notes
header 0x00 0x04 magic 00 50 53 46 PSF (utf-8)
0x04 0x04 version 01 01 00 00 1.01 (Big endian, decimal)
0x08 0x04 key_table_start 24 00 00 00 0x24 (Big endian) Start of key_table
0x0C 0x04 data_table_start 30 00 00 00 0x30 (Big endian) Start of data_table
0x10 0x04 index_table_entries 01 00 00 00 1 (Big endian, decimal) Number of entries in the index_table
index_table 0x14 0x02 key_table_offset 00 00 0x00 (Big endian) (Start of param_key) - (Start of key_table) = 0x24-0x24 = 0
0x16 0x02 param_fmt 04 02 Utf-8, refered to param_data
0x18 0x04 param_len 0A 00 00 00 10 (Big endian, decimal) param_data used length is BLUS12345 (9 bytes) + 1 blank byte NULL terminated = 10 bytes
0x1C 0x04 param_max_len 0F 00 00 00 16 (Big endian, decimal) TITLE_ID param_data has always 16 bytes length reserved
0x20 0x04 data_table_offset 00 00 00 00 0x00 (Big endian) (Start of param_data) - (Start of data_table) = 0x30-0x30 = 0
key_table 0x24 0x09 param_key 5449544C455F494400 TITLE_ID (utf-8) key_table_offset is refered to this param_key
0x2D 0x03 padding 00 00 00 9 bytes used by the previous entries + 3 padding = aligned to 12 bytes
data_table 0x30 0x0F param_data 41424344313233343500 BLUS12345 (utf-8) param_fmt, param_len, param_max_len, and data_table_offset are refered to this param_data

SFX

Code Sample
Tip
SFX are used in some disc with special content. See CATEGORY For Disc Contents
SFX Can be used as "templates" to generate SFO files
SFX Can be created using a SFO as the "source". See: SFO2SFX

SFO Requirements for HDD contents

This table contains all the param_key's known/found for an overview of the requirements needed by the PARAM.SFO of each content.

Columns of the table are named by the CATEGORY used by this content.

param_key param_fmt param_max_len param_len HG, AP, AM, AV, AT, CB, HM, BV, WT 1P 2G 2P MN PE GD 2D SD MS PP VT?
Bootable System Data Saves Trophy Transferable
ACCOUNT_ID utf-8 Special Mode 16 (0x10) 16 (0x10) No No No No No No No No Yes No No No No
ACCOUNTID utf-8 16 (0x10) 16 (0x10) No No No No No No No No No No Yes No No
ANALOG_MODE integer 4 (0x4) 4 (0x4) No Yes No No No No No No No No No No ???
APP_VER utf-8 8 (0x8) 6 (0x6) Opt No No No Yes Yes Opt No No No No No ??
ATTRIBUTE integer 4 (0x4) 4 (0x4) Opt Yes Yes Opt Yes Yes Opt No Yes No No Yes ?
BOOTABLE integer 4 (0x4) 4 (0x4) Yes Yes Yes Yes Yes Yes No No No No No Yes
CATEGORY utf-8 4 (0x4) 3 (0x3) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes
CONTENT_ID utf-8 48 (0x30) 37 (0x25) Opt No No No No No No No No No No No
DETAIL utf-8 1024 (0x400) variable No No No No No No No No Opt No No No
ITEM_PRIORITY integer 4 (0x4) 4 (0x4) No No Yes No No No No No No No No No
LANG integer 4 (0x4) 4 (0x4) No No No No No No No No No No Yes No
LICENSE utf-8 512 (0x200) variable Yes No Yes No No No No No No No No No
NP_COMMUNICATION_ID utf-8 16 (0x10) 13 (0xD) Opt No No No No No No No No No No No
NPCOMMID utf-8 16 (0x10) 12 (0xC) No No No No No No No No No No Yes No
PADDING utf-8 Special Mode 8 (0x8) 0 (0x0) No No No No No No No No No No Yes No
PARAMS utf-8 Special Mode 1024 (0x400) 1024 (0x400) No No No No No No No No Yes No No No
PARAMS2 utf-8 Special Mode 12 (0xC) 12 (0xC) No No No No No No No No Yes No No No
PARENTAL_LEVEL_x integer 4 (0x4) 4 (0x4) Opt No No No No No No No No No No No
PARENTAL_LEVEL integer 4 (0x4) 4 (0x4) Yes No Yes Yes Yes Yes Yes Yes Yes Yes No Yes
PARENTALLEVEL integer 4 (0x4) 4 (0x4) No Yes No No No No No No No No Yes No
PS3_SYSTEM_VER utf-8 8 (0x8) 8 (0x8) Yes Yes Yes Yes Yes Yes Opt Yes No No No Yes
REGION_DENY integer 4 (0x4) 4 (0x4) Opt No No Opt No No No No No No No No
RESOLUTION integer 4 (0x4) 4 (0x4) Yes Yes Yes No Yes Yes No No No No No No
SAVEDATA_DETAIL utf-8 1024 (0x400) variable No No No No No No No No No Yes No No
SAVEDATA_DIRECTORY utf-8 64 (0x40) variable No No No No No No No No Yes Yes No No
SAVEDATA_FILE_LIST utf-8 Special Mode 3168 (0xC60) 3168 (0xC60) No No No No No No No No No Yes No No
SAVEDATA_LIST_PARAM utf-8 8 (0x8) variable No No No No No No No No Yes No No No
SAVEDATA_PARAMS utf-8 Special Mode 128 (0x80) 128 (0x80) No No No No No No No No No Yes No No
SAVEDATA_TITLE utf-8 128 (0x80) variable No No No No No No No No No Yes No No
SOUND_FORMAT integer 4 (0x4) 4 (0x4) Yes Yes Yes No Yes Yes No No No No No No
SOURCE integer 4 (0x4) 4 (0x4) No No No No No No No No No No Yes No
SUB_TITLE utf-8 128 (0x80) variable No No No No No No No No Opt No No No
TARGET_APP_VER utf-8 8 (0x8) 6 (0x6) No No No No No No Opt No No No No No
TITLE utf-8 128 (0x80) variable Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes
TITLE_ID utf-8 16 (0x10) 10 (0xA) Yes Yes Yes Yes Yes Yes Yes Yes No No No Yes
TITLE_xx utf-8 128 (0x80) variable Opt No Yes No No No No No No No No No
TITLEID0xx utf-8 16 (0x10) 9 (0x9) No No No No No No No No No No Yes No
VERSION utf-8 8 (0x8) 6 (0x6) Yes Yes Yes No Yes Yes Yes Yes No No Yes Yes

SFO Requirements for Trophies

Trophy installations uses a PARAM.SFO without CATEGORY, can be considered different than the others because XMB doesnt identify them based in his CATEGORY but the format is the same

His placement in XMB up to firmware 4.25 was in "Game" column... after 4.30 are placed in "PlayStation Network" column, this placement in XMB is not dependant of his CATEGORY

Trophy folders are generated by a trophy installer (TROPHY.TRP), for more info see: Trophy files

  • The requirements of this type of PARAM.SFO are displayed in the previous table with a "fake" CATEGORY marked as: "╦"

Parameters Descriptions

ACCOUNT_ID

Info
param_fmt: utf-8 Special Mode
param_max_len: 0x10 (16 bytes)
param_len: 0x10 (16 bytes)
Tip
Used by: Save Data

PSN User Account stored as utf-8 Special Mode. The string is compared with the info contained in XRegistry.sys. The comparison can only return two values, right, or wrong, if the comparison returns right the SaveData is valid.

Filled with zeroes when the user has not been registered in PSN.

ACCOUNTID

Info
param_fmt: utf-8
param_max_len: 0x10 (16 bytes)
param_len: 0x10 (16 bytes)
Tip
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

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


Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 Analog Mode Enabled
  • Analog Mode Enabled

Enables compatibility with the analog sticks of the Dualshock Controller.

APP_VER

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: 0x6 (6 bytes)
Tip
Used by: HDD Game, Minis Game, PSP Remasters Game, Game Data


Application version (or patch version). Not used in old games.

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.

  • Cummulative Patches

Game patches uses a bigger APP_VER as 01.01 for the first patch, but keeping the same TITLE_ID from the original release.

ATTRIBUTE

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: HDD Game, PS1 Game, Minis Game, PSP Remasters Game, PCEngine game, NEOGEO game, Game Data, Save Data

Contains a maximun of 32 flags that can be turned on/off to activate/deactivate special boot modes and features of the content.

Values are stored in "Little Endian" format inside the SFO, to represent the whole tables in a "human readable" format has been needed to convert them to "Big Endian" and then to "Binary".

ATTRIBUTE In Bootable content

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
Firmware
(date)
Flag Nº
(flag required)
Firmware features
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 PSP Remote Play (v1) 1.10 (Nov 2006) 01
02 00 00 00 00 00 00 02 2 00000000 00000000 00000000 00000010 PSP Export 1.70 (Apr 2007) 02
04 00 00 00 00 00 00 04 4 00000000 00000000 00000000 00000100 PSP Remote Play (v2) 1.80 (May 2007) 03 (01)
08 00 00 00 00 00 00 08 8 00000000 00000000 00000000 00001000 XMB In-Game (v2) Forced Enabled 2.40 (Jul 2008) 04
10 00 00 00 00 00 00 10 16 00000000 00000000 00000000 00010000 XMB In-Game (v2) Disabled 2.40 (Jul 2008) 05
20 00 00 00 00 00 00 20 32 00000000 00000000 00000000 00100000 XMB In-Game (v2) Background Music 2.40 (Jul 2008) 06
40 00 00 00 00 00 00 40 64 00000000 00000000 00000000 01000000 XMB In-Game Chat Voice Disabled? 07
80 00 00 00 00 00 00 80 128 00000000 00000000 00000000 10000000 PSvita Remote Play only 4.00 (Nov 2011) 08
Firmware Screens ???
00 01 00 00 00 00 01 00 256 00000000 00000000 00000001 00000000 Move Controller (warning screen) 3.40 (Jun 2010) 09
00 02 00 00 00 00 02 00 512 00000000 00000000 00000010 00000000 Navigation Controller (warning screen) 3.40 (Jun 2010) 10 (09)
00 04 00 00 00 00 04 00 1024 00000000 00000000 00000100 00000000 Eye Cam (warning screen) 3.40 (Jun 2010) 11 (09)
00 08 00 00 00 00 08 00 2048 00000000 00000000 00001000 00000000 Calibration (notification screen) 3.40 (Jun 2010) 12
00 10 00 00 00 00 10 00 4096 00000000 00000000 00010000 00000000 3D (warning screen) 3.40 (Jun 2010) 13
00 20 00 00 00 00 20 00 8192 00000000 00000000 00100000 00000000 Not used yet ? 14
00 40 00 00 00 00 40 00 16384 00000000 00000000 01000000 00000000 Not used yet ? 15
00 80 00 00 00 00 80 00 32768 00000000 00000000 10000000 00000000 Not used yet ? 16
Game Features ???
00 00 01 00 00 01 00 00 65536 00000000 00000001 00000000 00000000 Install Disc 17
00 00 02 00 00 02 00 00 131072 00000000 00000010 00000000 00000000 Install Packages 18
00 00 04 00 00 04 00 00 262144 00000000 00000100 00000000 00000000 Unknown ! 19
00 00 08 00 00 08 00 00 524288 00000000 00001000 00000000 00000000 Game Purchase Enabled 20
00 00 10 00 00 10 00 00 1048576 00000000 00010000 00000000 00000000 Unknown ! 21
00 00 20 00 00 20 00 00 2097152 00000000 00100000 00000000 00000000 PCEngine (X0) works in 3.41 22
00 00 40 00 00 40 00 00 4194304 00000000 01000000 00000000 00000000 License Text Hidden 23
00 00 80 00 00 80 00 00 8388608 00000000 10000000 00000000 00000000 Move Controller Compatible 3.40 (Jun 2010) 24
???
00 00 00 01 01 00 00 00 16777216 00000001 00000000 00000000 00000000 Reserved (X1) 25 (22)
00 00 00 02 02 00 00 00 33554432 00000010 00000000 00000000 00000000 Reserved (X2) 26 (22)
00 00 00 03 03 00 00 00 50331648 00000011 00000000 00000000 00000000 Reserved (X3) 25+26 (22)
00 00 00 04 04 00 00 00 67108864 00000100 00000000 00000000 00000000 NeoGeo (X4) works in 3.41 27 (22)
00 00 00 05 05 00 00 00 83886080 00000101 00000000 00000000 00000000 Reserved (X5) 25+27 (22)
00 00 00 06 06 00 00 00 100663296 00000110 00000000 00000000 00000000 Reserved (X6) 26+27 (22)
00 00 00 07 07 00 00 00 117440512 00000111 00000000 00000000 00000000 Reserved (X7) 25+26+27 (22)
00 00 00 08 08 00 00 00 134217728 00001000 00000000 00000000 00000000 Not used yet ? 28
00 00 00 10 10 00 00 00 268435456 00010000 00000000 00000000 00000000 Not used yet ? 29
00 00 00 20 20 00 00 00 536870912 00100000 00000000 00000000 00000000 Not used yet ? 30
00 00 00 40 40 00 00 00 1073741824 01000000 00000000 00000000 00000000 Not used yet ? 31
00 00 00 80 80 00 00 00 2147483648 10000000 00000000 00000000 00000000 Not used yet ? 32
  • PSP Remote Play v1 and v2

Remote play is a feature that displays the PS3 screen on a PSP to enable remote operation over a wireless LAN. There are two PSP Remote Play modes, "v1" is in low quality using MPEG4 SP/ATRAC codecs, and "v2" uses MPEG4 AVC/AAC. See: Remote Play page and Official video in youtube.

  • PSP Export

Allows the copy of the content to a PSP by pressing triangle over his icon in XMB and the option "copy" in the side menu. Used by "PS1 Game", "Minis Game" and "PSP Game". See: PS3 User Guide/Copying games to play on a PSP.

  • XMB In-Game v2 Forced Enable

XMB In-Game v2 was implemented in firmware 2.40, before 2.40 there was an old XMB In-Game v1. Games released before firmware 2.40 uses "XMB In-Game v1" even when launched in higher firmwares. This flag activates "XMB In-Game v2" for this old games, it has no effect in games released after 2.40 because this ones has XMB In-Game v2 activated by default. See: Official introduction video of the feature in fw 2.40.

If pressing home button for fews seconds, XMB In-Game V1 will appear in recents games. Somes games such as Fritz chess got even 3 differents XMB In Game: V2 when the game is launched, V1 during autosave feature screen, and a kind of V1.5 after (ICONS barely visible and no background visible)

  • XMB In-Game v2 Disabled

Replaces "XMB In-Game v2" by "XMB In-Game v1", works with all games, useful to free ram and to improve the loading time of the menu.

  • XMB In-Game v2 Background Music

Allows to pause the game (with the PS button), play your own music from the files stored in your HDD, and return to the game while your music is playing. This feature enables a SPU (inside CELL) that runs an specific thread to play the music independently of the other game threads (is a feature of the firmware, not of the game)

  • PSvita Remote Play only 480p (852x480)

Used for first time by "patch v3.52" for "torne" (IP9100-BCJB95006_00-TORNE0PATCH00352-A0352-V0352-PE). Previously torne had 2 flags for the two PSP remote play modes. This patch was released few days after PS3 firmware 4.00, in his chagelog there is a clear reference to PSvita conectivity with PS3 but its not verifyed (and cant be tested in a firmware before 4.00)

  • Move/Navigation/Eye (warning screens)

This warning screens are displayed before the game is launched (around 3 seconds each), are an explain of the correct way to use the "move controller", "navigation controller", and "eye cam" respectively. The game waits for them to appear so is a good idea to remove them to improve the loading time, the removing of this 3 screens has no effect over the controller, move controller will work without them.

  • Calibration (notification screen)

This is a calibration screen that appears when the controller has not been calibrated previously (or when is miss-configured).

  • Stereoscopic 3D (warning screen)

This is a warning screen similar than the ones related with move peripherals, only appears when the TV is "3D compatible".

  • Instal Disc

Hides the primary icon of the disc (only the secondary icon is displayed), used when the disc contains only "Install Packages" and there is no bootable content on the "main" path (PS3_GAME/USRDIR/EBOOT.BIN).

  • Instal Packages

Activates the subfolder structure PS3_GAME/PKGDIR in discs by loading another SFO from this subfolder (the system loads the "main" SFO from PS3_GAME, and then "jumps" to the "secondary" SFO), every time one of these SFO's inside substructures/subfolders is loaded... a new subicon/mount point is loaded in XMB. See the "fake disc structure" examples in CATEGORY For Disc contents

  • Game Purchase Enabled

Activates the option to purchase the content by pressing triangle over his icon in XMB. is directly related with CONTENT_ID. When the content is purchased his CONTENT_ID is checked online to obtain the license. After the license is retrieved the game loads another PARAM.SFO from a subfolder with different values (e.g. PARAM.SFO from the subfolder, as C00, with the TITLE "Full" is loaded, and the main PARAM.SFO with the TITLE "Demo" is ignored)

  • Move Controller Compatible

Enables support for the Move Controller (Navigation Controller and Eye Cam doesn't have/needs a flag)

  • License Text Hidden

Removes the "About this Game" option in Side Menu (by pressing triangle over the icon in XMB). This option ignores the LICENSE text. Used by games that has his own license and not the sony one (e.g: PCengine & NeoGeo)

ATTRIBUTE in Patches

When a patch for a game (e.g: a disc game) is installed, the game boots from the "patch installation" folder, XMB loads from this folder his Content Information Files, a new PARAM.SFO, and a new EBOOT.BIN

After one of this installations PS3 loads both PARAM.SFO's (the "original.sfo" one from disc + the new from the "patch.sfo" folder)... some values are taken from the "original.sfo" (e.g: BOOTABLE, RESOLUTION, SOUND_FORMAT... are not present in patches)... and others are taken from the "patch.sfo" (e.g: APP_VER increases in every patch)

Patches uses a system of "overwrite flag/param_key" that makes the PS3 ignore the "original.sfo" value and use the value from the "patch.sfo"... this can be used in combination with the "standard flags" (one flag indicates the value must be taken from the patch... and the other flag activates the feature)

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
00 00 01 00 00 01 00 00 65536 00000000 00000001 00000000 00000000 Overwrite: ???unknown???
00 00 02 00 00 02 00 00 131072 00000000 00000010 00000000 00000000 Overwrite: ???unknown???
00 00 04 00 00 04 00 00 262144 00000000 00000100 00000000 00000000 Overwrite: RESOLUTION, SOUND_FORMAT, Remote Play
00 00 08 00 00 08 00 00 524288 00000000 00001000 00000000 00000000 Overwrite: ???unknown???
00 00 10 00 00 10 00 00 1048576 00000000 00010000 00000000 00000000 Overwrite: ATTRIBUTE flag: XMB In-Game
00 00 20 00 00 20 00 00 2097152 00000000 00100000 00000000 00000000 Overwrite: ATTRIBUTE flag: Move Controller warning screen
00 00 40 00 00 40 00 00 4194304 00000000 01000000 00000000 00000000 Overwrite: ATTRIBUTE flag: 3D warning screen
00 00 80 00 00 80 00 00 8388608 00000000 10000000 00000000 00000000 Overwrite: ATTRIBUTE flag: Move Controller Compatible
  • Overwrite: ???unknown???

TITLE ?

  • Overwrite: ???unknown???

PARENTAL_LEVEL ?

  • Overwrite RESOLUTION, SOUND_FORMAT, Remote Play

For remote play: with this flag you ll need to add one of the flag related to remote play.

E.G. 262272 (0x40080) for PS VITA only added (God of War Collection 1.01 with PARAM.HIP explaining it s not compatible with PSP)

  • Overwrite: ???unknown???
  • Overwrite XMB In-Game

wich one?, there are 4... all them?

  • Overwrite Move Controller warning screen
  • Overwrite 3D warning screen
  • Overwrite Move Controller Compatible

ATTRIBUTE in SaveData

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 Save Data Copy Protected
  • Save Data Copy Protected

Used only in SaveData (SD), not in MInis SaveData (MS). Removes the option "copy" from the side menu when pressing triangle over his icon in XMB.

ATTRIBUTE in Discs Subfolders

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 Subfolder Activated
  • Subfolder Activated

Used in Discs subfolders (CATEGORY TR, VR, DP, XR) to activate another subfolder.

BOOTABLE

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: HDD Game, PS1 Game, Minis Game, PSP Remasters Game
Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 Bootable
  • Bootable

If the content is bootable or not, useful when you are going to make a data pkg.

CATEGORY

Info
param_fmt: utf-8
param_max_len: 0x4 (4 bytes)
param_len: 0x3 (3 bytes)
Tip
Used by: All but Trophy

The next table represents the columns where the content is placed in the XMB and the CATEGORY asociated.

Tiny-Icon Template:Icontinyphoto Template:Icontinymusic Template:Icontinyvideo Template:Icontinytv Template:Icontinygame Template:Icontinynetwork Template:Icontinypsn Standard name Source/generated by: Notes & Examples
PSvita Template:Iconpsvita VT? PSvita ? .PKG ? PSvita contents. Not bootable, import/export to PSvita. Since 4.00fw
System Data Template:Iconps3 GD Game Data PS3 Disc and .PKG PS3 disc installs, Game updates, Game DLC, Game common user data (e.g: GT5)
Template:Iconps2 2D PS2 Data PS2 Disc and .PKG PS2 Emulator Data, DLC for PS2 Disc games (related with CATEGORY 2G). See: Emulation
Game Saves Template:Iconps3 SD Save Data PS3 game See: Game Saves - PS3
Template:Iconpspminis MS Minis Save PSP Minis game See: Game Saves - Minis
Template:Iconpspremaster ?? PSP Save ??? PSP Remaster game See: Game Saves - PSP Remaster (speculation, not verifyed yet)
HDD Bootable Template:Iconps3 AP App Photo .PKG PlayMemories
Template:Iconps3 AM App Music .PKG Qriocity Music Unlimited
Template:Iconps3 AV App Video .PKG Netflix, LoveFilm
Template:Iconps3 BV ??? Video .PKG Added in firmware x.xx ?
Template:Iconps3 AT App TV .PKG QOOK TV, Now TV, Torne (TV/Video Services Column hidden when no installed content)
Template:Iconps3 WT ??? TV .PKG Removed in firmware x.xx ?
Template:Iconps3 CB ??? .PKG Life with PlayStation, Folding@home
Template:Iconps3 HM Home .PKG PlayStation Home
Template:Iconps3 HG HDD Game .PKG Combined with ATTRIBUTE generates "subcategories" e.g:Template:Iconpcengine and Template:Iconneogeo
Template:Iconps2 2G PS2 Game PS2 Disc Installation PS2 Discs installed in internal HDD, only in "backward compatible" PS3's. See: Emulation
Template:Iconps2 2P PS2 PSN ? .PKG "PS2 Classics". Re-edited PS2 games released as a .pkg in "PlayStation Store"
Template:Iconps1 1P PS1 PSN ? .PKG "PS1 Classics". Re-edited PS1 games released as a .pkg in "PlayStation Store"
Template:Iconpspminis MN Minis .PKG "PSP Minis". Format inherited from PSP
Template:Iconpspremaster PE PSP Emulator .PKG "PSP Remasters". Re-edited PSP games released as a .pkg in a "Install Disc". Since 3.70fw
Transferable Template:Iconpsp PP PSP .PKG Not bootable, but can be copyed to a PSP
Ps3 Disc Template:Iconps3 DG Disc Game PS3 Disc Main content of a Game Disc
AR Autoinstall Root PS3 Disc Game Patches and Installable Packages
DP (IP) Disc Packages (Install package) PS3 Disc Installable Packages
XR (IP) Extra Root (Install package) PS3 Disc Installable Packages
XR (TI) Extra Root (Theme Item) PS3 Disc Themes
XR (VI) Extra Root (Video Item) PS3 Disc Videos
VR (VI) Video Root (Video Item) PS3 Disc Videos
TR (**) Theme Root PS3 Disc Themes
DM Disc Movie PS3 Disc Main content of a Movie Disc
  • Notes
    • Values inside parentheses indicates the structure has another subfolder with another PARAM.SFO.
    • PS1 Game Saves and PS2 Game Saves are stored in a Virtual Memory Card (<Virtual MemCard>.VM1 for PS1 and <Virtual MemCard>.VM2 for PS2) without a PARAM.SFO

These are "fake Blu-Ray discs" with the minimal values inside SFO's/SFX's needed for the structure to work, and the needed HYBRID_FLAG's inside the main PS3_DISC.SFB. All the files are 100% hand made from scratch and tested.

Game discs in folder PS3_GAME The basic structure of a game disc.

0GAM00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0GAM00001)
|--- PS3_GAME
     |--- PARAM.SFO <--- CATEGORY (DG), TITLE_ID (0GAM00001)
     |--- USRDIR
          |--- EBOOT.BIN

Movie discs in folder PS3_VPRM This is the part of a Blue-Ray movie structure related with the PS3 system... the rest are the standard folders/files of a Blue-Ray movie and is not needed to be explained here.

0MOV00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (v), TITLE_ID (blank)
|--- PS3_VPRM
     |--- PARAM.SFO <--- CATEGORY (DM)

E.G.: BLJM93009

Game discs in folder PS3_CONTENT Themes folder is mounted as a "secndary icon" under the "main game icon". Doesn't need/admit an SFO/SFX, the icon contained in the theme is resized and displayed inside a bubble, also the TITLE of the Theme is used for the content.

0CONT00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (TV), TITLE_ID (0CONT00001)
|--- PS3_CONTENT
     |--- THEMEDIR
     |    |--- PARAM.SFO <--- ATTRIBUTE (01000000), CATEGORY (TR), TITLE (Themes)
     |    |--- D000
     |         |--- DATA001.P3T
     |         |--- DATA002.P3T
     |--- VIDEODIR
          |--- PARAM.SFO <--- ATTRIBUTE (01000000), CATEGORY (VR), TITLE (Videos)
          |--- D001
          |    |--- PARAM.SFO <--- CATEGORY (VI), TITLE (Video 1)
          |    |--- DATA000.MP4
          |--- D002
               |--- PARAM.SFO <--- CATEGORY (VI), TITLE (Video 2)
               |--- DATA000.MP4

Game discs in folder PS3_GAME/PKGDIR Can be considered an "expansion" of the basic blu-ray structure of a game disc, activated by the flag 00000200 in the ATTRIBUTE of the PARAM.SFO inside PS3_GAME. Packages are displayed in subfolders inside bubbles with his icons resized.

When the packages are installed, the file PARAM.SFO from PKGDIR is renamed to DISC.SFO and copyed inside the installation folder with the purpose of ??? (unknown, his info is not displayed in XMB, see also DISC.SFO on PS3_EXTRA for possible use)

0PKG00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0PKG00001)
|--- PS3_GAME
     |--- PARAM.SFO <--- ATTRIBUTE (00000200), CATEGORY (DG)
     |--- PKGDIR
          |--- PARAM.SFO <--- ATTRIBUTE (0100000), CATEGORY (DP), TITLE (Packages)
          |--- PKG01
          |    |--- PARAM.SFO <--- CATEGORY (IP), TITLE (Package 1)
          |    |--- INSTALL.PKG
          |--- PKG02
               |--- PARAM.SFO <--- CATEGORY (IP), TITLE (Package 2)
               |--- INSTALL.PKG

Game discs in folder PS3_GAME/INSDIR Can be considered an "expansion" of the basic blu-ray structure of a game disc, activated by default ?

Used for "game patches" and "game expansion packs". The PARAM.SFO inside "INSDIR" contains the "APP_VER" of the bigger patch of the folder. Note that "download content" packages doesnt contains "APP_VER" so his installation doesnt updates the main game. For this reason "APP_VER" is only related with patches and is only needed when there are patches in the folder.

0INS00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0INS00001)
|--- PS3_GAME
     |--- PARAM.SFO <--- CATEGORY (DG)
     |--- INSDIR
          |--- PARAM.SFO <--- APP_VER (01.02), CATEGORY (AR)
          |--- DATA000.PKG
          |--- DATA001.PKG

Game discs in folder PS3_EXTRA Icon sizes is the same used in "PStore news" menu ([big squares of 486x405 pixels]). see: Content Information Files

Similar as PKGDIR, the file PARAM.SFO from PKGDIR is renamed to DISC.SFO (e.g.: BLJM60372 Biohazard revival)

The purpose of this DISC.SFO seems to force the user to start the installed game with the original disc with this message on XMB:

"to play this game, you must insert the following disc. Insert the disc, and then start the game again. (8001003E) Install disc"

(can be resolve by launching BD emulator, remove the disc.sfo file or using the original disc)


0EXT00001
|--- PS3_DISC.SFB <--- HYBRID_FLAG (g), TITLE_ID (0EXT00001)
|--- PS3_GAME
|    |--- PARAM.SFO <--- CATEGORY (DG)
|--- PS3_EXTRA
     |--- PARAM.SFO <--- ATTRIBUTE (0100000), CATEGORY (XR), TITLE (Extras)
     |--- D001
     |    |--- PARAM.SFX <--- CATEGORY (IP), TITLE (Package 1)
     |    |--- DATA000.PKG
     |--- D002
     |    |--- PARAM.SFX <--- CATEGORY (IP), TITLE (Package 2)
     |    |--- DATA000.PKG
     |--- D003
     |    |--- PARAM.SFX <--- CATEGORY (VI), TITLE (Video 1)
     |    |--- DATA000.MP4
     |--- D004
     |    |--- PARAM.SFX <--- CATEGORY (VI), TITLE (Video 2)
     |    |--- DATA000.MP4
     |--- D005
     |    |--- PARAM.SFX <--- CATEGORY (TI), TITLE (Theme 1)
     |    |--- DATA000.P3T
     |--- D006
          |--- PARAM.SFX <--- CATEGORY (TI), TITLE (Theme 2)
          |--- DATA000.P3T

You can download this structures to experiment with them or to look how SFO's SFX's are built ---> [Blu-Ray fake discs by sandungas]

CONTENT_ID

Info
param_fmt: utf-8
param_max_len: 0x30 (48 bytes)
param_len: 0x25 (37 bytes)
Tip
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 his icon in XMB.

The format is: XXYYYY-NP_COMMUNICATION_ID-LICENSE_ID where:

  • XX is ?
  • YYYY is ?
  • - is a separator character (mandatory)
  • NP_COMMUNICATION_ID is explained in NP_COMMUNICATION_ID
  • - is a separator character (mandatory)
  • LICENSE_ID is ?

This games has a minimal folder structure with two PARAM.SFO like this:

NPxx12345
|--- PARAM.SFO <--- ATTRIBUTE (00000800), CATEGORY (HG), TITLE (GAME Trial) ... & others
|--- USRDIR
|    |--- EBOOT.BIN
|--- C00
     |--- PARAM.SFO <--- ATTRIBUTE (00000800), CATEGORY (HG), TITLE (GAME Full) ... & others

DETAIL

Info
param_fmt: utf-8
param_max_len: 0x400 (1024 bytes)
param_len: variable
Tip
Used by: Save Data

Text lines displayed under 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...

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.

The special byte "0A" displaces the text to the next line (a linefeed), this can be used to create long texts composed by several horizontall lines.

ITEM_PRIORITY

Info
param_fmt: integer
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS2 Game

Used only in category "2G" for "PS2 game discs" that can be installed in the PS3 internal HDD. Always filled with zeroes in the examples found

LANG

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

Language used when the "trophy config file" TROPCONF.SFM was installed. Valid values for languages are the same ones used for Regional codes

LICENSE

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

License text of the content, hidden by the system in actual firmwares

NP_COMMUNICATION_ID

Info
param_fmt: utf-8
param_max_len: 0x10 (16 bytes)
param_len: 0xD (13 bytes)
Tip
Used by: HDD Game

Comm ID for Bootable message. Also is the name of the folder containing the trophy installer: TROPHY.TRP

The format is NPWRxxyyy_zz (e.g. NPWR00001_00)

NPCOMMID

Info
param_fmt: utf-8
param_max_len: 0x10 (16 bytes)
param_len: 0xC (12 bytes)
Tip
Used by: Trophy

Same than NP_COMMUNICATION_ID but with a param_len of 12 bytes

PADDING

Info
param_fmt: utf-8 Special Mode
param_max_len: 0x8 (8 bytes)
param_len: 0x0 (0 bytes)
Tip
Used by: Trophy

Unknown

PARAMS

Info
param_fmt: utf-8 Special Mode
param_max_len: 0x400 (1024 bytes)
param_len: 0x400 (1024 bytes)
Tip
Used by: Save Data

Intended to store user (and console?) specific data.

Offset length Example Description Notes
0x0000 12 (0xC) 030401020300000000000000 Unknown
0x000C 4 (0x4) 08000000 Unknown
0x0010 4 (0x4) 7D000000 Unknown
0x0014 4 (0x4) 03000000 Unknown
0x0018 4 (0x4) 01000000 userid User identification number from XRegistry.sys
0x001C 16 (0x10) FEDCBA9876543210FEDCBA9876543210 psid More info: PSID
0x002C 4 (0x4) 01000000 userid User identification number from XRegistry.sys
0x0030 16 (0x10) 0123456789ABCDEF0123456789ABCDEF accountid PSN account identification from XRegistry.sys
0x0040 960 (0x3C0) 00000000........ Unknown Big chunk of zeroes, probably used or reserved for other formats
  • Notes:
    • The string used in the paramater ACCOUNT_ID is the same than accountid inside PARAMS. When PARAMS & ACCOUNT_ID are present in the SFO the string can be found twice in the file.

PARAMS2

Info
param_fmt: utf-8 Special Mode
param_max_len: 0xC (12 bytes)
param_len: 0xC (12 bytes)
Tip
Used by: Save Data

Unknown, usually filled with zeroes

PARENTAL_LEVEL_x

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

Used to restrict the content to a specific License Area

The "x" at the end of the name PARENTAL_LEVEL_x defines the License Area wich is one of this list.

param_key License Area Regions
PARENTAL_LEVEL_A SCEA US, Canada (North America), Mexico, Central America, South America
PARENTAL_LEVEL_C SCH China
PARENTAL_LEVEL_E SCEE Europe/Middle East/Africa, U.K./Ireland, Australia/New Zealand (Oceania), Russia, Ukraine, India, Central Asia
PARENTAL_LEVEL_H SCEH Singapore/Malaysia (Southeast Asia), Taiwan, Hong Kong
PARENTAL_LEVEL_J SCEJ Japan
PARENTAL_LEVEL_K SCEK Korea (South Korea)
  • All this param_key's 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
---example string---
00000000 05000000 0A000000 01000000 FFFFFFFF 06000000 0B000000
---example explain---
PARENTAL_LEVEL = 00000000 (disabled)
PARENTAL_LEVEL_A = 05000000 (level 5)
PARENTAL_LEVEL_C = 0A000000 (level 10)
PARENTAL_LEVEL_E = 01000000 (level 1)
PARENTAL_LEVEL_H = FFFFFFFF (disabled)
PARENTAL_LEVEL_J = 06000000 (level 6)
PARENTAL_LEVEL_K = 0B000000 (level 11)

PARENTAL_LEVEL

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: HDD Game, Minis Game, PSP Remasters Game, Game Data, Save Data, Minis Save Data

It is a scale to rate the content for the different users based in user profile settings and international rating systems as: [| PEGI], [| ESRB], [| 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.
Hexadecimal
(little endian)
Hexadecimal
(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

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: PS1 Game, Trophy

Same than PARENTAL_LEVEL

PS3_SYSTEM_VER

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: 0x8 (8 bytes)
Tip
Used by: HDD Game, PS1 Game, Minis Game, PSP Remasters Game, Game Data

Minimum PS3 System Software required for the content to be bootable.

The format is XX.YYYY where "XX" and "YYYY" are numbers, and the point "." is included in the string, e.g: 03.4100.

REGION_DENY

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

Regions restrictions for the content, added in firmware 3.30

There are 12 valid Regions, each region has a position assigned in the binary string, marked with an "1" when the region is prohibited, or a "0". when is allowed.

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Binary
(flags)
Region Nº Target Territory 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
Examples
01 F0 FF FF FF FF F0 01 11111111 11111111 11110000 00000001 From 1 to 11 [Photo] of a PS3 DEX with Allowed Region=1-11 (region 0 not allowed)

RESOLUTION

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: HDD Game, PS1 Classics Game, Minis Game, PSP Remasters Game

TV video modes supported by the content.

When there are several flags activated the PS3 will use the one with higher quality supported by the TV.

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 480 (4:3)
02 00 00 00 00 00 00 02 2 00000000 00000000 00000000 00000010 576 (4:3)
04 00 00 00 00 00 00 04 4 00000000 00000000 00000000 00000100 720 (16:9)
08 00 00 00 00 00 00 08 8 00000000 00000000 00000000 00001000 1080 (16:9)
10 00 00 00 00 00 00 10 16 00000000 00000000 00000000 00010000 480 (16:9)
20 00 00 00 00 00 00 20 32 00000000 00000000 00000000 00100000 576 (16:9)
Examples
3F 00 00 00 00 00 00 3F 63 00000000 00000000 00000000 00111111 All video modes supported
  • Tests
    • PS2 games remastered in PS3 format (not "ps2 classics") like "resident evil 4 HD" (CATEGORY=HG and TITLE_ID=NPEB00342) doesnt supports 1080 mode by default (or at least this one). 1080 mode in combination with SOUND_FORMAT (all SOUND_FORMAT modes enabled) the RESOLUTION flags are readed but the PS3 crashes
    • Note the resolution for originall PS1 disc games can vary (See: Emulation Resolution). The RESOLUTION flags used in PARAM.SFO's of "PS1 Classics Game" from PSN seems to be specific and not fixed sizes (e.g: 01 00 00 00). This will need another table if more are found

SAVEDATA_DETAIL

Info
param_fmt: utf-8
param_max_len: 0x400 (1024 bytes)
param_len: variable
Tip
Used by: Minis Save Data

Used to store texts generated by the game, the format s the same than DETAIL

SAVEDATA_DIRECTORY

Info
param_fmt: utf-8
param_max_len: 0x40 (64 bytes)
param_len: variable
Tip
Used by: Save Data, Minis Save Data

Name of the folder where the game stores his SaveData. The format is: TITLE_IDxxxxx (9 bytes + 22 bytes max), e.g;: BLUS00001_savedata_01 where:

  • TITLE_ID Identifier of the content. Explained in TITLE_ID.
  • xxxxx Are texts (with variable lenght) to difference all the SaveDatas generated from the same game by the same user.

SAVEDATA_FILE_LIST

Info
param_fmt: utf-8 Special Mode
param_max_len: 0xC60 (3168 bytes)
param_len: 0xC60 (3168 bytes)
Tip
Used by: Minis Save Data

Contains a list with an space reserved for 99 entries, each entry 32 bytes long, for a total size of 3168 bytes (99 * 32 = 3168)

Entries refer to other files from the folder, example of one entry:

0x0550  53 45 43 55  52 45 2E 42  49 4E 00 00  00 72 93 A5 | SECURE.BIN...... |
0x0560  8B 8A D4 FA  8E B8 2B 3F  A6 61 BC ED  A6 00 00 00 | .z....+?.a...... |
53 45 43 55  52 45 2E 42  49 4E <------------------------ file name
72 93 A5 8B  8A D4 FA 8E  B8 2B 3F A6  61 BC ED A6 <----- file hash ??? (changes when the file is updated)

SAVEDATA_LIST_PARAM

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: variable
Tip
Used by: Save Data

Partially unknown, usually filled with zeroes with a param_len of 1 byte

  • Gran turismo 5 contains the string "GAMEDAT"
  • The Orange Box: BLES00153, BLES00171, BLES00172, BLUS30055
Game Selector Boot Process

When the disc boots, the EBOOT.BIN loads APP_CHOOSER.SELF, is a "game selector" and contains 5 games: half life 2, half life 2ep1, half life 2ep2, Portal, and Team fortress 2

Each of this games has his own .SELF and his own SAVECONTENTPS3 folder (each game uses different Content Information Files when generating his savedata). There is another savedata folder generated/loaded by the selector that is common. In some games (e.g: portal 1) there are several savedata folders to store: the "game settings", "autosave", and "manual save"

All the PARAM.SFO's generated in this savedata folders contains SAVEDATA_LIST_PARAM with a param_len of 7 bytes, and his values are strings of 6 numbers + a zero (NULL terminated)

The value stored by this game in SAVEDATA_LIST_PARAM is the "size of the folder on disk". This size is dependant of the filesystem (512 bytes cluster size in UFS2), and how many clusters are taken as the "minimun chunk" (that seems to be 2 clusters)

Because the writing process standards (and from the point of view of available clusters for the next writing operation) when a single byte is used in a cluster, this whole cluster is considered "not available for next writing process of a new file". This means e.g: that a file with a size 513 bytes uses 2 complete clusters (512 bytes in the first cluster and 1 byte in the second cluster, both clusters are reserved for this file)

To calculate the number of clusters used by a folder... is needed to calculate the number of clusters used by each file inside the folder, this includes the files that uses a number of clusters that is not even and needs to be "rounded-up". e.g: a file with size 1 byte (that is supposed to fit in 1 cluster) uses 2 clusters because the number "1" is not even. In few words, the number of clusters used by a file needs to be "rounded-up to next even number"

  • This save game is a good example because always contains the same values in SAVEDATA_LIST_PARAM (the second one from euro region, that is only the game settings, lol):
  • BLES00153-PORCONF-0 [Link 1] [Link 2]
File name real file size (in bytes) theorical disk size (in clusters) cluster round-up to even number real disk size (in bytes)
ICON0.PNG 12.461 12461/512=24,3... = 25 25+1= 26 26*512= 13.312
PARAM.PFD 32.768 32768/512= 64 64*512= 32.768
PARAM.SFO 2.736 2736/512=5,3... = 6 6*512= 3.072
PIC1.PNG 89.268 89268/512=174,3... = 175 175+1= 176 176*512= 90.112
POR-0.CFG 893 893/512=1,7... = 2 2*512= 1.024
POR-0.CHK 16 16/512=0,03... = 1 1+1= 2 2*512= 1.024
Folder contents total
138.142 273 clusters 276 clusters 141312 (SAVEDATA_LIST_PARAM)
  • The process is:
    • 1.- Divide by the cluster size
    • 2.- Round-up cluster number (if needed)
    • 3.- Multiply by the same cluster size (to know the amount of bytes reserved for this clusters)

This can be simplifyed by using 1024 (2 clusters)... because this way there is no need of step 2 (the "round-up")... but i have no idea if naming this "chunk" of 2 clusters a "page"... or why UFS2 filesystem takes them 2 by 2... i prefer to left this example as is, feel free to correct me

Also, there is a simple "trick" that can be used to display the files divided in clusters of the size you want (maybe are others but this is the faster way i found). By formatting a usb pendrive in advanced mode, using the cluster size your need, then moving the folder there (by using FAT32 with 1024 bytes cluster the value reported by your operative system is the same one stored inside SAVE_DATA_LIST)

SAVEDATA_PARAMS

Info
param_fmt: utf-8 Special Mode
param_max_len: 0x80 (128 bytes)
param_len: 0x80 (128 bytes)
Tip
Used by: Minis Save Data

Example

Offset length Example Description Notes
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
0x11D0 16 (0x10) 0123456789ABCDEF0123456789ABCDEF Unknown changes when the savedata is updated
0x11E0 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x11F0 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x1200 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x1210 16 (0x10) 00000000000000000000000000000000 Unknown allways the same value found (blank)
0x1220 16 (0x10) ABCDEF0123456789ABCDEF0123456789 Unknown changes when the savedata is updated

SAVEDATA_TITLE

Info
param_fmt: utf-8
param_max_len: 0x80 (128 bytes)
param_len: variable
Tip
Used by: Minis Save Data

Subtitle of the Save, the format is the same than SUBTITLE

SOUND_FORMAT

Info
param_fmt: uint32_t
param_max_len: 0x4 (4 bytes)
param_len: 0x4 (4 bytes)
Tip
Used by: HDD Game, PS1 Game, Minis Game, PSP Remasters Game

Sound modes supported by the content.

Hexadecimal
(little endian)
Hexadecimal
(big endian)
Decimal Binary
(flags)
Feature
(notes)
Flag Nº
(flag required)
01 00 00 00 00 00 00 01 1 00000000 00000000 00000000 00000001 [LPCM] 2.0 01
02 00 00 00 00 00 00 02 2 00000000 00000000 00000000 00000010 02
04 00 00 00 00 00 00 04 4 00000000 00000000 00000000 00000100 [LPCM] 5.1 03
10 00 00 00 00 00 00 10 16 00000000 00000000 00000000 00010000 [LPCM] 7.1 05
00 01 00 00 00 00 01 00 256 00000000 00000000 00000001 00000000 [Dolby Digital] 5.1 09 (02)
00 02 00 00 00 00 02 00 512 00000000 00000000 00000010 00000000 [Digital Theater Systems (DTS)] 5.1 10 (02)
Examples
15 00 00 00 00 00 00 15 21 00000000 00000000 00000000 00010101 All LPCM modes 1+3+5
02 01 00 00 00 00 01 02 258 00000000 00000000 00000001 00000010 Only Dolby Digital 5.1 2+9
17 01 00 00 00 00 01 17 279 00000000 00000000 00000001 00010111 All LPCM modes + Dolby Digital 5.1 1+2+3+5+9
02 02 00 00 00 00 02 02 514 00000000 00000000 00000010 00000010 Only Digital Theater Systems (DTS) 5.1 2+10
17 03 00 00 00 00 03 17 791 00000000 00000000 00000011 00010111 All sound modes 1+2+3+5+9+10
  • Tests
    • PS2 games remastered in PS3 format (not "ps2 classics") like "resident evil 4 HD" (CATEGORY=HG and TITLE_ID=NPEB00342) only supports LPCM 2.0 by default. In the first tests was impossible to activate other sound modes (the flags are ignored). In combination with RESOLUTION (all RESOLUTION modes enabled) the SOUND_FORMAT flags are readed but the PS3 crashes

SOURCE

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

Unknown, usually filled with zeroes

SUB_TITLE

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

The line of text displayed under 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

TARGET_APP_VER

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: 0x6 (6 bytes)
Tip
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.

The format is XX.YY where "XX" and "YY" are numbers, and the point "." is included in the string, e.g: 01.00

TITLE

Info
param_fmt: utf-8
param_max_len: 0x80 (128 bytes)
param_len: variable
Tip
Used by: All but Trophy

Default "title of the game" for all languages. The text is displayed right to the ICON0.PNG.

The special byte "0A" displaces the text to the next line (a linefeed), this can be used to create long texts composed by several horizontall lines, the maximun number of horizontal text lines allowed for the TITLE is 3 (in other words... you can use the "linefeed" byte 2 times)

TITLE_ID

Info
param_fmt: utf-8
param_max_len: 0x10 (16 bytes)
param_len: 0xA (10 bytes)
Tip
Used by: HDD Game, PS1 Game, Minis Game, PSP Remasters Game, Game Data

Identifier of the content, in the format WXYZ12345. Must be the same ID inside the Makefile when compiling the .SELF, or/and when creating the .PKG

  • Discs:
    • W is the media: (B=Blu-ray, S=CD/DVD)
    • X is the license: (C=Official, L=Licensed)
    • Y is the region: (A=Asia, E=Europe, K=Hong Kong, 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 Network Environment: (NP=Retail)
    • Y is the region: (A=Asia, E=Europe, K=Hong Kong, J=Japan, U=USA)
    • Z is the ?: (A=?, B=?, F=?, G=?, I=?, J=?, K=?, L=?, O=?, W=?, Z=?)
    • 12345
  • Other TITLE_ID's
    • TEST12345 (in savedata). When mounting a disc in a backup manager using the option "direct boot", the mounted disc use the TITLE_ID from backup manager (TITLE_ID from backup manager has not been unloaded properly and the disc adopts it). The savedata of this game will use TEST12345. When several different games are mounted and "direct launched", the savedata will be corrupted/invalid (because the overwriting of PARAM.SFO). TEST12345 seems to a common TITLE_ID used in all backup managers, the name probably is derived from official tools or internal firmware functions (Described as tips with ps3.gen.exe:"setting the TITLE_ID to TEST-XXXXX or disc version to "00.00" enable the program to build the disc image even when errors are found).
    • TEST***** All the disc images generated for debug PS3's in the development stages of the game

TITLE_xx

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

Same than TITLE but for localized languages.

An .SFO can contain several TITLE_xx where xx is a number for a regional code. See: Content Information Files.

The "default" TITLE is always present when other "localized" TITLE_xx are used.

TITLEID0xx

Info
param_fmt: utf-8
param_max_len: 0x10 (16 bytes)
param_len: 0x9 (9 bytes)
Tip
Used by: Trophy

SFO's for trophies contains a full list of 16 TITLEID0xx for all languages where xx is a number for a regional code. See: Content Information Files.

All them can contain data, or only the default TITLEID000. The ones without data are marked with a Data_Used_Size = 0 bytes

The text contained inside default TITLEID000 is the same than TITLE_ID

VERSION

Info
param_fmt: utf-8
param_max_len: 0x8 (8 bytes)
param_len: 0x6 (6 bytes)... or 0x3 (3 bytes) when used in trophy
Tip
Used by: HDD Game, PS1 Game, Minis Game, PSP Remasters 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" including extra contents).

When the main executable is updated, the 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 cumulative)

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 param_len of 3 bytes, with the format: X.Y e.g: 1.0

Tips & Tricks

This section is to add more extended explains about features that cant been easily clasifyed inside other sections

Replacing a PARAM.SFO manually

When replacing a PARAM.SFO manually in the internall HDD (using a file manager, FTP, etc...) the system ignores it. This happens because the system is storing a "duplicated" copy of the old one.

To be sure that the new PARAM.SFO has been loaded you can change the TITLE (Paid attention also to TITLE_xx) , this way you can see the new name displayed in XMB, is a good idea to use something that identifyes the change as "My test 01".

  • The most convenient and quick way to "refresh" the XMB is as simple as booting the game one time (by pressing X button over his icon)... inside the game press "PS" button and exit with "quit"... then return to the XMB and the new PARAM.SFO has been loaded. So in resume... the XMB is refreshed when you boot it for first time so you need to boot it one time and quit to load the new PARAM.SFO.
  • The other solution is by using the option "rebuild database" from the recovery menu (this re-indexes all the files in the internall HDD), is long but can fix rare problems. This can be used when the PARAM.SFO you are playing with is not BOOTABLE (you cant boot it to "refresh" the XMB)

When replacing a PARAM.SFO manually in a Game Disc (to be loaded later by a backup manager) sometimes the system ignores it. This happens because the system is storing a "duplicated" copy of the old disc structure included his PARAM.SFO (iirc). The trick to "refresh the XMB" is again by booting the game (pressing X in the main icon)... for this to work is needed to have a EBOOT.BIN in the main path inside USRDIR folder (e.g: the EBOOT.BIN from the "move demo disc" just plays a video in .MP4 and is tiny)

Creating a frankenstein PARAM.SFO

The first step is to go to the Parameters Table to look wich param_key's are mandatory and wich ones can be removed or zeroed (note this table has a lot of YES that probably are OPT, is just that this ones has not been verifyed or found)

  • When you generate a non proper file you can have a nice icon of "corrupted data", but in some cases the game boots normally. In other cases when adding or removing param_key's the file is "partially" corrupted because there is a "break point" in the structure and the file is "partially" loaded (the PS3 loads the values before the structure "break point" normally, but after this point the values shown as corrupted or missing).
  • When adding "non-standard" param_key's to a SFO for an specific type of content (that only admits a few ones) the SFO is loaded without problems but firmware ignores them because are "not-expected" (e.g. when adding SUB_TITLE to a SFO for category "HG").
  • The minimal structure tested (and working) for a homebrew can be copied/downloaded at the bottom of the page, its not "standard" but the PS3 doesn't complain, and probably can be reduced even more.
  • If Error 80028F08:

can be resolved by pressing triangle one time and launch the game from start or back from the ICON.

Creating Discs

The "fake blu-ray" structures that can be downloaded from this page uses two "dirty tricks" that was usefull to identify the critic values needed to work, but can be a bit confusing to replicate them.

The first one is the removing of TITLE and TITLE_ID from most of the SFO's, this can generate a strange behaviour mostly for the primary icon. The second one is the ATTRIBUTE flag to hide the main icon. The other factor involved in this weird behaviours are the "backup managers" that are hardcoded to look for files and format in some specific structures.

When playing with this fake blu-rays use a USB pendrive (is faster to connect/disconnect to ps3/pc) with a "GAMEZ" folder in the root, and remember to "dismount" the game before disconecting the USB to avoid the XMB to go crazy, also remember the XMB sometimes keeps a backup copy of the old PARAM.SFO

For install packages (max: 100, FW min: 1.80) you can use PS3_EXTRA or PKGDIR both will work but are displayed different

For themes ( max: 200, FW min: 2.50) and videos (max: 200, FW min: 2.40) use PS3_EXTRA or PS3_CONTENT remember themes includes his own icon and title, videos are mounted in video colum when using PS3_CONTENT pretty nice for chapters of series, video manuals, etc...

(Max items & FW min are theory, not tested)

For patches use INSDIR, his installation is more automated

Creating Patches

The type of patch is defined by his APP_VER, TARGET_APP_VER, and VERSION. There is no way to update an installed content without APP_VER The standard way to install a patch is by using the same TITLE_ID of the previous release and a bigger APP_VER, when the patch is installed his PARAM.SFO replaces the old one, consequently his APP_VER increases

But there are some tricks related with this patching system that can be used to add files to the install folder without keeping this standard:

  • Using a "blank" APP_VER

This is as easy as filling the value for APP_VER in the patch with zeroes, the undesired effect is the app will have no version. The benefit is this will work for installing cummulating files as "themes", "roms" etc...

  • Using the same APP_VER and TARGET_APP_VER in the patch and in the app

This will replace the PARAM.SFO by other with the same values, so is similar than the previous one, but keeping his version. Additionally this assures you that the files are compatibles with this version of the app (e.g: a theme that only works with a specific version)

Tools, manuals and external links

Sorry if im missing some link, several things of this page was copy-pasted months ago by googling in random forums.

  • Tools

SFO_tools_-_linux-64bit-compiles.rar (23.61 KB)

https://github.com/an0nym0u5/PSL1GHT/commit/75013299710d2bde224e2052284461a665a071bf

read_sfo.tar.bz2 (6.33 KB)

PS3SFOEdit.zip (47.59 KB)

SFO reader

Another SF0 reader

SFO Test(217.99KB) Deroad SFO test homebrew ( really useful for fast test, can boot under X category so it refresh the SFO and avoid stuck SFO and games, XMB in game is not "visible")

SFO Test (113.69KB) resigned for cfw 4.21 & repacked with different id (SFOT00001) for convenience (and not overwrite 3.55 version)


[PkgView] (by ifcaro): The fastest, lighter, and intuitive PKG extractor ever. Very usefull to extract individual files or to take a look inside the PKG without extracting

  • Sources

http://www.ps3hax.net/showthread.php?t=28704

http://ps3dev.wikispaces.com/PARAM.SFO

https://github.com/ps3dev/PSL1GHT/blob/master/tools/ps3py/sfo.py (old way) https://github.com/an0nym0u5/PSL1GHT/tree/master/tools/make_sfo (new/better way) read_sfo.tar.bz2 (6.32 KB)

http://ps3tutorials.wikispaces.com/Edit+the+sfo.xml+Tutorial

  • Examples

A little collection of SFO's ordered by categories http://www.sendspace.com/file/oy270g

Just a collection of PARAM (.bin .pfd .sfo .tpf) files: http://www.mirrorcreator.com/files/0OAXGOHN/PARAM.rar_links

CATEGORY "2P"(PSN Converted PS2 game/saves) SFO examples http://dl.dropbox.com/u/60710927/XMBMPLUS/DEVELOPMENT_SOURCES/PS2_GAME_SFO/PS2_GAME_SFO.rar. There are three files, one SFO file taken from the PS2 Game directory and two SFO files taken from two different saves generated by that game.