VOGONS


Almost working Voodoo 2

Topic actions

First post, by bimole

User metadata
Rank Newbie
Rank
Newbie

Hi,

I found a Voodoo 2 8MB card at a (too) decent price and as expected, things go quite wrong!
This is a CT6670 in an excellent cosmetic shape (no dust, shiny PCB, no missing parts)

It is "almost" working. I use the Creative drivers for the CT6670 found on http://falconfly.3dfx.pl/3dfx.htm

Here is my setup :
PIII Coppermine 1GHz
384MB RAM PC133
MSI MoBo 815E Pro Ver 1.0 (MS-6337)
10GB system partition on an SSD (via PATA/SATA bridge)
The other GPU is an ATI 9600PRO
I'm not using the small VGA passthrough cable, I switch manually from the ATI to the 3DFX card (as a beginning...)

The card is normally found by Win98SE, and is correctly identified in the Device Manager
The graphic tab for the Voodoo 2 in Display properties is also here...

display-ok-voodoo2.png

...but I can't always access it. I get often the nasty error message :

error-voodoo2.png

Sometimes it works, sometimes not.
The 3 3DFX chips are barely warm so they seem to be supplied

I read some threads on Voodoo 2 troubleshooting and I found the 3DFX Glide SDK 2.43 package with the "mojo" executable.
I set the variable environnements in Autoexec.bat as recommended here en there :
set SST_INITDEBUG=1
set SSTV2_INITDEBUG=1
set SST_INITDEBUG_FILE=c:\sst1_3dfx.log
set SSTV2_INITDEBUG_FILE=c:\sst2_3dfx.log
set SST_DEBUGDAC=1
set SSTV2_DEBUGDAC=1

detect.exe always find correctly the card.
Things are different for mojo.exe, that I run in pure DOS or from a Win98SE command prompt.
Sometimes the card's characteristics seem to be well found :

mojo-ok-voodoo2.png

Sometimes not :

mojo-nok2-voodoo2.png

I gave a look at the log files. There a several cases.

CASE 1 : When I can access to the display properties (in Win98SE), only sst2_3dfx.log is generated

sst1Init Routines: Voodoo2 InitCode $Revision: 39 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xdc9c0000 pAddr:0xd6000008 Dev:0x42 Board:0
sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x8...
sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x8...
sst1InitDacDetect(): Entered...
sst1InitDacDetectICS(): Entered...
dacWr(0x7,0xb)
dacRd(0x5,0x79)
dacRd(0x5,0x2e)
dacWr(0x7,0x1)
dacRd(0x5,0x55)
dacRd(0x5,0x49)
dacWr(0x7,0x7)
dacRd(0x5,0x71)
dacRd(0x5,0x29)
sst1InitDacDetectICS(): Exiting...
sst1InitRegisters(): Storing TREX0INIT0=0x5441
sst1InitRegisters(): Storing TREX0INIT1=0xf420
sst1InitRegisters(): Storing TREX1INIT0=0x5441
sst1InitRegisters(): Storing TREX1INIT1=0xf420
sst1InitRegisters(): Storing TREX2INIT0=0x5441
sst1InitRegisters(): Storing TREX2INIT1=0xf420
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x7b)
dacWr(0x5,0x6c)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitRegisters(): Setting up FAST DRAM Configuration
sst1InitInfo(): NAND-tree: 5476
sst1InitInfo(): NOR-tree : 5274
sst1DeviceInfo: Board ID: 12
sst1DeviceInfo: FbiConfig:0x2, TmuConfig:0xca54
sst1DeviceInfo: FBI Revision:4, TMU Revison:4, Num TMUs:2
sst1DeviceInfo: FBI Memory:4, TMU[0] Memory:2, TMU[1] Memory:2
sst1DeviceInfo: Dac Type: ICS ICS5342
sst1DeviceInfo: SLI Detected:0
sst1InitRegisters(): LFB Writes go through memory FIFO...
sst1InitRegisters(): TEXTURE Writes go through memory FIFO...
sst1InitRegisters(): exiting with status 1...
sst1InitShutdown(): Shutting down SST-1 #0...
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x41)
dacWr(0x5,0x62)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitShutdown(): Returning with status 1...

All things seem to go right.

CASE 2 : When I launch mojo and it is working normally, only sst1_3dfx.log is generated

sst1Init Routines: InitCode $Revision: 8 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xdc9c0000 pAddr:0xd6000008 Dev:0x42 Board:0
sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x8...
sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x8...
sst1InitDacDetect(): Entered...
sst1InitDacDetectICS(): Entered...
dacWr(0x7,0xb)
dacRd(0x5,0x79)
dacRd(0x5,0x2e)
dacWr(0x7,0x1)
dacRd(0x5,0x55)
dacRd(0x5,0x49)
dacWr(0x7,0x7)
dacRd(0x5,0x71)
dacRd(0x5,0x29)
sst1InitDacDetectICS(): Exiting...
sst1InitRegisters(): Storing TREX0INIT0=0x5441
sst1InitRegisters(): Storing TREX0INIT1=0xf420
sst1InitRegisters(): Storing TREX1INIT0=0x5441
sst1InitRegisters(): Storing TREX1INIT1=0xf420
sst1InitRegisters(): Storing TREX2INIT0=0x5441
sst1InitRegisters(): Storing TREX2INIT1=0xf420
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x7b)
dacWr(0x5,0x6c)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitRegisters(): Setting up FAST DRAM Configuration
sst1DeviceInfo: Board ID: Obsidian GE
sst1DeviceInfo: FbiConfig:0x2, TmuConfig:0x8d1
sst1DeviceInfo: FBI Revision:2, TMU Revison:1, Num TMUs:2
sst1DeviceInfo: FBI Memory:4, TMU[0] Memory:2, TMU[1] Memory:2
sst1DeviceInfo: Dac Type: ICS ICS5342
sst1DeviceInfo: SliDetect:0
sst1InitRegisters(): LFB Writes go through memory FIFO...
sst1InitRegisters(): TEXTURE Writes go through memory FIFO...
sst1InitRegisters(): exiting with status 1...
sst1InitShutdown(): Shutting down SST-1 #0...
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x41)
dacWr(0x5,0x62)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitShutdown(): Returning with status 1...

All things seem to go right.

CASE 3 : When I CAN'T access to the display properties (in Win98SE), only sst2_3dfx.log is generated, "glide2x.dll expected Voodoo^2" error displayed

sst1Init Routines: Voodoo2 InitCode $Revision: 39 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xdc9c0000 pAddr:0xd6000008 Dev:0x42 Board:0
sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x8...
sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x8...
sst1InitDacDetect(): Entered...
sst1InitDacDetectICS(): Entered...
dacWr(0x7,0xb)
dacRd(0x5,0x79)
dacRd(0x5,0x2e)
dacWr(0x7,0x1)
dacRd(0x5,0x55)
dacRd(0x5,0x49)
dacWr(0x7,0x7)
dacRd(0x5,0x71)
dacRd(0x5,0x29)
sst1InitDacDetectICS(): Exiting...
sst1InitRegisters(): Storing TREX0INIT0=0x5441
sst1InitRegisters(): Storing TREX0INIT1=0xf420
sst1InitRegisters(): Storing TREX1INIT0=0x5441
sst1InitRegisters(): Storing TREX1INIT1=0xf420
sst1InitRegisters(): Storing TREX2INIT0=0x5441
sst1InitRegisters(): Storing TREX2INIT1=0xf420
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x20)
dacWr(0x4,0xa)
dacWr(0x5,0x7b)
dacWr(0x5,0x6c)
dacWr(0x4,0xe)
dacWr(0x5,0x20)
sst1InitRegisters(): Setting up FAST DRAM Configuration
ERROR: b_sum=0x4e0 r_sum=0xcc8
sst1InitFillDeviceInfo(): Retry #1 for chip GetInfo()...
ERROR: b_sum=0x4e0 r_sum=0xcc8
sst1InitFillDeviceInfo(): Retry #2 for chip GetInfo()...
ERROR: b_sum=0x4e0 r_sum=0xcc8
sst1InitFillDeviceInfo(): Retry #3 for chip GetInfo()...
ERROR: b_sum=0x4e0 r_sum=0xcc8
sst1InitFillDeviceInfo(): Retry #4 for chip GetInfo()...
ERROR: b_sum=0x4e0 r_sum=0xcc8
sst1InitRegisters(): ERROR filling DeviceInfo...

Something is wrong with the "FAST DRAM Configuration"

CASE 4 : When mojo DOESN'T work correctly, only sst1_3dfx.log is generated

sst1Init Routines: InitCode $Revision: 8 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xd6000000 pAddr:0xd6000008 Dev:0x42 Board:0
sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x8...
sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x8...
sst1InitDacDetect(): Entered...
sst1InitDacDetectICS(): Entered...
dacWr(0x7,0xb)
dacRd(0x5,0x79)
dacRd(0x5,0x2e)
dacWr(0x7,0x1)
dacRd(0x5,0x55)
dacRd(0x5,0x49)
dacWr(0x7,0x7)
dacRd(0x5,0x71)
dacRd(0x5,0x29)
sst1InitDacDetectICS(): Exiting...
sst1InitRegisters(): Storing TREX0INIT0=0x5441
sst1InitRegisters(): Storing TREX0INIT1=0xf420
sst1InitRegisters(): Storing TREX1INIT0=0x5441
sst1InitRegisters(): Storing TREX1INIT1=0xf420
sst1InitRegisters(): Storing TREX2INIT0=0x5441
sst1InitRegisters(): Storing TREX2INIT1=0xf420
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x20)
dacWr(0x4,0xa)
dacWr(0x5,0x7b)
dacWr(0x5,0x6c)
dacWr(0x4,0xe)
dacWr(0x5,0x20)
sst1InitSetGrxClk(): Resetting TMUs after clock change...
sst1InitResetTmus(): Could not reset TMUs...

TMUs reset issue...

It seems there are 2 problems.
Useless to say that I can't launch Quake or any game, but I managed to make the test29.exe (in Glide SDK directories) work and only this one, so the DAC looks good.

test29.jpg

I made a reflow of all FBI pins with a proper soldering iron and flux, under the binocular. No success.
I will continue with the TMUs and check the resistors as well as ferrite beads...

What do you think ? Is it worth it ?!

Cheers,
JB

Reply 1 of 16, by Postman5

User metadata
Rank Member
Rank
Member

check the reliability of pins soldering of the TMU0 - U9

Reply 2 of 16, by bimole

User metadata
Rank Newbie
Rank
Newbie

Thanks !
TMU0 is the right chip isn't it?

Reply 3 of 16, by Postman5

User metadata
Rank Member
Rank
Member
bimole wrote on 2024-10-29, 05:02:

TMU0 is the right chip isn't it?

Yes

Sometimes it works, sometimes it doesn't - I run under DOS the mojo program with one hand, and with the other I press the chips on the board and press a little, deform the board and watch the output of the mojo.

Reply 4 of 16, by bimole

User metadata
Rank Newbie
Rank
Newbie

OK some news...

I have reflown all TMUs leads and checked the electrical continuity of every single one.
All pins are OK.

I thought at a moment it was solved because mojo worked on first try and I could access to the Voodoo 2 display properties.... But once again, I had the ''glide2x.dll'' error message.
It seems that the error message appears less than before, but it was a quick test.
3DFX ICs seem in good shape. I've also checked some resistors and the ferrite beads. Nothing special but I think I will check and reflow every resistors. Far less cumbersome than IC pins 😁

One last thing, the voltage regulator... I don't know how tend to age tantalum caps but I wouldn't be surprised to measure a messy 3.3V. Linear regs have sometimes the bad habit to oscillate at high frequency depending on the load (but it is more likely with low ESR capacitors).
Any feedback on this voltage reg ageing ?

I would also like to check the board with the ''Witchery'' diagnostic software. Any experience?

Cheers,
JB

Reply 5 of 16, by bimole

User metadata
Rank Newbie
Rank
Newbie

I've performed some voltage and resistance/continuity measurements:
3v3 sounds good : 3.43V
as well as 5V : 5.09V
With the oscilloscope, voltages are clean, no spike nor noise.

I also checked the signal accross Y1, DAC crystal. It oscillates at the right frequency.

Something is weird regarding resistance between 5V and GND.
I get 3.3kohms with my ohmmeter (5V pin on "+" ohmmeter, GND flange on "-" ohmmeter) and only 1.2kohms if I reverse ohmmeter "+" and "-" probes.
In diode mode, it displays 0.38V (5V on +, GND on -) and 0.28V with reversed probes.
I measured the same pins on other PCI cards (sound cards, SATA cards, USB cards), I always measure >100k ohms values. No such low values as on the Voodoo 2.

I also measured resistance between 3V3 and GND (across the big 22µF 16V tantalum cap C39)
I measure 306 ohms (3V3 on +, GND on -) and the same value if probes are reversed.
R99 and R100 are the adjusting voltage resistors for the linear regulator. Both are in series and this resistor association appear in parallel with the 3V3 bus. Since they are 110R and 196R respectively, it is normal to measure 306 ohms across the 3V3 bus.

I get lost...
Could it be a defective RAM chip ? I will try to reflow RAM chips next week...

EDIT :
Since I have sometimes error messages regarding TMU reset :

sst1InitResetTmus(): Could not reset TMUs...

I checked the pin 208 ot both TMUs.
Continuity between the two TMU 208 pins is OK. They are both connected to the pin 197 of the FBI.

Cheers,
JB

Reply 6 of 16, by Postman5

User metadata
Rank Member
Rank
Member

I have several Voodoo2, all of them show approximately the same readings in the diode test mode.
(5V on +, GND on -) 0.308...0.392
(5V on -, GND on +) 0.196...0.238
But this method seems dubious to me. It is better to check the FBI connections with TMUO, and check the resistors RA3...RA18. Оn CT6670, they are usually blue, rated at 22 Ohms

Reply 7 of 16, by bimole

User metadata
Rank Newbie
Rank
Newbie

That's fine!
Finally tested the Voodoo2 on another platform:
Super socket 7 K6-2 450
Asus P5A rev 1.04
128MB RAM
Clean Windows 98SE

It works!
All testxx.exe are passing successfully, mojo ok, display properties ok...
I don't understand what is happening with my other platform (see above).
Anyway, the SS7 platform was the target system for this Voodoo2 so... that's fine!

Reply 8 of 16, by Postman5

User metadata
Rank Member
Rank
Member

maybe the PCI slot contacts are not ok on that board

Reply 9 of 16, by Gmlb256

User metadata
Rank l33t
Rank
l33t

Likely caused by the Creative drivers for the Voodoo2 which is based on an older version that have speed sensitivity issues on faster CPUs. I would suggest using the reference driver 3.03.00 (non-beta, dated 18 Jun 1999) instead.

Even with these drivers, MOJO won't properly on that Pentium III CPU unless you can find a way to slow it down.

Reply 10 of 16, by bimole

User metadata
Rank Newbie
Rank
Newbie

Very interesting 👍 thank you for the trick!
I will give a try with these drivers.

Reply 11 of 16, by igna78

User metadata
Rank Member
Rank
Member

I would like to add that the Voodoo2 cards and the ATI Radeon 9500/9600/9700/9800 cards, had major compatibility issues.

Just do a Google search and you will find (even on Vogons) various experiences in this regard.

Reply 12 of 16, by Krzysztof Zakrzewski

User metadata
Rank Newbie
Rank
Newbie

Voodoo 2 Crashing Issue

I own two Voodoo 2 cards and wanted to set them up in SLI mode. However, while one card works perfectly, the other only operates for a few seconds before failing. I tested both cards in two different computers, and as mentioned, one card works fine.

For reference, these are I-O DATA Voodoo 2 cards, which have numerous electrolytic capacitors: 11 x 100uF and 6 x 47uF.
Steps I have already taken:

Cleaned the edge connector.
Replaced most of the electrolytic capacitors (almost all except for 6 x 100uF capacitors, which I am waiting to replace when my order arrives).
Inspected all components for loose pins, cold solder joints, or missing components — everything appears fine.
Resoldered all memory chips and the RAMDAC.

Current Status:

Unfortunately, these steps haven't resolved the issue. The card works in Glide mode for a few seconds to a minute, sometimes a bit longer, sometimes shorter. When it works, the image is perfect, and the card is correctly detected in Windows. However, when I launch a game like GLQuake, it crashes after a few seconds or minutes.
Request for Suggestions:

Do you have any ideas on what else I could try?
Would Voodoo Witchery provide any insights? Unfortunately, I don’t have access to it.

Any advice would be greatly appreciated!

Reply 13 of 16, by sdz

User metadata
Rank Member
Rank
Member

@Krzysztof Zakrzewski
When you say that it crashes after a few seconds/a minute, does the Glide application just freeze, or it actually crashes with an error message?

If it just freezes after a time, while rendering correctly, it could be because the card has a layout a bit different than the reference design one, and might not work properly with regular drivers, at least without setting some registry keys/env. variables from autoexec.bat.
Can you try under Windows with the official driver?

https://www.iodata.jp/lib/software/g/156.htm

Reply 14 of 16, by Krzysztof Zakrzewski

User metadata
Rank Newbie
Rank
Newbie

A lead worth checking.
I have two identical Voodoo 2 I-O Data cards, so if one works, why shouldn't the other? But it's worth ruling it out!

Reply 15 of 16, by Krzysztof Zakrzewski

User metadata
Rank Newbie
Rank
Newbie
sdz wrote on 2025-01-02, 15:17:
@Krzysztof Zakrzewski When you say that it crashes after a few seconds/a minute, does the Glide application just freeze, or it a […]
Show full quote

@Krzysztof Zakrzewski
When you say that it crashes after a few seconds/a minute, does the Glide application just freeze, or it actually crashes with an error message?

If it just freezes after a time, while rendering correctly, it could be because the card has a layout a bit different than the reference design one, and might not work properly with regular drivers, at least without setting some registry keys/env. variables from autoexec.bat.
Can you try under Windows with the official driver?

https://www.iodata.jp/lib/software/g/156.htm

I attempted to install the I-O DATA drivers from the provided website.
To start, I used a functioning card to ensure the process.
Unfortunately, at the very end of the installation, an error occurred, and the card stopped working.
The issue might be related to the Japanese language; I am not certain.
The hardware is visible in the Device Manager but shows an error.

Reply 16 of 16, by Krzysztof Zakrzewski

User metadata
Rank Newbie
Rank
Newbie
Krzysztof Zakrzewski wrote on 2025-01-02, 18:14:
I attempted to install the I-O DATA drivers from the provided website. To start, I used a functioning card to ensure the process […]
Show full quote
sdz wrote on 2025-01-02, 15:17:
@Krzysztof Zakrzewski When you say that it crashes after a few seconds/a minute, does the Glide application just freeze, or it a […]
Show full quote

@Krzysztof Zakrzewski
When you say that it crashes after a few seconds/a minute, does the Glide application just freeze, or it actually crashes with an error message?

If it just freezes after a time, while rendering correctly, it could be because the card has a layout a bit different than the reference design one, and might not work properly with regular drivers, at least without setting some registry keys/env. variables from autoexec.bat.
Can you try under Windows with the official driver?

https://www.iodata.jp/lib/software/g/156.htm

I attempted to install the I-O DATA drivers from the provided website.
To start, I used a functioning card to ensure the process.
Unfortunately, at the very end of the installation, an error occurred, and the card stopped working.
The issue might be related to the Japanese language; I am not certain.
The hardware is visible in the Device Manager but shows an error.

When I reinstall without specifying files and only selecting drivers from the list, the installation succeeds.

After the error, the hardware remains disabled. However, it can be re-enabled without any errors.
But when I try to run a game using Glide, I get an error stating that the glide2x.ovl files are missing.
If I copy the files from the drivers to the game folder (e.g., Quake), I receive an error message saying that these are invalid glide2x.dll files when attempting to launch the game.

In the display options, there are no settings related to Voodoo 2.

It’s possible that the issue is due to these drivers being intended for the NEC PC-98 computer:
https://www.iodata.jp/lib/product/g/220.htm
and they may not be compatible.
3DFX drivers for NEC PC-98

In any case, identical cards work properly and stably with reference drivers and Fast Voodoo drivers, so I suspect a hardware issue with the second card.