Jump to content
  • entries
    3
  • comments
    0
  • views
    971

OBSE co-save file surgery


Speele

596 views

This entry is intended to store some RegExp to search through the OBSE co-save of a savegame file of Oblivion.

 

Searching data in OBSE co-save may appear stupid.

After all, if a mod pollutes the co-save with inconsistent data, you just have to remove the mod to clean the mess.

Sometimes however, you do not want to remove the mod. In this case, you need to search for certain data and, after a careful consideration, to delete/edit this certain data.

And when the co-save is about 2-3 Mo, searching inside is a pain.

 

I don't know if anyone post anything related to this subject.

Perhaps there's a co-save viewer/editor existing somewhere, but I wasn't able to find it.

 

Through Wrye Bash, you can ask for OBSE stats by right clicking a regular save. This gives you hints.

Now, I'm talking about deleting parts of the co-save or modify them.

 

You need first a text-editor able to read hexadecimal values.

Some hex-editors will be fine, however you need an editor with a regexp search.

For most of them, you have to buy a license and so on, but you can dowload MadEdit for free, which has the search feature we want.

  > With MadEdit, long outputs can overflow the buffer, resulting in an "exclamation" of the software: just position your cursor the line below and retry

Otherwise, use your favorite editor.

 

Hit Ctrl+F and choose "find with regular expression", or "regexp find".

The parts interesting you are either Strings (RVTS entries) or Arrays (RVRA entries).

Some tags mark the beginning/end of all Strings or of all Arrays, like EVRA: end of arrays, SVRA: start of arrays.

 

Select the next String:

RVTS(.*?)(?=RVTS|SVRA)

Select the next Array:

RVRA(.*?)(?=RVRA|EVRA)

Select the next array containing containing the word "Dummy" or the next String containing the word "LVL":

RVRA(?=(?(?!RVRA).)*Dummy)(.*?)(?=RVRA|EVRA)
RVTS(?=(?(?!RVTS).)*LVL)(.*?)(?=RVTS|SVRA)

You can search for a FormID instead, if the mod stores them in one or many of its arrays.

In this case, adapt the regexp with the following one showing you how to write hexadecimal numbers.

 

Select the next array owned by the mod #31 (hexadecimal number) in your load order, this number is preceded by 3 null bytes:

RVRA(?=(?(?!RVRA).)*\x00{3}\x31)(.*?)(?=RVRA)

You should have no problem to deduce how to find the next string for mod #31...

 

These regexps will highlight parts of data in your co-save.

This is not a way to diagnose-for-nothing. You can compromise a mod by messing the entries.

You should search for specific things. Ideally, you'd want to clean some mod data, without restarting a game or removing the mod.

 

MadEdit.jpg.64ce8a9f66db713e8cb52ad644aae62e.jpg

Above: highlighting the second string in autosave.obse with MadEdit

 

Once your search highlight the matching entry, you can modify it carefully, or simply delete it.

By deleting entries, you must spare special tags (like SVRA) and delete from RVTS to *before* the next RVTS (RVRA for arrays).

 

For deletion:

If you are curious, you'll notice OBSE stores the exact number of entries in the header of your co-save.

So if you delete one, you may expect trouble. In fact, there's no trouble.

OBSE will indeed complain it could not find all the entries. But since the related entries where bad for you, what's the trouble? None.

 

All these manipulation have been performed by myself on a polluted co-save of my own.

I mostly deleted entries, because I forgot to destroy strings through a mod devel. But I also edited two ref ids in an array I corrupted unintentionaly.

It also helps me to diagnose and monitor the current entries of some mods liking bulky data (like SetBody) or horrid StringMaps (like Tamago).

 

Perhaps this post will have no use. But if a gamer wants to repair something in a co-save, it may help.

0 Comments


Recommended Comments

There are no comments to display.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use