First post, by lemonlime
- Rank
- Newbie
Hi All,
I picked up this Diamond Monster 3D II (8MB Voodoo 2) a while back and it turned out to be defective. It was sold as-is untested for a good price, so not too surprising. The card is actually in beautiful condition and very clean. No missing SMD components, no trace damage or scratches and I spent some time inspecting the TMUs and FB chip under a microscope and all pins appear solid. I may double check this again just to be sure.
It looks like it's a pretty early Rev. A version of the card and even has a bodge resistor near the PCI connector (seems to be normal for these). Here are some pictures of the card:
The card is detected fine as a PCI device and the drivers install without issue In Windows 98. At boot, I see the dreaded "_GlideInitEnvironment: glide2x.dll expected Voodoo^2, none detected." message. Going to the Voodoo 2 tab in the display properties page causes it to hang.
I did some diagnostics with the Glide 2.x DOS utilities. I had the following system environment variables set in autoexec.bat:
@ECHO 3Dfx Environment Variables:
set SST_INITDEBUG=1
set SSTV2_INITDEBUG=1
set SST_INITDEBUG_FILE=c:\3dfx\sst1_3dfx.log
set SSTV2_INITDEBUG_FILE=c:\3dfx\sst2_3dfx.log
set SST_DEBUGDAC=1
set SSTV2_DEBUGDAC=1
REM set SST_INITDEBUG_FILE=CON
REM set SSTV2_INITDEBUG_FILE=CON
Running the MOJO.EXE application gives some interesting results:
DPMI: In DpmiHookFxMemmap, addr=e9000000, size=01000000
DPMI: Loading fxmemmap.vxd
DPMI: mapping e9000000 size 01000000
VoodooMEssage: pSST: 0x0 data0: 0x0 data1: 0xe9000001 fn: 0x1000000
DPMI: VoodooMessage: NULL ptr
Finally: 00000000
Info for Voodoo board # 0:
=====================================================
Virtual Base Address: 0xe9000000
Physical Base Address: 0xe9000008
PCI Device Number: 0x9
Vendor ID: 0x121a
Device ID: 0x2
FBI Revision: 2
FBI Memory: 4 MB
FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0x8d1
FBI DAC Output Color Format: 24BPP
Scan-Line Interleaved? No
TMU Revision: 1
Number TMUs: 2
TMU 0 RAM: 2 MB
TMU 1 RAM: 0 MB <<<<<<<<<<<<<
DpmiUnmapMemory
DpmiUnmapMemory
The FB is detected with 4MB of memory, and both TMUs are also detected. TMU0 shows the correct 2MB of texture memory, but TMU1 shows 0MB.
In the debug log, I see the following, which makes sense:
sst1Init Routines: InitCode $Revision: 8 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xe9000000 pAddr:0xe9000008 Dev:0x9 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)
sst1InitSetGrxClk(): Resetting TMUs after clock change...
sst1InitRegisters(): Setting up FAST DRAM Configuration
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...
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...
After five attempts to detect the TMU memory size, it gives up. If I try to run the Tomb Raider 3dfx demo in DOS, I just get a black screen and the system hangs. I tried to disable texuring to see if it would work, but the same issue persists. I tested with a working V2 card to make sure the environment variable actually did anything, and it does indeed work:
set SSTV2_TEXMAP_DISABLE=1
set SST_TEXMAP_DISABLE=1 <<< this one works in tomb raider with a working V2 card
But looking at the debug output, it seems that initialization fails even though the issue appears to be TMU related, so maybe its normal to have a system hang in this case.. not sure. I also tried limiting the FB memory size to 2MB, but there was no change.
set SSTV2_FBI_MEMSIZE=2
Whatever the problem is, it appears to be related to TMU1. None of the memory chips get hotter than the others and the TMUs and FB are warm to the touch.
I'm assuming the TMU near the slot bracket is TMU0 and the one to the right is TMU1, but really not sure. Does anyone know for sure? I was thinking of giving TMU1 a reflow again just for good measure, and if it doesn't correct it, to replace all four memory chips on that TMU. I have a bunch of NOS 25ns EDO chips that I can use for that if necessary.
Any other ideas or tips?
Thanks.
Also known as vswitchzero. Check out my YouTube channel: https://www.youtube.com/c/vswitchzero