Building an FPGA 3dfx Voodoo with Modern RTL Tools (noquiche.fyi)

by fayalalebrun 54 comments 225 points
Read article View on HN

54 comments

[−] ashwinnair99 55d ago
The Voodoo cards had no right to look as good as they did for their time. Someone rebuilding one from scratch is exactly the kind of project HN was made for.
[−] sprash 55d ago
Yes but the Nvidia NV-1 preceding the Vooodoo was much more impressive. Using NURBS you could display perfectly round objects. Also it had forward texture mapping which significantly improves cache utilization and would be beneficial even today.

It was just way harder to program for. Triangles are much simpler to understand than bezier curves after all. And after Microsoft declared that DirectX only supports triangles the NV-1 was immediately dead.

[−] pezezin 54d ago

> Also it had forward texture mapping which significantly improves cache utilization and would be beneficial even today.

Not really. Forward texture mapping simplifies texture access by making framebuffer access non-linear, reverse texture mapping has the opposite tradeoff. But that is assuming rectangular textures without UV mapping, like the Sega Saturn did; the moment you use UV mapping texture access will be non-linear no matter what. Besides that, forward texture mapping has serious difficulties the moment texture and screen sampling ratios don't match, which is pretty much always.

There is a reason why only the Saturn and the NV-1 used forward texture mapping, and the technology was abandoned afterwards.

[−] rl3 54d ago

>

The Voodoo cards had no right to look as good as they did for their time.

Nor did their marketing:

https://news.ycombinator.com/item?id=35027437

[−] bojan 55d ago
I keep my Voodoo3 2000 with the idea to frame it, but I still haven't found a good way to do it.
[−] Aloha 55d ago
You should just find a good shadow box for it, it'll look good
[−] fayalalebrun 55d ago
Thank you! These things do pack in a ridiculous amount of functionality for what they do. Probably why they look so good but also why it took 30 years for a hardware re-implementation.
[−] nazgulsenpai 54d ago
I had a Voodoo3, can't remember the model number anymore, but my friend who had a TNT2 would often comment about how much worse the 3dfx's 16bit color looked vs the TNT2's 32bit. I could never tell a difference.
[−] covercash 55d ago
Tribes 1 looked so good thanks to Glide…
[−] sejje 55d ago
My first video card.

Getting it working in linux in ~1999 was really not easy, especially for a teenager with no linux experience.

My networking card wasn't working either, so I had to run to a friend's house for dial-up internet access, searching for help on Altavista.

Very cool project. Way above my head, still!

[−] ekelsen 55d ago
The project is cool, but the LLM generated blog bothers my brain.
[−] bob1029 55d ago
I miss the box art more than the actual GPUs.

https://lockbooks.net/pages/overclocked-launch

[−] SilverElfin 55d ago
I love the names and branding of that era. Technology today is far more advanced but it doesn’t have that same excitement for consumers.
[−] VonTum 55d ago
I find it odd the author adds all these extra semantics to their input registers, rather than keeping the FIFOs, "drain + FIFOs", "float to fixed point converting register", etc as separate components, separate from the task of being memory mapped registers. The central problem they were running into was one where they let the external controller asynchronously change state in the middle of the compute unit using it.

I'm noting down this conetrace for the future though, seems like a useful tool, and they seem to be doing a closed beta of sorts.

[−] Tsiklon 55d ago
Tangentially related, that screenshot of Screamer 2 caught me off guard completely, I loved that game to death, and I feel I was the only one of my friends to have played it. Tremendous handling model and superb music.
[−] burnt-resistor 54d ago
I guess it's cool because it could possibly produce a single board design able to emulate many designs with a flash update including SLI requiring 2 Voodoo cards plus a host 2D card that could all be placed onto said one card. I don't know how one engineers the analog DAC bandwidth to render SVGA faithfully at 1600x1200 @ 60 Hz from a FPGA frame buffer though.

Btw, most 8 MiB vintage Voodoo 2 cards can be upgraded to 12 MiB by simply soldering on more RAM. I managed to snag a bunch of legit 125 MHz chips that work with every card produced.

[−] ColonelPhantom 54d ago
Very cool! I am wondering one thing: how fast is it? Much of the "secret sauce" of the Voodoo is its high speed: a first-gen Verite or (God forbid) any ViRGE takes many more cycles for common operations like, say, Z-buffered pixels.

I'm guessing this isn't fully cycle-accurate, but is it at least somewhat "IPC-accurate"? I'm guessing yes? But much of that was also derived from Voodoo's (for the time) crazy high memory bandwidth AFAIK.

[−] qrios 54d ago
It’s been a while since I’ve struggled with Xilinx tools, but I can’t imagine there aren’t any hardware limitations these days. Does this run on a Spartan 6, or do you need the latest UltraScale for it?

Or does this only run in simulation anyway?

[−] 12_throw_away 55d ago
I have such fond memories of my old Voodoo card. Surprised how much nostalgia those pictures evoked - its rendering really had a unique look this that (LLM-generated?) FPGA captured quite well.

IIRC, it was a gigantic (for the time) beast that barely fit in my chassis - BUT it had great driver support for ppc32/macos9 (which was already on its way out), and actually kept my machine going for longer than it had any right to.

And then, like a month after I bought it, NVidia bought 3dfx and immediately stopped supporting the drivers, leaving me with an extremely performant paperweight when I finally upgraded my machine. Thanks Jensen.

[−] RadicalEyes 51d ago
I was wondering if modern 2d games with modern Linux OS could run on Voodoo and lucky I found this post instead of it being 3 years old.
[−] userbinator 54d ago
You may find this related article interesting: https://news.ycombinator.com/item?id=32960140
[−] KallDrexx 54d ago
Which actual FPGA is this running on? I've been extremely curious on this space and would love to know what it took to actually get this to run.
[−] TapamN 55d ago
Oof. The gamma on that screenshot.

If you want to see what it's supposed to look like, copy the screenshot into GIMP, go into "Color, Levels" and in the "Input Levels" section, there should be a textbox+spinner with a "1.00". Set that to 0.45.