Adds data for supporting 3.0.0, still needs savefile structures/hash range dumped and incorporated into MainOffsets30/PersonalOffsets30. Offsets/range is currently a copy of 2.0, which is obviously not correct. Saves will fail to load as encrypted values are not at the expected offset (pls no complaints).
CTRL-I from main form still opens the injector interface; RAM offset not yet documented.
Added code that zeroes out the 4 bytes beginning at offset `0x70` of the pattern array that seemingly causes mismatches in imported pattern ownership.
Exposed this fix via extra testing with different saves and different pattern dumps.
Added fix for two parts of pattern import problems:
1. PlayerID and TownID bytes need to be added to the pattern data from the personal.dat offsets to set them as owned and editable correctly. Added these code to get and force overwrite to fix.
2. Flags exist in main.dat for if the player has edited the pattern slot and if not, the name will not be updated correctly. Added offsets for these and added code to flag them as edited on import to fix.
Added a new icon that supports up to 256px and is "distinct".
Added translations to MessageStrings_jp.txt.
* Initial save arrangement
* Add initial text dumps
* Update metadata
* Update offsets for main/personal, fix variation test -- items now internally labelled for no variation
* Add event flag labeling
* Add customization remake lookup entries
No savefile changes apparently, just adding in new items & handling for them.
Probably didn't need to duplicate the Main/Personal offset classes, but whatever.
v1.5 increased the size of GSaveLightMemory by 0xC each; with 160 entries, everything stored after this field (at 0x2F84) increased its offset by 0x780.
GSaveItemName ClothesPTops; // @0x14c size 0x8, align 4
s16 _58b5e808; // @0x154 size 0x2, align 2
s8 ClothesPTarget; // @0x156 size 0x1, align 1
Should be possible to convert the first revision of villager data to the current format and vice versa. Someone would need to document how they pre-fill these new fields (listed above).
game stores all donation types in the same array (chunked into date[], item[], playerID[]); no dedicated indexes for a donation, so no empty slots, and all donation types are intermixed (based on donation date)