03-19-2011, 09:26 PM
(03-19-2011, 02:06 PM)Itaru Wrote:(03-19-2011, 07:09 AM)Hykem Wrote: Oh, by the way, as of r2038, it should now be possible to decrypt Dissidia on the fly. It seems this game uses an unknown MIPS relocation that has been adapted by the internal PSP's processor, Allegrex.
Apparently, index 255/0xFF is actually a stop code.
@Kyotoo: This may also represent a solution for K-ON!, Kyotoo.
Yup, Dissidia and a few other games that suffered the 255 IndexOutOfBoundsException errors are now working after your fix. Now I can finally remove my hack to get those games to work. As a matter of fact, I had to remove my hack since it conflicted with your fix when I updated the source through svn, hehe. I mentioned my hack a while back on this post: http://www.emunewz.net/forum/showthread....27#pid9727 but I guess people missed it.
Anyway, great work Hykem.
I did noticed it, but up until now I couldn't prove it. Fortunately, "Final Fantasy Dissidia" explicitly uses 0xFF as a MIPS relocation, which leaves no other option than accept that the PSP has to interpret this.
What is odd is that manually decrypted files do not have these relocations in them, which suggest that they get automatically removed.
I've traced this down to a correlation with the ~PSP header's struct field comp_mod_attr which, for these games, is 0x00 (0x01 is for PRX and 0x02 for ELF, but 0x00 is just unknown). Could it be some sort of dev level? Maybe an attribute that lets the PSP crash and report compilation errors...