PS1 Savedata

From PS3 Developer wiki
Jump to navigation Jump to search

Common terms used in this page[edit | edit source]

  • <userid> The number assigned by the system to this user when their 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 their PARAM.SFO that refers to the original ID when the game was released years ago as a disc)
  • <virtual_memcard> The name 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"(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 a single Game Save is exported to USB, e.g: BESLES-53702535953.PSV
  • MC_Slot Inside a PS1 or PS2 Memory card, real or virtual, every one of the savedata items represented with an icon, A single savedata can use one or several slots in PS1, and always only one slot in PS2
  • PARAM.SFO Information about the Game Save. This one is never encrypted.
  • PARAM.PFD Signatures of some of the other files in the folder.

Game Saves PS1[edit | edit source]

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>/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[edit | edit source]

Memory card PS1 (original)[edit | edit source]

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 (adress: 0x2000 , 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 memory card size 128KB = 131072 bytes = 0x20000 bytes
  • 1 Block = 8KB = 8192 bytes = 0x2000 bytes
  • 1 Frame = 128 bytes = 0x80 bytes

Virtual Memory Card PS1 (.VM1)[edit | edit source]

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 or method used on PS3 & PS1 and why not one game save data example (preferably with Checksum and compressed data) .

Block Nº Frame Nº Offset Length 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 1-15

If the bock/frame isn't in a link or if it's the last link in the line, it's 0xffff. E.g. 0x03,0x04,0xffff for a 3-block save starting in frame 3 (2nd available block).

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, don t need to use all bytes , 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
Kyoro chan no Purikura...(JP)            : BISLPSP01692DATAFILE 
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

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

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("MCX0" / "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 Pockestation. Otherwise, the icon diplay on the PocketStation will be the regular PS ICON (but interpolated into 32x32 monochrome icon )

0x02056 2 PocketStation APIcon Number of frames or filled with zero.
0x02058 8 00 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 converted 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 (0x80 also) 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 (specific to each game:money. level etc...) will start directly after the icon(s): some game can indicate it with string (e.g.: "MARIEB1" on BISLPS-01418 Atelier Marie).

Some games can use checksum CRC 16 or 32 or compressed data.

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)[edit | edit source]

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

A part of the header is common for PS2 (most, but for PS2 is bigger)

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 5D EF E2 10 2A D0 F0 1D  .VSP....]ïâ.*Ðð.
00000010  0C 56 59 FF B9 7F 8C D2 AA D1 BC 8D F6 FA 58 3C  .VYÿ¹.ŒÒªÑ¼.öúX<
00000020  53 10 80 D1 91 2F ED 10 CC C9 CF BC C9 F8 9D 88  S.€Ñ‘/í.ÌÉϼÉø.ˆ
00000030  00 00 00 00 00 00 00 00 14 00 00 00 01 00 00 00  ................
00000040  00 20 00 00 84 00 00 00 00 02 00 00 00 00 00 00  . ..„...........
00000050  00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00  ............. ..
00000060  03 90 00 00 42 41 53 43 55 53 2D 39 34 31 36 33  ....BASCUS-94163
00000070  46 46 37 2D 53 30 31 00 00 00 00 00 00 00 00 00  FF7-S01.........
00000080  00 00 00 00 53 43 11 01 82 65 82 65 82 56 81 5E  ....SC..‚e‚e‚V.^

Filename Format[edit | edit source]

The Filename is generated from the saved ps1 data with the format:

  Internal PSX ID String followed by the Description Text in HEX
  For the above header the Exported PSV file name would be "BASCUS-941634646372D533031.PSV"
Offset Length Example Description
0x00 0x08 00 56 53 50 00 00 00 00 " VSP"
0x08 0x14 5D EF E2 10 2A D0 F0 1D 0C 56 59 FF B9 7F 8C D2 AA D1 BC 8D Key seed, decrypted via aes 128 cbc (vtrm type 3 or static key)
0x1C 0x14 F6 FA 58 3C 53 10 80 D1 91 2F ED 10 CC C9 CF BC C9 F8 9D 88 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 14 00 00 00 PS1=0x14, PS2=0x2C
0x3C 0x04 01 00 00 00 PS1=0x1, PS2=0x2
0x40 0x04 00 20 00 00 Use Byte (Size displayed on XMB).
0x44 0x04 84 00 00 00 First slot absolute start offset (start of "SC" area in PS1, or "PS2D" area in PS2)
0x48 0x04 00 02 00 00 Savedata offset (relative to the start offset of "SC" section)
0x4C 0x10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?
0x5C 0x04 00 20 00 00 ?
0x60 0x04 03 90 00 00 ?
0x64 0x14 42 41 53 43 55 53 2D 39 34 31 36 33 46 46 37 2D 53 30 31 00 File Name (byte 7 enables PocketStation display)
0x78 0x0C 00 00 00 00 00 00 00 00 00 00 00 00 padding ?
0x84 0x02000 53 43 ... "SC" savedata slot, see .VM1 format
  • Notes:
    • Size: Display 56kb+?
    • Title & ICON & CLUTS (color palette) displayed on XMB: other values than 84 can display different result on XMB.
    • 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)

See Tips related to USB Stick/Mass storage device

  • 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.
    • Using Memory Card Adaptor don t corrupt save data in normal case, you need to insist or copy to other Virtual Memory Card to avoid the error

Virtual Memory Card PSP (.VMP)[edit | edit source]

VMP is a PS1 memory card in "PSP format". Total memory card size is 129 KB = 131200 bytes = 0x20080 bytes (0x80 bigger than a real PS1 memory card)

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 Length Example Description
0x00 0x0C 00 50 4D 56 80 "PMV"
0x0C 0x14 Key seed, decrypted via aes 128 cbc (vtrm type 3 or static key)
0x20 0x14 Sha1 hmac digest
0x34 0x4C ? 00 filled with zero
0x80 0x02 4D 43 "MC" From here, similar than Block 0 on .VM1 (with possible slight differences)

Memory Card Tools PS1[edit | edit source]

Supported Memory Card formats:
   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)
   PCSX ReARMed/RetroArch(*.srm)
   PSP virtual Memory Card(*.VMP)
   PS3 virtual Memory Card(*.VM1)
Supported single save formats:
   PSXGame Edit single save(*.mcs)
   XP, AR, GS, Caetla single save(*.psx)
   Memory Juggler(*.ps1)
   Smart Link(*.mcb)
   RAW single saves
   PS3 virtual saves (*.psv)

PSXGameEdit v1.60

PSXGameEdit homepage:

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/PS3[edit | edit source]

  • 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). If the save data is not visible on XMB, copy an other save data block to your memory card, then it will appear.
    • 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/)
    • you can also select them from the options of the PS1 emulator during game (PS button-assign slots).

Editing PS1 Game Saves icons in PC[edit | edit source]

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