First post, by Thermalwrong
Testing failing video memory on a 3Dfx card is something that I've struggled with for a while, because I keep purposely buying really old broken video cards to see if they can be fixed. For the initial part of this thread I'll focus on a 3Dfx Voodoo Banshee card with faulty memory that I got hold of about 3 years ago, the ELSA Victory II: http://hw-museum.cz/vga/31/elsa-victory-ii
It was sold as 'untested' which meant faulty but not as roughed up as the cards I get from the recycler.
It has confounded me for a couple of years how I'd go about getting working memory for it and how to troubleshoot it so I've put it off and put it off.
The card would look okay in text mode but going to VGA mode or doing any kind of 3D games the errors in the memory would be immediately visible.
There's a dos-level video memory tester called VMTCE from a long time ago that can run from a floppy or CD drive and that's my preferred tool at this point for testing memory function: https://sourceforge.net/projects/vmtce/files/
Up to this point I've used the floppy disk version because it's fast to set up but today I got tired of waiting for it to start up each time for a test so now I've fdisk/formatted a small CF card with FreeDOS (what VMTCE runs on) and copied the floppy disk files onto it. Startup is super quick now, the FDCONFIG.SYS file can be edited to reduce or remove the wait time in the menu at startup.
VMTCE displays memory locations that give bad values like this - you can see noise on the picture too because the bad memory here is in a low enough range to break the framebuffer in 640x480 VGA mode:
I do not think that VMTCE is infallible with all cards, I've seen it decide there are memory errors on a pair of ATI Rage Pro Turbo cards which seem to work fine in use. VMTCE does work well with 3Dfx cards and Nvidia cards though 😀
Recently I was going through my junk cards selection and found an ATI Rage (Pro Turbo?) 8MB SGRAM AGP card with no bracket / damaged. It had 8MB (4 chips) of SGRAM with a different manufacturer than my ELSA Victory II card, ISSI IS42G32256 instead of the Samsung km4132g512, but 100-pin QFP SGRAM is standard. The pinout and memory layout are all the same, with 256k (cells) x 16 (bits) x 2 (banks) at 3.3v. Perfect, we thank you for your service little ATI Rage. As a bonus the donor card got to have a run through VMTCE before being dismantled for parts.
To try to figure out how to efficiently replace the Banshee's SGRAM instead of replacing all chips - because I have less chips and soldering errors increase in probability as we change more chips - I wanted to understand the memory layout of the Voodoo Banshee card. As far as I'm aware, the true pinout of the Voodoo Banshee is unknown but we can use documents for the Voodoo 3 in its stead. The Voodoo 3 is kind of a sequel to the Voodoo Banshee rather than the Voodoo 2, it's a Banshee 2 😀
Incidentally, there just so happens to be a full application schematic of a 3Dfx Banshee 2 PCI card on the web. I've verified the pinout and it is referring to the Voodoo 3's pin layout rather than the Banshee.
Anyways, we have the Voodoo 3 databook which gives us a diagram of the layout as well as pins:
That means that the chip in the upper left of the card is data pin 0 to 31 going to one 32-bit SGRAM chip, the lower right is the end point ending up at frame buffer data pin 127. The ELSA Victory II has 4 SGRAM chips on the front and 4 on the back - the data pins go to the same places but the chips on the front are Bank 0 with the back-side being Bank 1.
To simplify testing since it's the framebuffer area that's got a problem, the Voodoo 3 and Banshee can be limited to operating just 1 bank of memory or 4-chips mode by moving a 'strap' resistor. This is a small pull-up or pull-down resistor that connects to the VGA BIOS ROM's Data and Address pins, which the card detects on power-up and sets itself up accordingly. I had to remove the big 40-pin header from the card to find the jumpers but you can trace this easily by following the EEPROM's Data pin 5 to a nearby resistor. There will usually be an unpopulated resistor pad nearby that connects to the opposite, in this case Ground:
To limit the ELSA Victory II to 4-chip mode, or 8MB of ram, I moved the 4.7k resistor from R23 to R4.
It made no difference to the display issue in this case but it was helpful for diagnostic purposes because this card had a fault in both banks. I made some initial guesses from what I was seeing in VMTCE which I'll not elaborate on, but I changed them in order of:
- Okay change the top-left chip U1
- No change huh, okay well now we'll put the chip I just took off from U1 into U2's spot since we know that wasn't the problem
- Oh still no good huh, well let me think about this before I swap the chip again, oh huh the bottom right chip has a scratch on it.
- Got it! That bottom chip was bad and now the card passes VMTCE tests at 8MB of memory. Now the display is normal again, I'm sure the card is fixed now...
BTW - that first VMTCE picture shows how I know that it's a RAM fault and not a trace / signal fault, notice that it toggles the bad bit at one point to a different position.
I was very happy to see this, so now the card appears to be working and this confirms that the Banshee's BGA chip and all memory traces connecting to it are working properly. Excellent! Surely everything will go fine once I enable the rest of the memory