Hello everyone! For the past few months or so, I've made it a hobby to gain a greater understanding of the Infinity Engine file structures. I have a pretty good understanding of the structures now, and I have even created a program that can edit some of these structures. Sidenote: This program is in no way trying to be Near Infinity or the like, it's just a tool to help me learn.
I was working on the interesting problem of updating a savegame; updating it as to make it match a modification that had been installed after its creation. I've hit a bit of a snag though, in regards to how the actors are stored. I've been looking at the IESDP
, and the way an actor stores its reference to the CRE file that made it seems quite.. weird to say the least.
To paraphrase, it stores the first letter of the CRE file at an offset of 0x002e, and yet it stores the rest of the filename at an offset of 0x0080. My problem is that this "first letter" field gets overriden with a "*", seemingly when the actor first gets loaded. I believe this makes it impossible to track down the exact CRE file this actor represents, and this is the problem I am facing.
Now, this doesn't matter if every CRE file has a completely unique post first-character name, but I have found this to not be the case. In Planescape, for example, there are the files LENNY.CRE and NENNY.CRE. These two files look exactly the same in the save, because of the way they are stored. (*ENNY is what the save sees for both of these actors)
I was wondering if anyone had any insights into this dilemma, or if it simply impossible to do what I am attempting. Thanks for your time, and any help you might give!