A long time ago, in a galaxy far far away, I was able to successfully hex edit a save file for a game that might have been Angband, or Moria, or something else.
One of the things I recall was that the save file had a checksum built into it, so that if you edited a single value you needed to recalculate the checksum and modify that as well or the loader would puke on you. But I don't know if that was Angband or if that feature is still present.
Even further in the past, I remember a save file where I tried and tried to find the value I wanted to edit, to no avail, finally having to compare two save files made a turn apart where all I did was drop money (I think I was trying to hack myself some free money). The problem was about a dozen values changed in that one turn (timers and what not), and I had to go through those by process of elimination until I figured out where the field I needed to touch was.
And even then the hex value stored at the magic offset didn't make any sense. Until *finally* I twigged to the fact that the game had been written in Basic, and all the values were stored as floating point, because that's how numbers got represented internally in Basic. *And* of course the floating point values were stored byte-swapped (aka little endian).
One of the things I recall was that the save file had a checksum built into it, so that if you edited a single value you needed to recalculate the checksum and modify that as well or the loader would puke on you. But I don't know if that was Angband or if that feature is still present.
Even further in the past, I remember a save file where I tried and tried to find the value I wanted to edit, to no avail, finally having to compare two save files made a turn apart where all I did was drop money (I think I was trying to hack myself some free money). The problem was about a dozen values changed in that one turn (timers and what not), and I had to go through those by process of elimination until I figured out where the field I needed to touch was.
And even then the hex value stored at the magic offset didn't make any sense. Until *finally* I twigged to the fact that the game had been written in Basic, and all the values were stored as floating point, because that's how numbers got represented internally in Basic. *And* of course the floating point values were stored byte-swapped (aka little endian).
Comment