New savefile format on firmware 2.0

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Post Reply
EdisonCarter
Posts: 2
Joined: Mon Oct 31, 2005 8:09 am
Contact:

New savefile format on firmware 2.0

Post by EdisonCarter »

It looks like there's a new savefile encoding that games built for fw 2.0 can use. I tried to open a savefile created by GTA:LCS with Shine's SavedataTool http://forums.ps2dev.org/viewtopic.php?t=2218 (nice utility Shine! also like your snake game) but it couldn't decode the DATA.BIN file.

SavedataTool uses a SceUtilitySavedataParam structure that is 0x5C8 bytes long. LCS uses a 0x600 byte structure that includes a 16 byte key in it. I tried calling sceUtilitySavedataInitStart with the same 0x600 structure as LCS on fw 1.5, but got back error 80110004 "Parameter structure size is invalid".

I figured this new 0x600 byte structure must be new for version 2.0, so I got SavedataTool working on 2.0 with Fanjita's EBOOT loader. The loader doesn't know the NIDs for sceUtilitySavedataInitStart, so I found the syscall addresses experimentally:

0x2202 sceUtilitySavedataInitStart
0x2203 sceUtilitySavedataShutdownStart
0x2204 sceUtilitySavedataUpdate
0x2205 sceUtilitySavedataGetStatus

I called sceUtilitySavedataInitStart with the new 0x600 structure and yes, got back 0x00000000 instead of 80110004! Success! So it is a new structure that is only accepted by fw 2.0. It also accepts the old 0x5C8 structure.

Except, one problem. It never finishes initializing the memory stick process. The status never goes from 1 (Initializing) to 2 (Running).

The return values of sceUtilitySavedataGetStatus are:

1 = Initializing...
2 = Running...
3 = Finished
4 = Shutdown
80110005 = Not a valid time to call this function go away

Normally, on fw 1.5, sceUtilitySavedataGetStatus goes from 1 (Initializing) to 2 (Running) on its own after you call sceUtilitySavedataInitStart. On fw 2.0, it just keeps returning 1 forever. sceUtilitySavedataUpdate(1) returns 80110005 as it normally does if you call it while still in status mode 1. I tried this with both the 0x5C8 and 0x600 data structures and same result.

I'm stumped. Any ideas why I can't get sceUtilitySavedataInitStart to work on 2.0?
placasoft
Posts: 53
Joined: Mon Mar 28, 2005 10:53 am

Post by placasoft »

I think the psp use a other encryption algorithmus for the data.bin.
Post Reply