12-27-2013, 10:23 PM
(12-27-2013, 08:45 AM)DragonNeos Wrote: There are three questions I have been wondering about for awhile now.
1) Why does JPCSP have trouble loading games that are updated/patched without a workaround? Is there a way to find the source of the problem? This seems like an unusual problem since PPSSPP can load nearly every updated/patched game without any issues. Toukiden seems to be one of the very few games that JPCSP does not need a workaround in order to load, with the exception of Ver 1.06 which still has trouble loading as of r3426.
2) Will there eventually be support for all Update/DLC Files (EDATA, PGD, SPRX, etc.)? As stated earlier, JPCSP seems to have trouble with certain types of Update/DLC Files which prevents games from being able to load or progress in further parts of a game.
3) Are there any fundamental differences in code between the way that JPCSP and PPSSPP creates SAVEDATA? What allows SAVEDATA created from PPSSPP to work on PSP while SAVEDATA created from JPCSP causes the PSP to display Corrupted Data?
1) This may happen for a variety of reasons. Thanks to your test reports I've been able to research this better and trace it down to a Java specific bug.
I'm already working on a fix, but I'm still testing the changes between each patch to be sure it will work for every case scenario.
2) Unfortunately, DLC is still not fully known. The EDATA algorithm is fully implemented, but needs a major optimization (the data should be handled as a stream, which conflicts with the way the algorithm is applied, and Java is not really good at handling native buffers). As for the SPRX in this specific game, it seems to be related to the issue reported here: http://www.emunewz.net/forum/showthread....34&page=10
Some games appear to have an internal check that bypasses the DLC decryption entirely. I still need to investigate how this happens, but of course, there will be full support for DLC eventually and I'm actively researching it.
3) This issue has been puzzling me for a while. The algorithm for the encryption and decryption is matching PPSSPP's implementation. In fact, I've tested SAVEDATA generated by PPSSPP in JPCSP and vice-versa and they worked fine. This makes me think the main problem is in the PARAM.SFO file.
While JPCSP attempts to generate the hash that depends on the console's fuse ID, PPSSPP ignores this and fills this hash with random data. This may tell the PSP to ignore an internal check and load the data straight away.
I'm in the process of releasing an external tool to handle SAVEDATA in order to test this more easily.
Your tests have been really helpful in detecting these issues and working on them. Please keep reporting these findings. Thanks!