Thread Rating:
• 3 Vote(s) - 5 Average
• 1
• 2
• 3
• 4
• 5
 Celsius - FFX-2 Save game editor Scarlet.Crush Senior Member Posts: 574 Threads: 2 Joined: Jun 2011 Reputation: 93 08-09-2011, 11:29 AM (This post was last modified: 08-19-2011, 10:45 PM by Scarlet.Crush.) CRC Calculation Celsius has been using the CRC Bypass method, it has been a tad annoying that I could not find a CRC algorithm which would correctly calculate the values used by FFX-2. So I broke out CE and traced through the assembler code which the game uses. After converting the trace to C code, it turns out that a standard CRC-16 CCITT algorithm is used, with one small exception. The last entry in the hash table is zero (not calculated). It looks like this may be a bug in the games CRC generation code, since a disproportionally large number of the CRCs I've seen while developing/testing Celsius have been 0xFFFF, the distribution of calculated hashes seems to be somewhat skewed. I decided to try this algorithm on FFX, and it looks like FFX-2 inherited the code from it. CRCs are calculated consistantly between the two. FFXII by contrast uses a bog standard CRC-32 algorithm. The following is for FFX-2 UK PAL SLES_518.15 Algorithm First 64 bytes are not used for hash calculation. Start = 0x40 End = 0x16270 (File Length from PSU File) Existing CRC is Zeroed out. Byte [0x16268] = 0 Byte [0x16269] = 0 Calculate Hash Table with Polynomial = 0x1021 Zero out last entry Table[255] = 0 Calculate Hash with Initial Value = 0 Seed = 0xFFFF Code:```Start = 0x40 End = 0x16270 Hash = Initial Hash ^= Seed while(Start < End) {     Hash = Table[(Hash >> 8) ^ Data[Start++]] ^ (Hash << 8) } Hash ^= Seed return Hash``` I've attached a quick & dirty C# app (with source) for calculating CRC Hash values for FFX, FFX-2 and FFXII PSU Files. You may have to adjust the offsets for non UK PAL versions of these games. The next release of Celsius will include CRC support. Attached Files   CrcTest.7z (Size: 35,06 KB / Downloads: 322) Sponsored links fuzzymillipede Moderator Posts: 462 Threads: 14 Joined: Jul 2009 Reputation: 18 08-09-2011, 11:46 PM That was very informative. FFXED has always replaced the CRC with zeroes, but I never knew why it actually works until now. usdelka Newbie Posts: 3 Threads: 0 Joined: Aug 2011 Reputation: 0 08-13-2011, 04:14 PM (This post was last modified: 08-13-2011, 04:17 PM by usdelka.) thanks but i have a problem, when click open the memory card for pcsx2 emulator whit savegame of FFx-2, i see "Fail to open memory card" My game is spanish version SLES 51819, is incompatible whit this editor? Thanks Scarlet.Crush Senior Member Posts: 574 Threads: 2 Joined: Jun 2011 Reputation: 93 08-13-2011, 09:31 PM (This post was last modified: 08-13-2011, 09:44 PM by Scarlet.Crush.) (08-13-2011, 04:14 PM)usdelka Wrote: thanks but i have a problem, when click open the memory card for pcsx2 emulator whit savegame of FFx-2, i see "Fail to open memory card" My game is spanish version SLES 51819, is incompatible whit this editor? Thanks I don't have your version, so can't say for sure that it is compatible. You can try the following - 1. If PCSX2 is running you must Eject the Memory Card in the PCSX2 GUI first. 2. Make sure you are running the latest version of Celsius (at least - 1.3.0.4237) 3. Configure Celsius for your version of the game. - Press 'F2' to open the Properties box, select Celsius from the drop-down list at the top of Properties. - Scroll down to PsuIO make sure Moroda is selected. - For PsuTarget make sure User is selected. - Change PsuUserPrefix to be BESLES-518. Hit to save the change. 4. Click , and select a .ps2 file. You should then see a list of your save games. The Size column must be 0x16270. 5. Select the save you want to edit and click . 6. Verify that the values displayed are the same as you see in game. Please post whether you are successful or not, or if you need any more help. Attached Files Thumbnail(s)     Scarlet.Crush Senior Member Posts: 574 Threads: 2 Joined: Jun 2011 Reputation: 93 08-13-2011, 10:24 PM New Release 1.3.1.4257 - see first post. usdelka Newbie Posts: 3 Threads: 0 Joined: Aug 2011 Reputation: 0 08-14-2011, 01:32 AM Thanks scarlet, now work whit my version spanish. The key is the configuration Scroll down to PsuIO make sure Moroda is selected. - For PsuTarget make sure User is selected. - Change PsuUserPrefix to be BESLES-518. Hit to save the change. ah, the new release not work in 32 bits? Scarlet.Crush Senior Member Posts: 574 Threads: 2 Joined: Jun 2011 Reputation: 93 08-14-2011, 03:29 AM The new release is 'Any CPU' - so will work on 32 bit (x86) and 64 bit (amd64 and ia64) with the same executable. OS Version is detected at runtime by the .Net Framework. psem07 Newbie Posts: 22 Threads: 0 Joined: Jul 2011 Reputation: 0 08-21-2011, 04:23 AM I'm playing the NTSC version with PCSX2. I have .NET Framework 4 Client Profile and VCR 2010 x64 installed. However, be it whether I have ejected the memory card or not, I will still get the error 'Failed to open for reading' when I try to open the file using the latest version of Celsius. I hope the save game editor can support this version some day. Scarlet.Crush Senior Member Posts: 574 Threads: 2 Joined: Jun 2011 Reputation: 93 08-21-2011, 05:07 PM The editor does not use .Net Framework 4, it uses .Net Framework 2 (2.0.50727). There was no feature in 4 that I required for the editor, and I wanted to keep requirements to a minimum. As of 1.3.1.4257 the editor no longer requires the VC runtime, Clasco.dll (the VC portion) was mostly included as a demonstrator of how to use P/Invoke and write a C/C++ dll to be consumed by a .Net Application. There are plenty of other P/Invokes in the code. The 'Failed to open for reading' error is displayed if a Save within the card can not be found that matches the Target filter. The default Target is set for the PAL UK version of the game, this can be overriden in the Properties box, Celsius section. (see response to usdelka a few posts up). If you do not know what your game version is you can find out by opening the card with Mymc.exe, the 'Directory' column in Mymc displays the full Target name, you would use the first 12-18 characters of this as your Target filter in Celsius (if in doubt you can just use 'B' as your Target, this should show everything that is on the card). If you see your Save with size 0x16270 it can be edited with Celsius, there is at least 1 other save size of 0xD428 which cannot be edited (I don't have this version of the game - so can't find out what the Offsets are for it). Let me know how you get on. Celsius development is complete feature wise, so if you have the 0xD428 save size (BASLUS-20672) it may be possible to work on ascertaining the offsets. psem07 Newbie Posts: 22 Threads: 0 Joined: Jul 2011 Reputation: 0 08-22-2011, 06:33 PM (08-21-2011, 05:07 PM)Scarlet.Crush Wrote: The editor does not use .Net Framework 4, it uses .Net Framework 2 (2.0.50727). There was no feature in 4 that I required for the editor, and I wanted to keep requirements to a minimum. As of 1.3.1.4257 the editor no longer requires the VC runtime, Clasco.dll (the VC portion) was mostly included as a demonstrator of how to use P/Invoke and write a C/C++ dll to be consumed by a .Net Application. There are plenty of other P/Invokes in the code. The 'Failed to open for reading' error is displayed if a Save within the card can not be found that matches the Target filter. The default Target is set for the PAL UK version of the game, this can be overriden in the Properties box, Celsius section. (see response to usdelka a few posts up). If you do not know what your game version is you can find out by opening the card with Mymc.exe, the 'Directory' column in Mymc displays the full Target name, you would use the first 12-18 characters of this as your Target filter in Celsius (if in doubt you can just use 'B' as your Target, this should show everything that is on the card). If you see your Save with size 0x16270 it can be edited with Celsius, there is at least 1 other save size of 0xD428 which cannot be edited (I don't have this version of the game - so can't find out what the Offsets are for it). Let me know how you get on. Celsius development is complete feature wise, so if you have the 0xD428 save size (BASLUS-20672) it may be possible to work on ascertaining the offsets.I'm now able to open the save file. My game version is BISLPS-25250 and the file size indicated by Celsius's Select a Slot interface is 0xBB30. I'm using Windows 7 64bit and have verified that I have .Net 2 installed. However, I find that existing levels, inventory and abilitietc for each character are not being shown at all. For example, each character is shown as having attained only Lv 1 when my charactes are all over 20 now. Each of my character has many abilities already mastered but they show only two basic ones being mastered - eg: Yuna's gunner is shown as having only attack and Trigger Happy mastered when I have already mastered a lot more than that. Did I miss doing something? « Next Oldest | Next Newest »

Users browsing this thread: 1 Guest(s)