SOLVE YOUR ARCHIVEINVALIDATION PROBLEMS FOR GOOD!
Updated 7-1-2006 11:15 AM CDT
Timeslip's Oblivion Mod Manager (0.7.10 or later) and BSA Patcher provide an archive invalidation method that will rename textures in your BSA files so you never have to worry about ArchiveInvalidation problems again. This method is vastly superior to standard invalidation methods.
This BSA alteration method of invalidation has been tested by the ArchiveInvalidation Explained Research Team and adoption of this method in the community is rapidly growing. It has proven extremely stable. You should probably make a backup of your BSA files if you have the space (or a DVD-burner) just in case, but we haven't seen any corruption issues.
OBMM and BSA Patcher will keep track of which files have been renamed in your BSAs and provide a "Remove BSA edits" function to rollback any changes they have made to your BSA.
Assuming you have OBMM 0.7.10 or later already, and have already installed/activated some mods, the detailed steps for doing this in OBMM are as follows:
1. Start OBMM;
2. Click Utilities;
3. Select Archive invalidation;
4. Click Directly Edit BSAs;
5. Click the checkbox for autoupdate on exit and/or click Update Now;
6. Click the red X in the upper-left corner of the Archive invalidation popup to close it;
7. Click Launch Oblivion
If you didn't check the box for autoupdate on exit, then repeat this process after installing/activating each new mod.
The latest version of OBMM (0.7.11 or later) provides a lot of new options for the Directly Edit BSAs function. The default options may be okay, but you need to at least make sure to check the box for Generate archiveinvalidation entries on hash collision, since that setting is critical.
Here are the ideal OBMM BSA Settings (for 0.7.11 or later).
Using those settings will take care of everything for you.
As already noted, it's completely up to you whether you want to use autoupdate on exit or Update Now, or both. I find that when running with a lot of texture replacements installed, the autoupdate on exit option tends to cause an annoying delay when quitting OBMM or using the Launch Oblivion button. Since I've gotten into the habit of using the Launch Oblivion button instead of the normal launcher, and I don't install new mods nearly as often as I start Oblivion, I decided to avoid using autoupdate on exit and instead always use Update Now after I install a new mod.
If you later uninstall/deactivate some mods, you'll need to use the Remove BSA edits option. Follow these steps:
1. Start OBMM;
2. Click Utilities;
3. Select Archive invalidation;
4. Click Remove BSA edits;
5. Close OBMM;
6. Delete texture files that you want removed;
7. Start OBMM;
8. Click Utilities;
9. Select Archive invalidation;
10. Click Directly Edit BSAs;
11. You know the rest by now
If you're using .omods, you should skip Steps 5-7 and just Deactivate the .omod instead.
New, Improved Version of BSA Patcher
BSA Patcher is now dramatically easier to use.
Download BSA Patcher
Unlike OBMM, BSA Patcher is a command-line application, although you can launch it by double-clicking the executable. BSA Patcher doesn't include as many configuration options as OBMM, but it accomplishes the same tasks and it only requires .NET 1.1, which means it will work for anyone who is unwilling or unable to run .NET 2.0. It will also work with mono, an open-source version of .NET 1.1.
The latest version of BSA Patcher (as of this writing) uses the BSA alteration code from OBMM 0.7.10 and, like OBMM, it will automatically generate an ArchiveInvalidation.txt file for you containing only the textures that could not be safely renamed in your BSA files. It includes support for several command-line options, but you can safely ignore them.
To use it, place BSAPatch.exe in your \Oblivion\Data\ folder and double-click it once to rename files in your BSA. Run it again to restore them to their original names.
NOTE: If you use either OBMM or BSA Patcher, you should not manually alter your ArchiveInvalidation.txt file. Let one of these programs do it for you. No other solutions are recommended.
Older Versions of BSA Patcher
If you have an older version of BSA Patcher, make sure you have at least the version based on code from OBMM 0.7.9. You should probably still make a backup of your BSA files before running it, just in case. Run it once to rename files in your BSA and run it again to restore them to their original names.
If you're not sure what all this is about, don't have any mods installed yet, or just need more information on how to use mods in Oblivion, please read the Oblivion Mods FAQ for more general instructions. There's also another version of the FAQ on the CS Wiki, which is a bit easier to read because it has a working table of contents.
For more information on ArchiveInvalidation, read my blogged version of ArchiveInvalidation Explained (or check to see if the original ArchiveInvalidation Explained thread still exists). The results of our testing are summarized neatly in the first post.
If you have questions about all this, post them here and members of our team will attempt to help you. You may also want to check the OBMM thread for updates.
Oblivion has major issues loading some replacement textures, even with an ArchiveInvalidation file. What OBMM and BSAPatch do is to sidestep this problem by making Oblivion think it never had a copy of the file you are replacing.
This feature edits the BSA archives so that oblivion cannot find the original version of files you have replaced, thus forcing it to search elsewhere for them.
Here's the summary from Timeslip's site: "OBMM will scan each of the BSA's, and check for the existence in the data directory of each file within the BSA. If a match is found, the hash of that file is incremented. Oblivion never reads file names, and relies solely on the hashes. As a result, it never notices the filename/hash mismatch, and never sees anything wrong. As far as the player is concerned, mods should suddenly start working correctly, entirely without the need for an archiveinvalidation file."
The 0.7.10 and later version of OBMM correct an issue from previous versions where several files with very similar names in the same directory (like castleintcolumndetail02.dds, castleintcolumndetail03.dds, and castleintcolumndetail04.dds) might get their textures mixed up if a replacer only replaces one of these files. OBMM now generates an ArchiveInvalidation file for only the textures that could not be renamed.
This feature is now also included in the standalone BSA Patcher, so you don't have to create your own ArchiveInvalidation.txt file for those problem textures by hand.
Go get the update from the links above! NOTE: If you previously used 0.7.8 to patch the BSAs, you must restore them with 0.7.8 before installing 0.7.10 (or later). If you forget to do this and then replace your messed up BSAs with backups, you have to delete the BSAEdits file in your Oblivion\obmm folder before it will work correctly again.
OBMM USAGE EXAMPLE
The following example assumes you are using OBMM 0.7.10 along with Parallax Cities 1.2 (all three parts) and LBM Weathered Direction Signs 1.3.
After clicking Directly Edit BSAs and then Update Now, OBMM reports changing 821 entries in 3 BSA files and creates an ArchiveInvalidation.txt file containing only three texture entries:
These three entries are the only textures that could not be safely renamed in the BSAs, so they are invalidated here instead.
I've moved the usage example for old versions of BSA Patcher into a later post because it is rather long and involved and hopefully nobody is still using that old version. If you need it for some reason, look here.
I have released a modder's resource containing sample ArchiveInvalidation instructions that mod creators can cut and paste into their readme files. You can find it here.
This information would not exist without the help of a lot of people who contributed feedback, usage guidelines, suggestions, test results, and moral support in this thread, including:
* Ismelda Lasombra
* and many more. Thank you all!