For fellow MO2 users. Just dropping version.dll into the root folder is not enough, dll is not getting loaded by .exe, you can check that with some specialized tools like ProcessHacker2 (and simply noticing that MoreHeap.ini is not being generated).
To make MoreHeap work with MO2 just do the following: 1) drop version.dll into the root folder where Oblivion.exe 2) rename version.dll into whatever you want, let's rename it to MoreHeap.dll (this is important, if you do not rename it a system version.dll will be loaded instead) 3) Open MO2 and and click on "Oblivion" in top right corner and select <Edit...> 4) Now in the left pane select Oblivion and then in the right pane you will see "Force load libraries (*)". First of all this should be checked. Then click on "Configure Libraries" 5) Click "Add Row" on the bottom of the window. In the new row for the first field click on triple dot button and select Oblivion.exe. Click then on second triple dot button and select "MoreHeap.dll" (or whatever you renamed it to) 6) Click "Apply", click "Ok", click "Ok".
Now you can start Oblivion from MO2 and you will see MoreHeap.ini being created in the root folder. With tool like ProcessHacker2 you can see that Oblivion has loaded MoreHeap.dll, meaning it now works as it should.
i would just like to say that using this mod, Oblivion Display Tweaks, Oblivion Stutter Remover Optimized, Better Saves, DXVK and the 4GB RAM patch all together has worked wonders for me. roaming the world and going through doors has not caused any crashes whatsoever for 13 hours so far, and i have some big mods installed like MOO, OOO, Better Cities and Unique Landscapes to name a few.
please try using all these mods! its an amazing feeling after having accepted CTDs as a fact of life for so long, i hope they work just as well for you!
RANDOM BLACK TEXTURES AND CRASHES? HERE'S HOW TO SOLVE IT ONCE AND FOR ALL!
Started having after some cell changes random black texture issues, after enhancing my mods more and more. It was easy to reproduce, by going in/out of the different shops in the imperial city. After passing some doors, black textures would randomly start to appear. After a bit more, a crash would occur.
After some experimenting and figuring out/understanding deeper, what some INI settings and tools/mods truely do, it turns out, that some suggestions are contra-productive.
The key to a very stable Oblivion setup, is to understand, how Oblivion is using the memory or rather, how or when it won't be able to use more than it can access. Reserving more memory for things, which may not need it, or for the purpose of supposedly hoping to improve performance, where it may not be needed these days, make less memory available for things where it's essential to be available or required.
Here's how to get this issue all stable. Really important: Always change ONLY ONE THING at a time, or you may never figure out what the most stable setup is.
More Heap is not always more stable (no pun intended lol) - less heap is better. Experiment with values between 512 and 1024, like 640, 768 and 832 (or add/subtract values like 64 and 32). 1024 is almost always too much! The reason for this is simple. With Oblivions memory limitations, less memory may be available for other things. My setup seems to do fine with 640, much less than I had before.
Another thing I realized is, it matters, how your cell buffers are used. The issue with the black textures, comes from the cell buffers. If Oblivion runs out of memory for the cell buffers or is out of cell buffers (having too much heap available, may not trigger old cells cleaned up when needed maybe?), textures simply won't be able to be loaded, similar as if they were missing on disc.
Some may have increased in the Oblivion.ini file, the values for the variables uExterior Cell Buffer and uInterior Cell Buffer. Well, what many seem to miss is the fact, that this suggestion initially came from people running Oblivion un-modded, where it may very well improve things. Simply, because the vanilla data require less memory, and so may cache more cells in RAM. However, a modded Oblivion, will require more resources for each cell, so raising the cell buffers, may hit several limits or make memory mechanisms not work as intended. Here again, lower values for a modded or heavily modded Oblivion are better. I left exteriors to the default 36, and increased Interiors just up to 6. This seemed to be the perfect value, where 3 would work worse in other ways, and higher values would start causing these issues.
One other setting seemed also to help here a lot. After I tested with the console, purging cell buffers every time on cell changes, seemed also to not trigger the issue. Though, that is a BAD idea, as it eliminates anything cached in memory. However, setting bPreemptivelyUnloadCells to 1 in combination with a good, not too high number of cell buffers, will trigger it not too often, yet often enough when needed. Even though in the past, this setting was often not suggested to change, ignore that suggestion, because it won't matter performance-wise with today's powerful hardware, but it will matter for stability! I do NOT suggest though mods which purge after every loading, because these eliminate unintelligently all buffers instantly and causes constant reloading between interiors/exteriors changes. Not something you want.
What else should you pay attention to?
Adjust also the variable iPreloadSizeLimit. I have set it to just 52428800 (and even though I've 32GB RAM) and works great. I tried with higher values, once again here too, set it too high, and issues will start appearing. WIth today's discs being so much faster than before 10-14 years, smaller preloading isn't an issue. The issue is rather with Oblivion, if it requests more memory to use, which may be not available anymore, because it can't use memory beyond the 4GB memory space (oh yes, you patched your version for 4GB, correct?).
You should get rid of OSR. Seriously, get rid of it. I kept it alongside MoreHeap, because of people saying, that it still helps. That's not true. Actually, after some research OSR causes now with Windows 10 and 11 more crashes than it fixes. I myself eliminated some crashes, after getting rid of it, when roaming the lands. Use OblivionDisplayTweaks instead with all it's features - no matter if some claim, that OSR or another mod may do one or two things better. Mixing them up, and deactivating some settings in the one or other is generally a bad idea. I tried it, and tested it thoroughly.
And generally, get the "EngineBugFixes" and "Blue's Engine Fixes" too.
Again, with other places, or dungeons or locations, you may need different values - I haven't tested it throughout the whole game yet, after this point forward. But it may be likely, that the same values, may not work the same well everywhere. Keep this in mind.
Conclusion or tl;dr
Don't overdo it with trying to ask Oblivion to use a lot of this or that. Don't overreserve memory for heap and more cell buffers or preload caches. These suggestions came initially from vanilla players, a modded version behaves very different! It's gonna cause Oblivion have less memory available for other things to load, like for bigger and more textures and other data. This leads then to missing black textures, which couldn't be loaded, or even crashes. A stable setup is created mostly around the following variables:
iPreloadSizeLimit, uExterior Cell Buffer and uInterior Cell Buffer in Oblivion.ini DefaultHeapSize in MoreHeap.ini
General rule: Stay close to the defaults, increase values only one at a time and try, with only one or two of each value increased. Don't go multiply them several times, but only raise by very little at a time.
Great comment :) Installing two of those mods you mentioned that I hadn't heard of before.
I found that if I set the heap value to 1024 in my ini that the game would crash immediately, but going down to 512 fixed it. I didn't try any values in between. I figured it would be best to stick to powers of 2.
Thank You for this. This simple plugin fixed all of my missing black texture glitches, freezing and crashing every 10 minutes. You got my Kudos. Bless ya.
Uninstalled this and Oblivion Display Tweaks, now my game crashes at the main menu. What do I need to remove? EDIT: Verified, still didn't launch. Turns out my plugin order got messed up during the process, somehow. Fortunately, I had a backup.
I see the stickied comment about "Force load libraries" for MO2. What exactly does this do under the hood, so I can replicate this without using MO2? I can't find anything about this functionality anywhere.
If you launch the game directly instead of through MO2 you shouldn't need that, just place the file in the same folder where both oblivion and OBSE exe's are and you're done.
175 comments
To make MoreHeap work with MO2 just do the following:
1) drop version.dll into the root folder where Oblivion.exe
2) rename version.dll into whatever you want, let's rename it to MoreHeap.dll (this is important, if you do not rename it a system version.dll will be loaded instead)
3) Open MO2 and and click on "Oblivion" in top right corner and select <Edit...>
4) Now in the left pane select Oblivion and then in the right pane you will see "Force load libraries (*)". First of all this should be checked. Then click on "Configure Libraries"
5) Click "Add Row" on the bottom of the window. In the new row for the first field click on triple dot button and select Oblivion.exe. Click then on second triple dot button and select "MoreHeap.dll" (or whatever you renamed it to)
6) Click "Apply", click "Ok", click "Ok".
Now you can start Oblivion from MO2 and you will see MoreHeap.ini being created in the root folder. With tool like ProcessHacker2 you can see that Oblivion has loaded MoreHeap.dll, meaning it now works as it should.
MoreHeap was installed as a last resort because i was getting crashes when going to sleep in a game that had been rock stable for weeks.
I got my first random crashes instead, one of them related to corrupted heap according to my crash logger. So it is not compatible with my setup.
Is it safe to remove though?
please try using all these mods! its an amazing feeling after having accepted CTDs as a fact of life for so long, i hope they work just as well for you!
Started having after some cell changes random black texture issues, after enhancing my mods more and more. It was easy to reproduce, by going
in/out of the different shops in the imperial city. After passing some doors, black textures would randomly start to appear. After a bit more, a crash would occur.
After some experimenting and figuring out/understanding deeper, what some INI settings and tools/mods truely do, it turns out, that some suggestions are contra-productive.
The key to a very stable Oblivion setup, is to understand, how Oblivion is using the memory or rather, how or when it won't be able to use more
than it can access. Reserving more memory for things, which may not need it, or for the purpose of supposedly hoping to improve performance,
where it may not be needed these days, make less memory available for things where it's essential to be available or required.
Here's how to get this issue all stable. Really important: Always change ONLY ONE THING at a time, or you may never figure out what the most stable setup is.
More Heap is not always more stable (no pun intended lol) - less heap is better. Experiment with values between 512 and 1024, like 640, 768 and
832 (or add/subtract values like 64 and 32). 1024 is almost always too much! The reason for this is simple. With Oblivions memory limitations, less memory may be available for other things. My setup seems to do fine with 640, much less than I had before.
Another thing I realized is, it matters, how your cell buffers are used. The issue with the black textures, comes from the cell buffers. If Oblivion runs out of memory for the cell buffers or is out of cell buffers (having too much heap available, may not trigger old cells cleaned up when needed maybe?), textures simply won't be able to be loaded, similar as if they were missing on disc.
Some may have increased in the Oblivion.ini file, the values for the variables uExterior Cell Buffer and uInterior Cell Buffer. Well, what many seem to miss is the fact, that this suggestion initially came from people running Oblivion un-modded, where it may very well improve things. Simply, because the vanilla data require less memory, and so may cache more cells in RAM. However, a modded Oblivion, will require more resources for each cell, so raising the cell buffers, may hit several limits or make memory mechanisms not work as intended. Here again, lower values for a modded or heavily modded Oblivion are better. I left exteriors to the default 36, and increased Interiors just up to 6. This seemed to be the perfect value, where 3 would work worse in other ways, and higher values would start causing these issues.
One other setting seemed also to help here a lot. After I tested with the console, purging cell buffers every time on cell changes, seemed also to not trigger the issue. Though, that is a BAD idea, as it eliminates anything cached in memory. However, setting bPreemptivelyUnloadCells to 1 in combination with a good, not too high number of cell buffers, will trigger it not too often, yet often enough when needed. Even though in the past, this setting was often not suggested to change, ignore that suggestion, because it won't matter performance-wise with today's powerful hardware, but it will matter for stability! I do NOT suggest though mods which purge after every loading, because these eliminate unintelligently all buffers instantly and causes constant reloading between interiors/exteriors changes. Not something you want.
What else should you pay attention to?
Adjust also the variable iPreloadSizeLimit. I have set it to just 52428800 (and even though I've 32GB RAM) and works great. I tried with higher values, once again here too, set it too high, and issues will start appearing. WIth today's discs being so much faster than before 10-14 years, smaller preloading isn't an issue. The issue is rather with Oblivion, if it requests more memory to use, which may be not available anymore, because it can't use memory beyond the 4GB memory space (oh yes, you patched your version for 4GB, correct?).
You should get rid of OSR. Seriously, get rid of it. I kept it alongside MoreHeap, because of people saying, that it still helps. That's not true. Actually, after some research OSR causes now with Windows 10 and 11 more crashes than it fixes. I myself eliminated some crashes, after getting rid of it, when roaming the lands. Use OblivionDisplayTweaks instead with all it's features - no matter if some claim, that OSR or another mod may do one or two things better. Mixing them up, and deactivating some settings in the one or other is generally a bad idea. I tried it, and tested it thoroughly.
And generally, get the "EngineBugFixes" and "Blue's Engine Fixes" too.
Again, with other places, or dungeons or locations, you may need different values - I haven't tested it throughout the whole game yet, after this point forward. But it may be likely, that the same values, may not work the same well everywhere. Keep this in mind.
Conclusion or tl;dr
Don't overdo it with trying to ask Oblivion to use a lot of this or that. Don't overreserve memory for heap and more cell buffers or preload caches. These suggestions came initially from vanilla players, a modded version behaves very different! It's gonna cause Oblivion have less memory available for other things to load, like for bigger and more textures and other data. This leads then to missing black textures, which couldn't be loaded, or even crashes. A stable setup is created mostly around the following variables:
iPreloadSizeLimit, uExterior Cell Buffer and uInterior Cell Buffer in Oblivion.ini
DefaultHeapSize in MoreHeap.ini
General rule: Stay close to the defaults, increase values only one at a time and try, with only one or two of each value increased. Don't go multiply
them several times, but only raise by very little at a time.
I found that if I set the heap value to 1024 in my ini that the game would crash immediately, but going down to 512 fixed it. I didn't try any values in between. I figured it would be best to stick to powers of 2.
You need to add version.dll to your library override list, or else wine/crossover will load its builtin version and this mod will not be loaded.
EDIT: Verified, still didn't launch. Turns out my plugin order got messed up during the process, somehow. Fortunately, I had a backup.
When I set the allocs to 768, the game crashes at load.
Any ideas what might be going on?