I've been making quite a lot of progress with my Saved Game Tool. I'm able to extract a saved game into its constituent sub-files and then recompile it back into the saved game. As the staff.dat and club.dat sub-files are the same structure as the staff.dat and club.dat DB files, I'm able to extract the sub-files and then make contract changes to them using the EHM Updater - and then recompiling them back into the saved game file. Just as a quick test, I extracted a saved game, used the Updater to move Sidney Crosby from the Pens to Manchester Phoenix, and then recompiled the saved game.
The saved game loads up fine and sure enough Sidney Crosby is on Manchester's roster. However, he still comes up on Pittsburgh's Finances/Contract screen rather than Manchester's (and it seems Manchester isn't taking any hit from his $7m salary). His game log has been wiped clear but the stats he acquired over the first 30 games with the Pens now appear in his career history as having been achieved with Manchester - but only the stats he's acquired since being on Manchester's roster are actually contributing to his EPL stats.
I'm sure the reason for Crosby still appearing on Pittsburgh's payroll is because contract.dat needs to be updated (
Laz posted almost all of the structure here). I'm not sure where the player stats are stored yet - this is one of the things I'm most interested in because I want to be able to export player stats en masse to help with evaluating roster re-rating, etc.
NingDynasty wrote:Just did a quick look around for the location of the game date. If it's in the standard SI Date format there are 8 references to August 30th 2006 (first day) when using an absolutely minimal game file. Looks like 1 was in the staff.dat (highly unlikely), 6 were in transfer_manager.dat and the final one was in transfer_rules.dat. Unforunately when I tried changing all of these they seemed to have no affect whatsoever. I also tried searching for a standard dos date 1E 35 for august 30th 2006 but of the 16 found none had any affect when changed. Standard m/dd/yyyy and dd/m/yyyy using short 2 byte types also didn't return any hits. What can you say about the date info that you found for the change start date patch? Was it using the SI_Date format or something different?
Did you take into account byte-swapping when you did your search? For example 2006 in hex is 07 D6 - however, because the bytes are swapped, it is stored in the dat files as D6 07. Another example is that 100,000 as an int in hex is 00 01 86 A0 but because the bytes are swapped in the dat files, this appears as A0 86 01 00.
30 August is the 242nd day of a standard year. Because day 1 = 0 in EHM, the SI DATE day number for 30 August is 241 (or F1 in hex). 2006 isn't a leap year and so the leap_year bool is 0 and, as mentioned the hex for 2006 is 07D6. Taking into the account the aforementioned byte-swapping, the SI DATE for 30 Aug 2006 should be: F1 00 00 D6 07.
I've been trying to the find the date in the saved game, but can't find it anywhere. It's got to be somewhere, though! Like you say, maybe it is stored in another format. I would have thought that in addition to storing the date, it has to store whether it is AM or PM because the game always resume at the correct part of the day. I can't see any sub-file names that really stand out as possible locations for the date - except perhaps general.dat?