I spent a good part of a day wrestling with an annoying problem I found while testing the Matrox G200 AGP graphics card I recently acquired on my Pentium 4 test machine. And it’s a quite serious problem – it causes a BSOD or a hard lockup/freezing in 3D games under Windows 98 SE, shortly after any kind of 3D scenery appears. The card works without problems in Windows XP, but chances are if you’re sporting a G200 in your system, it’s for running retro games in Windows 98, and not anything that would benefit from Windows XP.
I tried various games like Unreal Gold, GLQuake, Quake 2, Half-Life, Test Drive 5, Blood 2 – both in fullscreen and windowed mode. The games either locked up the system or caused a BSOD, depending on what driver I was using. I tried all kinds of bios settings and driver tweaks, and the only setting that made a difference is disabling bus mastering in the driver settings. Now the good news is it fixed the crashing and freezing in Direct3D games. The bad news is it made OpenGL acceleration unavailable, so you’re stuck with software rendering for Quake games.
Eventually I decided to try some OpenGL to Direct3D wrappers, and the one that worked best was the wrapper originally made for the Chromatic Mpact2 graphics card. With the wrapper, Quake and Quake2 looked as expected, and even ran at playable framerates in the 30’s and 40’s on my Pentium 4 machine at 640×480 resolution. Not gonna impress anyone with those numbers, but getting it working at all felt like a major achievement after exhausting seemingly every other option.
It’s possible that the problem is dependent on the system configuration, mainly the chipset or CPU. Digging around the Web, I found other people complaining about the bus mastering option causing instability. Maybe the driver doesn’t behave well on my Sis 651 motherboard, or has problems with the Pentium 4. Or maybe Matrox engineers just can’t write a competent OpenGL driver. The funniest part about all this is that in 1998 when the G200 was released, it was plagued for a long time by missing OpenGL support, and later on had to rely on a slow, buggy and incomplete TurboGL hack, basically a partial implementation of OpenGL. It took Matrox over a year, until after the followup G400 was released to have a working OpenGL driver. And yet, over two decades later, the ghosts of Matrox past continue to haunt me, and my G200 is still without a working OpenGL driver. Talk about getting an authentic 1998 experience!
Not being the type of person to give up easily, I wrestled with the problem some more, and eventually got the freezing to go away by disabling all USB features in the bios. That’s nice, but USB is a useful thing to have, so I toyed around with it some more, and discovered that I can keep USB enabled, but it required changing all USB Access Interface settings in the bios from the default “EDB Bus” to “PCI Bus”. After that – no more freezing in 3D, and I have a fast and stable platform for Windows 98. So to cut a long story short, if your Matrox graphics card is freezing in 3D, and you’re using a SIS chipset motherboard, go to your bios and change the USB Access Interface settings from EDB Bus to PCI Bus.