As a follow up to my previous post on enabling Write Combining in DOS to improve frame rates, here is how it can be done in Windows (9x).
To do this I’ll be using the program Central Tweaking Unit, which looks like this.
Features from top to bottom are:
- Write Allocation Settings.
- Enabled / Disabled checks for CPU caches and Data Prefetch.
- Write Combining settings ( this is what I’ll be explaining in this post).
- CPU multiplier controls.
- Write Ordering (Write Combining Methods).
With CTU we can simply plug in the information we used in DOS into the MTRR0 row. In my case the address for the memory on my Voodoo 3 (C8000000), the amount of memory (16 MB) and the mode (Write Combined). CTU will use this information to calculate the “to ADDRESS”. Enable MTRR0 and press apply. The improvements are instant and no system reboot is required. The 2nd MTRR1 row can be used if you have two graphics cards to enable Write Combining on that card also, an example would be if you had a GeForce or Radeon AGP card for D3D and a 3dfx card for Glide in a PCI slot.
With Write Combining enabled I see vastly improved frame rates in every 3D game I’ve tried. Turning Serious Sam from a stuttering slide show into a playable good looking experience. Another thing to note is I saw much better results using official glide libraries and minigl dll’s than with WickedGL.
Central Tweaking Unit is available to download from the VOGONS Vintage Driver Library.
The program SETK6v3 (SETK6D.exe for dos) will list available PCI Framebuffer addresses for the memory on my Voodoo 3 3000 (16mb). You can then use the program K6WCX to define them and the memory size which will enable Write Combing and thus a nice boost to FPS in benchmarks and games like Quake and PC Player Benchmark.
It should be noted that this only worked for me in Extended memory mode but not in Expanded.
C:\K6WCX\K6WCX.EXE C8000000 128
The “C8000000” parameter is the 2nd address reported by SETK6D which seems to be the one that works for me. The other being “CC000000” which although could be mapped did not boost performance.
The other parameter “128” is the amount of allocatable memory available multiplied by 8. In this instance 8 x 16 MB on the Voodoo3.
The performance boost gained is surprising and almost doubles frame rates in some cases.
PC Player Bench at 640×480 goes from 20 to 39.9 fps.
Quake at 640×480 also sees a good increase in fps from 12.8 to 18 fps.
Doom benchmark on max details for Fast PCs timed 2134 gametics in 495 realtics with out WC enabled and 2134 gametics in 517 realtics with.
To calculate that into fps its “35*2134 / realticks”. The opposite happens here and we loose some frames, with Write Combining off we get 150.8 fps but enabled only 144.4 fps.
A quick runabout in System Shock showed some improvement in 640×480 at max details, but the extent of improvement in other games requires more thorough testing.
So in summery it seems like a handy feature which is able to squeeze a little more performance out of those graphically intensive later 3D DOS games, if your CPU supports it.
None of this would have been possible with out links to the tools and a great breakdown of how they work from Phil’s Computer Lab, I suggest you check him out on youtube and grab the tools mentioned in this post over on his site.
Dos Graphics Boost Tutorial – Phil’s Computer Lab | Phil’s Computer Lab Website | Phil’s Computer Lab on Youtube