VOGONS


First post, by Masejoer

User metadata
Rank Newbie
Rank
Newbie

I have one (of 5) voodoo 2 cards that doesn't work, and I'm taking a look into diagnosing it. In DOS, I just lose signal to monitor with this card when launching Tomb Raider. In Windows 98 I test with 3dfx opengl in Quake 2, which allows me to hit ESC twice to revert to software rendering, and get back to the desktop.

Additionally, this card is detected by Windows as a new hardware device, and the Diamond drivers/installer I use for voodoo 2 cards does install and makes it show up in the device manager as a monster ii, but after reboot, opening the display settings says that no voodoo 2 card is found, while it still appears in the device manager. Swapping out to another voodoo 2 card works fine, so I know the drivers are good.

I have added these to autoexec.bat for logging:

set SST_INITDEBUG=1
set SST_INITDEBUG_FILE=C:\sst1.txt
set SST_DEBUGDAC=1

set SSTV2_INITDEBUG=1
set SSTV2_INITDEBUG_FILE=C:\sst2.txt
set SSTV2_DEBUGDAC=1

Switching Quake 2 to 3DFX OpenGL, I get the following log entry:

sst1Init Routines: Voodoo2 InitCode $Revision: 1 $ sst1InitMapBoard(): BoardsInSystem = 1 sst1InitMapBoard(): vAddr:0xcd964000 p […]
Show full quote

sst1Init Routines: Voodoo2 InitCode $Revision: 1 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xcd964000 pAddr:0xd8000008 Dev:0xb Board:0
sst1InitCaching(): wc(0x4) : uc(0x5)
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)
sst1InitGetTmuMemory() ERROR: Could not detect memory size.
sst1InitFillDeviceInfo(): Retry #1 for chip GetInfo()...
sst1InitGetTmuMemory() ERROR: Could not detect memory size.
sst1InitFillDeviceInfo(): Retry #2 for chip GetInfo()...
sst1InitGetTmuMemory() ERROR: Could not detect memory size.
sst1InitFillDeviceInfo(): Retry #3 for chip GetInfo()...
sst1InitGetTmuMemory() ERROR: Could not detect memory size.
sst1InitFillDeviceInfo(): Retry #4 for chip GetInfo()...
sst1InitGetTmuMemory() ERROR: Could not detect memory size.
sst1InitRegisters(): ERROR filling DeviceInfo...

The card physically looks near perfect under my inspection microscope - nothing beyond superficial marks that I've probed around, all pins look good, no missing components. I can swap the card out for another matching model of the card, which works fine.

I didn't find anything online about this specific error - even "sst1InitGetTmuMemory" returns nothing.

Setting SSTV2_TEXMAP_DISABLE=0, Quake 2 runs without textures (attached photo). SSTV2_TEXMAP_DISABLE=1 gives me the same output. Without SSTV2_TEXMAP_DISABLE being set, I just get a gray screen when switching to 3dfx opengl.

Log file with SSTV2_TEXMAP_DISABLE=1 :

sst1Init Routines: Voodoo2 InitCode $Revision: 1 $ sst1InitMapBoard(): BoardsInSystem = 1 sst1InitMapBoard(): vAddr:0xcd976000 p […]
Show full quote

sst1Init Routines: Voodoo2 InitCode $Revision: 1 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xcd976000 pAddr:0xd8000008 Dev:0xb Board:0
sst1InitCaching(): wc(0x4) : uc(0x5)
sst1InitRegisters() WARNING: Disabling texture mapping
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)
sst1InitGetTmuMemory() ERROR: Could not detect memory size.
sst1InitInfo(): NAND-tree: 5727
sst1InitInfo(): NOR-tree : 5575
sst1DeviceInfo: Board ID: 9
sst1DeviceInfo: FbiConfig:0x2, TmuConfig:0xc184
sst1DeviceInfo: FBI Revision:4, TMU Revison:4, Num TMUs:1
sst1DeviceInfo: FBI Memory:4, TMU[0] 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...
sst1InitCalcGrxClk(): Overriding default clk frequency with SST_GRXCLK
sst1InitVideo() Setting up video for resolution (640, 480), Refresh:60 Hz...
sst1InitVideo(): Video Fifo Threshold = 25
sst1InitVideo(): pciFifoLwm:13 memFifoLwm:23 memFifoHwm:54
sst1InitVideo(): Allocating 2 Color Buffers and 1 Aux Buffer(s)...
sst1InitVideo(): Enabling Memory FIFO (Entries=57344)...
sst1InitVideo(): Setting memory FIFO LWM to 0x201f (8223)
sst1InitVideo(): vInClkDel=0x1 vOutClkDel=0x0
sst1InitVideo(): Setting 24BPP video mode...
sst1InitGrxClk(): Setting up 92 MHz Graphics Clock...
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x20)
dacWr(0x4,0xa)
dacWr(0x5,0x58)
dacWr(0x5,0x25)
dacWr(0x4,0xe)
dacWr(0x5,0x20)
sst1InitSetVidMode(): Entered...
dacWr(0x6,0x70)
sst1InitSetVidClk(): Entered...
sst1InitSetVidClk(): Setting up 50.35 MHz Video Clock...
dacWr(0x7,0xe)
dacRd(0x5,0x20)
dacWr(0x4,0x0)
dacWr(0x5,0x7d)
dacWr(0x5,0x47)
dacWr(0x4,0xe)
dacWr(0x5,0x20)
sst1InitSetClkDelays(): Setting FBI-to-TREX clock delay to 0x4...
sst1InitSetClkDelays(): Setting TREX#0 TREX-to-FBI clock delay to 0x6
sst1InitSetClkDelays(): Setting TREX#1 TREX-to-FBI clock delay to 0x6
sst1InitSetClkDelays(): Setting TREX#2 TREX-to-FBI clock delay to 0x6
sst1InitVideo(): Monitor Detected:1
sst1InitVideo() exiting with status 1...
sst1InitCmdFifoDirect(): Start:0x1c2000 bytes, Size:262144(0x40000) bytes
sst1InitCmdFifoDirect(): DirectExec:0, DisableHoles:0
sst1InitCmdFifoDirect(): pageStart:450, pageEnd:513
sst1InitCmdFifoDirect(): set32Proc: 0x1FED610
sst1InitCmdFifo() exiting with status 1...
sst1InitGammaRGB(): Setting GammaRGB = (1.30,1.30,1.30)
sst1InitGammaRGB() exiting with status 1...
sst1InitCmdFifo(): Disabling Command Fifo...
sst1InitShutdown(): Shutting down SST-1 #0...
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x20)
dacWr(0x4,0xa)
dacWr(0x5,0x41)
dacWr(0x5,0x62)
dacWr(0x4,0xe)
dacWr(0x5,0x20)
sst1InitShutdown(): Returning with status 1...

Setting SSTV2_TMU_MEMSIZE to 8192, 4096, or 2048 just gives me a blank screen after switching Quake 2 to 3dfx opengl (similar issue to tomb raider in pure dos). Same with SSTV2_FBI_MEMSIZE at 4096 and 2048. Log file of FBI and TMU set to 2MB:

sst1Init Routines: Voodoo2 InitCode $Revision: 1 $ sst1InitMapBoard(): BoardsInSystem = 1 sst1InitMapBoard(): vAddr:0xcd968000 p […]
Show full quote

sst1Init Routines: Voodoo2 InitCode $Revision: 1 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xcd968000 pAddr:0xd8000008 Dev:0xb Board:0
sst1InitCaching(): Already have wc
sst1InitCaching(): Already have uc
sst1InitCaching(): wc(0x4) : uc(0x5)
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)
sst1InitInfo(): NAND-tree: 5864
sst1InitInfo(): NOR-tree : 5712
sst1DeviceInfo: Board ID: 9
sst1DeviceInfo: FbiConfig:0x2, TmuConfig:0xca54
sst1DeviceInfo: FBI Revision:4, TMU Revison:4, Num TMUs:2
sst1DeviceInfo: FBI Memory:2048, TMU[0] Memory:2048, TMU[1] Memory:2048
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...

Note that a working card also displays Quake 2 in magenta if SSTV2_TEXMAP_DISABLE (0 or 1) is in autoexec, except the game also works fine with this line commented out. The color isn't a sign of an issue.

Just trying to keep things working for preservation sake - I understand that there are quite a few "dead" voodoo 2 cards out there, and I have plenty of working ones already.

Does anyone have any direction for how to (smartly) diagnose this any further without just r&r components?

Attachments

  • 20211024_154650.jpg
    Filename
    20211024_154650.jpg
    File size
    621.03 KiB
    Views
    769 views
    File comment
    Different, working card
    File license
    Public domain
  • 20211024_150643.jpg
    Filename
    20211024_150643.jpg
    File size
    403.67 KiB
    Views
    792 views
    File comment
    Defective card with SSTV2_TEXMAP_DISABLE
    File license
    Public domain

Reply 2 of 6, by Masejoer

User metadata
Rank Newbie
Rank
Newbie

I will add that while plucking all the pins across the chips with a dental pick to look for any weak solder joint, I noticed that pins 128-129 on chip 500-0009-01 appear to have some shiny solder. My other boards don't have this. Not bridged, but someone may have been messing with this card at some point in its history.

Reply 3 of 6, by Masejoer

User metadata
Rank Newbie
Rank
Newbie
sdz wrote on 2021-10-24, 23:23:

Poke the TMU pins, even if they look good under the microscope.

Yeah, I was just doing that a bit more with a better tool - giving each pin a small tug to check for weak solder joints.

Are chips 0010 the TMUs? Still googling to try to find verification on which chip is what.

Reply 4 of 6, by Masejoer

User metadata
Rank Newbie
Rank
Newbie

Well, I seemed to find a half dozen slightly wiggly joints on the "top" and right sides of chip 0009 and went to touch the spots up, and now have two overlapping pins from one pin that slid over and bridged simply from some tension that I released as I flowed each joint. Not sure where my blade tip is, and having difficulty separating them otherwise with my J02 and a similarly sized pick. May need to pick up another tip to get something small enough to help separate the pins, or risk damage if I spend too much time working with the "large" J02.

Reply 6 of 6, by bloodem

User metadata
Rank Oldbie
Rank
Oldbie
Masejoer wrote on 2021-10-24, 22:11:

Setting SSTV2_TMU_MEMSIZE to 8192, 4096, or 2048 just gives me a blank screen after switching Quake 2 to 3dfx opengl (similar issue to tomb raider in pure dos). Same with SSTV2_FBI_MEMSIZE at 4096 and 2048. Log file of FBI and TMU set to 2MB:

That is wrong. You are not setting the TMU memory to 2 MB, you are setting it to 2/4/8 GB. 😀
Try SSTV2_TMU_MEMSIZE=2
Same for FBI: SSTV2_FBI_MEMSIZE=2

You can check that the value has been properly applied in the Voodoo 2 display properties --> System info:
file.php?id=14590&mode=view

Based on my experience, this type of hard deadlock occurs when there's an issue with either the FBI memory or the FBI itself. Most TMU related issues just translate to corrupt textures (but, who knows, you might be running into one of those rare, edge cases).
And before you say it, no, the fact that it does work without textures does not eliminate the FBI or its memory from being the culprit. 😀 It depends greatly on which part of the FBI (be it internal or external connection) and/or memory is affected.
If you are lucky, setting the "SSTV2_FBI_MEMSIZE=2" will completely solve the problem (if the affected memory/connection is in the 2 - 4 MB range)

1 x PLCC-68 / 2 x PGA132 / 5 x Skt 3 / 9 x Skt 7 / 12 x SS7 / 1 x Skt 8 / 14 x Slot 1 / 5 x Slot A
5 x Skt 370 / 8 x Skt A / 2 x Skt 478 / 2 x Skt 754 / 3 x Skt 939 / 7 x LGA775 / 1 x LGA1155
Current PC: Ryzen 7 5800X3D
Backup PC: Core i7 7700k