Skyranger-
Been meaning to thank you for the fallout3 release as well - so thanks for both.
In the F3 release you have fast exit as an option to turn on or off. IS that the case with the new OSR and if so can I now ditch the original Fast Exit 2?
Next ... do you have heap recommendations for Vista? The new format is still taking some getting used to for these untrained eyes.
Like what are the safer versus riskier settings - form what you figure.
thanks
Yes, the FastExit option works on Oblivion as well. It's ini the ini file as Master\bFastExit - that is, it's the setting labelled "bFastExit" in the section labeled "Master". It defaults to disabled.
The heap algorithms still use the same numbering scheme (1=FastMM4, 2=Microsoft, 3=SimpleHeap1, 5=ThreadHeap2), though that settings is now Heap\iHeapAlgorithm ("IHeapAlgorithm in the section "Heap"). I believe it is set to default to 1.
The main change is that there is now an additon on/off switch Master\bReplaceHeap. That setting must be set to 1 or all heap replacement code will be disabled.
Other changes to heap stuff include:
Heap algorithms 3 & 5 now have a settings Heap\iHeapSize which determines the number of megabytes they reserve (defaulting to 450 on Oblivion, 250 on Fallout). Vanilla Oblivion reserves about 200 MB IIRC. Algorithms 1 & 2 ignore this setting and dynamically change how much address space they use.
I think heap algorithm 5 also had a few more optimizations made to it.
They now a bit of text output that can be switched on/off by Heap\bEnableMessages, but most text output for them remains a compile time option.
The two main new features in this version are the "hashtables" stuff and the "overrides" stuff.
Hashtables:
You can turn on hashtable resizing by setting both Master\bHookHashtables and Hashtables\bAllowDynamicResizing to 1. This should improve performance, though I don't know if it will be enough to notice or not. The code involved is a bit of a hack though, so its defaulting to off at the moment.
Overrides:
In previous versions of OSR, certain critical sections were singled out for special treatment. In those versions though, WHICH critical sections were singled out for special treatment was hardwired. Specifically, the critical section I've called Renderer+0x180 defaulted to being suppressed, and a critical section used internally to Oblivions memory heap was tweaked to "stutter" (or did I call it "stagger"? whatever), and a few other critical sections (most importantly Renderer+0x80) could be suppressed but default to acting like all the other critical sections. Likewise, there were a few specific critical sections that you could manually set the spincounts for, all the rest used whatever you set the default to in the ini.
In OSR 4, you can specify any critical section you want in the ini file, and specify a mode and/or spin for just that particular critical section. If there is no override for a critical section then it will use the spin specified in CriticalSections\iDefaultSpin and the mode specified in CriticalSections\iDefaultMode. One of the modes will suppress the critical section. One will make it "stutter". The default configuration includes overrides to make it act like the previous versions (ie suppress renderer+0x180, make the heap critical section stutter).
Critical Section iDefaultMode = 5 completely hangs my computer when when I try to load a savegame. I switched to iDefaultMode = 6 and it works fine. Everything else works great, including dynamic hash table resizing.
I'm using your heap 5 and have no stutter at all. It's working great!
Critical Section iDefaultMode = 5 means for it to suppress literally every single critical section in Oblivion except the two who have mode overrides in the OverrideList section (ie hundreds, maybe thousands of critical sections). It's supposed to crash on that setting, though it's not supposed to take windows down with it.
Is 6 better / worse / the-same-as the default value of 2?