VOGONS


First post, by analog_programmer

User metadata
Rank Oldbie
Rank
Oldbie

Hi, retro hardware fellas. This is what I got today from ebay as "Condition: For parts or not working - Not tested":

v1_torn_cap.jpg
Filename
v1_torn_cap.jpg
File size
181.35 KiB
Views
579 views
File comment
Voodoo 1 with torn capacitor
File license
Fair use/fair dealing exception

The damaged capacitor is marked in red rectangle. I think this damaged electrolytic capacitor is just a decoupling cap and it is not a serious damage. All other electronic components on the PCB seems to be OK after a visual inspection with magnifying glass.

I decided to use "mojo.exe" tool for quick test of the card under DOS and since I have no experience with this tool, I'm asking for help to determine if the output is OK or might be some potential problems.

Confirmed by sfryers's logs - OK

Here is the output after these commands
"set SST_INITDEBUG=1
set SST_DEBUGDAC=1
set SST_INITDEBUG_FILE=3dfxsst1.log
mojo.exe":

sst1Init Routines: InitCode $Revision: 5 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xe8000000 pAddr:0xe8000008 Dev:0x11 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:0x11
sst1DeviceInfo: FBI Revision:2, TMU Revison:1, Num TMUs:1
sst1DeviceInfo: FBI Memory:2, TMU[0] 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)
sst1InitSetGrxClk(): Resetting TMUs after clock change...
sst1InitShutdown(): Returning with status 1...

Why the log ends with "Returning with status 1..."? Shouldn't it be "Returning with status 0..."? And also: "sst1InitRegisters(): exiting with status 1..."?

This output seems OK

And here is the output after these commands
"set SST_INITDEBUG=1
set SST_DEBUGDAC=1
set SST_INITDEBUG_FILE=CON
mojo.exe > debug.log":

DPMI: In DpmiHookFxMemmap, addr=e8000000, size=01000000
DPMI: Loading fxmemmap.vxd
DPMI: GetDeviceAPI, devid = 0027
DPMI: GetDeviceAPI: Devid=0027, FuncPtr0000:00000000
DPMI: GetDeviceID returns NULL!!!
DPMI: Couldn't get VXDLDR entry point
Info for Voodoo board # 0:
=====================================================
Virtual Base Address: 0xe8000000
Physical Base Address: 0xe8000008
PCI Device Number: 0x11
Vendor ID: 0x121a
Device ID: 0x1
FBI Revision: 2
FBI Memory: 2 MB
FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0x11
FBI DAC Output Color Format: 24BPP
Scan-Line Interleaved? No
TMU Revision: 1
Number TMUs: 1
TMU 0 RAM: 2 MB
DpmiUnmapMemory
DPMI: DpmiUnhookFxmemmap OK

The following lines bother me here:
"DPMI: GetDeviceID returns NULL!!!
DPMI: Couldn't get VXDLDR entry point"

I'm asking for an opinions if this card has some more potential hardware issues, based on these log-files from "mojo.exe". I'm sorry, but right now I can't install Win 98 and test it with some Glide game.

EDIT: As usual, I ask myself and answer myself, finding sources with some information.

On BuB's YT channel in one of the recent 3dfx Voodoo repair videos there is part with shown mojo-output like one of mine with "DPMI: GetDeviceID returns NULL!!! DPMI: Couldn't get VXDLDR entry point". It seems to be some initialization of the "mojo.exe" utility that is related to Windows 9x, not the videocard. So that's clear to me now that at least this is no problem.

Edit: updated topic title.

Last edited by analog_programmer on 2023-08-14, 03:46. Edited 4 times in total.

from СМ630 to Ryzen gen. 3
engineer's five pennies: this world goes south since everything's run by financiers and economists
this isn't voice chat, yet some people, overusing online communications, "talk" and "hear voices"

Reply 1 of 4, by sfryers

User metadata
Rank Newbie
Rank
Newbie

Here are the mojo.exe outputs from my Diamond Monster 3D, under Windows 98 DOS mode on a P3 440BX board.

It doesn't return the same "DPMI: GetDeviceID returns NULL!!! DPMI: Couldn't get VXDLDR entry point" warning message, but as you've stated, that might not necessarily indicate there's an issue with your card.

sst1Init Routines: InitCode $Revision: 8 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xe8000000 pAddr:0xe8000008 Dev:0xc 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:0x11
sst1DeviceInfo: FBI Revision:2, TMU Revison:1, Num TMUs:1
sst1DeviceInfo: FBI Memory:2, TMU[0] 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...
DPMI: In DpmiHookFxMemmap, addr=e8000000, size=01000000
DPMI: Loading fxmemmap.vxd
DPMI: mapping e8000000 size 01000000
VoodooMEssage: pSST: 0x0 data0: 0x0 data1: 0xe8000001 fn: 0x1000000
DPMI: VoodooMessage: NULL ptr
Finally: 00000000
Info for Voodoo board # 0:
=====================================================
Virtual Base Address: 0xe8000000
Physical Base Address: 0xe8000008
PCI Device Number: 0xc
Vendor ID: 0x121a
Device ID: 0x1
FBI Revision: 2
FBI Memory: 2 MB
FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0x11
FBI DAC Output Color Format: 24BPP
Scan-Line Interleaved? No
TMU Revision: 1
Number TMUs: 1
TMU 0 RAM: 2 MB
DpmiUnmapMemory
DpmiUnmapMemory

MT-32 Editor- a timbre editor and patch librarian for Roland MT-32 compatible devices: https://github.com/sfryers/MT32Editor

Reply 2 of 4, by analog_programmer

User metadata
Rank Oldbie
Rank
Oldbie
sfryers wrote on 2023-08-11, 07:55:
Here are the mojo.exe outputs from my Diamond Monster 3D, under Windows 98 DOS mode on a P3 440BX board. […]
Show full quote

Here are the mojo.exe outputs from my Diamond Monster 3D, under Windows 98 DOS mode on a P3 440BX board.

It doesn't return the same "DPMI: GetDeviceID returns NULL!!! DPMI: Couldn't get VXDLDR entry point" warning message, but as you've stated, that might not necessarily indicate there's an issue with your card.

sst1Init Routines: InitCode $Revision: 8 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0xe8000000 pAddr:0xe8000008 Dev:0xc 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:0x11
sst1DeviceInfo: FBI Revision:2, TMU Revison:1, Num TMUs:1
sst1DeviceInfo: FBI Memory:2, TMU[0] 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...
DPMI: In DpmiHookFxMemmap, addr=e8000000, size=01000000
DPMI: Loading fxmemmap.vxd
DPMI: mapping e8000000 size 01000000
VoodooMEssage: pSST: 0x0 data0: 0x0 data1: 0xe8000001 fn: 0x1000000
DPMI: VoodooMessage: NULL ptr
Finally: 00000000
Info for Voodoo board # 0:
=====================================================
Virtual Base Address: 0xe8000000
Physical Base Address: 0xe8000008
PCI Device Number: 0xc
Vendor ID: 0x121a
Device ID: 0x1
FBI Revision: 2
FBI Memory: 2 MB
FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0x11
FBI DAC Output Color Format: 24BPP
Scan-Line Interleaved? No
TMU Revision: 1
Number TMUs: 1
TMU 0 RAM: 2 MB
DpmiUnmapMemory
DpmiUnmapMemory

Thank you very much for sharing me your logs! I've just compared them line by line with my logs and besides different addresses they are identical.

So, seems that TMU and FBI on my Voodoo 1 are OK, I now hope that RAM chips will also be OK.

P.S. Currently I'm in process of making a DIY pass-through VGA cable. And there is so much different wiring diagrams and schematics on the internet due to different VGA revisions through the years, but later I may share my DIY cable which I make according to pinouts for 15-pin VESA DDC2/E-DDC VGA connectors.

from СМ630 to Ryzen gen. 3
engineer's five pennies: this world goes south since everything's run by financiers and economists
this isn't voice chat, yet some people, overusing online communications, "talk" and "hear voices"

Reply 3 of 4, by analog_programmer

User metadata
Rank Oldbie
Rank
Oldbie

Here it is - sharing results from my attempt to make DIY pass-through cable for Voodo 1/2 card. I used about 0.5 m "Category 5" network cable (this build needs five twisted pairs wires, so two pieces of about 20-25 cm of Cat 5 cable), a couple of telephone wires, aluminium foil shielding from the very same Cat 5 network cable, two pieces of adhesive copper foil, some thermal shrinking tubes and two 15 pin VGA connectors (male & female) + plastic housings for them (the only things that I've bought).

Here is the wiring diagram by which I made the VGA pass-through cable (excuse my paint-ish drawing):

DIY Pass-Through Cable.jpg
Filename
DIY Pass-Through Cable.jpg
File size
70.22 KiB
Views
421 views
File comment
Wiring diagram
File license
Fair use/fair dealing exception

And the final stages of manufacturing process. It was it was quite a tedious job to solder 30 wire ends to VGA connectors and insulate them individually, so there are no pictures from the beginning of my work.

All wiring done. Cable formed by two pieces of yellow thermal shrink tube (I've no better color tube with suitable diameter at hand):

P8110050.JPG
Filename
P8110050.JPG
File size
56.17 KiB
Views
421 views
File comment
Wiring done
File license
Fair use/fair dealing exception

It is important to "ground" the shielding in one point only (in my case I used male VGA connector) otherwise the shielding becomes more of a wire and parasitic currents may flow through it between the two videocards:

P8110054.JPG
Filename
P8110054.JPG
File size
52.14 KiB
Views
421 views
File comment
Shielding done
File license
Fair use/fair dealing exception

The final result:

P8110055.JPG
Filename
P8110055.JPG
File size
50.23 KiB
Views
421 views
File comment
Finished DIY pass-through cable 1
File license
Fair use/fair dealing exception
P8110056.JPG
Filename
P8110056.JPG
File size
46.43 KiB
Views
421 views
File comment
Finished DIY pass-through cable 2
File license
Fair use/fair dealing exception

I tested my DIY cable as an extension to a standard factory made 2 m VGA cable and it doesn't introduce any additional noise or artifacts into the picture on the monitor. The only cons are that the cable is a little "stiff" due to wires I've used and the yellow color of the insulation tube.

Right now I'm repairing the torn pads for the electrolytic capacitor on the Voodoo's PCB - waiting for the glue between the torn pads and the PCB to cure and later I'll solder the capacitor on its original place. Later I will test the card with some Glide API demos under DOS...

Update: The capacitor was resoldered on its original place. Tested the cable in pass-through mode with Voodoo card + two different PCI cards (nVidia Radeon 7000 and S3 Virge/GX) and still there is no signs of artifacts or noise in picture. It works pretty good for such a cheap DIY cable. Also the stiffness "con" turns "pro": the cable almost keeps its shape as I bent it 😀

I'm too lazy now to make 3D rendering tests, so... tomorrow will be "the day of the truth".

from СМ630 to Ryzen gen. 3
engineer's five pennies: this world goes south since everything's run by financiers and economists
this isn't voice chat, yet some people, overusing online communications, "talk" and "hear voices"

Reply 4 of 4, by analog_programmer

User metadata
Rank Oldbie
Rank
Oldbie

The "small repair job" wasn't so easy as two of the pads for the almost torn off capacitor were completely separated from the PCB. I first glued them back to PCB (some kind of thermal glue used), then gently soldered to corresponding traces:

P8130053.JPG
Filename
P8130053.JPG
File size
43.96 KiB
Views
360 views
File comment
Pads glued to PCB and soldered to traces
File license
Fair use/fair dealing exception

The capacitor soldered back on the pads and I've used some UV-curing solder mask to make stand more rigid. Not the cleanest result, but this was the best I could do:

P8140066.JPG
Filename
P8140066.JPG
File size
35.96 KiB
Views
360 views
File comment
Capacitor soldered to restored pads (greeny-blueish resin-like thing is UV-curing solder mask)
File license
Fair use/fair dealing exception

And the final 3D rendering test in DOS (used this demo):

P8140072.JPG
Filename
P8140072.JPG
File size
55.61 KiB
Views
360 views
File comment
3Dfx logo displayed
File license
Fair use/fair dealing exception
P8140074.JPG
Filename
P8140074.JPG
File size
52.46 KiB
Views
360 views
File comment
Demo is running its 3D rendering
File license
Fair use/fair dealing exception
P8140079.JPG
Filename
P8140079.JPG
File size
53.81 KiB
Views
360 views
File comment
Demo ending
File license
Fair use/fair dealing exception

Job done. The Diamond 3D Monster... "it lives again" 😁

P.S. DIY pass-through cable works perfectly.

from СМ630 to Ryzen gen. 3
engineer's five pennies: this world goes south since everything's run by financiers and economists
this isn't voice chat, yet some people, overusing online communications, "talk" and "hear voices"