[FE7] Save Editor?

Hi all, I’m new here. I’ve recently taken an interest in save editing, but it seems there’s not actually a save editor for the GBA Fire Emblem games. I’ve started working on one, but I’m curious why it hasn’t been done before.

Is there some barrier to making a working save editor? Or are most people just content to modify the ROM itself to change the game to give them what they want, rather than editing the save?

Thanks for any help.

I’ll bump once before leaving it alone.

So you mean editing the .sav file? Or do you mean RAM editing…? There are hacks that alter how the game handles save data in general, but that edits the ROM functions that load and save into save data.
Could you specify what you would want to accomplish with this save editor?

I think was iilaggyii was referring to a program like PokeGen or PKHex where you can edit the data in save files. It likely will be a bit more tricky than in FE games because you have the option for multiple files in most, if not all of the games.

Yeah, I mean editing the .sav files. I have found sections that correspond to each save slot, but I haven’t fully figured out how characters are recorded.

I see a lot of similarities to this post: [FE8] Save Data and Suspend Data Space Allocation

And some of Nintenlord’s notes look useful on character data structure, though I haven’t quite managed to match them with what I’m seeing yet.

But yeah, I wondered why there wasn’t an editor already, given the tremendous amount of other hacking that exists.

I’ve made some progress figuring out how characters are stored, but I’m not sure how to approach the checksum. Does anyone have documentation on how checksums are calculated with the save data?

If you want to edit characters your best bet would probably be to load the file ingame and edit the characters in ram, then let the game save your edits properly

2 Likes

Oh, that is awesome. Thanks! I hadn’t come across that stuff before. So it looks to me like the checksum for slot 1 should be stored in 0x70 - 0x73 of the save file. Slot 1 seems to begin at 0x3f2c and have a length of 0xd8c. But if I apply the 32 bit checksum algorithm to the whole save region, it doesn’t match what I see stored as the checksum.

Does the checksum use a window other than just the save slot region?

(save) slot 1 data is actually in save block 2 (as save block 0 and 1 are both alternating as suspend and backup suspend blocks) so the checksum would be word at +64+10*2+0C = +90(hex). I may be wrong on that actually nvm

I wrote a quick python script that compares each stored checksums to checksums computed with that algorithm for each save block and it seems to work fine (as long as the save block is actually being used) (tested with fe7u, fe7e and fe8u saves) (https://github.com/StanHash/DOC/blob/master/Tools/Py/checksum.py).

Fantastic, thanks! I wasn’t reading the data two bytes at a time, so that was my problem. You have been extremely helpful.

@iilaggyii did you ever wind up cracking the code here? :slight_smile:

oh shit 2019 was three years ago I feel oooold

anyway yeah, necropost

1 Like

Thread was three years old, unnecessary necropost.