Hi Tawmis, that's actually a really good question. In truth, that's exactly what I did do for much of decoding QFG1 and QFG2, but it's not as simple or quick as it sounds.
Fortunately for me, somebody else had already done the heavy-lifting of decrypting QFG1 and QFG2, so I just had to poke and prod by trial and error to find out what all the remaining bits of the code meant. There is one flag still undefined for QFG1, and that is not related to anything you *have* but is instead something you have *done*. That part is the time-consuming process. I'm hoping to narrow down what it could be by having a large sample-set. I suspect it is related to a magic user (perhaps beating Erasmus at Mage's maze), so with enough data, I can potentially see that only characters with magic have this flag checked... then I can do my own pin-point testing against anything magic-user related and see if that sets the flag.
Secondly, this is the .sav export/import save's I'm talking about, which can only be done once you finish the game... now, I'm not asking anybody to play through the game for me, but rather I'm hoping many of you have previously exported .sav files (as I do) that you can send me... those alone would help tremendously (but if anybody also has the corresponding saved game near the end, so they can tell me the stats and inventory and magic, etc, I will not turn those away).
As with any reverse-engineering or code-breaking, more data is better, and I've already gone through the previously saved games I have. QFG1 and QFG2 were easy to jump ahead to the end-game/exporting by way of debug codes, but for QFG3 I would have to play through the entire game. Not an impossible task, but if others already have saved files and exported characters from that point that they're willing to share, it would be much simpler.
Now, with QFG3 there is the much harder task of not just identifying which bits mean what, but also decoding/decrypting the data.
Again, I do not want anybody going through a whole game from start to finish, but rather I ask you to share any end-game saves and characters you already
To give you a quick idea of the process, here is one of my QFG3 Thief exports:
- Code: Select all
051 050 1 1 44b 22f 44b 22f 44b 22f 44b 44b 22f 44b 22f 44b 22f 22f 44b 22f2d392b152b182b182b182b182b182b182b182b182b182b182b182b182b182b182b182b182b182b182b232b222a222a222b1d2b24294a41 e d62 d2d d18 f c d 6
Now, assuming this is two bytes per value, I can break it down into groups accordingly:
- Code: Select all
0051 0050 0101 044B 022F 044B 022F 044B 022F 044B 044B 022F 044B 022F 044B 022F 022F 044B 022F 2D39 2B15 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B18 2B23 2B22 2A22 2A22 2B1D 2B24 294A 410E 0D62 0D2D 0D18 0F0C 0D06
And applying a similar decoding as with QFG1/2 (using 0x0053 as the initial cypher) I get
- Code: Select all
0002 0001 0151 054A 0664 0664 0664 0664 0664 0664 0000 0664 0664 0664 0664 0664 0000 0664 0664 2F16 062C 000D 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 003B 0001 0100 0000 013F 0039 026E 6844 4C6C 004F 0035 0214 020A
I can already draw several inferences from this data... to start with, the first word is 0002 (0000 is Fighter, 0001 is Wizard, 0002 is Thief, and 0003 is Paladin), which means Thief. Words 5 -> 19 are the skills... I can see that word 10 (which is Parry) has a value of 0, as does word 17, Magic. The rest of the skills are 300, which I know from outside knowledge (i.e. loading into QFG4). So how does 0664 == 300 ? Is it a problem with my decoding algorithm, or some other factor I haven't identified yet?
All of this leads me to think I need more data, and honestly, I'm kinda hoping that posting this in a public forum will also lead to a different way of thinking, and hopefully a bit of needed inspiration.