VOGONS


First post, by ElTentakel

User metadata
Rank Newbie
Rank
Newbie

Glidulator GL-1 0.9.0 (preview) - a software implementation of the 3dfx Voodoo Graphics and Glide 2.x for real DOS and Windows 95/98/ME.

"The Voodoo-compatible 3D accelerator that fits in a single file. No add-in board. No pass-through cable. No jumpers."

Hi everyone,

Up front, in all honesty: this project would never have been possible without AI. A large part of the code was written together with an AI assistant. If that's not your cup of tea, no hard feelings - there are plenty of Voodoo 2 cards out there that maybe Glidulator has just made obsolete.

For everyone else: what if a modern PC booting plain DOS could run the 3Dfx versions of games and demos without a Voodoo card? That's what Glidulator does. It replaces GLIDE2X.OVL (DOS) or glide2x.dll (Win9x), and the game renders through a CPU-based Voodoo Graphics instead of the real card.

How it works

  • Glide calls program the same Voodoo registers that 3dfx's driver did. A register-accurate rasterizer ported from 86Box then draws the triangles: perspective-correct textures, mipmaps, Z/W buffer, fog, alpha blending, NCC/YIQ textures, the 4x4 dither, and the RAMDAC gamma.
  • Unlike Glide wrappers, it does not translate to Direct3D/OpenGL. It needs no GPU driver at all, which is the whole point under real DOS.
  • x86 JIT: the pixel pipeline is compiled to SSE2 code for each render state.
  • Multi-core under DOS: the OVL starts the additional CPU cores itself (INIT/SIPI) and uses up to 4 of them as render workers. This works on plain DOS / HIMEM, and also under SBEMU with HDPMI32i (ring 3, on the host's page tables).
  • Output via VBE 2.0 LFB with aspect-correct scaling to any mode, with a VGA mode 13h fallback. Write-combining via MTRRs on real hardware.

Optional extras (all off by default)

  • FSAA like the Voodoo 5 (2x/4x rotated grid, or auto)
  • The Voodoo Graphics video output filter for the authentic "Voodoo look"
  • A CRT effect that makes the screen "lock on" like an analog monitor when the game switches to 3D
  • 3dfx's spinning logo, read from an original GLIDE2X.OVL/DLL you already own (nothing from it is executed)
  • An OSD with fps, render path and thread count

Tested
DOS: Nature, Dimension, Shortcut, Trip, Fucktory, GTA, Burnout, Archimedean Dynasty (menus)
Windows: GLQuake (with the original 3dfx MiniGL), Nature95, Formula 1, Uprising, all 7 entries of Operation 3DFX '98
Real hardware: Core i7-4770T with FreeDOS and Windows 98SE. Under SBEMU + HDPMI32i, Nature and Dimension run with 3 render workers and the JIT.

About performance: so far the focus has been on correctness and compatibility, not on speed, so there are no benchmarks yet. The OSD (GLIDULATOR_OSD=1) shows the frame rate if you're curious, and numbers from your machines are very welcome.

Requirements
CPU with SSE2 for the JIT (it also runs on a 386, just... don't). For multi-core under DOS: no memory manager, HIMEM only, or SBEMU with HDPMI32i. Under EMM386/VCPI and in the Win9x DOS box it falls back to one core.

Known issues in 0.9.0

  • Win98 + GLQuake: the picture can freeze in the attract demo behind the main menu. Press Enter and it continues.
  • Single-pixel gaps on shared edges of triangle fans
  • grAA*, guMP* and guTexCreateColorMipMap are stubs (no tested title uses them)
  • SBEMU with the VDPMI pre-release is experimental; HDPMI32i works
  • Win9x only uses one core (OS limitation)
  • Games with statically linked Glide (e.g. the 3Dfx Tomb Raider, Carmageddon) cannot be supported this way

Download & source
Release: https://github.com/ElTentakel/Glidulator/releases
Source (GPLv2): https://github.com/ElTentakel/Glidulator

The package contains Release, Trace (performance log) and Debug (crash handling, frame capture) variants, plus a commented GLIDULAT.CFG with every setting.

Feedback very welcome!
I'm especially interested in:

  • other DOS/Win9x Glide 2.x games: does it work?
  • real-hardware results: CPU, chipset, memory manager, and what the OSD shows
  • results with SBEMU on different sound chips

If something breaks, please run the Debug variant and post the GLIDULAT.LOG (here or as a GitHub issue).

Thanks to Sarah Walker and the 86Box team (the rasterizer this is built on), ranulphus/MGA-Glide (clean-room Glide 2.x ABI description), sezero for the Glide source mirror, crazii for SBEMU/VDPMI, and Japheth for HDPMI.

Reply 1 of 2, by willow

User metadata
Rank Member
Rank
Member

lands of lore 2 is a 3dfx dos game if you want test.

nglide and dgvoodoo 2 have some problems with this game and glide emulation.

Is it possible to use it with dosbox staging or dosbox-x ?

If you can add high resolution rendering support like dgvoodoo 2 and nglide, it would be amazing. i don't know if it is possible.

Reply 2 of 2, by ElTentakel

User metadata
Rank Newbie
Rank
Newbie
willow wrote on Today, 21:03:

Is it possible to use it with dosbox staging or dosbox-x ?

If you can add high resolution rendering support like dgvoodoo 2 and nglide, it would be amazing. i don't know if it is possible.

Yep, it runs in DOSBox, but you can’t use the multicore feature there. I haven’t tried running it as a wrapper around DOSBox yet, but I can’t think of a reason it wouldn’t work. Maybe I should add a multithreaded version for NT based systems. But then you might want to use a Glide Wrapper anyway.