SFO
Contents |
Description
SFO / ```param.sfo``` is used for System Information and Paramaters for games and applications on PlayStation Consoles, such as the PlayStation Portable, PlayStation 3, PlayStation Vita, and PlayStation 4. for storing metadata about a given program or applications - it is not used on the PlayStation 5, where they switched to using a JSON file instead, and it is also not used in PlayStation Mobile, or on older consoles, such as the PS2 or PS1-
Data Structure
the file is a binary format. and is made from very common primitives; it stores key-value pairs, consisting of a header, a name table, and a value table;
File header
| Data | Offset | Type | Data |
|---|---|---|---|
| Magic | 0x00 | Int32LE | Always \0PSF |
| Version | 0x04 | Int32LE | 0x1 or 0x101 |
| KeyTable | 0x08 | Int32LE | Absolute position of Key Table |
| ValueTable | 0x0C | Int32LE | Absolute position of Value Table |
| Count | 0x10 | Int32LE | Total number of entries in the param file |
directly after the header, is a list of entries, there are Header.Count of these; it always begins at 0x14 ..
Entry list
| Data | Offset | Type | Data |
|---|---|---|---|
| Name Offset | 0x00 | Int16LE | Position of C-Style string containing key name; Header.KeyTable + Name Offset |
| Align | 0x02 | Int8 | Number of bytes to align each value to, usually 4 bytes. |
| Type | 0x03 | Int8 | Type of Value; Either BINARY = 0, STRING = 2, INT32LE = 4 |
| Size | 0x04 | Int32LE | Size of the value in bytes; |
| TotalSize | 0x08 | Int32LE | Total reserved size of value buffer, |
| Data Offset | 0x0C | Depends on type; Either BINARY, STRING or INT32LE | Position of Value; Header.ValueTable + Data Offset |
each of the values in the value table are padded out to atleast 4 bytes (or whatever the 'align' value is) however the keys are packed together separated only by nullbytes.
See Also
- PARAM.SFO - PSP Developer Wiki
- PARAM.SFO - Vita Developer Wiki
- PARAM.SFO - PS3 Developer Wiki
- PARAM.SFO - PS4 Developer Wiki