Game Saves: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
Line 205: Line 205:
|0x00002 || 125 (0x7D) || 00 || filled with zero: unused  
|0x00002 || 125 (0x7D) || 00 || filled with zero: unused  
|-
|-
|0x0007F|| 1 || 0E || XOR operation (4D 43)
|0x0007F|| 1 || 0E || XOR operation (on 4D 43)
|-
|-
| rowspan="9" style="background-color:#DDDDDD;" | 1 || 0x00080 || 1 || || '''Available blocks'''. See table below. Also used on PocketStation to retrieve use and empty block.
| rowspan="9" style="background-color:#DDDDDD;" | 1 || 0x00080 || 1 || || '''Available blocks'''. See table below. Also used on PocketStation to retrieve use and empty block.
Line 261: Line 261:
| 0x0009E || 97 (0x61) || 00 || Unused
| 0x0009E || 97 (0x61) || 00 || Unused
|-
|-
| 0x000FF || 1        || A0 || XOR operation all bytes (e.g. on A0 FF FF when not used).
| 0x000FF || 1        || A0 || XOR operation all bytes of the frame (e.g. on A0 FF FF when not used).
|-
|-
| style="background-color:#DDDDDD;" | Up to 14 || || || || Others similar Directory Frames
| style="background-color:#DDDDDD;" | Up to 14 || || || || Others similar Directory Frames
Line 380: Line 380:
Some values on the header are more "sensitive" than others.
Some values on the header are more "sensitive" than others.


Size: 9KB (when save data using one block), Ps3 XMB display as 8KB.
Size: 9KB (when save data using one block), PS3 XMB display as 8KB.


{| class="wikitable"
{| class="wikitable"
|-
|-
! colspan="1" style="text-align:center; background-color:#DDDDDD;" |Offset || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Size || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Value || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Description
! colspan="1" style="text-align:center; background-color:#DDDDDD;" |Offset || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Length || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Example || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Description
|-
|-
|0x00000 || || .VSP    ||  
|0x00000 || 8          || 00 56 53 50 00 00 00 00 || "VSP"
|-
|-
|0x00005 || 4 || 00 00 00 00 ||
|0x00008 || 40 (0x28) || xx  || signature per game save?
|-
|-
|0x00008 || 40 || || signature per game save?
|0x00030 || 8          || 00 00 00 00 00 00 00 00 ||
|-
|-
|0x00038 || 5? || 14 00 00 00 01 || when it s 2C 00 00 00 02 (used on PS2) , PS3 will freeze.
|0x00038 || 8          || 14 00 00 00 01 00 00 00 || when it s 2C 00 00 00 02 (used on PS2) , PS3 will freeze.
|-
|-
|0x00040 || 4 || 00 20 00 00 || Size display on XMB (See '''Use Byte''' on .VM1 for regular value), If value is changed, the XMB will display the change.  
|0x00040 || 4         || 00 20 00 00 || Size display on XMB (See '''Use Byte''' on .VM1 for regular value).
|-
|-
|0x00044 || 1? || 84 || Value for different CLUTS for ICON displayed on XMB.
|0x00044 || 4?         || 84 00 00 00 || Value for different CLUTS for ICON displayed on XMB.
|-
|-
|0x00045 || 27? ||
|0x00048 || 4?         || 00 02 00 00 ||
|-
|0x00050 || 16?(0x10)  || 00  || not used?
|-
|0x0005C || 4?        || 00  || repeat Use Byte
|-
|-
|0x00060 || 4?  || 03 90 00 00 ||
|0x00060 || 4?  || 03 90 00 00 ||
|-
|-
|0x00064 || 20 || || File Name (offset 6A need to be "P" for PocketStation type display, see .VM1)  
|0x00064 || 20 (0x14) ||   || File Name (offset 6A need to be "P" for PocketStation type display, see .VM1)
|-
|-
|0x000D6 || 4? || || Type (display on XMB: press triangle-information):
|0x00078 || 12 (0x0C) || 00 || filled with zero
|-
|0x00084 || 2 || 53 43 || "SC" see .VM1
|-
|0x000D6 || 4 || 00 || Type (display on XMB: press triangle-information):
Saved Data (Playstation®), filled with zero.
Saved Data (Playstation®), filled with zero.
|-
|-
|}
|}


Little nice edits (not useful but available for everyone,and revert your edits to make the save data back to normal otherwise it will be corrupted)


*Size: can be any value display up to 56kb?
*Size: can be any value display up to 56kb?


*CLUTS (color palette) displayed on XMB: some others values are valid. There are fews around 70 (probably used for .PSV ps2), but the funny value(s) for this test room are 10 (especially), 11 or 12 (and others waiting for you to be tested) the title of the save data will also change to : "緊襟". One translation can be as "emergency reverse" (if there are one). The game save might affect the result when you enter to this TEST room CLUT.
*CLUTS (color palette) displayed on XMB: some others values are valid. There are fews around 70 (probably used for .PSV ps2), but the funny value(s) for this test room are 10, 11 or 12 (and others waiting for you to be tested) the title of the save data will also change for example as : "緊襟" (Not serious translation can be, funny one can be "emergency reverse"). The game save (region etc..) might affect the result when you enter to this secret egg easter test room CLUT.


*TYPE: see '''PocketStation Identifier''': You can activate this "rare" display if you write the flag "MCX0"combined with "P" on the filename at Offset D6 to D9 (4D 43 58 30)  
*TYPE: see '''PocketStation Identifier''': You can activate this "rare" display if you write the flag "MCX0"combined with "P" on the filename at Offset D6 to D9 (4D 43 58 30)




Line 451: Line 458:
! colspan="1" style="text-align:center; background-color:#DDDDDD;" |Offset || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Lenght || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Example || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Description
! colspan="1" style="text-align:center; background-color:#DDDDDD;" |Offset || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Lenght || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Example || colspan="1" style="text-align:center; background-color:#DDDDDD;" |Description
|-
|-
|0x00000 ||   5 || .PMV  || ( 00 50 4D 56 80 )
|0x00000 || 12 (0x0C)  || 00 50 4D 56 80 || "PMV"
|-
|0x00005 ||  7 || filled with zero ||
|-
|-
|0x0000C || 20  ||  ||'''When empty:'''(and not being transfer)
|0x0000C || 20  ||  ||'''When empty:'''(and not being transfer)
On SCEVMC0.VMP: Hexa value to 28 up to 3B ( ()*+,-./0123456789:; )
On SCEVMC0.VMP: 0x28 to 0x3B ( ()*+,-./0123456789:; )


On SCEVMC1.VMP: Hexa value to 3C up to 4F (  <=>?@ABCDEFGHIJKLMN0)
On SCEVMC1.VMP: 0x3C to 0x4F (  <=>?@ABCDEFGHIJKLMN0)


'''When there are data:'''(and being transfer):
'''When there are data:'''(and being transfer):
Line 469: Line 474:
'''When there are data:'''(and being transfer):
'''When there are data:'''(and being transfer):
|-
|-
|0x00034 ||  74 || filled with zero
|0x00034 ||  74 || 00 || filled with zero
|-
|-
|0x00080 ||  2  || MC || From here, similar than Block 0 on .VM1 ( may be fews differences about infos related to PocketStation or CLUT)
|0x00080 ||  2  || 4D 43 || "MC" From here, similar than Block 0 on .VM1 (with possible slight differences)
|-
|-
|}
|}

Revision as of 06:45, 20 February 2013

  • Common terms used in this page
    • <userid> The number assigned by the system to this user when his account was created (is a counter). Stored in XRegistry.sys, e.g: 00000001
    • <SAVEDATA_DIRECTORY> Name of the folder where the savedata files are stored, composed by TITLE_ID + some variable characters added by the game, e.g: BLES00001-nick01save01
    • <TITLE_ID> Name of the folder where the game was installed (different than the TITLE_ID in his PARAM.SFO that refers to the original ID when the game was released years ago as a disc)
    • <virtual_memcard> The name you assigned to the card when it was created from the "Memory Card Utility (PS/PS2)" in XMB
    • Any_Other_Files Represents all the other files in the folder generated by the game with any filename and filextensions that are dependant of each game and can vary, e.g: "PROFILE.BIN", "PROGRESS.SAV" (in PS3 Game Saves) or "SECURE.BIN" (in Minis Game Saves) etc...
    • <MC_Save_ID> Identifyer of each Game Save of a PS1 or PS2 Memory Card. Used as the file name when an single Game Save is exported to USB, e.g: BESLES-53702535953.PSV
    • PARAM.SFO Information about the Game Save. This one is never encrypted.
    • PARAM.PFD Signatures of some of the other files in the folder. The signature method is still unknown.

Game Saves PS3

Saved Data Utility (PS3).jpg
Storage Media Path Import/Export file conversions
Internal HDD dev_hdd0/home/<userid>/savedata/<SAVEDATA_DIRECTORY>/ICON0.PNG No conversion
dev_hdd0/home/<userid>/savedata/<SAVEDATA_DIRECTORY>/PARAM.PFD values updated when imported ? (not verifyed)
dev_hdd0/home/<userid>/savedata/<SAVEDATA_DIRECTORY>/PARAM.SFO values updated when imported ? (not verifyed)
dev_hdd0/home/<userid>/savedata/<SAVEDATA_DIRECTORY>/Any_Other_Files No conversion
External USB dev_usb0/PS3/SAVEDATA/<SAVEDATA_DIRECTORY>/ICON0.PNG No conversion
dev_usb0/PS3/SAVEDATA/<SAVEDATA_DIRECTORY>/PARAM.PFD values updated when exported ? (not verifyed)
dev_usb0/PS3/SAVEDATA/<SAVEDATA_DIRECTORY>/PARAM.SFO values updated when exported ? (not verifyed)
dev_usb0/PS3/SAVEDATA/<SAVEDATA_DIRECTORY>/Any_Other_Files No conversion

PS3 Protections

There are 3 possible protections in "PS3 Game Saves" that can be used together at the same time, it depends of the game wich ones are used and what files are affected

PS3 Game Save files encrypted

Game developers have the option to encrypt the files generated by the game (when the game writes/reads the Game Save). This encryption/decryption is managed by the game and is different for each game, in some games this encryption doesn't exist, this allows modifications/cheats for Game Saves which files are not encrypted or the encryption method is known, and are not signed by PS3 (read next section below)

For more info about unencrypted game saves see: Game_Modding

PS3 Game Save files signed

PS3 can generate a signature for each file inside the folder, this signatures are stored in the Protected files table inside the file PARAM.PFD

This table inside PARAM.PFD is limited to a maximun of 114 signatures, seems to be a number high enough for all games developers to protect all, but the fact is usually only a few files (the important ones) are protected with this signatures, one of them uses to be PARAM.SFO

This signature generation/verification is managed by the PS3 and not the game, and can be used together in combination with the previous method (1ºencrypted + 2ºsigned)

PS3 Game Saves Copy Protected

There is a "feature" in "PS3 Game Save" format that allows developers to disable the "copy" function to an external USB storage device (by pressing triangle over his icon in XMB with the option "copy" of the side menu)

This "copy protection" is managed by a "flag" that can be turned on/off inside PARAM.SFO, see: Copy protection

But... this means you need to modify PARAM.SFO (the signature changes)... so this only works when PARAM.PFD doesn't contains the signature of PARAM.SFO (only a few old games)

Also, This can be used together in combination with the previous methods (1ºencrypted + 2ºsigned + 3ºcopy protected)

Game Saves Minis/PSP Remaster/ PSP

Saved Data Utility (Minis PSP).jpg
Storage Media Path Import/Export file conversions
Internal HDD dev_hdd0/home/<userid>/minis_savedata/<SAVEDATA_DIRECTORY>/ICON0.PNG No conversion
dev_hdd0/home/<userid>/minis_savedata/<SAVEDATA_DIRECTORY>/PARAM.SFO values updated when imported ? (not verifyed)
dev_hdd0/home/<userid>/minis_savedata/<SAVEDATA_DIRECTORY>/Any_Other_Files No conversion
External USB & PSP & PSvita? dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/ICON0.PNG No conversion
dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/PARAM.SFO values updated when exported ? (not verifyed)
dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/Any_Other_Files No conversion

This format is inherited from PSP (is older than PS3), and later implemented in PSvita, the "Minis Saved Games" can be exported/imported between the 3 consoles. There is no conversion of the files between the 3 consoles.

PSP remaster & PSP save for apps&game can also be exported/imported following the same path.

Game Saves PSP Remaster

  • PSP remaster games:

Monster Hunter 3rd HD ver. (BLJM-85001)

K-On!Houkago Live!! HD ver. (BLJM-85002)

Sangoku Musou Multi Raid 2 HD Version (BLJM-85003)


  • Speculation:

PSP saves featured on FW 3.60, PSP remaster saves on FW 3.70 (with also Adhoc)

Gamesave function PSP<--->PS3 (SAVEDATA_USE_PS3_SAVE on psp emulator command)

  • Notes about native support

Cobra dongle writes/reads PSP game saves from path dev_hdd0/home/<userid>/minis_savedata/<SAVEDATA_DIRECTORY>.

Game Saves PS1

Memory Card Utility (PS PS2).jpg
Storage Media Path Import/Export file conversions
Internal HDD dev_hdd0/savedata/vmc/<virtual_memcard>.VM1 When importing the "block" is injected in the VM1
External USB & PSvita? dev_usb0/PS3/EXPORT/PSV/<Save_ID>.PSV When exporting to USB the "block" is extracted from VM1 an saved separatedly as a PSV
External PSP & PSvita?
Only "PS1 Classics"
dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/ICON0.PNG CATEGORY "MS"
dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/PARAM.SFO
dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/SCEVMC0.VMP When exporting to PSP the "block" is extracted from VM1 and injected in VMP
dev_usb0/PSP/SAVEDATA/<SAVEDATA_DIRECTORY>/SCEVMC1.VMP When exporting to PSP the "block" is extracted from VM1 and injected in VMP
External MC mc_root/ Raw copy from/to a real PS1 (or PocketStation) or PS2 Memory Card using a Memory Card Adapter

Memory Card Formats PS1

Memory card PS1 (original)

Original Memory card PS1/ VM1 VMP
128KB = 131072 bytes = 0x20000 bytes 129 KB = 131200 bytes = 0x20080 bytes
Details
1 Block = 8KB = 8192 bytes = 0x2000 bytes
1 Frame =128 bytes = 0x80 bytes


The original memory card for the PS1 is 128 kilobytes of non-volatile RAM. This is split into 16 blocks each containing 8 kilobytes each. The very first block is is a header block used as a directory and file allocation table leaving 15 blocks left over for data storage. The data blocks contains the program data file name, block name, icon, and other critical information. The PSX accesses the data via a "frame" method. Each block is split into 64 frames, each 128 bytes. The first frame (frame 0) is the file name, frames 1 to 3 contain the icon, (each frame of animation taking up one frame) leaving the rest of the frames for save data.

Original Memory Card PS1 (128 KB) (on PS3 XMB display :  freespace available / 120KB)
         |- Header Block 0 (this block is not accessible and visible from menu)
         |       |---1  Header Frame    ( 128 bytes)
         |       |---15 Directory Frame (1920 bytes)
         |       |---20 Unused Frame    (2560 bytes)
         |       |---Filled with FF     (3456 bytes)
         |       |---others             ( 128 bytes)
         |         (total: 8192 bytes : 8 KB)
         |
         |   
         |- Data Block 1 (blocks are visible on screen, one game can use more than one block)
         |       |          
         |       |---Frame 0 (File Name: 128 bytes, see Frame 64 on .VM1)
         |       |---Frame 1 (Icon: can be different at each BLOCK for the same game)
         |       |---Frame 2 (Icon: can be combined for animation or for PocketStation Icon) 
         |       |---Frame 3 (Icon: same as frame 2, max animation use 3 frames)
         |       |---Frame 4 (Save Data)
         |       |--- ...  
         |       |---Frame 63(Save Data)
         |         (total 64 frames: 8 KB)
         |
         |- Data Block 2
         |
         |- Data Block 3
         |
         |- ...
         |
         |- Data Block 15 
                        (total 16 block: 128 KB)

Virtual Memory Card PS1 (.VM1)

VM1 is a PS1 memory card in "PS3 format", used in PS3 internal HDD only, games can use one block or several ones, each block has a name that identifies it (the first one is at offset 0x8A inside virtual_memcard. VM1,0x64 for .PSV)

Serial number file type name (in UTC): _NEW_DDHHMMSSSSSSSSSS

Somes infos are missing: about CLUT used, about CRC polynomial used and why not one game save data example.

Block Nº Frame Nº Offset Lenght Example Description
0 0 0x00000 2 4D 43 "MC" Magic
0x00002 125 (0x7D) 00 filled with zero: unused
0x0007F 1 0E XOR operation (on 4D 43)
1 0x00080 1 Available blocks. See table below. Also used on PocketStation to retrieve use and empty block.
0x00081 3 When it's reserved it's FF FF FF
0x00084 4 00 02 00 00 Use Byte

Open block middle, link block, or end link block

Per Block 0x2000 - No link, but will be a link

(00 20 00 - one blocks will be used)

(00 40 00 - two blocks will be used)

(00 E0 01 - 15 blocks will be used, max )

0x00088 2 00 00 Link order Block/frame 0-14

If the bock/frame isn't in a link or if it's the last link in the line, it's 0xffff

0x0008A 2 BI Country Code (Japan = BI, America = BA, Europe = BE)
0x0008C 10 (0x0A) Product Code (Europe = SLES & SCES. America SLUS & SCUS, Japan SLPS & SCPS) + 12345

This appear on the spine of the cd box (PS3 games also), instead of hyphen, can be "P" (when there are content for PocketStation) .

See also: Disc ID

0x00096 8 Identifier

This Number is created unique to the current game played. Meaning the first time a game is saved on the card, every subsequent save

has the same identifier but if a new game is started from the beginning, that will have a different identifier.

The identifier is usually a variation on the name of the game. The rest can be also filled with zero

in other game, no importance) :

Final Fantasy 7      : FF7-S01 or FF7-S02 or ...
Final Fantasy Tactic : FFTA
Metal Gear Solid     : G003x@CA


Country code(2 bytes)+Product number(10 bytes)+Identifier(8 bytes)= File name.

Final Fantasy 7 (UE)                     : BESCES-00868FF7-S01 
Final Fantasy Tactic (US)                : BASCUS-94221FFTA
The Solitary (JP)                        : BISLPS-01686THESOLIT
Arc the Lad III (JP)                     : BISCPSP10106ARC3-001 
0x0009E 97 (0x61) 00 Unused
0x000FF 1 A0 XOR operation all bytes of the frame (e.g. on A0 FF FF when not used).
Up to 14 Others similar Directory Frames
15 0x00800 1 FF Available blocks
0x00801 3 FF FF FF Reserved (similar on VMP?)
0x00804 4 00000000 Unused (similar on VMP?)
0x00808 2 FF Link order Block/frame: FF
0x0080A 118 (0x76) 00 filled with zero
Up to 19 Unused
20 0x01200 3456 (0x0D80) FF filled with FF
0x01F80 128 (0x80)
Up to 63
1 64 0x02000 2 53 43 "SC" Magic
0x02002 1 Icon Display Flag (00 = No icon, 11 = Icon has 1 frame (static), 12 = Icon has 2 frames (animated), 13 = Icon has 3 frames (animated)

(Other than .VM1 can be 16: 1 frame, 17: 2 frames, 18: 3 frames?)

0x02003 1 Block Number (1-15) used per save (infos displayed on the back of the original PS1 cd)
0x02004 64 (0x40) Title of the save data (in Shift-JIS format) Displayed on XMB
 FF7/SAVE01/73:25

(time played but can be also level,or others infos specific to the save data from same game, or generic)

// B00&B10 infos about Slot 1&2 used//all infos display on screen?)

0x02044 12 (0x0C) Reserved (unused) , filled with zero.
0x02050 2 01 00 PocketStation MCIcon Number of frames or filled with zero.
0x02052 4 PocketStation Identifier("MCXO" / "MCX1" / "CRD0") or filled with zero (to activate the PocketStation Icon you also need the "P" on Product Code.

Somes games (such Chronos Cross with "CRD0") seems to have only this special monochrome Icon as featuring with PocketStation. So check your PS1 Save data to find theses secret icons. Otherwise, the icon diplay on the PocketStation will be the regular PS ICON (but converted into 32x32 with no color)


0x02056 2? PocketStation APIcon Number of frames or filled with zero.
0x02060 32 (0x20) Color Palette for PS ICON: 2 Bytes per Color, 16 distinct colors (0 to F).

CLUT - Color LookUp Table (Color Palette name for Sony) : (can be different from original PS1 and the ones used on PS3).

65 0x02080 128 (0x80) Used for PS ICON frame (can be extracted easily with MemcardRex and convert to .BMP)

16X16 Pixels, 1 byte: 2 pixels (4-Bit Per Pixel, 4BPP)

0x02080 to 0x02087: Pixel line: first horizontal line from top, left to right.
0x02080: Hexa value (shift) indexed to the color palette (0 to F): Left nibble is the 2nd pixel.
66 0x02100 128 (0x80) Used for PS ICON frame animation, if not used, can be used for PocketStation ICON or filled with zero or used for save data.
67 0x02180 128 (0x80) Used for PS ICON frame animation, if not used, can be filled with zero or used for save data.
68 0x02200 Save data (games can use checksum CRC 16 or 32): specific to each game (level, items, money,...)
Up to 127
2 128 0x04000 SC if new save start (open block) and similars as Block 1, otherwise (middle link or end link) Save data from game continue.
Up to 191
3 192 0x06000 Similar to Block 2
Up to 255
Up to 15 960
Up to 1024
  • Available blocks table
Upper 4 bits
A (Available) 5 - (Partially used) F - (Unusable)
Lower 4 bits
0 (Unused) A0 (Open block)
1 (No link, but one will be here later) 51 (In use, there will be a link in the next block)
2 (mid link) 52 (In use, this is in a link and will link to another)
3 (terminating link) 53 (In use, this is the last in the link)
F (unusable) FF (Unusable)

Most of the infos were from : Everything You Have Always Wanted to Know about the PlayStation But Were Afraid to Askby Joshua Walker (p94-95-96 on PDF version):

PS1 Single Save ? (.PSV)

PSV is a PS1 "block" in "PS3 format". When exporting to a "standard" USB device the Game Saves are converted to "blocks" in PS3 format. The name of the exported file is the File Name (identifier of the block is on Hexa format)


Serial number file type name (on UTC): _CP_DDHHMMSSSSSSSSSS

When trying to copy not valid save data:

  • From corrupted Data ( Blue Cube as Icon):On Informations: Lock Copying prohibited, when trying to copy:"the data is corrupted."
  • from modified data : During process of copy: "the data is corrupted."
  • from malformed header : During process of copy: error 80029303.

Some values on the header are more "sensitive" than others.

Size: 9KB (when save data using one block), PS3 XMB display as 8KB.

Offset Length Example Description
0x00000 8 00 56 53 50 00 00 00 00 "VSP"
0x00008 40 (0x28) xx signature per game save?
0x00030 8 00 00 00 00 00 00 00 00
0x00038 8 14 00 00 00 01 00 00 00 when it s 2C 00 00 00 02 (used on PS2) , PS3 will freeze.
0x00040 4 00 20 00 00 Size display on XMB (See Use Byte on .VM1 for regular value).
0x00044 4? 84 00 00 00 Value for different CLUTS for ICON displayed on XMB.
0x00048 4? 00 02 00 00
0x00050 16?(0x10) 00 not used?
0x0005C 4? 00 repeat Use Byte
0x00060 4? 03 90 00 00
0x00064 20 (0x14) File Name (offset 6A need to be "P" for PocketStation type display, see .VM1)
0x00078 12 (0x0C) 00 filled with zero
0x00084 2 53 43 "SC" see .VM1
0x000D6 4 00 Type (display on XMB: press triangle-information):

Saved Data (Playstation®), filled with zero.


  • Size: can be any value display up to 56kb?
  • CLUTS (color palette) displayed on XMB: some others values are valid. There are fews around 70 (probably used for .PSV ps2), but the funny value(s) for this test room are 10, 11 or 12 (and others waiting for you to be tested) the title of the save data will also change for example as : "緊襟" (Not serious translation can be, funny one can be "emergency reverse"). The game save (region etc..) might affect the result when you enter to this secret egg easter test room CLUT.
  • TYPE: see PocketStation Identifier: You can activate this "rare" display if you write the flag "MCX0"combined with "P" on the filename at Offset D6 to D9 (4D 43 58 30)


Topic related to .PSV: http://forums.qhimm.com/index.php?topic=9747.0

Other thread related to .PSV: http://tortuga-cove.com/forums/viewtopic.php?f=128&p=8063#p8063 (guide for convert your save data to .PSV but as it explained on the end, you still need CFW. Using memory card adaptor don t corrupt save data in normal case, need to insist or copy to other Virtual Memory Card to avoid the error)

Virtual Memory Card PSP (.VMP)

VMP is a PS1 memory card in "PSP format"

To export to PSP first is needed to register the PSP as a remote play device (in PS3 settings menu), and activate the USB mode (in PSP XMB)

Then, from the "Memory Card Utility (PS/PS2)" you can browse the blocks inside the virtual_memcards, by pressing triangle over a block and selecting the option "copy" the PS3 gives two options, one is an icon of your PSP identifyed by his nick, by selecting the PSP icon the PS3 displays this message: "Do you want to convert this data for use with the PSP system and then copy it?. If you select [No] the data will be copied without being converted"

If you select [YES]: Then, PS3 will display the others virtual memory cards of your PSP (SCEVMC0.VMP and SCEVMC1.VMP for each ps1 classic game, can take a little before all are displayed) you select where to copy the save data. It s doesn t really matter which virtual memory card was selected, you can import/export internally on PSP after (during game: option on Memory Card Utility).

You can continue your game from PSP to PS3 under differents game formats such as cso/iso and continue on PS3 after transfer of your savedata if the game share the same DiscID and . See: Emulation and Filename ( on following structures, and Identifier doesnt really matter )


  • When the game is installed in PS3 it contains a "SAVEDATA" folder stored with the rest of the game files, only used by the PS3 to generate Save Games in PSP format.

Difference between SCEVMC0.VMP & SCEVMC1.VMP when copy to PSP: the slot 1 is for SCEVMC0, slot 2 is for SCEVMC1.VMP. If you save previously on slot 1, it will be SCEVMC0.VMP who contain the informations about your savedata.

  • This "SAVEDATA" folder used as a source contains a PARAM.SFO (with CATEGORY "MS" memory stick, and his SAVEDATA_DIRECTORY where it will be installed when exported to PSP), an ICON0.PNG (in 80x80 pixels) and two virtual_memcard.VMP (with empty blocks)

Note: CONFIG file ( 1040 bytes, generated by PSP or PS3? //when VMP is not empty //can be update for the Game Saves PS1 board of this page) used as original SYSTEM.CNF (kind of autorun), similar use than the CONFIG file on USDIR . All in PSP format, never updated, and not intended to store Save Games, only to export them

Size: 129KB ( on PSP, size displayed is different)


Offset Lenght Example Description
0x00000 12 (0x0C) 00 50 4D 56 80 "PMV"
0x0000C 20 When empty:(and not being transfer)

On SCEVMC0.VMP: 0x28 to 0x3B ( ()*+,-./0123456789:; )

On SCEVMC1.VMP: 0x3C to 0x4F ( <=>?@ABCDEFGHIJKLMN0)

When there are data:(and being transfer):

0x00020 20 When empty:(and not being transfer)

On SCEVMC0.VMP:

On SCEVMC1.VMP:

When there are data:(and being transfer):

0x00034 74 00 filled with zero
0x00080 2 4D 43 "MC" From here, similar than Block 0 on .VM1 (with possible slight differences)

Memory Card Tools PS1

MemcardRex v1.6 http://www.mediafire.com/?3e39li4v8y4mgy0

Plugin interface for MemcardRex: http://www.mediafire.com/?6uhg8c9ki1zw5na

MemcardRex homepage: http://shendosoft.blogspot.com.es/

The following Memory Card formats are supported:
   * ePSXe/PSEmu Pro Memory Card(*.mcr)
   * DexDrive Memory Card(*.gme)
   * pSX/AdriPSX Memory Card(*.bin)
   * Bleem! Memory Card(*.mcd)
   * VGS Memory Card(*.mem, *.vgs)
   * PSXGame Edit Memory Card(*.mc)
   * DataDeck Memory Card(*.ddf)
   * WinPSM Memory Card(*.ps)
   * Smart Link Memory Card(*.psm)
   * MCExplorer(*.mci)
   * PSP virtual Memory Card(*.VMP) (opening only)
   * PS3 virtual Memory Card(*.VM1)

The following single save formats are supported:
   * PSXGame Edit single save(*.mcs)
   * XP, AR, GS, Caetla single save(*.psx)
   * Memory Juggler(*.ps1)
   * Smart Link(*.mcb)
   * Datel(*.mcx;*.pda)
   * RAW single saves
   * PS3 virtual saves (*.psv) (importing only)

PSXGameEdit v1.60 http://moberg-dybdal.dk/psxge/psxge160.zip

PSXGameEdit homepage: http://moberg-dybdal.dk/psxge/

PSXGameEdit Supported formats:

 PlaySaver and PSEmuPro Memory Card saves and single game saves (.mc & .mcr)
 DexDrive Memory Card saves (.gme)
 Bleem! Memory Card saves (.mcd)
 Virtual Game Station Memory Card saves (.vgs)
 X-Plorer/X-Ploder, Cheat Machine, Game Shark, Action Replay, Cheat Factory etc. single game saves (.psx)

Extracting and Injecting single PS1 Game Saves in PC

  • 1.- Make a copy (with FTP or any file manager) of one of your internal virtual memory cards, in path: dev_hdd0/savedata/vmc/ (e.g: mycard.VM1)
  • 2.- Rename the file extension to .MCR (e.g: mycard.MCR)
  • 3.- Use MemcardRex or PSXGameEdit to extract or inject individual game saves (identifyed al slots)
  • 4.- Rename the file extension back to .VM1 (e.g: mycard.VM1)
  • 5.- Overwrite the original file in your internal HDD with the new file
  • Notes:
    • By overwriting the original file with the new one the XMB doesnt need to be updated and the new file is loaded normally (the console has no idea of what happened)
    • When adding new virtual memory cards with different names to the internal HDD, the XMB is unable to detect them because his database has not been "updated", this is solved by the option "restore database" from recovery menu, or by importing a new valid memory card from USB (it seems this last option updates the XMB database to be enable to identify all the contents of dev_hdd0/savedata/vmc/)
    • If you transfer your .VM1 using FTP, the virtual memory card might be not visible from XMB (Memory Card Utility) but you can select them from the options of the PS1 emulator during game (PS button-assign slots).

http://www.ps3hax.net/showthread.php?p=258620

http://www.tortuga-cove.com/forums/viewtopic.php?t=3366

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

Editing PS1 Game Saves icons in PC

PS1 icons has a size of 16x16 pixels, each pixel can use a color from a palette of 16

PSXGameEdit has a very good icon editor, it has the basic functions (as replace the selection of colors of the palette, basic pixel-by-pixel painting, flip, mirror, and rotation). There is a "Files" button with the options import and export in .ico format (in gimp the correct format to import is: .ico 4bpp, alpha 1 bit, 16 colors palette)

It supports animated icons. There are 4 "mini" images aligned at the top intented to display the animation, the first 3 ones at the left are the 3 frames of the animation (there is a maximun of 3 in the format, for static icons all displays the same frmae)... the fourth "mini image" at the right is a preview of the animation (it moves in a loop when the icon is animated)

For static icons (marked in the main windows as "ANIM= N")... there is a "force anim" option... but it seems it breaks the structure of the file, better dont use it !

  • MemcardRex has a very basic icon editor, the most important feature is it can export to: BMP, GIF, JPEG, and PNG

Game Saves PS2

Memory Card Utility (PS PS2).jpg
Storage Media Path Import/Export file conversions
Internal HDD dev_hdd0/savedata/vmc/<virtual_memcard>.VM2
External USB dev_usb0/PS3/EXPORT/PSV/<Save_ID>.PSV When exporting to USB the "block" is extracted from VM2 an saved separatedly as a PSV
External USB
Only "PS2 Classics"
dev_usb0/PS3/EXPORT/PS2SD/<TITLE_ID>/ICON0.PNG Direct copy from the game install folder, no conversion
dev_usb0/PS3/EXPORT/PS2SD/<TITLE_ID>PARAM.SFO Added a signature at the end of the file (out of the SFO structure)
dev_usb0/PS3/EXPORT/PS2SD/<TITLE_ID>/SCEVMC0.VME
dev_usb0/PS3/EXPORT/PS2SD/<TITLE_ID>/SCEVMC1.VME
External MC mc_root/ Raw copy from/to a real PS2 Memory Card using a Memory Card Adapter

Memory Card Formats PS2

Memory card PS2 (original)

The PS2 memory card file system has a fairly simple design, with some allowances made for the limitations of flash memory. It's overall structure is similar to the well known MS-DOS FAT file system. It uses a file allocation table (FAT) to keep track of allocated space and a hierarchical directory system where all of a file's metadata is stored in it's directory entry. Like the FAT file system, which groups disk sectors into clusters, the PS2 memory card file system groups flash memory pages in to clusters. On standard PS2 memory cards, the cluster size 1024 bytes, or 2 pages long.

  • The Superblock

The key to the PS2 memory card file system is the superblock. Located in the first page of the memory, this is the only part of the file system with a fixed location. While some things like the do end up in fixed locations on standard 8M memory cards, you shouldn't rely on this.

Block Nº Cluster Nº Page Nº Offset Length Name Example Description
0
superblock
0 0 0x000000 0x01C (28 bytes) magic Sony PS2 Memory Card Format Memory Card identifyer
0x00001C 0x00C (12 bytes) version 1.2.0.0 Memory Card format version. (1.2.0.0 = full support for bad_block_table map)
0x000028 0x002 (2 bytes) page_len 512 Page size in bytes (without ECC)
0x00002A 0x002 (2 bytes) pages_per_cluster 2 Number of pages in a cluster
0x00002C 0x002 (2 bytes) pages_per_block 16 Number of pages in an block
0x00002E 0x002 (2 bytes) not used FF00
0x000030 0x004 (4 bytes) clusters_total 8192 Total number of clusters
0x000034 0x004 (4 bytes) alloc_start 41 First allocatable cluster number. Cluster values in the FAT and directory entries are relative to this
0x000038 0x004 (4 bytes) alloc_end 8135 Cluster offset number after the highest allocatable cluster. Relative to alloc_start. Not used.
0x00003C 0x004 (4 bytes) cluster_rootdir 0 Cluster offset of the first cluster of the root directory. Relative to alloc_start. Must be zero.
0x000040 0x004 (4 bytes) bblock1 1023 Backup1 block number
0x000044 0x004 (4 bytes) bblock2 1022 Backup2 block number
0x000050 0x080 (128 bytes) ind_fat_table 8 Indirect FAT Table cluster number
0x0000D0 0x080 (128 bytes) bad_block_table -1 Bad blocks table (damaged blocks index)
0x000150 0x001 (1 byte) card_type 2 Memory card type (2 = PS2 memory card)
000x0151 0x001 (1 byte) card_flags 0x52 Memory Card features (0x01 = ECC support, 0x08 = Bad Block support, 0x10 = Erased state zeroed)
0x000152 0x002 (2 byte) not used FF
0x000154 0x0BC (188 bytes) unknown
0x000200 0x010 (16 bytes) ECC Error Correction Code. The last 16 bytes of all the pages are reserved for this code. See explain below
1 not used
Up to 7 Up to 15 not used
1 8
ind_fat_table
16 0x002100 0x210 (528 bytes) Indirect FAT Table FAT File System
17
9 18 0x002520 0x210 (528 bytes) FAT Table
19
Up to 15 Up to 31
Up to 4
5 40 80
81
41
alloc_start
cluster_rootdir
82 0x00A920 0x210 (528 bytes) Allocatable Clusters
83
Up to 47 Up to 95
Up to 1004
1005 8040 16080
16081
8041 16082 0x819120 0x210 (528 bytes) Reserved Clusters
16083
Up to 8047 Up to 16095
Up to 1021
1022
bblock2
8176
alloc_end
16352 0x83BE00 0x210 (528 bytes) Temporal Data Backup Block 2
Used to store the number of the block that is going to be programmed
16353
Up to 8183 Up to 16367
1023
bblock1
8184 16368 0x83DF00 0x210 (528 bytes) Temporal Data Backup Block 1
Used to store a copy of the data that is going to be programmed to a block
16369
Up to 8191
clusters_total
Up to 16383

A standard Ps2 Memory Card is composed by 1024 blocks, each block contains 16 pages of 528 bytes, for a total of 528*16*1024=8.650.752 bytes (0x840000)

Total ECC data is 16*16*1024=262.144 bytes

This gives an available space to store data of: Total-ECC = 8650752-262144 = 8388608 bytes = 8mb

  • Backup Blocks

Two complete blocks are reserved to deal with the possibility of the memory card being removed by the user when data is being saved. Writing data to card requires erasing and reprogramming an entire block

Before writing a block, both bblock1 and bblock2 are erased. Then a copy of the new data that is going to be written is stored in bblock1, and the number of the block that is going to be written is stored in bblock2. The block being programmed is then erased and writed. Finally, bblock2 is erased

Recovery caused by removal of the memory card is implemented whenever a memory card is inserted into the PS2 by checking bblock2, if it's not erased, then programming is assumed to have not been completed. The contents of bblock1 are then copied to the block given in bblock2. Then bblock2 is erased

  • Error Correction Code (ECC)

The data area of each page (512 bytes) is divided into 128 byte long chunks and for each chunk a simple [20-bit Hamming code] is calculated and stored in three bytes

The first byte contains the column (or bit-wise) parity bits, with the even groups in the lower nibble and the odd groups in the upper nibble. The second and third bytes contain the even and odd groups respectively for the line (or byte-wise) parity bits

The 3 ECC bytes for each of the 4 chunks are stored in order in the page's spare area for a total of 12 bytes


Source: [PlayStation 2 Memory Card File System - By Ross Ridge]

Virtual Memory Card PS2 (.VM2)

File structure is the same than a "original PS2 memory card", there are not apparent differences

  • Speculation

Last place to store a PS3 identifyer is inside the FAT filesystem ?... maybe there is none

PS2 Single Save ? (.PSV)

Virtual Memory Card Exported? (.VME)

Virtual Memory Card in "E" format ?

When exporting Game Saves for "PS2 classics" (CATEGORY 2P) to a external USB drive there is a "rare" PARAM.SFO exported. This PARAM.SFO seems to be a copy of the main PARAM.SFO from the installed game folder with an added "signature" "injected" at the end of the file (out of his structure) with a lenght of 20 bytes. Is supposed to be a security feature when exporting the gamesave, is not confirmed if this PARAM.SFO (with the injected "signature" out of his structure) exists in the internal HDD (when importing, or present at some time with the "PS2 virtual memory cards").

Wrote by ps3hen in ps3hax forums weeks ago

PSN PS2 games do not save to VM cards in the same way to original PS2 games and PS1 games do
Each user who plays a PSN PS2 Game and makes a save, generates two VM cards (one for each slot) especially for that user account, for that game.
Each time the game is loaded the user selected VM cards(chosen from the VMC ulitity) are um-mounted and the user's save file for that game mounts the dedicated PS2 VM cards to the PS3 Virtual MC slots.
When the game is quit, the dedicated VM cards are un-mounted. But for some reason the user selected VM cards are not re-mounted, this is when I knew they mounted dedicated VM cards for each save.

The save file structure goes like this:
/PS3/EXPORT/PS2SD/XXXX11111/ICON0.PNG
                                            PARAM.SFO
                                            SCEVMC0.VME
                                            SCEVMC1.VME

Side note: "XXXX11111" will be different to the Title ID inside the Param.sfo. Inside the Param.sfo is the original title ID of the game when it was a PS2 Disc Game.

Memory Card Tools PS2

[mymc]

mymc is a public domain command line utility for working with PlayStation 2 memory card images (.ps2) as used by the PlayStation 2 emulator PCSX2.
It allows save files in the MAX Drive (.max), EMS (.psu), SharkPort (.sps), X-Port (.xps) and Code Breaker (.cbs) formats to be imported directly into these images.
It can also export save files in eiter the MAX Drive and EMS formats. See the README.txt file included in the distribution below for more details. 

Extracting and Injecting single PS2 Game Saves in PC

The method is the same one used in PS1, see: Extracting and Injecting single PS1 Game Saves in PC , but here the file format is: .VM2 (a virtual PS2 memory card in PS3 format), and .PS2 (a 1:1 raw copy of a PS2 memory card). Both are the same

The PC program to manage this .PS2 memory cards is "mymc" and also can be generated by the emulator "PCSX2". See: http://wiki.pcsx2.net/index.php?title=Memcard

  • External forums manuals:

http://psx-scene.com/forums/f177/tutorial-ps2-psu-saves-ps3-internal-memory-card-without-memory-card-adaptor-103436/

Editing PS2 Game Saves icons in PC

In PS2 save Games the icon is a file with the extension .icn (any name is valid), is "linked" to the save game by the file icon.sys. The PC program "PS2 SaveBuilder v0.8" can generate this 2 files (included a black default icon)... the icon can be replaced later.

The format supports 3D objects (e.g: save games of tomb raider with a figurine of lara croft)

The program "bmp2icon.exe by sjeep" can generate a .icn in the correct format for importing to "PS2 SaveBuilder v0.8", additionally it can add a 3d object where your image is applyed as a texture over the faces of a basic 3D object, the options are: 3D rectangle, 3D cube, of flat square

The source image to importing in "bmp2icon.exe by sjeep" must be a 24-bit 128x128 pixel .BMP

Other: Game Saves PSP emulator

http://www.emunewz.net/forum/showthread.php?tid=3673