Editing Talk:PARAM.SFO

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
=Unknown or new parameters=
{{warning|content=Alot that is currently on this talk page is duplicate from data that is already copied to mainpage - it needs some cleanup so this page can be used as talk, discussion etc
This page is an index/worklog/notepad with sections referred to the front page. All the sections in this page are things related with PARAM.SFO that are not completely documented, and the final purpose is to move the info when completed to the front page. This also will help to keep the front page free of speculation.
}}
 
<br /><br /><br /><br /><br /><br />
{{Wikify}}
 


==CATEGORY (new content formats)==
More accurate data about the param.sfo: http://pastie.org/2236579
*CATEGORY '''VF''' - (HDD content, NOT in game column) ---> '''unknown name''', used as a valid category filter in the XML configuration file for [[XMB-Game | XMB game column]] in path: dev_flash/vsh/resource/explore/xmb/category_game.xml in key="gameDir"
(this is a single example, not generic)
**key="gameDir" is an XMB item that allows to order the contents by "rating" or "timeCreated" the command used contains a list of categories that are excluded using the [[XMBML Functions#Operators| operator "An" = An not equal]] (VF is at the end of the list excluded with '''An+Game:Game.category VF''')
**Similar than MN, 1P?


*CATEGORY '''XI''' - '''Confirmed''' ---> '''System File for Extra Content Item''' (or '''eXtra Item''' in short form) Used on blu ray structure?
----


*'''Indie games''' New category on PSvita and PSN http://blog.us.playstation.com/2013/06/25/ps-vita-indie-games-category-now-live-on-psn/
Just a collection of PARAM (.bin .pfd .sfo .tpf) files: http://www.mirrorcreator.com/files/0OAXGOHN/PARAM.rar_links
Indi games has a specific license, if XMB differences it it will be using ATTRIBUTE flags (similar identification than neogeo and pcengine because has a special license)


*'''PlayStation Mobile''' Implemented around 4.21 firmware, asociated with a text string in explore_plugin_full\Text\English.xml (inside explore_plugin_full.rco). See [PS3 and PSVita Cross Functions]
<Text name="msg_applications_psm">Applications (PlayStation®Mobile)</Text>


==ATTRIBUTE (flags brainstorming)==
==PARAM.SFO==
'''XMB In-Game System Chat Voice Disable''' (Flag Nº7) : Value and name description are related to this flag but need to be confirmed from PS3 side / not used on bootable but as patches?.


Function to disable system chat voice utility (xmb/friend/start new chat appear when PSN connected) (implemented directly on FW or game or as flag into param.sfo for short period?) e.g. of this function: PlayStation Home 1.4 after people reported chat voice disturbance(?) , LittleBigPlanet 2.


Kept as flag for convenience (to disable per game through update game and not FW) but can be "system reminiscent" and not working anymore from param.sfo?
===Header===
0x00000000  00 50 53 46                                  | .PSF | u32 magic
0x00000004  01 01 00 00                                  | .... | u32 file version
0x00000008  d4 00 00 00                                  | .... | u32 key offset
0x0000000c  50 01 00 00                                  | .... | u32 value offset
0x00000010  0c 00 00 00                                  | .... | u32 entry count


Boot logo Disable ? <-- <span style="text-decoration: line-through;">this is the "license text hidden" flag</span> ? FW max: 2.80 for ps3 fat? on patches?


Some flags may only be effective with some hardwares (PSP/PSVITA/[[Torne| Torne ]]/[[Nasne |Nasne]]...), FW, Games, or Category and/or in a cumulative way and others conditions. 
===Entries===


'''Unkown flag nº21''' (not tested by myself btw, this is my understanding after decrypting ada hints :P --[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 22:01, 4 February 2014 (EST))
APP_VER
*Previously proposed to be named "XMB In-Game for Software"... but "About This Game Disabled" looks a more intuitive name (note some of the other flags in the third byte of ATTRIBUTE like "Game Purchase Enabled" and "License Logo Disabled" enables/disables an option in side menu). This 3 flags could be grouped together because "About This Game" is another option in side menu, are under the third byte, and there is another unknown flag at his side that could work in a similar way (changing options in side menu)
0x00000014  00 00                                        | ..  | u16 key_offset
*When activated, inside the game, and inside XMB In-Game, then trying to boot other content the warning text message is different (it mentions "software" and the variable %1 instead of "game"). In the next examples (copyed from a RCO) the first line is the normal error message and the second one is what appears with this flag enabled
0x00000016  04                                          | .   | u8 unk1
  <Text name="msg_need_quit_game_to_operate_ask">To perform this operation, you must quit the game. Do you want to quit the game now?</Text>
0x00000017  02                                          | .    | u8 value_type
  <Text name="msg_need_quit_to_operate_ask">To perform this operation, you must quit [%1]. Do you want to quit the software now?</Text>
0x00000018  06 00 00 00                                  | .... | u32 value_len
  0x0000001c  08 00 00 00                                  | .... | u32 padded_len
  0x00000020  00 00 00 00                                  | .... | u32 value_offset


'''ATTRIBUTE for other CATEGORY's'''
ATTRIBUTE
*ATRIBUTE is listed in this table: [[PARAM.SFO#SFO_Requirements_for_HDD_contents]] as valid for CATEGORY '''PP''', added by me here: http://www.psdevwiki.com/ps3/index.php?title=PARAM.SFO&diff=11171&oldid=11166 i guess it was filled with zeroes because i didnt taked note of special values. But the fact that was used there means is posible that exists specific flags for it, is also posible ATTRIBUTE is used in other CATEGORY's i missed of was added later--[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 18:06, 4 February 2014 (EST)
0x00000024  08 00                                        | ..  | u16 key_offset
0x00000026  04                                          | .    | u8 unk1
0x00000027  04                                          | .    | u8 value_type
0x00000028  04 00 00 00                                  | .... | u32 value_len
0x0000002c  04 00 00 00                                  | .... | u32 padded_len
0x00000030  08 00 00 00                                  | .... | u32 value_offset


===subcategories from X0 to X7===
BOOTABLE
{{Boxframe0|content='''Subcategories'''<BR />
0x00000034  12 00                                        | ..  | u16 key_offset
X category appear (listed on game_ext_plugin.prx) as HG (sub cat)but with different parameters and need cumulative flag (n22 at least+ 4th byte: half byte)
0x00000036  04                                          | .    | u8 unk1
The 4th byte is not used as binary (only?) but as Hex value for half byte (right nibble, left nibble is ignored?) to set X category. If the value is 0 or end up with 0, and the X maker flag is set under right SFO X parameters, X0 (PCEngine) is read by the system.
0x00000037  04                                          | .   | u8 value_type
0x00000038  04 00 00 00                                  | .... | u32 value_len
0x0000003c  04 00 00 00                                  | .... | u32 padded_len
0x00000040  0c 00 00 00                                  | .... | u32 value_offset


SFO TEST Tool from Deroad can boot and return to XMB even under X category (when MINIS don t and are stuck after being X categorized, error occurred during the start operation (80010006))
CATEGORY
0x00000044  1b 00                                        | ..  | u16 key_offset
0x00000046  04                                          | .    | u8 unk1
0x00000047  02                                          | .    | u8 value_type
0x00000048  03 00 00 00                                  | .... | u32 value_len
0x0000004c  04 00 00 00                                  | .... | u32 padded_len
0x00000050  10 00 00 00                                  | .... | u32 value_offset


'''Folder position in XMB ordered by format (in fw 3.55 with hand-made PARAM.SFO's):'''
LICENSE
0x00000054  24 00                                        | ..   | u16 key_offset
0x00000056  04                                          | .    | u8 unk1
0x00000057  02                                          | .    | u8 value_type
0x00000058  13 01 00 00                                  | .... | u32 value_len
0x0000005c  00 02 00 00                                  | .... | u32 padded_len
0x00000060  14 00 00 00                                  | .... | u32 value_offset


Bootable contents installed in game column: [triangle]>[group by]: (works with square too in any item of game column)
PARENTAL_LEVEL
  *from dev_flash/vsh/resource/explore/xmb/registory.xml
0x00000064  2c 00                                        | ..  | u16 key_offset
0x00000066  04                                          | .    | u8 unk1
0x00000067  04                                          | .    | u8 value_type
0x00000068  04 00 00 00                                  | .... | u32 value_len
0x0000006c  04 00 00 00                                  | .... | u32 padded_len
  0x00000070  14 02 00 00                                  | .... | u32 value_offset


  -format <------------- GameList:GameList.type %xCB_LIST_TYPE_GAME_FORMAT
  PS3_SYSTEM_VER
  -tag/album <--------- GameList:GameList.type %xCB_LIST_TYPE_GAME_TAGS
0x00000074  3b 00                                        | ..  | u16 key_offset
  -all <---------------- long list of "conditionals" excluding CATEGORY's that doesnt belongs to XMB game column in the format: '''An+Game:Game.category **'''
0x00000076  04                                          | .   | u8 unk1
  0x00000076  02                                          | .   | u8 value_type
  0x00000078  08 00 00 00                                  | .... | u32 value_len
0x0000007c  08 00 00 00                                  | .... | u32 padded_len
0x00000080  18 02 00 00                                  | .... | u32 value_offset


By pressing square, group content format position (the 8 X category folders can be displayed at the same time in XMB):
RESOLUTION
   
0x00000084  4a 00                                        | ..  | u16 key_offset
*Mini icon: {{icon content ps3}} Playstation 3
0x00000086  04                                          | .    | u8 unk1
0x00000087  04                                          | .    | u8 value_type
0x00000088  04 00 00 00                                  | .... | u32 value_len
  0x0000008c  04 00 00 00                                  | .... | u32 padded_len
0x00000090  20 02 00 00                                  | .... | u32 value_offset


*Mini icon: {{icon content pspremaster}} PSP Remaster, on 3.55, Mini icon: not present (-) ,not accessible (with titles inside).
SOUND_FORMAT
*Mini icon: {{icon content pspminis}} minis
0x00000094  55 00                                        | ..  | u16 key_offset
0x00000096  04                                          | .    | u8 unk1
0x00000097  04                                          | .    | u8 value_type
0x00000098  04 00 00 00                                  | .... | u32 value_len
0x0000009c  04 00 00 00                                  | .... | u32 padded_len
0x000000a0  24 02 00 00                                  | .... | u32 value_offset


*mini icon: {{icon content psp}}PSP (Playstation portable): category PP
TITLE
0x000000a4  62 00                                        | ..  | u16 key_offset
0x000000a6  04                                          | .    | u8 unk1
0x000000a6  02                                          | .    | u8 value_type
0x000000a8  0b 00 00 00                                  | .... | u32 value_len
0x000000ac  80 00 00 00                                  | .... | u32 padded_len
0x000000b0  28 02 00 00                                  | .... | u32 value_offset


*Mini icon: {{icon content ps2}} Playstation 2
TITLE_ID
0x000000b4  68 00                                        | ..  | u16 key_offset
0x000000b6  04                                          | .    | u8 unk1
0x000000b6  02                                          | .    | u8 value_type
0x000000b8  0e 00 00 00                                  | .... | u32 value_len
0x000000bc  10 00 00 00                                  | .... | u32 padded_len
0x000000c0  a8 02 00 00                                  | .... | u32 value_offset


*mini icon: {{icon content ps1}}Playstation
VERSION
0x000000c4  71 00                                        | ..  | u16 key_offset
0x000000c6  04                                          | .    | u8 unk1
0x000000c7  02                                          | .    | u8 value_type
0x000000c8  06 00 00 00                                  | .... | u32 value_len
0x000000cc  08 00 00 00                                  | .... | u32 padded_len
0x000000d0  b8 02 00 00                                  | .... | u32 value_offset


*'''X1''' Mini icon: not present (-)
Attribute used (01 00 60 01)on EBOOT.PBP SFO for Minis (group content format on PSP: minis)
*'''X2''' Mini icon: not present (-)
When Attribute used on EBOOT.PBP SFO on PSP: NEOGEO
*'''X0''' Mini icon:{{icon content pcengine}} '''PCEngine'''
Enables X category. Introduced initially as PCEngine.


Jul 15, 2009
===Name table (keys)===
Works alone and can be used with any "HG" category content, its not clear what does this flag other than the content has his own "tiny grey icon" with a "PCE" logo and are placed inside his own sub-folder when ordering contents (with square button) in the XMB (3.55, 3.41?).
Same attributes on PSP


*'''X3''' Mini icon: not present (-) ?
0x000000d4  50 50 5f 56 45 52 00                        | APP_VER.        |
0x000000dc  41 54 54 52 49 42 55 54 45 00                | ATTRIBUTE.      |
0x000000e6  42 4f 4f 54 41 42 4c 45 00                  | BOOTABLE.      |
0x000000ef  43 41 54 45 47 4f 52 59 00                  | CATEGORY.      |
0x000000f8  4c 49 43 45 4e 53 45 00                      | LICENSE.        |
0x00000100  50 41 52 45 4e 54 41 4c 5f 4c 45 56 45 4c 00 | PARENTAL_LEVEL. |
0x00000110  50 53 33 5f 53 59 53 54 45 4d 5f 56 45 52 00 | PS3_SYSTEM_VER. |
0x0000011e  52 45 53 4f 4c 55 54 49 4f 4e 00            | RESOLUTION.    |
0x00000129  53 4f 55 4e 44 5f 46 4f 52 4d 41 54 00      | SOUND_FORMAT.  |
0x00000136  54 49 54 4c 45 00                            | TITLE.          |
0x0000013c  54 49 54 4c 45 5f 49 44 00                  | TITLE_ID.      |
0x00000145  56 45 52 53 49 4f 4e 00 00 00 00            | VERSION.        |


*'''X4''' Mini icon:{{icon content neogeo}} '''NEOGEO'''


Dec 21, 2010 (Few days after 3.55)
===Data table (values)===
Can be used with any "HG" category content. It has his own "tiny grey icon" with a "NEOGEO" logo and are placed inside his own subfolder when ordering contents (with square button) in the XMB (3.55, 3.41?).


*'''X5 (same for X6 and X7)''' Mini icon: not present (-)
APP_VER
0x00000150  30 30 2e 30 35 00 00 00                      | 00.05    | u8 app_ver[7]


(X3 might have been used already, X5,X6 and X7 not used yet?)
ATTRIBUTE
0x00000158  05 00 00 00                                  | ....    | u32 attribute


Group content order is similar on PSP for the available icons (PS3 folder being PSP and no "PS2"). See [[Talk:Eboot.PBP#Others:_PARAM.SFO_attribut_.28PSP.29]]
BOOTABLE
0x0000015c  01 00 00 00                                  | ....     | u32 bootable


Other app with category not implemented yet on 3.55 FW such WT or unknown as VF on 4.21 can also just not "appear" on XMB and not being on the "Unknown" folder as Corrupted/Unsupported data. To access/delete from 3.55 XMB your PSP remaster folder s titles, group content it (not by format).
CATEGORY
}}
0x00000160  48 47 00 00                                  | HG..     | u8 category[3]


*The existence of the weird flags X0 (for PCEngine) and X4 (for NeoGeo) and we called them "subcategories" (refered to the fact that are an extension of HG category) seems to be related with the fact that those emulators are running under the PSP emulator. PC Engine and NeoGeo are part of the PSP firmware
LICENSE
0x00000164  ...                                          | ....    | u8 license[0x200]


==APP_VER, TARGET_APP_VER, PATCH_FILE, PS3_SYSTEM_VER, VERSION (Patches)==
PARENTAL_LEVEL
Lot of things to add here, maybe needs another page, but im not the best one to document how patches works
0x00000364  00 00 00 00                                  | ....    | u32 parental_level
----


PS3_SYSTEM_VER
0x00000368  30 33 2e 31 30 30 30 00                      | 03.1000. | u8 system_version[7]


RESOLUTION
0x00000370  3f 00 00 00                                  | ....    | u32 resolution


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
SOUND_FORMAT
0x00000374  17 01 00 00                                  | ....    | u32 sound_format


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)
TITLE
0x00000378  ...                                         | ........ | u8 title[0x30]


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 enables the feature)
TITLE_ID
0x000003f8  ...                                         | ........ | u8 title_id[0x10]


VERSION
0x000004f8  30 30 2e 30 35 00 00 00                      | 00.05... | u8 version[7]


==SaveData Example==


----
This is an structure in C of the table for a SaveData
*Million dollars questions in relationship with ATTRIBUTE:
<pre>
**Why ATTRIBUTE flags for patches (used to overwrite other ATTRIBUTE flags or param_key's) are placed at the third byte of ATTRIBUTE instead of first byte ?. Being an special group under CATEGORY '''GD''' they could be placed anywhere, all the other groups of flags are placed starting from top of the table represented in wiki (matching chronologicall usage/implementation of them), this is the only group of flags that doesnt starts with his first (or oldest) flag with a value of 00000000000000000000000000000001
unsigned char Variable_Name_table[Number_of_variables+1]={
***Is because the first and second byte of ATTRIBUTE for patches (16 flags) was used before ? (so are reserved and never was used, or used but unknown, or used but only internally) ?
"ACCOUNT_ID\0x00",
***Is because the overwrite flags for patches needed to be placed in the third byte because every byte is managed by different process ? (third byte is marked in frontpage as "flags for game & software features").
"ATTRIBUTE\0x00",
***Is posible every byte is managed in a different level ? (e.g: one for vsh, other for lv2, etc...)
"CATEGORY\0x00",
***Other theories ?... This is a good hint of how ATTRIBUTE flags are managed, wich part of the firmware is responsible of managing them, and if are managed as separated bytes
"DETAIL0\x00",
**When a game is booted from a disc and there is a game patch installed for this game in internall hdd, there are 2 SFO's readed (one in the disc, and another in internall hdd)... some areas from the SFO in the disc are ignored and taken from the SFO in internall hdd
  "PARAMS\0x00",
***Who is the responsible of loading parts sellectivelly from each of them ?, is just by the presence of the same param_key's in the internall SFO ?. In this case the third byte of ATRIBUTE should be an exception of this rule because the ATTRIBUTE flags in the patch (overwrite flags) uses the third byte, but ATTRIBUTE flags in the disc in third byte are readed too because contains features that are not overwrited (as game purchase enabled, install packages, etc...)
"PARAMS2\0x00",
***XMB database stores a copy of all PARAM.SFO's. Is posible the 2 files (SFO from disc, and SFO from his patch) are merged before indexed in database ? (or some of his values, more specifically the resulting of applying the overwrite flags from the patch)
"PARENTAL_LEVEL\0x00",
**The process of adding or removing a flag from a previous value of ATTRIBUTE is simply a math operation with numberic values, some of the flags for patches overwrites ATTRIBUTE, but there is one that allows to overwrite Remote Play (an ATTRIBUTE flag) and RESOLUTION, SOUND_FORMAT (param_key's)... The overwriting of param_key's is a different process (not a math calculation) where the new value replaces the old value. What all them has in common is all overwrited data types (math calculations with ATTRIBUTE values or overwriting of RESOLUTION and SOUND_FORMAT) are "integer 4 bytes"
"SAVEDATA_DIRECTORY\0x00",
**Why overwrite Remote Play (an ATTRIBUTE flag) and RESOLUTION, SOUND_FORMAT (param_key's) are grouped together ?... This is a bit weird
"SAVEDATA_LIST_PARAM\0x00",
"SUB_TITLE\0x00",
"TITLE\0x00",
"\0x00\0x00"
};
</pre>


==CONTENT_ID, NP_COMMUNICATION_ID, NPCOMMID (Network and purchase features)==
<pre>
Needs to be explained in another page
unsigned char Account_ID[16]; account_id
unsigned long Attribute; attribute
unsigned char Category[4]="SD",0x00,0x00 category
unsigned char Detail[1024]; detail
000558 01 05 01 03 03 00 00 00 00 00 00 00 00 00 00 00 / params
000568 08 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00
000578 992 x 0x00
unsigned char Params2[12]; params2
unsigned long Parental_level; parental_level
unsigned char SaveData_directory[64]; savedata_directory
0009a8 37 33 37 00 00 00 00 00 savedata_list_param
unsigned char Sub_Title[128]; sub title
unsigned char Title[128]; title
} param_sfo;
</pre>


==ACCOUNT_ID, PARAMS, PARAMS2, SAVEDATA_FILE_LIST, SAVEDATA_PARAMS, PADDING (security, integer special data type)==
----


All this parameters uses the data type = '''0400''' (in the SFO) named "utf8 Special Mode" in the wiki page (not used in SFX so we dont have an accurate name, consequently this "special mode" is an invented name)... seems to have the particularity of returning a "right" or "wrong" when comparing the value, so it can be said that the difference between the simple "utf8" and "utf8 Special Mode" is only from the point of view of how the system manipulate this data. There is no real explain yet why this data is marked differently and who is the responsible of processing it.
== PSL1GHT PARAM.SFO  ==
See :
* 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)
* [http://www.multiupload.com/T9V8WMXR60 read_sfo.tar.bz2 (6.32 KB)]
<pre>
$ ./read_sfo PARAM1.SFO
read_sfo v0.01


*If the "scale" used for the second byte follows the proportion of 2^X (e.g. 1, 2, 4, 8, 16, 32, etc...) then we are missing a "04 01" valid data type in the list
-[HEADER]---------------
SFO Version: 101
Entries: 12


===PARAMS===
-[PARAMETERS]-----------
This table is a collection of examples of some "rare" savedatas, probably will be needed to erase this section (replaced by a resume in front page) when all areas are identifyed, but by now is usefull to have an overview of how this process works and to find good candidates for tests, feel free to add any other examples you consider interesting ;)
APP_VER: 01.00
ATTRIBUTE: 0
BOOTABLE: 1
CATEGORY: HG
LICENSE: This application was created with the official non-official SDK called psl1ght, for more information visit http://www.psl1ght.com/ . This is in no way associated with Sony Computer Entertainment Inc., please do not contact them for help, they will not be able to provide it.
PARENTAL_LEVEL: 0
PS3_SYSTEM_VER: 01.8000
RESOLUTION: 3f
SOUND_FORMAT: 117
TITLE: PSL1GHT SFO
TITLE_ID: TEST00001
VERSION: 01.00
</pre>


The examples in the table are considered rare because most of the other games uses the values: 1,5,1,2,2 (2 last pointers pointing to the same counter slot 2 at 0x0C) or 1,5,1,3,3 (2 last pointers pointing to the same counter slot 3 at 0x10), so dont add this kind of games to the table because are pointless (by now the only identifyed pointers are the values at ffset 0x03 and 0x04 and the interesting examples are when this pointers are different, or when they changes his values to different numbers like 2,3 or 3,2, or any other combination of 2 different numbers, this means the SFO has several counters enabled), also the table doesnt includes the "user/console" areas that starts at offset 0x18 because are identifyed and explained in front page
=== HEADER ===


The table differences 2 types of savedata, one for "profile" and other for standard "savedata", the reason is because are treated different by the system, after the first analysis it looks the profile support more features, it can evolve by changing his type, and it can store the counters from the other savedatas when SFO's are merged (this happens after completing the game)
==== SFO Version ====
  SFO Version: 101


*Notes
==== Entries ====
**Iris manager (and all his forks) has an hexeditor inside his archive manager, just navigate to the SFO press "X" and scroll down to offset 0x558 (where PARAMS area usually starts), is easy to recognize because always starts with this 1,5,1,2,2 bytes, at the next line are the 4 counters, 4 bytes length each
Number of entries for PARAMETERS
**To know exactly wich files has been updated inside the savedata folder is needed to look at his timestamps, iris manager doesnt displays timestamps, but you can use the FTP feature to see then from a FTP client running in a PC connected to the PS3, be sure the FTP client doesnt fool you with the timestamps, usually after a disconection/conection the old timestamps are displayed, is needed to "refresh" the files (with F5 in filezilla) or close/open the FTP client again to force it to refresh timestamps
  Entries: 12
**The system considers the savedata has been updated when the timestamp of the SFO is updated (and consequently the PFD has been updated too). But sometimes the PFD is the only file updated in the folder, in this cases the system doesnt considers the savedata has been updated. The number of times the SFO has been updated is stored in one of the counters inside PARAMS, most games loads and updates the SFO when the game boots (to be able to update his timestamp in XMB and display the last time the game was booted)


{| class="wikitable"
=== PARAMETERS ===
|-
! rowspan=2 | Game Title !! rowspan=2 | Savedata type !! colspan=12 | PARAMS areas (by offset) !! rowspan=2 | Notes
|-
! 0x0 !! 0x01 !! 0x02 !! 0x03 !! 0x04 !! 0x05 !! 0x06 !! 0x07 !! 0x08 !! 0x0C !! 0x10 !! 0x14
|-
| untold legends ||  || 1 || 1 || 1 || 2 || 2 || 0 || 0 || 0 || 00000000 || 40000000 || 00000000 || 01000000 || old game, after completing the game
|-
| venetica || profile || 1 || 1 || 1 || 2 || 3 || 0 || 0 || 0 || 00000000 || 01000000 || 02000000 || 01000000 || old game, after completing the game
|-
| yakuza 4 || SYSTEM || 1 || 3 || 1 || 2 || 2 || 0 || 0 || 0 || 00000000 || E1010000 || 00000000 || 01000000 ||
|-
| yakuza 4 || CLEAR || 1 || 1 || 1 || 2 || 2 || 0 || 0 || 0 || 00000000 || 01000000 || 00000000 || 01000000 || after completing the game, needed to start a game+
|-
| need for speed most wanted ||  || 1 || 5 || 1 || 2 || 3 || 0 || 0 || 0 || 00000000 || 7A010000 || 64000000 || 01000000 ||
|-
| motogp 13 || || 1 || 5 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 16000000 || 01000000 ||
|-
| tintin || || 1 || 5 || 2 || 2 || 2 || 0 || 0 || 0 || 00000000 || AC010000 || 00000000 || 01000000 ||
|-
| prince of persia sands of time || || 1 || 5 || 1 || 2 || 2 || 0 || 0 || 0 || 00000000 || FF000000 || 00000000 || 01000000 ||
|-
| prince of persia sands of time || || 1 || 5 || 2 || 2 || 2 || 0 || 0 || 0 || 00000000 || E6000000 || 00000000 || 01000000 ||
|-
| the last of us || profile || 1 || 7 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 01000000 || 01000000 || new profile savedata, no previous savedatas
|-
| the last of us || profile || 1 || 8 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 02000000 || 01000000 || boot game, quit game (see examples below)
|-
| the last of us || profile || 1 || 7 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 97000000 || 01000000 || after completing the game
|-
| the last of us || save || 1 || 2 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 21000000 || 01000000 || after completing the game
|-
| tomb raider || profile || 1 || 5 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 01000000 || 01000000 || new profile savedata, no previous savedatas
|-
| tomb raider || save || 1 || 5 || 1 || 3 || 3 || 0 || 0 || 0 || 00000000 || 00000000 || 01000000 || 01000000 || new game savedata, no previous savedatas
|-
| tomb raider || profile || 1 || 5 || 1 || 2 || 3 || 0 || 0 || 0 || 00000000 || 91000000 || 14000000 || 01000000 || after completing the game
|}


*Tests examples
==== APP_VER ====
**The last of us ---> http://pastebin.com/raw.php?i=SAiDzjLN (overall save behaviour with the profile, identifying update counter)
This is the version of the Homebrew, that will be displayed on the PS3
***the game loads and updates the profile in every boot (by only updating the SFO timestamp and consequently the PFD), and changes the value at offset 0x01 to 8
<pre>  <value name="APP_VER" type="string">
***when the user changes some option or forces the save the value at offset 0x01 is changed to 7
  00.50
***the profile is updated 1 time for every submenu inside "options" (there are 5 submenues under options)
  </value>
***every time the SFO is updated, the counter at 0x10  increases 1 unit
</pre>
**tomb raider ------> http://pastebin.com/raw.php?i=S13yrq9R (overall save behaviour with profile and save, update counter, timestamps, failed attempt to increase the game completion counter at offset 0x564)
***every time the game boots, only the PFD is updated (no other file is updated)
***When the savedata is updated all the files inside the folder are updated (included ICON0.PNG timestamp)
***the profile is updated 1 time for every submenu under options, and another time when exiting options (3 submenues + 1 when exiting options for a total of 4 updates)
***the profile is updated 1 time when exiting extras
***every time the SFO is updated, the counter at 0x10  increases 1 unit
***when the game is completed a new counter is added to the profile savedata, and the pointer at offset 0x03 changes to a new counter slot (from slot 3 to slot 2), the new value stored in counter slot 2 is partially unknown but seems to be another counter taken from the SFO of the save used to finish the game


==SAVEDATA_LIST_PARAM==
==== ATTRIBUTE ====
'''Example of SAVEDATA_LIST_PARAM containing the "folder size in sectors" in the gamesaves generated by the game "The Orange Box: BLES00153, BLES00171, BLES00172, BLUS30055"'''
This value enable special functions of the Homebrew (Enable Move Controller, etc..)
{{Boxframe1|content='''Game Selector Boot Process'''
<pre>  <value name="ATTRIBUTE" type="integer">
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
  0
  </value>
</pre>


Each of this games has his own .SELF and his own SAVECONTENTPS3 folder (each game uses different [[Content_Information_Files#Saved_Data_Utility_.28PS3.29 | 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"
==== BOOTABLE ====
If this pkg is bootable or not. (1 to enable, 0 to disable)
useful when you are going to make a data pkg.
<pre>  <value name="BOOTABLE" type="integer">
  1
  </value>
</pre>


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)
==== CATEGORY ====
}}
This is the category where you will see your homebrew.
<pre>  <value name="CATEGORY" type="string">
  HG
  </value>
</pre>
these are the categories available on a Official Firmware:
* HM : Playstation Network
* GD : Game patch of disc game
* CB : Network
* HG : Harddrive Game include sub category as Game patch of HDD Game or Special Application as syteme files for HDD game X0, X4
* DG : Disc Game (blueray)
* AV : Video
* AM : Music
* AP : Photo
* AT : TV
* MN : Minis Network
* IP : Install Package
* DP : Disc Package
* TR : Theme DIR
* VR : Video DIR
* VI : Video


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)
==== LICENSE ====
PSL1GHT Licence ( DO NOT REMOVE IT and DON'T CHANGE IT)
LICENSE has a fixed block size of 128 bytes
<pre>  <value name="LICENSE" type="string">
  This application was created with the official non-official SDK called PSL1GHT, for more information visit http://www.psl1ght.com/ . This is in no way associated with Sony Computer Entertainment Inc., please do not contact them for help, they will not be able to provide it.
  </value>
</pre>


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)
==== PARENTAL_LEVEL ====
Parental level, ( 0 for everyone )
<pre>  <value name="PARENTAL_LEVEL" type="integer">
  0
  </value>
</pre>


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"
==== PS3_SYSTEM_VER ====
Minimum PS3 System version to be bootable this homebrew
<pre>  <value name="PS3_SYSTEM_VER" type="string">
  01.5000
  </value>
</pre>


*This save game is a good example because always contains the same values in SAVEDATA_LIST_PARAM (the second one from euro region): BLES00153-PORCONF-0 [[http://www.gamefaqs.com/ps3/934385-the-orange-box/saves Link 1]] [[http://db.gamefaqs.com/console/ps3/save/the_orange_box_eu.zip Link 2]]
==== RESOLUTION ====
{| class="wikitable"
TV Resolution (Unknown )
|-
<pre>  <value name="RESOLUTION" type="integer">
! File name !! real file size (in bytes) !! theorical disk size (in clusters) !! cluster round-up to even number !! real disk size (in bytes)
  63
|-
  </value>
| ICON0.PNG || 12.461 || 12461/512=24,3... = 25 || 25+1= 26 || 26*512= 13.312
</pre>
|-
| 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
|-
!! colspan="5" | 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
==== SOUND_FORMAT ====
Type of sound
<pre>  <value name="SOUND_FORMAT" type="integer">
  279
  </value>
</pre>


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)
==== TITLE ====
Title of the homebrew
<pre>  <value name="TITLE" type="string">
  Title of this Homebrew
  </value>
</pre>
==== TITLE_ID ====
ID of the homebrew (this id must be the same id inside the Makefile)
<pre>  <value name="TITLE_ID" type="string">
  XXYYYYYY
  </value>
</pre>


*PARAM.PFD relationship ?
==== VERSION ====
Homebrew Version
<pre>  <value name="VERSION" type="string">
  00.50
  </value>
</pre>


=Other parameters not used in PS3 (only used in other sony consoles)=
The only purpose of this table is to keep a record of them to not confuse with the ones used in PS3


{| class="wikitable" style="font-size:x-small"
(source deroad: http://ps3tutorials.wikispaces.com/Edit+the+sfo.xml+Tutorial)
|-
----
! rowspan=2 | Parameter !! colspan=3 | Console !! rowspan=2 | Notes
|-
! PSP !! [http://www.psdevwiki.com/vita/index.php?title=Talk:System_File_Object_%28SFO%29_%28PSF%29 PSV] !! [http://www.psdevwiki.com/ps4/Param.sfo PS4]
|-
| DISC_ID || {{Yes}} || || ||
|-
| DISC_NUMBER || {{Yes}} || || {{Yes}} ||
|-
| DISC_TOTAL || {{Yes}} || || {{Yes}} ||
|-
| DISC_VERSION || {{Yes}} || || ||
|-
| DRIVER_PATH || {{Yes}} || || ||
|-
| GAMEDATA_ID || {{Yes}} || || || Used in some PSP UMD games, found in [[game_ext_plugin]].sprx
|-
| HRKGMP_VER || {{Yes}} || || ||
|-
| REGION || {{Yes}} || || ||
|-
| USE_USB || {{Yes}} || || ||
|-{{cellcolors|red}}
| ACCOUNT_ID ||  || {{Yes}} || || Not the same ACCOUNT_ID than PS3... this one for vita has  (fmt:utf8-S, len:0x8, max_len:0x8)
|-
| ATTRIBUTE2 ||  || {{Yes}} || ||
|-
| ATTRIBUTE_MINOR ||  || {{Yes}} || ||
|-
| GC_RO_SIZE || || {{Yes}} || || GameCache ReadOnly Size ?
|-
| GC_RW_SIZE || || {{Yes}} || || GameCache ReadWrite Size ?
|-
| INSTALL_DIR_ADDCONT ||  || {{Yes}} || || Shared Additional Content, fmt:utf-8, max_len:12
|-
| INSTALL_DIR_SAVEDATA ||  || {{Yes}} || || Shared Save Data, fmt:utf-8, max_len:12
|-
| PARENT_DIRECTORY ||  || {{Yes}} || || used in PSvita savedata (fmt:utf8, len:0xB, max_len:0x40)
|-
| PSP2_DISP_VER ||  || {{Yes}} || || utf-8, max_len:8, example: "00.000"
|-
| PSP2_SYSTEM_VER ||  || {{Yes}} || || int32
|-
| PUBTOOLINFO ||  || {{Yes}} || {{Yes}} ||
|-
| SAVEDATA_MAX_SIZE || || {{Yes}} || || int32
|-
| SAVEDATA_VER ||  || {{Yes}} || || used in PSvita savedata (fmt:utf8, len:0x6, max_len:0x8)
|-
| STITLE ||  || {{Yes}} || || App Short Title, utf-8, len:52
|-
| STITLE_xx ||  || {{Yes}} || ||
|-
| SUPPORT_URI ||  || {{Yes}} || ||
|-
| APP_TYPE ||  ||  || {{Yes}} ||
|-
| CONTENT_VER ||  ||  || {{Yes}} ||
|-
| DISP_LOCATION_x ||  ||  || {{Yes}} ||
|-
| DOWNLOAD_DATA_SIZE ||  ||  || {{Yes}} ||
|-
| FORMAT ||  ||  || {{Yes}} ||
|-
| INSTALL_DIR_SAVEDATA ||  ||  || {{Yes}} ||
|-
| IRO_TAG ||  ||  || {{Yes}} ||
|-
| PROVIDER ||  ||  || {{Yes}} ||
|-
| PROVIDER_xx ||  ||  || {{Yes}} ||
|-
| PUBTOOL_VERSION ||  ||  || {{Yes}} ||
|-
| REMOTE_PLAY_KEY_ASSIGN ||  ||  || {{Yes}} ||
|-
| SERVICE_ID_ADDCONT_ADD_x ||  ||  || {{Yes}} ||
|-
| SYSTEM_ROOT_VER ||  ||  || {{Yes}} ||
|-
| SYSTEM_VER ||  ||  || {{Yes}} ||
|-
| USER_DEFINED_PARAM_x ||  ||  || {{Yes}} ||
|-
| SUB_TITLE_ID || || || ||
|-
| CONTENT_URL ||  || || || URL of content (not parameter but related to link.xml?)
|-
| _PARAM.SFO || ? || || || found in [[game_ext_plugin]].sprx (anti exploit/bug prevention ?)
|-
| __PARAM.SFO || ? || || || found in [[game_ext_plugin]].sprx (anti exploit/bug prevention ?)
|-
| /PARAM.SFO || ? || || || found in [[game_ext_plugin]].sprx (anti exploit/bug prevention ?)
|-
| FOLDER_NAME || || || || found in [[game_ext_plugin]].sprx
|-
| FOLDER_NAME_00 || || || || found in [[game_ext_plugin]].sprx
|-
|}


=DISC contents temporal installations (in dev_hdd0/tmp)=
== PS3SYS PARAM.SFO ==
'''/dev_hdd0/tmp/disc_install/'''
<pre>
$ ./read_sfo PARAM2.SFO
read_sfo v0.01


=Reserved Folder Names used in HDD or disc contents=
-[HEADER]---------------
SFO Version: 101
Entries: 20


==L00 up to L05 (License Area subfolders with restricted .SFO's)==
-[PARAMETERS]-----------
APP_VER: 01.00
ATTRIBUTE: 880727
BOOTABLE: 1
CATEGORY: HG
LICENSE: Library programs ©Sony Computer Entertainment Inc. Licensed for play on the PLAYSTATION®3 Computer Entertainment System or authorized PLAYSTATION®3 format systems. For full terms and conditions see the user's manual. This product is authorized and produced under license from Sony Computer Entertainment Inc. Use is subject to the copyright laws and the terms and conditions of the user's license.
PARENTAL_LEVEL: 0
PARENTAL_LEVEL_A: ffffffff
PARENTAL_LEVEL_C: ffffffff
PARENTAL_LEVEL_E: ffffffff
PARENTAL_LEVEL_H: ffffffff
PARENTAL_LEVEL_J: ffffffff
PARENTAL_LEVEL_K: ffffffff
PS3_SYSTEM_VER: 00.93
REGION_DENY: fffff001
RESOLUTION: 1
SOUND_FORMAT: 1
TITLE: PS3SYS SFO
TITLE_ID: TEST00002
VERSION: 01.00
</pre>


*From dev_bdvd: ?
/dev_bdvd/PS3_GAME/L00/PARAM.SFO (up to L05)
/dev_bdvd/PS3_GAME/C00/L00/PARAM.SFO (up to L05)


*From dev_hdd0:
=== HEADER ===
/dev_hdd0/game/ABCD12345/Lxx/PARAM.SFO
/dev_hdd0/game/ABCD12345/C01/Lxx/PARAM.SFO ---only working if region setting is L03 country (only other tested: L00 not working)


Speculation: Path used to restrict/use different License in the same region (L03?).
==== SFO Version ====
  SFO Version: 101


You can quickly check your region area with this sub folder (and inserting content file informations such ICON0). L** path can avoid error some code related to param.sfo/disc.sfo.
==== Entries ====
Number of entries for PARAMETERS
<pre>
  Entries: 20
</pre>


{| class="wikitable"
=== PARAMETERS ===
! Folder name !! License Area !! Regions
==== APP_VER ====
|-
This is the version of the Homebrew, that will be displayed on the PS3
| L00 || SCEJ || Japan
String (UTF-8)
|-
max length 8
| L01 || SCEA || US (L01), Canada (North America), Mexico (L01), Central America, South America
<pre>  <value name="APP_VER" type="string">
|-
  01.00
| L02 || SCEE || Europe/Middle East/Africa, U.K./Ireland, Australia/New Zealand (Oceania: L02), Russia, Ukraine, India, Central Asia ,
  </value>
|-
</pre>
| L03 || SCEH || Singapore/Malaysia (Southeast Asia)?, Taiwan (L03), Hong Kong (L03)
|-
| L04 || SCEK || Korea (South Korea)
|-
| L05 || SCH  || China
|-
|}


(Unlinked Note: Button Behavior: for L05 is also O , Oceania is X. Path Pioneer with significant idea about it: Deroad)
==== ATTRIBUTE ====
This value enable special functions of the Homebrew (Enable Move Controller, Enable PSP remoteplay etc..)
Integer
max length 4
<pre>  <value name="ATTRIBUTE" type="integer">
  880727
  </value>
</pre>
===== Enable PSP remoteplay =====
* MPEG-4 SP/ATRAC=0x1
* MPEG-4 AVC/AAC=0x4
===== Enable BGM =====
* Enable ingame XMB BGM=0x20
===== Enable Move Controller =====
* Support Playstation Move=0x800000
* Enable Move controller warning=0x100
* Enable Navigation controller warning=0x200
* Enable Playstation Eye warning=0x400
* Enable Calibration warning=0x800
===== Enable 3D Warning =====
* Enable 3D warning screen=0x1000


You can load different Lxx folder by using [[QA_Flagging#Debug_Menu_settings_not_in_Retail.2FCEX_QA | Debug Menu Setting Region]] but be alert about your TV setting display video (NTSC/PAL).
==== BOOTABLE ====
If this pkg is bootable or not. (1 to enable, 0 to disable)  
useful when you are going to make a data pkg.
Integer
max length 4
<pre>  <value name="BOOTABLE" type="integer">
  1
  </value>
</pre>


Here is a collection of folders (from L00 to L10) with icons displaying the different numbers, this way is easy to know which one is used by XMB, to make the test just copy the folders next to USRDIR folder inside the installation folder of any app: '''region subfolders tests.zip (430.22KB)''' http://www.sendspace.com/file/ikvult
==== CATEGORY ====
This is the category where you will see your homebrew.
String(UTF-8)
max length 4
<pre>  <value name="CATEGORY" type="string">
  HG
  </value>
</pre>
these are the categories available on a Official Firmware:
* HM : Playstation Network
* CB : Network
* HG : Harddrive Game
* DG : Disc Game (blueray)
* AV : Video
* AM : Music
* AP : Photo
* AT : TV
* MN : Minis Network
As Additional Items:
* AR : Patches
* IP : Install Packages
* VI : Video
* TR : Theme
* XR : Extra Contents


See also: "license area" restrictions used in combination with "parental level" http://www.ps3devwiki.com/wiki/Talk:PARAM.SFO#Lxx:_License_Area
==== CONTENT_ID ====
ContentID for Gamepurchase
String(UTF-8)
max length 48


==EX_GAME and EX_VIDEO==
==== LICENSE ====
PSL1GHT Licence ( DO NOT REMOVE IT and DON'T CHANGE IT)
LICENSE has a fixed block size of 128 bytes
String(UTF-8)
max length 512
<pre>  <value name="LICENSE" type="string">
  Library programs ©Sony Computer Entertainment Inc. Licensed for play on the PLAYSTATION®3 Computer Entertainment System or authorized PLAYSTATION®3 format systems. For full terms and conditions see the user's manual. This product is authorized and produced under license from Sony Computer Entertainment Inc. Use is subject to the copyright laws and the terms and conditions of the user's license.
  </value>
</pre>


*Theory 1:
==== NP_COMMUNICATION_ID ====
**Belongs to PS3_CONTENT disc substructure (same than THEMEDIR & VIDEODIR)
Comm ID for Bootable message
**StorageMedia:Common.fileName EX_GAME <--- Mounted by XMB in game column using key="seg_add_content_device" see: http://www.ps3devwiki.com/wiki/XMB-Game
String(UTF-8)
**StorageMedia:Common.fileName EX_VIDEO <--- Mounted by XMB in video column using key="seg_add_content_device" see: http://www.ps3devwiki.com/wiki/XMB-Video
max length 16


*Theory 2:
==== PARENTAL_LEVEL ====
**EX_GAME & EX_VIDEO requires SFO Category 'XR' and are emerged into PS3_EXTRA! (EX_GAME/EX_VIDEO are actually leftovers?)
Integer
max length 4
Parental level, (0-11 ; 0 for everyone )
<pre>  <value name="PARENTAL_LEVEL" type="integer">
  0
  </value>
</pre>
===== PARENTAL_LEVEL_A =====
Parental level, SCEA
Integer
max length 4
<pre>  <value name="PARENTAL_LEVEL_A" type="integer">
  ffffffff
  </value>
</pre>
===== PARENTAL_LEVEL_C =====
Parental level, SCH
Integer
max length 4
<pre>  <value name="PARENTAL_LEVEL_C" type="integer">
  ffffffff
  </value>
</pre>
===== PARENTAL_LEVEL_E =====
Parental level, SCEE
Integer
max length 4
<pre>  <value name="PARENTAL_LEVEL_E" type="integer">
  ffffffff
  </value>
</pre>
===== PARENTAL_LEVEL_H =====
Parental level, SCEH
Integer
max length 4
<pre>  <value name="PARENTAL_LEVEL_H" type="integer">
  ffffffff
  </value>
</pre>
===== PARENTAL_LEVEL_J =====
Parental level, SCEJ
Integer
max length 4
<pre>  <value name="PARENTAL_LEVEL_J" type="integer">
  ffffffff
  </value>
</pre>
===== PARENTAL_LEVEL_K =====
Parental level, SCEK
Integer
max length 4
<pre>  <value name="PARENTAL_LEVEL_K" type="integer">
  ffffffff
  </value>
</pre>


==Others==
==== PS3_SYSTEM_VER ====
Minimum PS3 System version to be bootable this homebrew
String(UTF-8)
max length 8
<pre>  <value name="PS3_SYSTEM_VER" type="string">
  00.93
  </value>
</pre>


  -GE
==== REGION_DENY ====
  PS3 DVD / PS2 CD
Region restrictions (only possible with 3.30 and higher)
/dev_bdvd/NORMAL
  Integer
/dev_bdvd/HYBRID
  max length 4
<pre>  <value name="REGION_DENY" type="integer">
  fffff001
  </value>
</pre>


  -GP
==== RESOLUTION ====
  /dev_bdvd/PHOTODIR
TV Resolution (576(16x9)=0x20, 480(16:9)=0x10, 1080=0x8, 720=0x4, , 576=0x2, 480=0x1)
/dev_bdvd/PS3_CONTENT/PHOTODIR
  Integer
/dev_bdvd/PS3_CONTENT/PHOTODIR/PARAM.SFO
  max length 4
<pre>  <value name="RESOLUTION" type="integer">
  1
  </value>
</pre>


  -GM
==== SOUND_FORMAT ====
  /dev_bdvd/MUSICDIR
Type of sound (DTS Digital Surround=0x202, Dolby Digital=0x102, 7.1LPCM=0x10, 5.1LPCM=0x4, 2LPCM=0x1)
/dev_bdvd/PS3_CONTENT/MUSICDIR
  Integer
/dev_bdvd/PS3_CONTENT/MUSICDIR/PARAM.SFO
  max length 4
<pre>  <value name="SOUND_FORMAT" type="integer">
  1
  </value>
</pre>


  -GV
==== TITLE ====
  /dev_bdvd/VIDEODIR
Title of the homebrew
  /dev_bdvd/PS3_CONTENT/VIDEODIR
  String(UTF-8)
  /dev_bdvd/PS3_CONTENT/VIDEODIR/PARAM.SFO
  max length 128
<pre>  <value name="TITLE" type="string">
  Title of this Homebrew
  </value>
</pre>
===== TITLE_00 =====
Localised title - Japanese
String(UTF-8)
max length 128
===== TITLE_01 =====
Localised title - English
String(UTF-8)
max length 128
===== TITLE_02 =====
Localised title - French
String(UTF-8)
max length 128
===== TITLE_03 =====
Localised title - Spanish
String(UTF-8)
max length 128
===== TITLE_04 =====
Localised title - German
String(UTF-8)
max length 128
===== TITLE_05 =====
Localised title - Italian
String(UTF-8)
max length 128
===== TITLE_06 =====
Localised title - Dutch
String(UTF-8)
max length 128
===== TITLE_07 =====
Localised title - Portuguese
String(UTF-8)
max length 128
===== TITLE_08 =====
Localised title - Russian
String(UTF-8)
max length 128
===== TITLE_09 =====
Localised title - Korean
  String(UTF-8)
max length 128
===== TITLE_10 =====
Localised title - Trad.Chinese
String(UTF-8)
  max length 128
===== TITLE_11 =====
Localised title - Simp.Chinese
String(UTF-8)
max length 128
===== TITLE_12 =====
Localised title - Finnish
String(UTF-8)
max length 128
===== TITLE_13 =====
Localised title - Swedish
String(UTF-8)
max length 128
===== TITLE_14 =====
Localised title - Danish
String(UTF-8)
max length 128
===== TITLE_15 =====
Localised title - Norwegian
String(UTF-8)
max length 128
===== TITLE_16 =====
Localised title - Polish
String(UTF-8)
max length 128


  -GT
==== TITLE_ID ====
  /dev_bdvd/THEMEDIR
[[TITLE ID]] of the homebrew (this id must be the same id inside the Makefile)
/dev_bdvd/PS3_CONTENT/THEMEDIR
  String(UTF-8)
/dev_bdvd/PS3_CONTENT/THEMEDIR/PARAM.SFO
  max length 16
<pre>  <value name="TITLE_ID" type="string">
  XXYYYYYY
  </value>
</pre>


=Todo and Suggestions=
==== VERSION ====
*'''Parameters requirements table''' has lot of "yes" that should be "opt" (optional). The "yes" means the value is mandatory, so the table is not fully correct.Also... this table represents the values needed for each content ordered by CATEGORY, but there are different contents that shares the same CATEGORY (like the different types of patches, DLC's, and game installations... alll them uses "'''GD'''". The "parameter table" cant contain all this different variations, by now i dont see a way to do it--[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 12:25, 29 January 2014 (EST)
Homebrew Version
*The internal structure example for SFO needs to be replaced by a new one with at least 2 parameters, this will make more obvious how are meassured the relative offsets displacements
String(UTF-8)
*Is needed an explain of how the file is loaded in stages by the system, how is indexed, and the method to access single areas to update single values, the rebuilding process, etc... this is complex and i ignore (but i imagine) how is made by the PS3, but the source codes i saw that manages SFO files uses different methods and styles (and probably some others i ignore), by now im not skilled enought to discuss this in the page but an open talk about all this could be interesting --[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 23:41, 15 February 2014 (EST)
max length 8
*'''Overall page cleanup''' of obsolete or wrong info, grammar corrections, etc...
<pre>  <value name="VERSION" type="string">
*'''Link each ID to a subpage''', so they can be centrally managed (some are also listed here: [[IDs_%2B_labels | ID's and labels]]
  01.00
**The affected sections in front page are: [[PARAM.SFO#CONTENT_ID|CONTENT_ID]], [[PARAM.SFO#NP_COMMUNICATION_ID|NP_COMMUNICATION_ID]], [[PARAM.SFO#NPCOMMID|NPCOMMID]], and [[PARAM.SFO#TITLE_ID|TITLE_ID]], explaining them in the .SFO page (as i did initially) doesnt looks the best solution, but is needed at least a short description of each, now there are specific pages for them (without much descriptions) and the decission of separating all the IDs in pages makes hard to have a overall view of them... the best solution i see is to use the [[IDs_%2B_labels | ID's and labels]] converted to a template an use it repeatedly in SFO page, but the names are not the same used in SFO, also this doesnt solves the short description needed in SFO page (that should be duplicated, and expanded in his specific pages)--[[User:Sandungas|Sandungas]] ([[User talk:Sandungas|talk]]) 12:25, 29 January 2014 (EST)
  </value>
</pre>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)