By WillComments Off on Retro Game Wednesdays (Part 6)
2.4 DOS Networking, Internet and Multiplayer.
DOS networking is great! You can play games together over LAN or the Internet, transfer files to and from other PCs using FTP, or even browse the web. But it’s not as simple as networking today where you just plug in a network cable and you’re off the races. MS-DOS has no always on auto-configuring network support, it must all be configured and executed using the following:
A network stack which defines the protocol such as TCP/IP, IPX/NetBIOS or Novell NetWare.
A TSR (Terminate and Stay Resident program) for requesting a address from your DHCP if you’re connecting to an IP4 network.
2.4.1 Drivers for your Network Card
When I first set out to get networking going in DOS I struggled to get my head around packet drivers, how they worked and what exactly they did. Now I know the ins and outs it seems obvious but for anyone approaching it without any prior knowledge it can be a real headache.
The first thing first you need to know is what network card you are using. If for any reason you don’t know or cannot workout what NIC (Network Interface Controller) you are using there’s a handy tool called NICSCAN which will help you identify the correct card and driver.
I’m using a REALTEK RTL8139(A) PCI fast ethernet card which can use either the RTSPKT.COM packet driver or the RTSODI.COM ODI Driver. The main difference between these two drivers is the intended application, with the packet driver being a generic driver for TCP/IP and the ODI driver being for use with Novell NetWare protocols like NW 3.x, 4.x, NetBIOS and IPX.
I’ve created a set of disk images for the setup disk for the REALTEK RTL8139(A) PCI available here.
If you are limited by only having an ODI driver or packet driver, translation layers or converters are available, but with most common network cards you shouldn’t need to worry. More information on these converters can be found here.
2.4.2 Network Stacks & Protocols
Now you know what network interface you have and the corresponding packet driver to load we need to set it up along side a protocol or network stack. The two most common (and the only ones you really need) are TCP/IP and IPX/SPX.
The TCP/IP protocol is what modern networks still use and allows you to connect your computer to the internet. I will outline using the mTCP suite to achieve this later in this post.
IPX/SPX is a protocol that was popularly used on LANs (Local Area Networks) when MS-DOS and Windows 3.x were the popular choice for home and office PCs. A lot of multiplayer games such as Doom. Duke3D and Blood for example use this protocol for network play.
Novell NetWare is a protocol used primarily as a foundation for Novell business network solutions.
NetBIOS is another protocol used primarily as a communication layer for IBM PC networks.
You can configure and use both the TCP/IP & IPX/SPX protocols for your network device but usually only one stack can be initialised at a time. Except in some instances where both a separate ODI and Packet driver can be run without conflicting resources. A reboot of the system will most likely be required if you wish to change from using one protocol to another.
2.4.3 IPX/SPX, Novell NetWare & NetBIOS
IPX/SPX, NetWare and NetBIOS all have their own TSRs that just need to be run in sequence along with the ODI or packet driver depending on your network card.
For this example I will be using the Realtek ODI driver RTSODI.COM, along with LSL.COM (Novell Link Support Layer for DOS ODI) and IPXODI.COM (IPX/SPX Protocol).
LSL.COM and IPXODI.COM are usually provided with your network card driver, for the RTL8139 they are in a folder named NWCLIENT on the install disk along with an example NETSTART.BAT. RTSODI.COM is located in the NETWARE\DOSODI folder on the same disk along with NET.CFG and RTSODI.INS. Or you can download them here.
I recommend putting all these files into a single folder on the local drive of the system you wish to configure eg. C:\DRIVERS\IPX\*.*
For launching the IPX ODI drivers see the example below and create a batch file ie. NETSTART.BAT to launch them in sequence.
Additionally NETBIOS.EXE (NetBIOS) and NETX.EXE (NetWare v3.x) can be launched afterwards or included at the end of your batch file. A successful initialisation should look like the screenshot provided.
You should now have initialised the IPX network stack on your network so any other machines also connected should be able to communicate with each other.
That’s all you need to do to prepare for network multiplayer gaming in DOS!
See 2.4.5 later in this article where I’ll cover how to host/join local IPX game lobbies, playing IPX based multiplayer over the internet using a program called Kali, along with connecting virtual DOSBOX clients to real machines on the same network.
For TCP/IP to work we need a packet driver and a software suite called mTCP the latter is available for free from Michael Burtman’s website. The TCP/IP packet driver can be found in the PKTDRV folder on the RTL8139 install disk or can be download on its own from here . The same as before I’m using the REALTEK RTL8139(A) for this example.
Running the packet driver is pretty simple, only one launch parameter is required for RTSPKT and that is the software interrupt so other programs can access it. The default as described in the readme is 0x60. Move the packet driver to somewhere onto your hard disk ie. C:\DRIVERS\TCPIP\*.*
You can add the following to a batch file or your autoexec.bat if you want it to auto load on start-up.
When executed you should see a message like the following that means the packet driver is loaded and running successfully.
System: 86 processor, PCI bus, Two 8259s
Packet driver software interrupt is 0x60
Interrupt number is 0x9
I/O port is 0x6100
My Ethernet address is 52:54:4C:29:29:AD
The last line will display the mac address of your network card if you wanted to note that down for whitelisting, or address reservation on your network later.
mTCP requires configuration before we can use it. Firstly extract the contents of the standard binaries zip file to your system (eg. C:\DRIVERS\MTCP\*.*). Next MTCP.CFG needs to be filled out with your packet drivers interrupt we used earlier (0x60), a host name needs to be chosen and ftpsrv_password_file location needs to be set. Save the file and add the following line to a batch file or your autoexec.bat.
After editing your autoexec.bat and rebooting or alternatively launching your own custom batch file with the SET value, you can re-run your packet driver and then launch DHCP.EXE. If all is correct you should see the line “Good news everyone!” with your assigned local network IP address details (see images below).
You are now connected to your local network via TCP/IP and should have internet access if it’s available on that network. This allows you to use a web browser such as Arachne or play any TCP/IP compatible games online such as Quake World.
Transferring files is also easy if you have a ftp server on another machine to connect to using mTCP’s FTPSrv utility, I highly recommend Phil’s Computer lab video on the subject which you can find here.
I made this video as a guide that covers all the steps necessary for getting a portable DOSBOX distribution up and running, which can connect real computers and DOSBOX instances over your TCP/IP and/or IPX network.
The first half of this video covers everything from points 2.4.1 to 2.4.4 in this post but for the virtual NE2000 network adapter this build of DOSBOX uses.
The latter half of the video covers creating/joining game lobbies in DOS and also how to setup and use Kali 1.4a for DOS. You can skip to the time 6:38 for those details which also apply to real MS-DOS.
Kali 1.4a is a Client and TSR for DOS which allows IPX traffic to be captured and passed through the internet over TCP/IP, allowing games designed for local network play only to be played online.
Unlike modern games which allow players to join a match in progress any time, IPX games tend to use a lobby system. This is when the game finds and syncs all the players running the game on the network and then creates the game instance once they are all ready.
In the next post I’ll be finally moving onto Windows 9x!
By WillComments Off on Retro Game Wednesdays (Part 5)
2.3 System Performance in DOS
(Click the image above to view it larger with a description.)
For a PC made up of hardware from the end of the 90’s it performs as you would expect in DOS, it kills it. You can see a breakdown of the systems stock and overclocked performances in the SpeedSys summaries and DOSBench results in the images on the left.
All earlier era games that run in either CGA (320×200) or QVGA (320×240) resolutions run great, at either the frame-cap of the game or the refresh rate of the monitor. Some early games rely on the frame rate for in game timings and thus run too fast, for these I’m using the SETMUL tool to limit the CPU speed by reducing the multiplier or in some cases disabling the L1 or L2 Caches.
The late era DOS games that run in higher VESA resolutions like VGA or SVGA can vary in speed. Most VGA (640×480) games are perfectly playable when using stock settings, but while running under an overclock with write-combining enabled can be very smooth. As for games with support for SVGA (800×600) resolution they tend to be a bit slow under DOS even with overclocking or write-combining. This slowness seems to be a limitation of 3D rendering in software mode, with games which don’t make use of an optimised graphics library like Dirext3D, OpenGL or Glide.
I’ve tested a few games with DOS source-ports specifically designed to utilise MesaFX. An OpenGL based graphics library that takes advantage of 3Dfx’s Glide functions and allows for better hardware accelerated effects. There are also community patches for many games which improve their performance in similar ways.
The first is a port of Quake called QDOSFX. This source port is based of version 1.09 of Quake with a combination of enhancements from multiple other ports. This is possibly my favourite way to enjoy the original Quake episodes. Unlike glQuake this port does a excellent job retaining the dark and gritty software rendered look of quake, which is where I feel a lot of the charm of the game lies. It also has the benefit of running at higher resolutions, with greater performance and enhanced 3Dfx effects/lighting. Plus the kind of extra features we’ve all come to expect in more modern first person shooters; such as an FOV slider, on screen frame counter and better mouse look options etc.
Vanilla Quake at stock clocks and settings rendered at 640×480 finishes the Timedemo benchmark of 969 Frames in 74.4 Seconds with an average frame rate of 13 FPS. While the source port completes the same benchmark of 969 Frames in 13.2 Seconds with an average frame rate of 56.3 FPS. This is an improvement of approximately 425.5%.
See below the side-by-side comparisons of the Quake vs. QDOS and glQuake vs. QDOSFX. The newer ports are the images on the right of the slider.
Quake vs QDOS (Software) 640×480
glQuake (MiniGL) vs QDOSFX (MesaFX) @640×480
Super Mario 64 (MesaFX) Gameplay
Another game utilising the MesaFX library that I have tested is Super Mario 64. This port is based upon the reverse engineered SM64 codebase and is compiled for DOS. There is no benchmark but the game experience is smooth and enjoyable (even played with a keyboard). In some locations like the submarine it actually performs better than on the N64 version.
It’s interesting to see this game run natively on a 3Dfx system because back in the day UltraHLE’s N64 emulation took advantage of the N64’s 3Dfx graphics chip instructions and translated those calls to glide with very little overhead. While UltraHLE ran in Windows this port runs natively in DOS. Using write-combining even more performance can be gained.
System Shock (SSPTool) Gameplay
The last game I tested was a patched version of System Shock which not only looks better than it’s original DOS release but has more resolution options and modern control improvements. The mods I used were all part of the SSPTool mod pack and installer. This tool will let you select the modifications you desire and use a System Shock CD or GOG install to create a standalone modded install.
All of these ports ran incredibly smoothly at 640×480 and are even still enjoyable at 800×600 with Write Combining enabled. Checkout the comparison images and gameplay videos to see for yourself.
In the next part I’ll be covering networking, internet and multiplayer in MS-DOS. Also a little look at getting real hardware to connect to DOSBox on a LAN or over the internet.
By WillComments Off on Retro Game Wednesdays (Part 4)
2.2 DOS Drivers, TSR’s and Utilities
There are many drop in replacements for old DOS components thanks to the work of individuals or groups like the Free Dos Project. A fantastic resource is the Vogons Wiki page called Useful DOS utilities. I experimented with a range of Drivers, replacement TSR’s and Utilities until I settled on this combination.
XMGR – An Extended Memory Manager replacement for HIMEM by Jack R. Ellis.
JEMM386 – An Expanded Memory Manager replacement for EMM386 based on the source of FreeDOS EMM386. Made by Andreas Grech.
UMBPCI – A TSR which enables Upper Memory without switching CPU to Virtual 8086 mode. Handy for freeing up a lot of Conventional memory by loading other TSR to the Upper Memory while staying in Real Mode for older games. Currently maintained and updated by Uwe Sieber.
SHSUCDX – A Modern CD-Rom Driver replacement for MSCDEX, with caching, single-sector buffering and a smaller memory foot-print by Jason Hood.
CuteMouse – A replacement mouse driver. It is one of, if not the smallest memory foot-print mouse driver for DOS. It supports three button scroll wheel mice in DOS with very granular control over sensitivity. Made by Eric Auer and Daniel Nagy.
SetMul – A utility which changes the CPU multiplier, L1 and L2 cache operation on the fly within DOS for AMD K6+ processors. By gerwin on vogons.org. This is by far the most useful tool for getting older games to behave as they should.
k6wc/k6wcx – A utility for enabling Write-Combining on the AMD K6 by Uart. This massively speeds up 3D games. See this post I made previously on calculating your memory ranges and getting it to work.
Documentation for each of these utilities is included with the downloads from their respective sites. Most are quite simple to use and work in a similar manner to what they are designed to replace. However I have included copies of my autoexec.bat and config.sys because examples always help. These files will also contain my modified boot-menu.
A Quick Thanks
I’d just like to thank Philip Hoefer of Phils Computer Lab, Jack R. Ellis for XMGR, Andreas Grech for JEMM, Uwe Sieber and Andreas Stiller for UMBPCI, Eric Auer and Daniel Nagy for cutemouse, John H. McCoy and Jason Hood for SHSUCDX and finally all the folks at Vogons.org who keep these files alive, downloadable and documented. Without a community such as this my task would have been almost impossible.
By WillComments Off on Retro Game Wednesdays (Part 3)
2.1 Disk Operating System aka DOS
There are many flavours of DOS; the most common was MS-DOS but there were alternatives like DR-DOS, IBM’s PC DOS or 86-DOS and now there’s the likes of FreeDOS, the free DOS Project which is a modern Open Source variant. Now the machine I intended to play DOS games with was also to be the one I’d use to run early Windows 9x games. So the simplest solution was to just spend some time configuring the underlying DOS that’s included with Windows 9x versions.
Windows 98 Second Edition is what I intended to use so that meant I’d be using DOS version 7.1. The first problem arose here with some DOS programs checking for a minimum version requirement on launch, but errored out because 7.1 is not a recognised value. This is likely to be because most software was not updated beyond the last retail release of DOS (version 6.22).
Luckily the tool SETVER has been included with MS-DOS since version 5 to configure any programs looking for specific DOS versions earlier than the one you’re running. You can add a program to the version table with the following syntax.
SETVER [d:]:path][filename (number)][/delete][/quiet] For example: SETVER C:\doom\doom.exe 6.22
The flag /delete or /D can be used to remove a program from the version table and /quiet /Q stops any message being shown.
SETVER C:\doom\doom.exe /delete
To view all the entries on the version table you can run SETVER with no flags from the command line, this list can be long so you can use the “| more” option to paginate it. Once configured add SETVER to your CONFIG.SYS file using DEVICEHIGH.
When I first configured DOS I used Phil’s DOS boot menu from his very helpful MS-DOS Starter Pack along side his DOS Mode Super Easy guide. These are fantastic and give you a clean starting point for boot-up configurations for Conventional, Enhanced and Extended Memory options. This also covers the setting up of the ‘Exit to DOS’ shutdown option in Windows. A essential resource for new users it helps you understand how the autoexec.bat and config.sys files are structured and how the drivers and TSR’s (Terminate and stay resident programs) are loaded.
As time went on I customised this menu with additional boot-up configurations, these allowed for better support for hardware and in some cases led to a more stable system. The Microsoft provided default memory managers and drivers for DOS are HIMEM (Extended memory manager), EMM386 (Expanded memory manager) and MSCDEX (CD-Rom driver). These however can be a bit clunky and can take up too much space in the lower memory bounds.
I started using other memory managers and drivers so I could run games and software I couldn’t with Microsoft’s old ones, at least not without having an excessive amount of system boot discs. These new drivers and memory managers help to free up more Conventional memory while still having sound, CD-ROM and mouse support. Being able to use Write-Combining along side EMS and XMS to improve 3D rendering times. Also in some cases it made games work that under HIMEM and EMM386 were prone to crashes or not even launching.
By WillComments Off on Retro Game Wednesdays (Part 2)
2.0 A Machine to Run Two Decades of Gaming (1989-2001)
I’ll start with the oldest machine labelled above as ‘Retro Rig #1’ which I use for DOS and Windows 9x games. It’s network name happens to be ‘Marvin’ after the Paranoid Android. I will cover my hardware choices and any discoveries I made while tweaking, optimising and fixing the problems that arose during the course of the years as well as any changes I made. My aim was to build a single machine which could give an enjoyable experience playing a wide range of games, from early DOS all the way to the end of Windows 9x with the release of XP in 2001. I initially began building this machine in 2016 and made a thread on vogons.org at the time, since then its evolved somewhat.
To achieve this I needed a versatile processor at the computers core, which allows for good compatibility with speed sensitive 16-bit DOS software but also has enough oomph for demanding 32-bit 3D accelerated games. Both Intel and AMD had good offerings in 1999 with a range of Pentium II/III models and K6/K7 (Athlon) CPU’s respectively. The Higher end being the 600Mhz AMD K7 Athlon and the Intel Pentium III with more affordable mid-range chips sitting at the 450~500Mhz at almost two thirds up-to half of the cost in pre-built machines of the time. See the scanned system round-up from Issue 49 of PC Advisor dated October 1999.*
Mobile variants of these popular chips had speed-stepping or other power management technologies which allowed laptops to save battery by limiting performance and power of the CPU on the fly. It’s these processors which are perfect for older more stubborn DOS games which depend on slower speeds to function as intended. As far as I could tell the Intel chips needed to have their multipliers ‘unlocked’ and even then the multiplier value could only be changed in the bios on a system reboot. This left the AMD K6 mobile series denoted by a plus, in this case I used a K6-III+ 450Mhz.
It can downclock to 200Mhz or effectively even slower by disabling the L1 and/or L2 caches which makes it ideal for the slow stuff, but it can also overclock nicely to 500Mhz for a nice little boost. This speed pairs it nicely with a must-have piece of hardware from 1999 – a 3Dfx Voodoo 3D accelerator card for all games that support the 3D graphics API Glide. Luckily I still have my original STB Voodoo 3 3000 AGP 16MB which should hopefully run early Windows 3D games like a dream and even get a decently playable experience out of more demanding games like Quake 3 Arena or UT ’99. The Voodoo 3 also benefits from having drivers that are optimised for AMD’s 3DNow! instruction-set and many games received special 3DNow! patches to boost performance.
I now had a list of requirements to help me pick a suitable motherboard. It needed to be Socket 7 for the CPU, and it needed AGP as the variant of the Voodoo 3 I had was in that formfactor. While searching for candidates I stumbled upon a WYSIWYG computer that was retired from some factory floor on ebay listed as “Computer Cyrix M II 333Mhz 64MB SDRAM 4.3GB 2xISA 3xPCI”. No real details in the listing but I could see from the photos that it had an AGP slot and the CPU socket was branded with SOCKET 7, not bad for £30 for a complete system. When it arrived it did contain a Cyrix M-II as listed but to my surprise it was the motherboard was a Gigabyte GA-5AA which is a Super Socket 7 board.
The chipset is a ALi Aladdin V which before it’s release was not expected to be much compared to the likes of Intel, VIA or even SiS based on its predecessor the Aladdin IV which was a budget chipset used is some really cheap boards. The Aladdin V however ended up being a power house chipset which met all the requirements for the AMD’s Super7 specification plus more. It supported all current Socket-7 processors, the new Accelerated Graphics Port standard and the fast at the time 100MHz Frontside Bus. The Gigabyte website even claims it supports up-to 140Mhz FSB. The chipset also featured an internal L2 cache, cacheable 133Mhz fast memory SD-RAM support and a USB 1.1 header on the board. So the Gigabyte GA-5AA ended up being perfect for what I needed it for. This chipset guide article on anandtech.com was very insightful and helped me tremendously at the time when I was identifying the board and its features.
For memory I went with 256 Mega Bytes of 133Mhz SD-RAM since it’s supported by the chipset, later on I discovered that the memory bandwidth caps out at about 313MB/s so any value higher than that would just be diminishing returns. The storage devices I used were a MAXTOR DiamondMax 10 120GB Hard-Disk Drive for game storage and a generic SD to IDE adapter paired with a Samsung Pro 64GB SDHC Card. The Drive shows up as SINTECHI HighSpeed SD to CF Adapter and while it doesn’t get linear speeds as high as the HDD it does have a really low random access time at 0.78ms. I believe the model is SD35VC0 and has a FC1307A chipset. There are two optical disc drives; one 52x speed Samsung CD-ROM drive and a generic CD-RW drive (CDR-7S52), oddly the CD-RW drive has problems reading discs burnt on other machines.
Lastly the most important decision when building a DOS gaming pc is the sound card. I wanted good adlib sound in dos, support for General MIDI, Creative Sound Blaster compatibility and some basic 3D sound support. This meant it had to be an ISA card for true DOS support, some PCI sound cards were able to give DOS sound support through emulation but this always comes at a performance cost.
I started with a Sound Blaster 16 CT2230 which worked well until it didn’t. After an hour or so the voice channels on the card would stop leaving only the MIDI output but no adlib sound or PCM samples. This problem couldn’t be solved so I moved onto a Creative Sound Blaster AWE64 Value ISA CT4500 which worked fantastically and had both support for Sound Blaster 16/AWE and SB2.0/Pro. The General MIDI samples on the AWE64 were somewhat lacking and left a lot to be desired.
The solution to the lacklustre MIDI sound was to switch to a sound card with a Wavetable header. I used the ESS Technology Schubert v1.2 with a AudioDrive ES1868F chip. This card ended up sounding fantastic in DOS and the Wavetable header allowed use of any of the Serdaco DreamBlaster daughterboard solutions. I started with the S1 and upgraded to the X2. Here’s some posts I made on the X2 and how it sounded at the time. The ES1868F drivers were simple to setup in DOS and has a fast VXD driver component for Windows 9x.
By WillComments Off on Retro Game Wednesdays (Part 1)
A year of streaming with retro hardware.
On September 27th 2019 I began streaming retro pc games on a variety of systems at twitch.tv/whiskey_juliet. I now do this every Wednesday from around 12 midday until 5.30pm GMT.
Over this last year I’ve worked hard to create a decent setup of hardware and software to allow me to stream some of my favourite games and discover some gems I missed thanks to the suggestions of great community. During this time I’ve done a lot to tweak and improve that setup. Swapping out hardware, changing methods of capture and solving all the usual problems that go hand in hand with old exhausted computers.
I figured it might be sensible to document the details of what I’ve learned along the way, lest I forget some vital step and have to spend hours pulling my hair out trying to remember some odd config.sys setting. As an extra bonus it might be useful to some one else.
1.0 The Systems
First up are the computers themselves. There are three rigs which together allow me to play roughly 30 years of gaming history on their intended hardware without emulation or (that many) technical issues. Each rig is connected via a KVM switch (Keyboard, Video and Mouse). This allows for easy switching between each source, without having to rely on changing OBS/capture settings or constantly having to un-plug and swap hardware.
By WillComments Off on Quickshot QS-201 Super Warrior Joystick - NOS
Found a New Old Stock boxed Quickshot QS-201!
This is the closest match I have found to my first ever joystick. The one I had was an even cheaper version of this stick with the same housing and body but only two buttons (red) and just had non moving solid parts for the extra body buttons and throttle control.
I bought it off ebay for cheap as it was only listed as old in box I wasnt expecting it to be in the best of condition. But on its arrival I was thrilled to find it was in fact New Old Stock still in its original factory seal!
As this was rather unexpected I decided to film the unboxing and take a few snaps. This model of the joystick launched sometime in 1993 and was a budget stick even for 90’s standards. I mostly remember playing Rebel Assault and Wing Commander III: Heart of the Tiger with my original stick.
By WillComments Off on Central Tweaking Unit - Write Combining with an AMD K6-3+ and a Voodoo 3 3000 - Part 2
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 enables 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.
By WillComments Off on K6WCX - Write Combining with an AMD K6-3+ and a Voodoo 3 3000
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.