Editing PS2 Savedata

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:
See also [https://www.psdevwiki.com/ps2/Savedata PS2 savedata page on PS2 dev wiki].
=Common terms used in this page=
=Common terms used in this page=
{{Savedata common terms}}
{{Savedata common terms}}


=Game Saves PS2=
=Game Saves PS2=
<div style="float:right">[[File:Memory_Card_Utility_(PS_PS2).jpg|400px|thumb|right| ]]<br>[[File:Saved Data Utility (PS2).jpg|400px|thumb|right| ]]</div>
[[Image:Memory_Card_Utility_(PS_PS2).jpg|right| ]]


{| class="wikitable"
{| class="wikitable"
Line 39: Line 37:


===Memory card PS2 (original)===
===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 its 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 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 Superblock
Line 169: Line 167:


===Virtual Memory Card PS2 (.VM2)===
===Virtual Memory Card PS2 (.VM2)===
File structure is the same than a "original PS2 memory card", there are not apparent differences.
File structure is the same than a "original PS2 memory card", there are not apparent differences
Maximum VM2 Memory Card size that PS3 can handle is 32MB (or 63MB, but is speculation). 64MB card cause bootloop because indexer can't handle nothing bigger than uint_16 range for memory card free space entry, 65535KB (63.99 MB) = 0xFFFF, while 64 MB memory card is 65536KB (0x10000) so it exceed uint_16 limit, causing unrecoverable database corruption until memory card is deleted somehow from hdd. Probably 63MB VM2 card will work fine, but is just speculation. 


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


===PS2 Single Save (.PSV)===
===PS2 Single Save ? (.PSV)===
 
PSV is a PS2 savegame in "PS3 format". When exporting a save from a PS2 internal memory card to a USB device the Game Saves are converted to a .PSV file in PS3 format. The name of the exported file is the identifier of the block on Hexa format
 
The file format has a 0x84 bytes header, in a PS1 Memory Card every slot is 0x2000 so if the savedata is composed by only one slot the total file size is 0x2084 (8.324 bytes). In PS3 XMB is displayed as 8KB
 
Note: A part of the header is common for PS1 (PS2 header is bigger than PS1)
 
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  00 56 53 50 00 00 00 00  77 77 77 2e 62 75 63 61  |.VSP....www.buca|
00000010  6e 65 72 6f 2e 63 6f 6d  2e 61 72 00 fa 09 5f f3  |nero.com.ar..._.|
00000020  8b c9 da 44 2f 08 4f 56  28 91 19 ea a3 23 08 e1  |...D/.OV(....#..|
00000030  00 00 00 00 00 00 00 00  2c 00 00 00 02 00 00 00  |........,.......|
00000040  64 69 01 00 f4 66 01 00  c4 03 00 00 54 01 00 00  |di...f......T...|
00000050  98 83 00 00 54 01 00 00  98 83 00 00 54 01 00 00  |....T.......T...|
00000060  98 83 00 00 03 00 00 00  00 2e 17 10 1a 08 e4 07  |................|
00000070  00 2e 17 10 1a 08 e4 07  05 00 00 00 27 84 00 00  |............'...|
00000080  42 41 53 4c 55 53 2d 32  30 39 36 33 46 46 31 32  |BASLUS-20963FF12|
00000090  30 30 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |00..............|
000000a0  00 2e 17 10 1a 08 e4 07  00 2e 17 10 1a 08 e4 07  |................|
000000b0  98 83 00 00 97 84 00 00  73 74 61 74 69 63 2e 69  |........static.i|
000000c0  63 6f 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |co..............|
000000d0  00 00 00 00 00 00 00 00  54 01 00 00 00 2e 17 10  |........T.......|
000000e0  1a 08 e4 07 00 2e 17 10  1a 08 e4 07 08 e2 00 00  |................|
000000f0  97 84 00 00 42 41 53 4c  55 53 2d 32 30 39 36 33  |....BASLUS-20963|
00000100  46 46 31 32 30 30 00 00  00 00 00 00 00 00 00 00  |FF1200..........|
00000110  00 00 00 00 ec 84 00 00  00 2e 17 10 1a 08 e4 07  |................|
00000120  00 2e 17 10 1a 08 e4 07  c4 03 00 00 97 84 00 00  |................|
00000130  69 63 6f 6e 2e 73 79 73  00 00 00 00 00 00 00 00  |icon.sys........|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  f4 66 01 00 00 00 01 00  01 00 00 00 06 00 00 00  |.f..............|
 
====Filename Format====
The Filename is generated from the saved ps2 data with the format:
  Internal PS2 ID String followed by the Description Text in HEX
  For the above header the Exported PSV file name would be "BASLUS-20963464631323030.PSV"
 
{| class="wikitable"
|-
! Offset !! Length !! Example !! Description
|-
|0x00 || 0x08 || 00 56 53 50 00 00 00 00 || " VSP"
|-
|0x08 || 0x14 || 77 77 77 2E 62 75 63 61 6E 65 72 6F 2E 63 6F 6D 2E 61 72 00 || Key seed, any value is accepted (not validated by the PS3)
|-
|0x1C || 0x14 || FA 09 5F F3 8B C9 DA 44 2F 08 4F 56 28 91 19 EA A3 23 08 E1 || Sha1 hmac digest
|-
|0x30 || 0x08 || 00 00 00 00 00 00 00 00 || padding related with the alignment of the previous 2 values ?
|-
|0x38 || 0x04 || 2C 00 00 00 || PS1=0x14, PS2=0x2C
|-
|0x3C || 0x04 || 02 00 00 00 || PS1=0x1, PS2=0x2
|-
|0x40 || 0x04 || 64 69 01 00 || '''Used Bytes''' (Size displayed on XMB).
|-
|0x44 || 0x04 || F4 66 01 00 || start offset in file of icon.sys (start of "'''PS2D'''" area in PS2)
|-
|0x48 || 0x04 || C4 03 00 00 || icon.sys file size
|-
|0x4C || 0x04 || 54 01 00 00 || position of 1st icon (start offset)
|-
|0x50 || 0x04 || 98 83 00 00 || size of 1st icon
|-
|0x54 || 0x04 || 54 01 00 00 || position of 2nd icon (start offset)
|-
|0x58 || 0x04 || 98 83 00 00 || size of 2nd icon
|-
|0x5C || 0x04 || 54 01 00 00 || position of 3rd icon (start offset)
|-
|0x60 || 0x04 || 98 83 00 00 || size of 3rd icon
|-
|0x64 || 0x04 || 03 00 00 00 || number of files in the .PSV container
|-
|0x68 || 0x38 || 00 2E 17 10 .. || PS2 Main Dir Info
|-
|0xA0 || 0x3C || 00 2E 17 10 .. || PS2 File Info (one for each file in the folder)
|-{{cellcolors|lightgrey}}
| colspan="4" |
|-
|0x0166F4 || 0x3C4 || 50 53 32 44 || "'''PS2D'''" icon.sys file, see PS2 format
|-
|}
 
*Notes:
 
*When trying to copy not valid save data:
**from modified data : During process of copy: "the data is corrupted."


===Virtual Memory Card Encrypted (.VME)===
===Virtual Memory Card Encrypted (.VME)===


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 length 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").
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
  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
  PSN PS2 games do not save to VM cards in the same way to original PS2 games and PS1 games do
Line 282: Line 192:
   
   
  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.
  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.
The black area of the param.sfo is only in the exported save file of the PS2 game
Also if the black area is not present in the save param.sfo, the PS3 considers it corrupt
Also if the PSN title id, used as the name for directory on the USB (/PS3/EXPORT/PS2SD/<PSN title id>/) is changed it is considered corrupt


==Memory Card Tools PS2==
==Memory Card Tools PS2==
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)