This repo contains:
-
convert_vita2pc.py
, a utility that converts P4G PS Vita saves to P4G PC saves:- PS Vita
data00XX.bin
andsystem.bin
files are converted to the PC format (see FAQ #1). - PS Vita
sdslot.dat
file is converted to PCdata00XX.binslot
files (see FAQ #2). - A
remotecache.vdf
file is generated with valid entries for each save file (see FAQ #3).
This tool will convert the above into proper PC
.bin
/.binslot
files.There's no need to edit any hashes manually.
- PS Vita
-
convert_pc2vita.py
, a utility that converts P4G PC saves to P4G PS Vita saves.
WARNING: REMEMBER TO BACKUP YOUR SAVES BEFORE CONVERSION.
PS Vita | PC |
---|---|
- PS Vita with HENkaku + VitaShell or vita-savemgr
- Persona 4 Golden on PS Vita - supported versions:
PCSE00120
(USA)PCSB00245
(EUR)
- Persona 4 Golden on PC
- Python 3
Use VitaShell or vita-savemgr to export a save. Transfer the exported save directory to PC using FTP/USB.
For example, using VitaShell:
- Navigate to
ux0:user/00/savedata/
. - "Select" the
PCSE00120
directory. - Press Triangle and select Open decrypted.
- Using FTP/USB, copy the saves to a directory on PC.
The directory you exported to PC should look like the following, if all save slots were populated:
PCSE00120/
|- sce_sys/
| \- sdslot.dat
|- data0001.bin
|- data0002.bin
|- ...
|- data0016.bin
\- system.bin
Note that the sce_sys
directory contains other files, but they are not relevant to the conversion process.
-
Clone or download this repository.
-
Convert your PS Vita saves using:
python convert_vita2pc.py [--custom-diff {disable,enable}] save_dir
This utility will generate:
- a
<save_dir>_conv
directory containing the converted saves - a
remotecache.vdf
file
- a
-
Exit Steam - make sure Steam is not running in the background.
-
Backup the contents of the
%PROGRAMFILES(X86)%/Steam/userdata/<user_id>/1113000/
dir. -
Copy the converted saves in
<save_dir>_conv
to%PROGRAMFILES(X86)%/Steam/userdata/<user_id>/1113000/remote/
, overwriting files as necessary.Copy the generated
remotecache.vdf
to%PROGRAMFILES(X86)%/Steam/userdata/<user_id>/1113000/
, overwriting the original file if necessary. -
Start Steam and launch the game. In case of a Steam Cloud sync conflict, choose to upload local files to the cloud.
-
Your imported saves should now appear in the LOAD GAME menu.
-
Clone or download this repository.
-
Copy the saves in
%PROGRAMFILES(X86)%/Steam/userdata/<user_id>/1113000/remote/
to another location as a precaution. -
Run the following on the directory you've copied:
python convert_pc2vita.py [--custom-diff {disable,enable}] save_dir
This utility will generate a
<save_dir>_conv
directory containing the converted saves. -
Move the converted saves to PS Vita (see here) and launch the game.
-
Your imported saves should now appear in the LOAD GAME menu.
Copy the converted saves in <save_dir>_conv
to ux0:user/00/savedata/PCSE00120/
using VitaShell FTP/USB.
Overwrite files as needed (remember to backup the saves already on PS Vita too).
You should only need to overwrite data00XX.bin
, system.bin
and the sce_sys/sdslot.dat
file.
Do not replace the entire save directory on PS Vita.
Only overwrite the .bin
files within the save directory (as needed) + sce_sys/sdslot.dat
.
-
Why do I need to convert the saves? PS Vita saves seem to work fine without conversion.
-
The PC save format is slightly different (see Save Format Changes). If you load a PS Vita save directly without conversion, you might get the following error:
This can be avoided by converting the saves properly.
-
-
Why do I need to include
sdslot.dat
?- PS Vita saves store metadata in the
sdslot.dat
file, which can be found inux0:user/00/savedata/PCSE00120/sce_sys/
. PC saves store metadata inbinslot
files. This converter takes data found insdslot.dat
and converts it to the PCbinslot
format (see Save Format Changes).
- PS Vita saves store metadata in the
-
Why can't I see some of my saves in the save select screen? Why am I getting a "Load failed." message when trying to load a save? Why do I need a
remotecache.vdf
file?-
The game uses the Steam Storage API to enumerate game saves. Each save file needs to have a valid entry in
%PROGRAMFILES(X86)%/Steam/userdata/<user_id>/1113000/remotecache.vdf
. This program will generate a validremotecache.vdf
file when converting saves.You can also use
remotecache.py
to regenerate a validremotecache.vdf
.
-
-
Why does my Clear Data save look like this? Why aren't NG+ saves colored pink/purple in the save select screen?
-
This is by a bug in the game itself. Note that the saves work as they should, the only issue is with how the save metadata is displayed. Wait for a patch, or use this mod to fix the issue.
Also note that when converting a Clear Data (save 13 below) or NG+ save (save 14 below) generated on PC to PS Vita format, the save metadata is read correctly by the PS Vita version of the game:
PC PS Vita
-
Config settings are no longer saved in system.bin
, instead there's a config P4G.ini
file in %LOCALAPPDATA%/Sega/P4G/
.
- The Rescue Requests save segment increased in size (due to internal struct changes), from
0x2908
bytes (PS Vita) to0x3FAC
bytes (PC). - PC saves contain a new save segment (
0x30
bytes) which stores the Hero's name. - PS Vita saves are padded to
0x38000
bytes with garbage data from PS Vita memory. PC saves aren't padded (0x34D3D
bytes).
BINslot files are the PC alternative to sdslot.dat
.
Stored metadata is identical to PS Vita apart from a new LANG%d
parameter.
BINslot file structure:
typedef struct
{
char Magic[ 0x08 ]; // SAVE0001
ubyte SlotFile_MD5[ 0x10 ]; // md5sum of bytes 0x28 to EOF (SlotData)
// *** with P4GOLDEN appended to the end ***
ubyte SaveFile_MD5[ 0x10 ]; // md5sum of corresponding data00XX.bin or system.bin file
ubyte SlotData[ 0x34C ]; // slot data, same as sdslot.dat data
// at offset 0x400 + <save_num> * 0x400
// save 0 == system.bin
// save 1 == data0001.bin
// etc.
} BINslot;
BINslot Slot;