First post, by Masejoer
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 […]
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 […]
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 […]
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?