Friday, 27 August 2021

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.