Tes4Mod:BSAs and Archive Invalidation

A Bethesda Softworks Archive (BSA) is a type of compressed file format in which Oblivion packs away many of its files. They reduce clutter and allow the game to find files more easily. For that reason, a number of people recommend BSA repacking. This introduces a new dynamic when installing loose files, especially replacers. The game looks through the BSAs first and the looks for newer loose data files. If you install a mod containing files that are dated earlier than the BSA containing files that it overlaps with, the game will still load the files in the BSAs unless you use archive invalidation. The other way to circumvent this problem is to use a file redater or OBMM's BSA reset timestamp function (See the OBMM page under "Programs & Utilities.)

Archive Invalidation

This is one of those straight-forward topics, where once you have finished reading this, you will probably not need to reference this page again...Unless, you are trying to explain it to someone else, perhaps? Anyway, the reading material:

# ArchiveInvalidation Explained by Dev_Akm
# ArchiveInvalidation Destroyed by Dev_Akm

BSA Redirection

OBMM and BAIN both have a BSA redirection option (but do not implement it in both at once.) 
:''Note: OBMM's is found in Utilities>Archive invalidation, and BAIN's can be selected by right-clicking on the   header in the   tab.''
ArchiveInvalidation Invalidated! is another tool that implements BSA Redirection, and many make the mistake of using it, duplicating functionality they already have with OBMM.
Use one form of archive invalidation at time. For example, if you use OBMM and BAIN, only have BSA Redirection set in one.
BSA Redirection is BSA Redirection, regardless of the tool that implements it; however, OBMM and BAIN have an advantage in that they will update the Oblivion.ini if they find that the redirection BSA is missing (i.e., after regenerating it) which is something that ArchiveInvalidation Invalidated! does not do. You would have to rerun the executable.
OBMM's redirectoin BSA is not in the Data folder, but, rather, it is found in the obmm folder.
The redirection BSA of BAIN and ArchiveInvalidation Invalidated! have the same name.
Use OBMM's BSA packaging tool instead of BSA Commander, as the latter seems to have issues properly constructing file paths.

Loading BSAs

There are two methods by which BSAs are loaded: INI registration and plugin association. Vanilla Oblivion's (default) BSAs are loaded via INI registration. Those are always found in the sArchiveList upon generating a new Oblivion.ini. Unless you are a power users that uses striping for greater performance, you should stick to the second method, plugin association.

Some Facts
The sArchiveList is limited to 256 characters.
The CS and Oblivion use separate INI files, separate archive lists.
BSAs registered in the INIs do not have to be in the data folder, or even on the same HDD.
The fastest way for the game to find files is in uncompressed BSAs, BSAs packed with "no compression."
BSAs count toward the soft cap of 300-400 total plugins and BSAs (before your game goes haywire.)
The faster the game can find load files, the smoother the game will run.
Reinstalling the game will not overwrite an existing Oblivion.ini, and the same is true for the CS INI file.
A redirection BSA must contain at least one file.
BSAs cannot be more than 2GB (2048MB) in size.

INI Registration
This method gives the users more flexibility because BSAs do not have to be in the Data folder, allowing for striping to be used to speed up the transfer of data collectively from the BSAs.
To deal with the character limit, rename all BSAs so that they use fewer characters.
:Notes: Changing the names of the original BSAs is fine so long as the sArchiveList reflects the name changes.
Remember to update the CS INI file as well.
If using Wrye Bash, create a sArchiveList INI tweak to preserve your modified BSA list so that it can be easily applied and updated.
OBMM users can create a dummy OMOD that simply has a script that makes INI changes, which would contain your sArchiveList.

Comments on the INI Registration by Showler
21 April 2010 - 04:50 PM
''The primary benefit (perhaps the only benefit) is that it allows you to have BSA files in locations outside the DATA folder. Except for really unusual circumstances where someone may have limited room on their main hard drive (which is absurdly rare these days), the only purpose to this is load balancing. Load balancing is not striping from RAID, but it is an attempt to get some of it's benefits. It's a known fact that both Windows, and your computer hardware are capable of transferring data from the hard drive faster than the hard drive is capable of providing that data. Load balancing is a trick where you put half your bsas on one drive, and half on a second drive (or three drives, or four drives). This ends up with the game loading meshes from drive A, and textures from drive B (for example), and can help reduce stuttering for some people. A more advanced method actually involves building entirely new BSAs designed to spread the load by dividing the meshes/textures/sounds/etc. between multiple BSAs in a manner that is most efficient.

21 April 2010 - 05:17 PM
I'd add a note that load balancing is a power user option, and if you don't understand it, you shouldn't attempt it.''

Plugin Association Loading

Rename the BSA to "  .bsa"
The plugin must be an ESP file.
The "PluginName" does not include the ".ESP" extension.
"Anything" must start with a space, hyphen or underscore, or   can be nothing at all.  Example: "DLCShiveringIsles.esp" can load "DLCShiveringIsles -  .bsa"  Example: "DLCShiveringIsles.esp" cannot load "DLCShiveringIeslesSomething.bsa"
There are only two ways to load BSAs using an ESP with spaces in the name: 1) If the plugin has a space at the end, it can load multiple BSAs starting with the entire name of the plugin, including the space. 2) If the plugin only has spaces in the middle of the name, it can load a single BSA that matches its name.
Example: "Better Cities.esp" can load "Better Cities.bsa".
Example: "Better Cities .esp" can load "Better Cities -  .bsa"
Example: "Better Cities.esp" cannot load "Better Cities  .bsa"
Use a plugin that is unlikely to be removed from your load order, so that you will not have to remember to rename your BSAs.
If you have "DLCShiveringIsles.esp" in your load order, theoretically, every BSA you need to load in your data folder can be named "DLCShiveringIsles  .bsa" or "DLCShiveringIsles -  .bsa" or something equivalent. However, it is simplest to only reserve the renaming BSAs for mod-added BSAs. The same can be done with any plugin in your load order, but using one that is unlikely to be removed minimizes the upkeep.>> notes; 1) If you rename the original BSAs, you have to edit multiple lines in the Oblivion.ini. 2) Unless, you know what you are doing, you should probably refrain from renaming the original BSAs.

Preferred naming schemes

Multiple BSAs or BSAs for different mods: "SomePlugin - SomeBSA.bsa"
plugin: "SomePlugin.esp"
Single BSA for same mod: "SomeMod.bsa"
plugin: "SomeMod.esp"
SI users: "DLCShiveringIsles -  .bsa"

"Real" Examples:
FCOM recommended renaming options
MMM BSA: "FCOM_Convergence_Mart'sMonsterMod.bsa"
Fran BSA: "FCOM_Convergence_FraNewItems.bsa"
:Notes: The FCOM team recommends renaming this BSA "Oblivion - FraNewItems.bsa" with a dummy plugin. It takes up an extra plugin slot and requires that you create a dummy plugin, but both naming conventions work. The choice is yours.
MMM recommended renaming options (use name of main MMM plugin) Rename "MMM.bsa" to...
MMM: "Mart's Monster Mod.bsa"
MMM+OOO: "Mart's Monster Mod for OOO.bsa"
FCOM: "FCOM_Convergence_Mart'sMonsterMod.bsa"
Loading BSAs with dummy plugin (non-SI) 
# Copy the blank esp Oblivion\Mopy\Extras\blank.esp 
# Put the plugin in your Data folder 
# Rename the plugin "Oblivion.esp" 
# Rename each BSA to force load "Oblivion -  .bsa"
Renaming multiple BSAs for forced loading (SI) Rename each BSA to force load "DLCShiveringIsles -  .bsa"
:Notes: SI users can always use the the naming convention above to load BSAs in place of any other naming scheme.

External Links
ArchiveInvalidation Destroyed --devnull.sweetdanger.net
ArchiveInvalidation Explained --devnull.sweetdanger.net