Retro PC adventures

The PC


My retro PC is a Compaq Deskpro EN SFF, which I bought for €5 at the 'HCC Dagen' in 2007 or something, I'm not sure. I used it as a M0n0wall for a couple of years, basically retired it, and at one point brought it back to life with a Voodoo 3 to investiate Unreal engine Glide rendering peculiarities. Now I've decided to use it as a retro gaming PC, and it's pretty good for that. It's small, and has the right hardware. My main focus is 90s first-person shooters, i.e. Doom 1/2 and Duke Nukem 3D.

Note: One thing that makes retro gaming so finicky is that in the 90s technology moved at a much faster pace than it does now. As I write this in 2020, playing a game from 2015 is no big deal and it'll be technologically similar to current games. Similarly, you can also run current games just fine on a PC from 2015. However a 1993 and 1998 game will be completely different. Doom, released in 1993, runs on DOS, uses a MIDI soundtrack and doesn't care what video card you have as long as it supports VGA. 1998 saw the release of Quake 2, which only runs on Windows, uses a CD audio soundtrack and uses OpenGL 3D acceleration. A 486 from 1993 could in no way run that game, while a PC built in 1998 could, depending on the hardware, be unable to run DOS games such as Doom perfectly. What this all means is that a lot of games will be particular about what hardware they run on, and a lot of hardware will be suitable for only a short period of games.

Another thing annoying about retro computing is that there's a lot misinformation and conflicting/subjective/anecdotal evidence out there. Take everything you read on Vogons with a grain of salt.

The PC's insides

In its stock form the Deskpro is a decent retro PC already: it's an Intel 440BX chipset motherboard, which is compatible with handy tweaking tools such as Throttle. It includes an ISA slot, which means you can use sound cards with good DOS support. And the stock built-in ESS AudioDrive ES1869F works fine in DOS, offers good SoundBlaster compatibility and its Adlib (OPL) clone is not 100% but still good. It has a built-in NIC. The ATI Rage Pro Turbo graphics card is fine for DOS games, though not so much for games that require 3D acceleration. A 440BX board with a Pentium 3 can cover a large time span of retro games, basically all of the 90s, sometimes requiring the aid of slowdown tools.

This particular PC does have some disadvantages though. Although it's nice and small, the case is a pain to work with, opening and closing it takes some force. It lacks BIOS options, and some of the missing ones might have been helpful in fixing some issues I've run into. It only has two expansion slots: one PCI and one PCI or ISA. I can't get PC speaker (beeper) audio to work; in fact, I can't get the internal speaker (which should also play digital audio) to work at all.

Case open/close clasps
If the clasps on the sides of the case are pressed in like this, it's impossible to snugly fit the top cover. Push them out and try to keep them that way while closing it.

The final specs are as follows:

I installed Windows 98 on the machine over netboot. I added a BootMenu=1 entry to MSDos.sys so I can boot straight to DOS. Some more info on various hardware items:

3DFX Voodoo 3

In general a Voodoo 3 is a great retro card. It supports VGA/Vesa modes and has all the power you'll need for games that are best played using Glide acceleration. An advantage over older Voodoo cards is that it's an integrated 2D/3D card. Disadvantages are that it won't run some early DOS Glide games meant for the Voodoo 1, and it'll still only do 16-bit color in 3D. Although I mostly use the card in DOS I did find it to have sharper 2D output than the built-in ATI card, though that might just be noisier as it's integrated on the motherboard.

Voodoo 3
3DFX Voodoo 3

One issue I've run into is horizontal lines of pixels flashing across the screen in Duke3D and Quake in 320x200 VGA modes. Setting Duke3D to 320x200 VESA mode results in really fuzzy graphics. 800x600 mode looks perfect but the computer struggles at that resolution. Some threads on Vogons suggested upgrading the Voodoo 3's BIOS or messing around with its clock speeds would help, but it didn't. I managed to fix the horizontal glitching using the mtrrlfbe tool. Setting VGA write combining to 'WP' or 'WT' fixes the issue, 'WB' crashes the game. On the other hand, with the settings that work for Duke/Quake, Doom has completely corrupted graphics.

Duke3D glitches
Voodoo 3 graphics glitches in Duke Nukem 3D.

ATI Rage Pro Turbo

As the Voodoo 3 gets quite hot I decided to try the Rage again. However, at least there's no issues with VESA modes. With the stock Windows drivers, Unreal works fine (at least, the castle flyby does) in D3D mode, while GLQuake uses software rendering.

I've tried many (~15) other driver sets. Installing drivers allows one to activate negative horizontal sync, which on my monitor results in a much stabler image (can be seen especially in the dithering pattern when the Windows shutdown dialog is on screen).

Unfortunately almost all drivers exhibit issues to some extent, and ATI's version numbering scheme is confusing:

  • No OpenGL acceleration
  • GLQuake working but glitched status bar
  • Low resolutions resulting in corrupt graphics
  • 1600x1200 not available in 32-bit, which isn't that big an issue, but some drivers don't offer 24-bit mode
  • 1600x1200 resulting in a low res mode in which you have to pan the screen around with the mouse cursor
  • I've uploaded my collection of drivers. For me the set that worked best was w98_rpro_4_11_2628_en.exe

    Roland Sound Canvas SC-55

    Sound Canvases are a complex subject. These are the MIDI devices that Doom and Duke3D's music was composed on, and using one doesn't just sound way better than OPL music, it sounds the way the composer heard the tracks as well. In fact it's a shame that these games used the OPL as a general midi playback device instead of just composing directly for it; most people had an Adlib or Sound Blaster, and almost nobody had a Sound Canvas.

    Now choosing a Sound Canvas is where it gets difficult. To some extent, your device needs to have the correct bugs, and the various devices' behavior is poorly documented, as is what kind of behavior games actually expect.

    There are game patches that fix bugs that require a specific SC-55 version, see here. My findings:

    See also here and here and here.

    When buying an SC-55, have the seller check the firmware version for you - mapping the face plate or serial number to a firmware version is vague. It seems 'GS' branded units can have all firmware versions. I found a post on Vogons that said "ROM version 1.20 or 1.21 provides the greatest degree of 'out-of-the-box' compatibility with DOS games. These units shipped with 'GS' logo faceplates, and with serial numbers greater than AC94800". However, my 1.20 unit has serial AC94400. To get the firmware version, put the SC-55 in standby mode and press both Instrument buttons followed by both MIDI CH buttons.

    I ended up going with a 1.20 unit as my focus was Doom and Duke3D. It's possible to upgrade the firmware to 1.21 but there seems to be no point, although this is the only possible SC-55 firmware version upgrade.

    Extra tip: open the unit up and check the battery, it'll probably be corroded. In time this might damage components on the unit's main board.

    MIDI cable

    The SC-55 hooks up to a sound card's MPU-401 compatible game port. I managed to buy a game port to MIDI cable, but couldn't get it to work for the life of me. After swapping sound cards, trying another computer, etc., I opened up the cable and discovered it's just not right. A MIDI cable should use 220 Ohm resistors in the output stage (R1, R2 on the PCB) and a 270 Ohm resistor (R4) at the input. Instead, this cable used 1.2k everywhere. Instead of swapping out the resistors I soldered 270 Ohm resisors in parallel with R1, R2. This results in 220 Ohm for those. R4 would require 348 Ohm in parallel.

    By the way, this type of cable doesn't use a buffer for the output side but that's not that big a deal. Also, with these cables the lead marked 'out' is the PC output (as opposed to the synth output) and should be connected to the synth. Later on I found other people have had issues with the same cable, in fact here somebody came to the some conclusion about the resistors.

    Midi cable
    The midi cable - basically avoid this type of cable...
    Midi cable
    The midi cable with replaced resistors.

    Sound card attempt 1: ESS AudioDrive ES1869F

    The Deskpro has a built-in ESS AudioDrive ES1869F sound card, which generally works fine. Although you can select what resources it should use in the BIOS, as it's a PNP device Windows ignores this and configures the card using its drivers. Depending on if you're booting into DOS from Windows, straight into DOS (will use BIOS settings), or into DOS and using esscfg.exe, the card can end up using different resources. ISA PNP is weird - at some point I was unable to enable the card in the BIOS while it worked fine in DOS after running esscfg.exe, and eventually I could re-enable it in the BIOS (though with different resource settings). It offers a good Adlib (OPL) clone, it's not exact but it sounds close, some people find it superior. Unfortunately the ESS1869 in its on-board form in the Deskpro doesn't come with a gameport or line-in port (though the cd-in could be used for that), which meant I couldn't use it with the SC-55.

    To use another sound card I had to disable the ES1869F and free up resources. Unfortunately it seems that devices disabled in the Deskpro's BIOS will appear in broken form in Windows Device Manager and still take up resources. The solution is to disable them in the device manager. Update: They can be completely disabled by enabled 'Device Security' for the audio device in the BIOS. The same goes for other devices such as serial/parallel ports.

    Device Manager
    Device manager - I had to disable devices that had also been disabled in the BIOS.

    Sound card attempt 2: Creative Sound Blaster 16 CT2770

    Sound Blaster 16 CT2770 - MIDI hanging note bug and Build engine stuttering.

    The second sound card I went with was a Creative Sound Blaster 16. Model CT2770 aka SB16 Value. The card was easily detected by Windows after running a scan for non-PNP hardware and of course DOS game support is sublime. However, there were two deal breakers when using this card to drive a MIDI device. The first is the hanging note bug. This card has the CT1747 chip, so it only has 'Type 2' hanging notes (a correct note is not turned off, as opposed to a completely wrong note being played). These occured often enough to be annoying. Additionally, these cards have an issue where Build engine games will stutter if they're playing back MIDI and also mixing audio (can be fixed by lowering audio quality). For a while I settled on using the ES1869F for digital audio playback and the SB16 for its gameport and genuine OPL. However as the ES1869F doens't have a line-in, this meant going ES1869F line-out → SC-55 line-in → SB16 line-in → SB16 line-out.

    Sound card attempt 3: Opti 928

    The next card I bought used an Opti 928 (aka) MAD16 chipset. This card wouldn't work properly under Windows 98 (seems it only had 3.1 drivers) and I couldn't get stereo sound to work under DOS. Worst of all, its gameport isn't MPU-401 compatible. I screwed up and bought the wrong card, apparently the Opti 929 is a fine chipset and Sound Blaster Pro 2/MPU-401 compatible, the 928 is not. It's more similar to an orignal Sound Blaster 2.0.

    Opti 928
    Opti 928 - lackluster all around. I molested the sticker to check the exact model of the chip underneath.

    Sound card attempt 4: Aztech AZT2316

    Finally I went for an AZT2316 based card. Mine has FCC ID I38-MMSN824 and was apparently a Packared Bell OEM card. It is recognized just fine by Windows as a Sound Galaxy Washington 16, but it needs its own set of DOS tools, the generic Aztech ones don't work. Here's my take on this card:

    So in short this card does have its issues, to be honest I was disappointed. I might try an Opti 929 at some point. Or a Yamaha YMF718, although those have slighly different OPL playback and don't support ADPCM.

    Aztech azt2316
    AZT2316 - works ok for now.

    Sound card attempt 5: Avance Logic ALS100

    I did end up trying an Avance Logic ALS100 card. This card has a 100% authentic OPL3 clone and SB16 compatibility. People report a lot of hiss/noise coming from these cards, but I was hopeful mine would be an exception, somehow the fact that mine wasn't a half-height PCB made me believe that to be more likely. Anyway, I had a lot of issues with this card. In Windows, a second of the startup sound would play and then no more wave audio could be heard anymore (line-in and OPL worked fine). This was the case with both the Windows 95 drivers and the Win98 WDM ones. In DOS configuring the card using the alsinit utility or Intel ICU worked fine, however most of the time I would get no sound or a missing channel; sometimes everything worked ok. When sound did work, in SB16 mode the left/right channel would be switched.

    Running the alconfig tool would somehow fix audio, but sometimes this tool would hang. I figured that maybe the power draw from my Voodoo 3 and the ALS100 was too much, but removing the Voodoo but leaving the ALS100 actually things worse?! It would not be detected or half-detected (ICU hanging with an error message) and sometimes I wouldn't even go into the system's BIOS anymore, it would hang. Anyway I'm not sure if it's my specific card or if it's just due to my motherboard, but I had to give up on this card.

    This is the only card I've ever seen with steel-plated(?) fingers. ALS100
    ALS100 connectors
    Note how off-center the jacks are - this means it's impossible to fully seat a 3.5mm plug.

    Sound card attempt 6 Aztech AZT2320

    AKA HP MM Pro 16V-A, FCC ID I38-SN96116

    My reasoning for trying this card was that it was available, newer than the AZT2316 and that after playing with the ALS100 I found that ISA PnP isn't that big a deal. In fact, since playing with the ALS100 a great new tool called UNISOUND has been released which auto-configures all sorts of cards based on the BLASTER environment variable - it's awesome! For Windows 98 the stock drivers work fine. However (after a lot of hair pulling) I discovered the card won't work in DOS if Windows has been started first. I need to completely turn off and on the machine (and boot straight to DOS) to fix this; restarting with CTRL+ALT+DEL doesn't help.

    Later I discovered that by using a set of Windows 95 drivers the issue doesn't occur; before I had been using the built-in Win98 WDM drivers.

    This card does not exhibit the issue where Doom needs to be started twice before it plays digital audio. Also, Duke Nukem 2 seems to work fine all of the time.


    Sound card attempt 7/8: Two ALS100 cards

    I had figured my earlier problemswith an Avance Logic ALS100 based card were due to that card in particular. So I got another one. And another one. And now I'm pretty sure my machine just hates this audio chip. In fact, these cards worked even worse than the first one: not detected by Windows at all, and only sporadically detected by alsinit and UNISOUND. Once initialized, FM playback worked but Duke3D setup either wouldn't detect the digital audio part or crash when trying to play back sound. Slowing down the CPU doesn't fix the issues and I'm not sure what else to try.


    Sound card attempt 9: MK8330 →Current Winner←:

    I ended up getting an MK8330 sound card as a final end-all fix. Great sound quality, 100% (or at least 99%) accurate OPL clone and it's an SB16 compatible sound card with bug-free MIDI. It doesn't support ADPCM (the ALS100 does), but there's a fix pack available for Duke Nukem 2. It does support Windows Sound System, which the ALS100 doesn't. The same guys also offer the Orpheus card, the chip of which offers higher intrinsic audio quality, but it's not SB16 compatible.

    Dell 2007fp

    This monitor is great for retro gaming. It uses a 1200x1600 resolution at a 4:3 aspect ratio, which means that 320x200 VGA games can be shown in the correct aspect ratio using integer scaling. Doom looks great! For newer games, running them at 800x600 will also use integer scaling, obviously. Only issue is that, even with a high quality VGA cable, sometimes you need to manually use the auto-adjust option to prevent flickering. For example, if you go to Windows 98's shutdown screen, the background uses a dithered pattern that causes the creen to flicker until you re-adjust.

    SSD Upgrade

    Eventually I decided to add an SSD. I went with a 128GB M.2 SATA SSD, as these are cheap. I used an M.2 to SATA adapter; some are just a bare PCB, I splurged on one that comes with a casing. Next in the chain is a SATA to IDE adapter. There's various makes and models of these; I wanted one that plugs into the drive (not into the motherboard) as the Deskpro has pretty much zero space above the motherboard IDE connectors. There's mixed reports on which converter chip to go with. I've seen JMicron, Marvell and unbranded chips. I went with one of the unbranded adapters as I'd seen reports that these work well in DMA mode with the 440BX, and I can confirm that it does work fine. It's anecdotal, but I've seen talk of JMicron not working well with 440BX, while others have said it works well with other motherboard chipsets.

    Try to avoid Samsung PM851 drives though. These drives suffer from performance degradation and as these are OEM drives, firmware updates are OEM specific. I was unable to find an update for my HP drive, and I couldn't manage to flash it with Dell or Lenovo firmware.

    m2 to sata adapter
    M.2 SATA to standard SATA adapter
    sata ide
    Generic SATA to IDE adapter.

    I used Windows 10 to create FAT32 partitions on the SSD so they would be properly aligned. I created a 4GB partition for Windows, and a 32GB partition for games. Unfortunately Windows 10 won't let you create FAT32 partitions larger than 32GB (while Win98 fdisk does), but I don't mind the wasted space on the SSD. In fact, although the DOS trim tool works with my hardware, I'd rather keep the SSD over-provisioned.

    To get Windows 98 on the SSD I first copied over the Windows 98 installation directory I had on my hard drive, then disconnected the hard drive and netbooted a Windows 98 startup disk to kick off the installation. I couldn't manage to get a bootable Win98 install on the SSD by first booting from the hard disk, but that might be due to my system refusing to boot off a slave drive (so I had to make the SSD, i.e. the Windows install target, slave).

    To mount the SSD I tried first tried two types of downloaded 3D printable 3.5" to 2.5" adapters. However they both wouldn't work as due to the sata converter the SSD needs to be mounted off-center, and due to the limited space in the case I can't have the converter hanging out of the drive bay. Instead of designing a bracket myself, in the end I opted to just drill four holes in the drive holder. Later on I replaced the whole drive mounting assembly with a custom 3D-printed unit so I could mount a socket 370 CPU.

    ssd mount 1
    Tip: use the bare M.2 to SATA converter PCB as a template to drill holes. In the end I couldn't use the bottom-right hole as the screw head there would foul with the case.
    ssd mount 2
    SSD mounted.

    PSU Fan Upgrade

    The old power supply fan was rather rumbly, so I replaced it with a 80MM Noctua fan. I expected this job to involve soldering a normal fan connector to the PSU's circuit board, but the new fan actually just plugged into the old (2 pin) header. The problem was getting to the bottom screws of the fan; that involved taking everything completely apart. The difference in fan noise is huge, though!

    noctual fan
    Getting to the bottom screws involves taking out the PCB. Here you can also see that I unclipped the fan's cable holder so the wires run directly into the PSU casing.
    noctual fan
    Fan installed.
    noctual fan
    PSU installed again.

    Issues and fixes

    Floppy drive cable

    For some reason my machine doesn't play nice with single-connector floppy drive cables, no idea why. I generally don't use the floppy drive but when I do, I need to cram a long cable in there.

    File sharing

    The easiest way I've found to share files between a Windows 98 and Windows 10 computer over the network is to share a directory on the Win98 machine and access it from Windows 10. Support for SMB 1.0 must be installed on the Windows 10 machine under 'Turn Windows Features On or Off'. Using the Windows 10 machine as a client means that on that computer you can leave security settings such as 128-bit encryption enabled.

    SMB 1.0 client.



    Website. Throttle is a great tool that, at least on my machine, works perfectly to slow down the CPU for games that require it. I recommend using the command-line option -c to not disable the CPU's L1 cache, it will result in really slow performance.


    Website. Great DOS mouse driver.

    Windows 98 USB mass storage driver

    These can be found under the name 'nusb33e.exe'; they're in my archive at the bottom of the page. Using an USB stick is generally easier than trying to get Win98 networking to play nice with Win10; you do need a way to get these drivers on your retro machine though, such as a floppy disk.

    My archives of all my used tools and drivers

    Created: Feb 08 2020
    Modified: Jul 02 2022