A retro hardware enthusiast has demonstrated a fix that eliminates the washed-out appearance people can have with 1990s graphics cards from S3. In a recent video, Bits und Bolts (BuB) worked on an S3 Virge DX 4MB graphics card (1985-6) to investigate and neuter the ‘pedestal bit.’ This feature of the card’s VBIOS makes the darkest blacks more like charcoal, a highly undesirable feature if used to drive a good-quality monitor.
Finally BLACKGROUND! Fixing the S3 ViRGE "Pedestal" Bug with Assembly - YouTube Watch On
Before we go on, here’s a refresher regarding the pedestal bit, which was a bug/feature of S3 cards such as the headlining Virge, Trio, and some early Savage family models.
In its wisdom, S3 decided to raise the black levels to a dark gray in VBIOS so imagery wouldn’t be too dark for old CRTs, particularly those that adhered to the NTSC standard. So, this raising of black to dark gray is the so-called pedestal. It was implemented in the era’s graphics cards in VBIOS, by setting full black to a higher value. As you will see later, TechTuber BuB notes the original bit was set as 3F, but the fixed version replaces that hexadecimal value with 1F at a certain point in the VBIOS code.
Article continues below
BuB explains that the pedestal bit is set in the BIOS when the system boots up. So, affected systems show blacks that are a bit too bright (bright black?) immediately starting from boot time.
The TechTuber breaks down this pedestal bit fix into a number of logical steps. Firstly, a debugger is used to poke around and find the address and code where the bit in question resides. Thanks to some prior experience with prior graphics cards and in some community discussions, BuB isn’t searching blind.
In the debugger, the TechTuber tracked down his first target address and checked what values were there using Windows Calculator’s hex-to-binary converter. This first shot at editing the code live in the debugger, changing the probed values to zero (black), resulted in nothing happening.
Second shot hits the target
A second shot, targeting debug at 3c4 address 1a hit the target. When the value at this address was set to zero, the background went darker immediately. To check, BuB reset it back to the old values, confirming that one of the eight bits edited was the pedestal bit. Another bit of elimination work was needed to determine which one of the eight was the actual pedestal bit, but NuB was lucky the first time.
... continue reading