ID:100254
 
Due to a recent collaborative effort between Bandock and myself, I bring you a Savefile Analyzer (click to download).



It's usage is simple: From the command line (cmd.exe), use the command 'save.exe [insert your savefile name/path here]'. Dragging the savefile onto the executable would work, but I didn't get around to adding that in time and I have to go. This will eventually turn into something actually worthwhile, but for now, it's just sort of there.
Wasn't there something like this already out that ran in Dream Seeker?
The obvious thing to point out here would be that this doesn't run in Dream Seeker. Heh.
I made something like this in PHP once, fun stuff.
Didn't seem to work with a couple savefiles I had lying around. For one it output 7 lines of Unhandled type: 1e then locked up and stopped responding.

For the other it output 7 lines of Unhandled type: 1e, 1 line of Unhandled type: 6f, then done at offset [offset number] then just output the base directory name. Nothing else.
Can you upload these savefiles so I can test it out and see what's up? I have a feeling I know what's going on, and it's something I have fixed locally, but having the savefiles to inspect would be helpful.

If it ends up being what I think it is, I'll release a new version also fixing the tons of gigantic memory leaks I left in the program.
Actually, I came across a bug where a savefile might not be ordered correctly and cause even more chaos (including a LOT of memory not getting freed as well as possibly MANY entries to not get displayed) in my journeys to fix the memory leaks I left lay, so I went ahead and fixed that up and also made it so you can now drag+drop savefiles and it'll still work, you just have to press any key to exit.

I uploaded the new version at the same location, so just re-download the .zip and see if that works on your .zip's I suppose?
Looks to be working now with the newer version. Not bad, but I'm not a big fan of the output. Instead of field_name (Data: whatever) why can't it just display field_name = whatever like ExportText() does?

It's also not displaying what's actually in saved lists. If you have a saved list that has text entries it only tells you how many entries are in the list and not what is actually in the list.
tenkuu wrote:
Looks to be working now with the newer version. Not bad, but I'm not a big fan of the output. Instead of field_name (Data: whatever) why can't it just display field_name = whatever like ExportText() does?

The output was actually just for testing and I didn't really change it. I suppose I can fix it up to output a valid importable savefile.

It's also not displaying what's actually in saved lists. If you have a saved list that has text entries it only tells you how many entries are in the list and not what is actually in the list.

I suppose I could fix that up, too. I'll upload a new version with this stuff in a little bit.
Sorry it took so long, but I've uploaded the new version (same place). I fixed it up to display ImportText() compatible text. The real delay was caused by associative lists, which I had forgot to check out. After about a day and a half of pulling my hair out I finally got the associative lists figured out and those work as well in this version.
Good job so far! It's looking better. Any chance you can go further and handle displaying object references like ExportText() does? Right now if there is a list saved that has references to objects, it'll just display commas. For example if you had a list with three object references, it would display list(,,) whereas ExportText() would display something like list(object(".0"),object(".1"),object(".2")).

Another example of an issue is if there's a single variable that refs an object. ExportText() would display something like var_nam = object("0"), but this analyzer only lists the variable name.
Ah, I totally forgot about displaying a value for object references. The uploaded version does this now. I believe it fully matches ExportText()'s output now. Thanks for testing it out, let me know if you find anything else. :)