[ALPHABETA] Skyrim Save Viewer

Post » Tue Aug 14, 2012 4:59 pm

Skyrim Save Viewer

http://www.mediafire.com/?bg5yfuauefg8fqj

Current Version: 0.2


Description


This is an alpha/beta release of a little utility lets you view your save files in a nice, human-readable format (mostly, more on that later), following what has been decoded http://www.uesp.net/wiki/Tes5Mod:Save_File_Format and whatever I decoded myself in the process of writing this. There's currently no editing functions yet, but they are in the works. Whatever hasn't been decoded is displayed in hex. I'm releasing this early so that anyone interested in decoding the save files doesn't have to deal with a mess of hex. And for those that are curious, I suppose. If you have a grudge against a particular category or you just don't want it displayed, you can filter it out when you start the program (there's a button labelled "Filters"). Anything that's selected in that dialog will not be displayed.

If you find any bugs, don't hesitate to let me know. I'll try to fix whatever bugs are found as soon as I can and as best as I can. Please provide as much information as you can (including, but not limited to, providing clear instructions on how to reproduce -- I can only fix what I can reproduce -- and some general info about the session) Also, I'm open to suggestions/improvements. I'll consider anything suggested. I might not act on it, but I'll consider it.

For those wondering, the source code won't be available for the time being. It will be later once I clean it up a bit, add editing functions, and find a suitable license (any help/suggestion for the latter are more than welcomed).

Future Plans (in no particular order)

  • Implement some sort of error/warning logging information.
  • Add editing functions
  • Customize "view" panel so that each type has one that is specialized for its data (as opposed to having everything in one table. I apologize for this, I just wanted something I could set up quickly).
  • Set up online repo and release source.
  • Add context menu to save file tree with following items: view screenshot, produce text dump of save file.
  • Fix any bugs
  • Maybe add cleaning functions.
  • Have the batch script search for the Java installation.
Known Issues

  • Eats memory for breakfast, lunch, dinner, and snacks in between. (Load the papyrus section of a bloated save and you'll see)
  • Refuses to let go of some memory. (Load the Papyrus section twice and you'll see). It's like that overly-attached girlfriend meme, where memory is the significant other and the OAG goes for multiple partners...
  • Hex view of unknown data doesn't scale according to size. Not a big deal when you expand the window, but when shrunk, you won't be able to see some bytes.
  • Everything else that I can't think of or haven't come across yet.
  • A couple of the File Menu Items do nothing. Intentionally disabled for reasons related to the memory issues.
  • There's a blank text area next to the hex view, it was supposed to display the ASCII version of the hex dump, but, again, memory issues (mostly with Papyrus).
  • No readme. Will be rectified soon-ish. In the meantime, enjoy the "View Readme" menu item.
Installation


Download, install/update Java if required and run the accompanying jar file.

Requirements


You must have Java SE 7 installed. No other version will work. You can get the latest version http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1637588.html. This was written and tested on Windows 7 64-bit so there may be OS specific quirks that I haven't come across.

Uninstallation


Delete the files that came from the original archive.

Credits

  • No direct help, but Leviathan1753 deserves a mention because I learned quite a bit while reading through the SkyProc source. Thank you!
  • Bethesda, for making Skyrim, Oblivion, and other great games.
  • sialivi, for showing how a striped table could be implemented without using SwingX.
  • A big thanks to everyone that contributed to the Save File Format page over at uesp.net. Thanks to them, I didn't have to start from scratch, saving me alot of time.
Version history


Spoiler

0.2:
  • Fixed bug where hex view wouldn't update when selecting a type that has no unknown data (i.e., when it should have been empty).
  • Removed SwingX dependency.
  • Added support for BOOK change form.
0.1:
  • Initial alpha/beta release

Enjoy!
User avatar
Andres Lechuga
 
Posts: 3406
Joined: Sun Aug 12, 2007 8:47 pm

Post » Wed Aug 15, 2012 1:57 am

A couple of things I wanted to mention:
1) Ideally, I'd like to run to have this start from a batch script with a few VM arguments (namely, Xmx and Xms), but I don't know how to find the default path from registry keys. My knowledge and experience with Batch scripting is very limited. If anyone can point in the right direction, I'd appreciate it.

2) The only reason I'm using SwingX is for the ease of implementing stripped tables. Rendering in Java is something I know little of, so, again, if anyone can help in those regards, I'd appreciate it. Not a major issue; I'd just like this program to have no dependencies. Not an issue anymore thanks to sialivi.

3) I'm currently compressing/decompressing the change forms using Java's built-in zlib support. From my testing, it always inflates to the expected number of bytes and always deflates (using default settings) to the expected number of bytes. The output is identical, byte-for-byte, with original input after inflating and deflating. I'm wondering if this is safe to use in writing save files? If there's any issues related to doing this (not people complaining, actual issues found in compressing/decompressing), I suppose I could use zlib 1.2.3 through the JNI. Anyways, I was hoping someone more experienced with compression could pipe in and provide input.

4) I had something else I wanted to say, but I forget... will post later when I remember.
User avatar
Sami Blackburn
 
Posts: 3306
Joined: Tue Jun 20, 2006 7:56 am

Post » Wed Aug 15, 2012 12:23 am

Editing functions planned??

:banana: :clap: :thanks:

What kind of editing? Like being able to remove papyrus stickiness?
User avatar
patricia kris
 
Posts: 3348
Joined: Tue Feb 13, 2007 5:49 am

Post » Wed Aug 15, 2012 2:59 am

General editing. See something you want to change, change it. Save. Load up Skyrim and see if you broke something. Some things won't be editable (File Location Table comes to mind) but I anything I think that should be editable will be editable.

One thing I'd like to able to do is automagically check which scripts are still referenced in active mods and remove all references that can safely be removed from those that aren't referenced anywhere. It might be awhile until this is possible, however, as it'll require a fair amount of decoding and testing to ensure the removal is both safe and thorough. But it is planned :)
User avatar
.X chantelle .x Smith
 
Posts: 3399
Joined: Thu Jun 15, 2006 6:25 pm

Post » Wed Aug 15, 2012 12:09 am

Yes, removal of defunct scripts would be at the top of my list of things to deal with.
User avatar
An Lor
 
Posts: 3439
Joined: Sun Feb 18, 2007 8:46 pm

Post » Wed Aug 15, 2012 2:59 am

Thanks trira, I'll check it out and keep my eye on this one :wink_smile:
User avatar
c.o.s.m.o
 
Posts: 3419
Joined: Sat Aug 12, 2006 9:21 am

Post » Wed Aug 15, 2012 12:40 am

If you manage to add functionality to this to clean orphaned scripts from saved games, I bet you'll officially replace Talos and even the Thalmor will worship you around here!
User avatar
Ebony Lawson
 
Posts: 3504
Joined: Fri Feb 16, 2007 11:00 am

Post » Tue Aug 14, 2012 5:01 pm

1) Ideally, I'd like to run to have this start from a batch script with a few VM arguments (namely, Xmx and Xms), but I don't know how to find the default path from registry keys. My knowledge and experience with Batch scripting is very limited. If anyone can point in the right direction, I'd appreciate it.

If you use Web Start you can define such arguments

2) The only reason I'm using SwingX is for the ease of implementing stripped tables. Rendering in Java is something I know little of, so, again, if anyone can help in those regards, I'd appreciate it. Not a major issue; I'd just like this program to have no dependencies.

http://www.exampledepot.com/egs/javax.swing.table/Stripe.html
User avatar
Trent Theriot
 
Posts: 3395
Joined: Sat Oct 13, 2007 3:37 am

Post » Tue Aug 14, 2012 10:00 pm

If you use Web Start you can define such arguments
Will look into that, thanks.

http://www.exampledepot.com/egs/javax.swing.table/Stripe.html
I adapted this fairly easily for my needs. Thanks again! :)

I can now remove the SwingX dependency. Speaking of which, new build uploaded with a minor bug fix (hex view wasn't updating upon switching to a type that had no unknown data -- i.e., when the hex view should have been empty), and a shiny new data type semi-figured out (Change Forms Table > BOOK).
User avatar
Kanaoka
 
Posts: 3416
Joined: Fri Jun 16, 2006 2:24 pm


Return to V - Skyrim