Repository navigation
v1.2 - Fix PS4 conversions
Fixes shadPS4 -> xenia producing a blank save slot. If you converted from PS4, re-run it with this build.
What was wrong
The PS4 build inserts 8 zero bytes at payload offset 1080 of the GAME / V2GAME blob, shifting everything after it. DLC payloads are unaffected — which is exactly why only the main blob was 8 bytes longer than on the other platforms.
The converter copied that blob verbatim, so Xbox 360 received a structure shifted by 8 bytes from offset 1080 onward. The game could not read it, and showed a blank slot.
Found by aligning a PS3 GAME01 against a PS4 V2GAME01: they match byte for byte up to offset 1080, then diverge — and shifting the PS4 side by +8 realigns them for thousands of bytes, with the file tails matching exactly.
The fix
Payloads are normalised on read (gap removed for PS4 sources) and denormalised on write (gap re-inserted for PS4 targets), so everything else works on one canonical layout. If those 8 bytes are ever not zero, the tool says so instead of silently dropping data.
This also fixes a v1.1 regression where GAME01 length was taken from the source, coming out 8 bytes too long when converting from PS4. Legacy length now follows the save revision (100417 for version 13, 100381 for version 12).
Verified
Converted from PS4, the output now matches a real xenia save's file sizes exactly:
| File | Converted | Real xenia save |
|---|---|---|
GAME01 |
100,441 | 100,441 |
V2GAME01 |
308,069 | 308,069 |
DLC01 |
234,841 | 234,841 |
- PS4 -> Xbox 360 -> PS4 round trip: all 32 files bit-identical
- Wii U -> Xbox 360 -> Wii U round trip: all 32 files bit-identical
If a slot still shows up blank
Convert into a save slot the game itself created and keep its metadata. On xenia that means the .header file in Headers\ — a folder without one shows as a blank slot no matter how correct the save files are. The tool now says this in its log.