Game Saves

From PS3 Developer wiki
Revision as of 18:15, 28 April 2012 by Sandungas (talk | contribs) (→‎Memory card PS2 (original): names in table and notes)
Jump to navigation Jump to search
  • 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 Copy Protection Flag

The ones without "Copy Protection" can be copyed to an external USB storage device (by pressing triangle over his icon in XMB with the option "copy" of the side menu)

Copy protection can be removed from a Game Save by changing a flag in the ATTRIBUTE of his PARAM.SFO. This can be done when PARAM.PFD doesnt contains the signature of PARAM.SFO (only a few old games)

PS3 Games unprotected

There are two types of possible protections:

  • One possible encryption in the files generated by the game that is not mandatory and depends of the developers of the game.
  • And other protection based on signatures stored in PARAM.PFD generated and managed by the system. This file supervises signatures of other files of the folder, the list of files supervised is not fixed and again... it depends of the developers of the game, but usually PARAM.SFO is inside this list

This allows modifications/cheats for some games wich files are not encrypted, and not supervised by PARAM.PFD

  • MotorStorm (protected with CRC32 checksum)
  • Call Of Duty 4 (hacked saves can be found on the internet)
  • Battlefield: Bad Company
  • Assassin's Creed
  • Blazing Angels: Squadrons of WWII

For a more complete list, with example download links : http://www.ps3hax.net/showthread.php?t=8559

Source: http://ps3dev.wikispaces.com/Saved+Games

Game Saves Minis

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.

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 PS2 Memory Card using a Memory Card Adapter

Memory Card Formats PS1

Memory card PS1 (original)

Original Memory card PS1 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   (this block and others are visible on screen, one game can use more than one block)
              |       |---Frame 0 (File Name: 128 bytes)
              |       |---Frame 1 (Icon) (Icon can be combine for animation or different display from the same game)
              |       |---Frame 2 (Icon) 
              |       |---Frame 3 (Icon)
              |       |---Frame 4 (Save Data)
              |       |---Frame 5 (Save Data)
              |       |--- ...  
              |       |---Frame 63 
              |         (total 64 frames: 8 KB)
              |
              |- Data Block 2
              |
              |- Data Block 3
              |  
              |- Data Block 4
              |
              |- ...
              |
              |- Data Block 15 
                        (total 16 block: 128 KB)

Size: 128KB

(VM1 is similar as original ps1 but need more inspections)

Offset Lenght Example Description
Header Frame
0x00000 2 MC Magic
0x00002 125 filled with zero Unused
0x0007F 1 0E XOR code
15 Directory Frame
0x00080 1 Available blocks (similar on VM1?)

Upper 4 bits

A - Available

5 - partially used

F - Unusable

Lower 4 bits

0 - Unused

1 - There is no link, but one will be here later

2 - mid link block

3 - terminating link block

F - unusable

Example

A0 - Open block

51 - In use, there will be a link in the next block

52 - In use, this is in a link and will link to another

53 - In use, this is the last in the link

FF - Unusable

0x00081 3 When it's reserved it's FF FF FF
0x00084 4 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 Country Code (BI, BA, BE)

In Japan the code is BI, Europe is BE, and America is BA.

0x0008C 10 Product Code (AAAA-00000)

AAAA:

Japan SLPS, SCPS (from SCEI)

America SLUS, SCUS (from SCEA)

Europe SLES, SCES (from SCEE)

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 it a new game is started from the beginning, that will have a different identifier.

The identifier is a variation on the name of the game, for example FF7 will be FF7-S01, FF7-S02,....(last bytes are not used in this case, can be also filled with zero in other game) It don't really matter.

With a PocketStation program, the product ID is a monochrome icon, a hyphen and the later part containing a "P".

Country code(2 bytes)+Product number(10 bytes)+Identifier(8 bytes)= File name. See also: [DiscID]

0x0009E 97 Unused
0x000FF 1 A0 XOR Code
Repeat 14 others similars Directory Frame
20 Unused Directory Frame
0x00800 1 FF Available blocks (similar on VM1?)
0x00801 3 FF FF FF Reserved (similar on VM1?&VMP)
0x00804 4 00000000 Unused (similar on VM1?&VMP)
0x00808 2 FF Link order Block/frame: FF
0x0080A 118 filled with zero
Repeat 19 Unused Directory Frame
Others
0x01200 3456 filled with FF
0x01F80 128
Block 1
Frame 0
0x02000 2 SC
0x02002 1 Icon Display Flag

00 : No icon

11 : Icon has 1 frame of animation (static)

12 : Icon has 2 frames (animation)

13 : Icon has 3 frames (animation)

0x02003 1 Block Number (1-15) ?
0x02004 Title of the save data (in Shift-JIS format)

Display on XMB, example: FF7/SAVE01/73:25 (in this case, time played is display but can be also level or others infos specific to the save data, or just generic)

0x02050 Used for PocketStation
0x02060


Source infos PS1: Inside the PSX by Joshua Walker p94-95-96 (need to find back the internal link/ copyrighted : Do with it what you please)

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 0x64 inside virtual_memcard.VM1 // it snt 0x8A for .VM1 and 0x64 for .PSV?)

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 identifyer of the block

Size: 9KB (only one single save data using one block)

Offset Size Value Description
0x00000 4 .VSP
0x00005 4 filled with zero
0x00008 40
0x00030 52
0x00064 2 Country Code (BI, BA, BE) of the game
0x00066 10 Product Code (but a bit different than VM1?)

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) 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.

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 previoulsy 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). 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 5 .PMV ( 00 50 4D 56 80 )
0x00005 7 filled with zero
0x0000C 40 When empty:(and not being transfer)

On SCEVMC0.VMP:

On SCEVMC1.VMP:

0x00034 74 filled with zero
0x00080 2 MC From here, similar than VM1 (can have somes little difference such Product Code, need more inspection)
0x00082 125 Filled with zero Similar on VM1
0x000FF 1 OE XOR code, similar on VM1
0x00100 1 Available blocks (Similar on VM1?):

Example:

51 when only one block is used

A0 when no block is used (empty save)

0x00101 3 00 00 00 (similar than VM1 but if reserved?)
0x00104 4 Use Byte (similar than VM1?)
0x00108 2 Link order Block:

FF FF when only one block used or empty save

0x0010A 2 Country Code (BI, BA, BE)

Similar than VM1

0x0010A 10 Product Code (AAAAP00000)

(instead of hyphen on VM1, it s a P)

Memory Card Tools PS1

[MemcardRex v1.5]

MemcardRex is a PSX memory card explorer/editor.

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)
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)

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.

Blocks Pages Page Areas Offset Length Name Example Description
Block 0
8448 bytes
0x2100
Page 0
528 bytes
0x210
Data Area
521 bytes
0x200
0x0000 28 bytes magic Sony PS2 Memory Card Format Identifies the card as being formatted. Set to the ASCII string
0x001C 12 bytes version 1.2.0.0 Version number of the format used. (Version 1.2 indicates full support for bad_block_list.)
0x0028 2 bytes page_len 512 Size in bytes of a memory card page.
0x002A 2 bytes pages_per_cluster 2 The number of pages in a cluster.
0x002C 2 bytes pages_per_block 16 The number of pages in an erase block.
0x002E 2 bytes FF00 Doesn't seem to be used
0x0030 4 bytes clusters_per_card 8192 The total size of the card in clusters.
0x0034 4 bytes alloc_offset 41 Cluster offset of the first allocatable cluster. Cluster values in the FAT and directory entries are relative to this. This is the cluster immediately after the FAT
0x0038 4 bytes alloc_end 8135 The cluster after the highest allocatable cluster. Relative to alloc_offset. Not used.
0x003C 4 bytes rootdir_cluster 0 First cluster of the root directory. Relative to alloc_offset. Must be zero.
0x0040 4 bytes backup_block1 1023 Erase block used as a backup area during programming. Normally the the last block on the card, it may have a different value if that block was found to be bad.
0x0044 4 bytes backup_block2 1022 This block should be erased to all ones. Normally the the second last block on the card.
0x0050 128 bytes ifc_list 8 List of indirect FAT clusters. On a standard 8M card there's only one indirect FAT cluster.
0x00D0 128 bytes bad_block_list -1 List of erase blocks that have errors and shouldn't be used.
0x0150 1 byte card_type 2 Memory card type. Must be 2, indicating that this is a PS2 memory card.
0x0151 1 byte card_flags 0x52 Physical characteristics of the memory card. See card_flags table below
0x0152 2 bytes FF Doesn't seem to be used .
0x0154 188 bytes FAT indirect table ???
Spare Area 0x200 16 bytes (0x10) ecc Error Correction Code, Wear Leveling, Bad Block Remapping
Page 16
Block 1024

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

  • card_flags
Value Name Description
0x01 CF_USE_ECC Card supports ECC.
0x08 CF_BAD_BLOCK Card may have bad blocks.
0x10 CF_ERASE_ZEROES Erased blocks have all bits set to zero.

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

Virtual Memory Card PS2 (.VM2)

The file begins the same than a "original PS2 memory card". Its not verifyed if there is something added at then end etc...

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").

Memory Card Tools PS2

[mymc]

mymc is a PS2 memory card explorer/editor.