From OBGE - Oblivion Graphics Extender

Jump to: navigation, search

BSAopt is a tool which manages and recompressed BSA-files. It has been forked off NIFopt and both programm share the same underlying technology regarding BSAs. Both programs treat BSAs exactly like directories, files inside can be adressed easily.



It can be downloaded here: BSAopt v1.6.3 (06.06.2012) and here: BSAopt v1.6.3 (06.06.2012)

Source-code is available under the MPL on github.


Just download the archive, extract it where it suits you, and make sure you have the necessary runtimes for your Operating System installed. The archive contains two links to the locations where you can download the version which is right for you.

It's recommendable to install BSAopt into a sub-directory of Oblivion, something like "G:\Oblivion\BSAopt\", so you can easily just delete that folder to uninstall it.


Optimize a BSA for size:

browse for the input file
This will load the BSA into the tree- and file-controls.
browse for the output file (type the name)
This will define where to write to.
click "Convert"
This means BSAopt starts copying everything from the input BSA into the new BSA you defined.

That's it. After a while the progress-dialog will close and the new BSA is ready to use.


All elements have tool-tips which hint at the meaning, or occasionally tell you the optimal or default value. Most fields auto-remember their values and are persistant between program-runs.

The Browser

BSAopt archive browser

Description of the UI-elements:

This is the directory/BSA which BSAopt will scan recursively and display in the tree-window below. BSAs in directories will be scanned recursively. Click "Browse" to get the popup. To operate on folders, just navigate to your target-directory and press the button "Use folder".
Hint: The field automatically remembers the last location you navigated and restores the location the next time you start BSAopt.
Displays all sub-directories/BSAs of the selected source & destinations overlayed. You can open and close the free-branches. Once you active a branch by clicking on the name you get a listing of the files it contains. The tree reflects the relation between source and destination via coloring. The color-scheme is:
  • "green" - new files in the directory to add to the destination
  • "grey" - exist only in the destination
  • "black" - files in a directory will be skipped or overwritten, or a directory contains both new and destination-only files
When you double-click on a branch it will be loaded into the "source".
Allows you to filter the list of files on a directory by a wildcard. There are a few predefined filters in the drop-down. When "Apply" is clicked the filter is validated and applied to the file-list if correct.
You have a few tools available here which relate to the list of files below:
  • The first button selects all visible files
  • The second button deselects all visible files
  • With the setting "Show recursive" you can make BSAopt display not only the files which directly reside in a directory, but also all files in sub-directories.
Here you manage the selection of files. The checkbox indicates if a file will be copied to the destination. Files are automatically filtered by the active filter. The color-coding is identical to the directory-tree, plus:
  • "strike-through" - files will be skipped because of some setting that you've set
  • "italic" - files are compressed in the source
When you double-click on a file it will be loaded into the preview.
Here you define the location of the destination directory/BSA.
Hint: The field automatically remembers the last selected location and restores the location the next time you start BSAopt.

Description of the Menu:

This will define the BSA-version for a specific game, in case a BSA will be created in the destination. "Automatic" will always duplicate the incoming BSA-version, the others will force a specific game-version. You can transcode from Oblivion-BSAs to Skyrm-BSAs this way.
Defines the compression-strength. "0" turns compression off. "9" is the normal maximum of zlib. "10 (quick)" will do a quick search for a better compression, "10 (maximum)" will do an exhausive search for the best compression and usually takes longer. By default compression will be turned off when the compression is not very high (>95%), you can force the compression regardless the efficiency via "Forced".
With these settings you allow BSAopt to skip files, "Skip existing files" will never overwrite a file in the destination (BSAs are considered directories), "Skip older files" compares the timestamps of the source and the destination and overwrite only if the source is newer (BSAs define the timestamps of their contents), "Skip hidden files" will make BSAopt to skip all hidden files. Changing the settings will automatically reflect in the file-list.
You can also skip the sanity-check for BSAs if you want to recover a broken BSA with the "Skip hash-check" setting.
And if some files can't be decompressed and you don't want a dialog reporting it, you can select "Skip broken files".
If you want a transscript of all details and operations, then turn on "Write logfile". You'll find the logfile at the location of your destination + ".log".

When you made all your adjustments (which minimally is just selecting the source/destination-location) you press "Convert" on the lower right corner and BSAopt will start to copy files "over".

If everything goes fine, you'll either have a directory full of extracted files, or a BSA with the contents you selected previously.

The progress-dialog

Once you start the copying the progress-dialog pops up and informs you about what it is doing. You can pause and cancel the copying, sometime it takes a while till BSAopt finishes a sub-job to react to your button-press.

Below the progress-bars there is a time-estimation where you can see if you need to stop it and continue at a later time.


Is BSAopt capable of making new Skyrim .bsa's from a folder with loose files?
Sure, for the input you browse for the "folder" ("Use this folder" in the dialog), for the output you browse for the destination and type the "<something.bsa>" in. The button down-right reflects what you are doing (BSA->BSA == convert, BSA->folder == unpack, folder->BSA == pack, folder->folder == copy).
Take care to set the game-mode to Skyrim.



in bytes out bytes duplicates reduction
Oblivion - Meshes.bsa 691562829 674884632 98 97.6%
Oblivion - Misc.bsa 6183584 774905 2 12.5%
Oblivion - Sounds.bsa 330432865 264409938 39 80.0%
Oblivion - Textures - Compressed.bsa 1217809056 1137066576 957 93.4%
Oblivion - Voices1.bsa 668060973 633262181 30 94.8%
Oblivion - Voices2.bsa 1066830808 1008964233 128 94.6%

Oblivion DLCs

in bytes out bytes duplicates reduction
DLCBattlehornCastle.bsa 9162178 7182676 112 78.4%
DLCFrostcrag.bsa 17212790 15626142 0 90.8%
DLCHorseArmor.bsa 3943712 3813871 0 96.7%
DLCOrrery.bsa 16352207 15724071 0 96.2%
DLCThievesDen.bsa 2125267 1666037 14 78.4%
DLCVileLair.bsa 4081041 3637567 2 89.1%
DLCShiveringIsles - Meshes.bsa 122339871 117011207 17 95.6%
DLCShiveringIsles - Sounds.bsa 91690787 72835304 4 79.4%
DLCShiveringIsles - Textures.bsa 312806750 302056536 21 96.6%
DLCShiveringIsles - Voices.bsa 442214079 420490299 7 95.1%


in bytes out bytes duplicates reduction
Skyrim - Animations.bsa 42365780 40168160 1133 94.8%
Skyrim - Interface.bsa 34608945 14150057 9 40.9%
Skyrim - Meshes.bsa 1520899887 1482423428 34 97.5%
Skyrim - Misc.bsa 177894975 132840928 453 74.7%
Skyrim - Shaders.bsa 25686897 1621781 0 6.3%
Skyrim - Sounds.bsa 953785521 741773824 42 77.8%
Skyrim - Textures.bsa 1388866502 1344588359 6178 96.8%
Skyrim - Voices.bsa 1458554685 1293664414 761 88.7%
Skyrim - VoicesExtra.bsa 13016190 11614402 7 89.2%