the Glide Wrappers for Unreal Tournament made by Rolf Neuberger.
All the Glide Wrappers are made by Rolf Neuberger, his website can be
found here: http://www.zeckensack.de/glide
Zeckensack's Glide Wrapper implements and emulates the 3dfx Voodoo cards'
native Glide2 and Glide3 APIs on top of OpenGL, and supports a lot of
games written for Glide and that included Unreal Tournament. Obviously
you should install the latest version which can be found on top of the
page. Below that are the older available versions.
Changes: version 0.84c posted Jun-19-2005 vs version 0.84b posted
the Glide 3 FOGCOORD extension now works properly on the R200 tier1
path (previously there was no fog in Glide64)
fix (rare, corner case) chroma keying glitches on the tier2 path
(regression; introduced with the tier0 chroma stuff in 0.84b)
work around a vertex program compiler issue in DeltaChrome drivers.
This fixes the instant crash on startup. These cards still don't
work well with this wrapper, though.
allow running the r200 tier1 path on S3 DeltaChrome. It supports
the required extensions with recent drivers.
multi-user support workaround: store successfully expanded %appdata%
values in HKCU portion of the registry. If the system later fails
to expand the %appdata% string, this previous expansion will be
used instead. This fixes configuration issues with "game launchers"
that don't pass environment strings to their child process (e.g.
Changes: version 0.84b posted Jun-03-2005 vs version 0.84 posted May-19-2005
thrown out some debugging hacks for Motorhead that accidentally
made it into the 0.84 release
fixed small resource leak in ARB_fp path (two shaders lost on close/reopen)
fixed a depth test state issue (affected Glide64 with Quake and
F-Zero X; regression)
fixed discoloration of RGB332 textures
added limited chroma keying support in both tier0 paths (R100 and
NV10). This will only work with paletted textures.
improved message pump behaviour for "Use render thread"
and "One thread for both" thread policies. This resolves
the stuttering in Need For Speed 2SE.
added a secondary method to close the rendering window if DestroyWindow
fails (Win32 design flaw). This fixes the issues with the fullscreen
toggle in Project64/Glide64.
added support for pure depth buffer writes (fix for an unreleased
now use depth textures for depth buffer writes when in tier2 mode
(fixes semi-transparent car interior in Test Drive 4 when using
implemented palette/ncc look-aside buffers for a small performance
boost (e.g. Unreal Engine games)
Changes: version 0.84 posted May-19-2005 vs version 0.82b posted Dec-30-2004
core: recycled textures now always have the correct filter and clamp
modes applied (manifested as grainy textures in Ultima IX, Tribes,
and other games with high recycler activity)
core: the fog table is now preserved and reapplied properly across
ALT+TAB (affected Ultima IX)
core: mulibase textures are now properly mipmapped (fixes texture
shimmering in Powerslide)
core: plugged a memory leak where the list of supported display
modes could be produced multiple times
core: client alpha usage detection now properly takes additive blending
into account (fixes disappearing text in To Be Continued demo when
running a tier 1 path)
core: clip rectangle state is now resolved in the frontend. This
fixes corruption in Driver when using threaded rendering
core: a number of bugs in tier 2 shader code generation have been
fixed thanks to strong syntax checks in GCC :-)
core: support for streaming stores (MOVNTQ) is properly detected
on Athlon (non-XP, non-64) processors again
Glide3: line strips from contiguous vertex arrays are no longer
garbage (SDK Test 31)
Glide3: no longer use a precedence rule if both "packed rgba"
and floating point per-vertex colors are enabled. Instead use whichever
was specified last. This appears to be the way it's supposed to
be (as seen in SDK Test 31)
Glide3: fixed aspect ratio/lod handling during 3df file parsing
(crashed several Glide3 SDK tests)
confer: profile list sorting is no longer case-dependent
confer: renaming a profile no longer causes unwanted profile switching
after making a change
install: fixed a problem with handling the "don't create Start
menu entries" option that previously resulted in a harmless,
silent error (might have caused an event log entry or whatnot)
lfb subsystem improvements:
automatically release read locks on buffer swaps. This works around
an issue with MDK, where saving multiple times in a single session
would crash the game. MDK never releases its read locks, which is
clearly a bug in the game.
the wrapper can now automatically select and adapt to the current
graphics card's preferred readback format. Radeon cards <=9250
benefit the most; raw readback performance doubles on these cards.
framebuffer downfiltering (for lfb reads in high res modes) is now
done in hardware. This is much faster because the number of pixels
that must travel back over the bus is quartered. Any upside-down
flipping will also be handled at the same time for better bandwidth
efficiency on the CPU side.
the pixel format converter used for readbacks now use prefetching
for a further small performance boost
split the color lfb into separate read and write buffers. This allows
still being able to detect which pixels have been modified by a
lock, and which ones were untouched, instead of falling back to
the assumption that the whole buffer might have been modified. This
is both faster and nicer, as only modified pixels will be written
back and (in high-res mode) unmodified pixel quads will not be replaced
by their downfiltered version.
E.g. in Outlaws, using earlier wrapper versions, toggling on the
map overlay would reduce effective color depth from 24 bits to 16
bits; when in high-res mode, you'd also end up with 2x2 supersampling
instead of true 2x2 increased resolution.
Not anymore. Full resolution and color quality is maintained.
pure color buffer clears, when restricted to a small scissor region,
will now be handled by the lfb subsystem. This prevents flushing
of write buffers on multiple write locks interrupted by clears.
MDK is probably the only game that benefits at all from this. Its
performance index shows a 2.5x speedup from this optimization alone.
This qualifies as an app specific driver cheat :-)
avoid clearing the whole write buffer with the "magic color"
and instead clear only modified tiles, if possible. This can save
CPU cycles and memory bandwidth when only small portions of the
locked region have been modified (which is quite common outside
of fullscreen video playback).
Reworked installation for proper multi-user support and full functionality
on restricted user accounts on NTFS volumes. Nothing changed for
Win9x, but the following takes effect on Windows 2000 and Windows
the installer/uninstaller will now complain and exit early when
started without admin rights
the premade config, if installed, now serves as a read-only template.
Every user who uses Glide (or uses the confer), including the administrator,
will automatically get a private copy of this first thing in the
morning, and will not be able to modify other users' settings
This fixes the following issues seen in previous version on Windows
2000 or XP:
when installed by an admin, restricted users could not save any
configuration changes (RUs can't modify admin-owned files)
when installed by a restricted user, the premade config could not
be used (RUs can't write registry entries in the HKLM tree, so the
core DLLs didn't know where to look for the config)
when installed by an admin, the uninstaller could be executed by
a restricted user but would not work (RUs can't delete admin-owned
when installed by a restricted user, uninstallation wouldn't work
at all (install dir is stored in/pulled from HKLM tree where RUs
On the downside this will leave the private configs on the system
after uninstallation (in %userpath%\application data\).
added code to prevent running the Radeon 7xxx tier 0 path on Radeon
models >=8500 and <=9250, due to extreme backward compatibility
issues in current drivers. Bump up to tier 1 instead.
If you've ever wondered what's wrong with "basic stuff only"
on these cards, let me just say that it *does not* look like that
when run on real first-generation Radeons. Not even remotely.
adjusted tier2 chroma keying code. Fixes gaps in Red Baron 3D cockpit,
solves Speedbusters issues on Radeon 9500+, corrects cursor outline
in Tribes and potentially other similar glitches.
made Glide3 grGetString more consistent with the real thing
made NCC table handling consistent with the real thing. Now always
use the "packed data" representation of the NCC table
Updated 3df loader to generate this stuff
made the texture object recycler more effective
added "Always on" vsync option as requested and also threw
in the "Frame limiter" option
added new thread policy "One thread for both"
added configurator tooltips, capitalized item names as requested,
other minor cosmetic changes
the confer can now detect DLLs with higher search priority (in %windir%\system32)
and throw an appropriate warning. This was previously handled with
the popular "The wrapper's glide2x.dll is missing" error
and caused lots of confusion.
added the Delete profile button
Changes: version 0.82b posted Dec-30-2004 vs version 0.82 posted Dec-21-2004
the (new) mouse issues in Diablo 2 and Carmageddon 2 that have been
introduced with 0.82. Oh well ...
core: hardened against race conditions. Fixes the crash when ending
emulation in Project64 (w F12) in conjunction with the "use
render thread" thread policy.
core: converted mipmap generation code from C to MMX assembly (2~4
core: no longer unlatch all state for buffer clears. This avoids
texture/palette cache thrashing (very small performance increase)
configurator: renamed "hard to explain" thread policy
to the more logical "use system thread"
Changes: version 0.82 posted Dec-21-2004 vs version 0.80e posted Jul-21-2004
wrap around large lod bias values to keep them in the [-8;8) range
(fixes texture blurriness in Boss Rally)
core bugfix: made timing compatible with non-constant processor
clock speeds (Intel "SpeedStep", AMD "Cool'n'Quiet"
and similar power saving techniques). This fixes the function of
the "pedantic" vsync option and the scanline query on
core bugfix: now force point x/y coords to pixel centers to avoid
filtering/smearing of point primitives during simultaneous read/write
locks in high res mode. This is intended to fix bluriness in Jane's
F15 cockpit views.
core: multithreading is here - also added the "thread policy"
option to control it
core: rolled my own mipmap generation. All texture formats. This
makes this option actually usable, from a performance point of view,
for owners of ATI cards, and glitch-free for the NVIDIA camp, regardless
of driver version. NOTE that now using "generate mipmaps"
disables hardware palette support (NVIDIA only), and that will cost
core: disable the aniso workaround for Catalyst 4.9 (or newer).
Catalyst 4.9 fixed the issue that required this workaround.
core: ignore the "allow_sse" option. The core DLLs now
use an automatic (exception-catching based) detection instead.
core: quite unexplainable texture recycler tweaks
profile management changes:
a single profile can now apply to multiple executables, in the most
common case to a game and some kind of supplemental setup tool (e.g.
Wiz8.exe and 3DSetup.exe for Wizardry 8). This mainly helps to avoid
clutter in the profile list.
there can now be distinct profiles for multiple executables that
have the same name. The distinction is made by looking for other
files in the exe's folder that are specific to a game. E.g. both
Diablo 2's and Independence War's main executables are called "Game.exe"
and couldn't be distinguished by previous versions of the wrapper
(consequently there was no way to make separate profiles for the
two). But other files in the same folder can be used for recognition.
NOTE that there's currently no user friendly way to work with this
functionality yourself, it's only available through manual ini editing.
The premade configuration uses it to cover a few cases.
configurator: can now rename profiles. Currently ASCII only, no
support for unicode characters (e.g. Kanji)
configurator: as per core change, removed the "allow SSE"
option from the user interface.
Changes: version 0.80e posted Jul-21-2004 vs version 0.80d posted
bugfix: large RGB332 textures don't crash anymore (affected Gex3D;
regression from 0.78b)
Glide2 bugfix: polygons are properly split across multiple vertex
buffers again (affected all Unreal engine based titles; regression
Glide3 bugfix: the "EXT_FOGCOORD" fog mode now actually
works (affected Heli Heroes)
usability bugfix: executable names starting with a number no longer
produce multiple profiles, and can be configured properly again
(regression from 0.78b)
chroma keying changes in R200 path (fixes garbled menu in ManxTT
the gamma ramp is now reapplied after ALT-TAB task switching
scaled up point size in high res mode
added a workaround for ATI's aniso issue (autodetected at runtime)
lots of multithreading framework stuff ...
Changes: version 0.80d posted Jun-25-2004 vs version 0.80c posted
Glide3 bugfix: polygon/fan tesselation no longer clobbers the (client
supplied) list of vertex pointers (affected ePSXe w Lewpy's Glide
readded redundant ShowWindow call (mysteriously brings back sound
Changes: version 0.80c posted Jun-25-2004 vs version 0.80b posted
Use EXT_blend_func_separate functionality only if the driver exposes
the extension. It's a core feature in GL1.4, but using it on Geforce
<=4 cards forces software rendering ...
This was a regression from 0.78
Changes: version 0.80b posted Jun-24-2004 vs version 0.80 posted Jun-20-2004
core changes (these affect both Glide2 and Glide3):
bugfix: the clip window can no longer "wrap around" the
bugfix: "z" type depth is no longer garbage in base x86
bullet proofing: games no longer cause crashes if they temporarily
deactivate the Glide window and lock a buffer during that time
updated installer script to put the DLLs into \WinNT instead of \WinNT\system32
(\Windows instead of \Windows\system on Win9x). If you install over
a previous versions, the old DLLs will be automatically deleted from
the system directory (only if they are identified as "mine").
improved "malformed vertex" handling. Fixes issues with
the mouse cursor and map overlay in Dethkarz
bugfix: separate vertex alpha in 3DNow! path is no longer converted
to garbage (affected eVoodoo 2.6)
bugfix: separate vertex alpha in base x86 path no longer crashes (affected
bugfix: line strips no longer produce an extra random line segment
added support for TEXMIRROR extension
Changes: version 0.80 posted Jun-20-2004 vs version 0.78b posted Mar-05-2004
core changes (these affect both Glide2 and Glide3):
bugfix: no longer lose hardware palette during close/reopen sequence
(affected: Outlaws on Geforce line after accessing game options)
regression fix for Tarzan's pink intro video issue
bullet proofing: applications no longer crash when attempting buffer
locks too early (general protection fault with invalid read at adress
bullet proofing: applications no longer crash when attempting to download
textures too early
bullet proofing: early-out on polygons, strips and fans with less
than 3 vertices (fixes a crash in Operation Flashpoint)
bugfix: automatic mipmap generation can no longer be enabled without
the driver supporting the relevant extension
now support multibase texturing (fixes garbled textures in Powerslide)
another update to gamma handling. Should now properly restore desktop
gamma on exit, regardless of driver version, as long as the game shuts
another small change to "force trilinear" and "force
mipmaps" behaviour. I now leave alone all textures that must
be unfiltered for certain effects to work correctly (namely chroma
keying and alpha test)
now install a message filter into client windows to prevent oddities
(window sizing, mouse cursor positions, etc)
no longer move/resize the client window at all ...
overhauled resolution enumeration and switching. Now uses the same
consolidated code for Glide2 and Glide3.
~50% improved framebuffer readback performance in high res mode (affects
Outlaws map overlay, Carnivores sun glare effect, etc)
lots of changes to fog emulation. Table fog will have nicer interpolation
behaviour now, we no longer need EXT_fog_coord and vertex preprocessing
is simplified. This will make it a lot easier to support a broader
range of graphics hardware ...
added (untested) support for Wildcat VP cards :-)
These can now run on a slightly modified NV2x (tier1) codepath. This
has only been tested on a Geforce 3 -- I actually just bought a Wildcat
VP but it's still in the mail
now use vertex shaders (if available) to enable more compact vertex
layouts and minimize software preprocessing
now convert ALPHA_INTENSITY44 textures to RGBA4444 instead of INTENSITY_ALPHA_88.
Same footprint, slightly better decoding speed, reduces pressure on
texture recycler and it's a "native" texture format for
now convert RGB332 textures to RGB565. same reasons
done away with the whole "garbage collector" concept and
instead overhauled the "recycler". Good for KQ8 and Diablo
2, bad for Tribes 1 (see respective notes)
numerous other small changes I forgot to mark down
Glide 2 related changes
added full software clipping. Sheesh ...
This was supposed to fix the issues in F1 and F1'97, but sadly it
Glide 3 related changes
bugfixed partial texture updates
added missing functionality:
triangle lists, line lists, line strips, point lists
a whole bunch of grGet queries
added and exposed anisotropic texture filtering controls
thrown away the "R300 line smooth workaround" configuration
option. The need for this is now automatically determined at runtime
replaced the "allow float shaders" option with a "functionality
limit", which is hopefully a little less confusing and more versatile.
This also adds the ability to "deny service", so to speak.
added the ugly little "gamma helper" to restore desktop
gamma after crashes
switched to NSIS2 installer for better compression
Changes: version 0.78b posted Mar-05-2004 vs version 0.78, posted
... a couple hours earlier
changed mouse capture stuff a bit. The mouse will now work in Diablo
2 on Win2k and WinXP. Sorry 'bout that.
this also somehow fixed Carmageddon 2 :-)
Changes: version 0.78 posted Mar-05-2004 vs version 0.76b, posted
broken array bounds check in gu texture management (affected: Psygnosis's
F1, F1 '97)
bugfix: unclean shutdown/restart sequence (memory leak)
bugfix: wrong timing information for 75Hz modes - it was 60Hz. Duh!
first release with Glide 3 support
added and exposed resolution limit and refresh rate controls
increased chroma keying precision in NV2x path (fixes some Diablo
changed gamma handling - set gamma ramp for the render window, instead
of the screen
use RGBA texture uploads instead of plain RGB. This is quite a bit
faster on Radeon cards
added a "recycler" for textures thrown out of the cache
due to collisions or garbage collection.
this makes life a little easier for the OpenGL driver (stabilizes
performance in Diablo 2 and Tribes)
made emulation of the current scanline query for grSstVideoLine
much more sensible (fixes Test Drive 4 menu flickering)
this was actually already in 0.76b but somehow wasn't mentioned
in the changelog.
Changes: version 0.76b posted Feb-22-2004 vs version 0.76, posted
bugfix: color buffer write locks that didn't write anything have left
some render states clobbered (affected: I-War)
bugfix: on Windows XP, the client window could move partly offscreen,
making menus inaccessible (affected: UltraHLE)
now advertises 4MB framebuffer memory (enables resolutions above 640x480
in a few more games, such as I-War)
hack: write locks to the depth buffer are still not supported, but
they will now trigger a depth buffer clear. This behaviour is *wrong*
but it fixes Croc's intro sequence, and no other game I know of uses
pure depth buffer write locks anyway.
added support for hardware palette decompression (saves video memory
on Geforce series)
more restructuring for moving towards Diablo 2/Glide3 support
Changes: version 0.76 posted Feb-07-2004 vs version 0.74, posted Sep-11-2003
bugfix: texture memory updates may fail to update all overlapped textures
(no known affected applications)
implemented "high res" mode and exposed it
LFB writebacks are now tile based (MDK performance index up from 170
also assign low texture priority to lfb buffers (encourages AGP texturing,
frees local memory on lower end boards)
reimplemented vertex preprocessing to be fully modular, to ease transition
to Glide3 support
various mouse and window handling fixes
another small fix to mouse cursor visibility (removes system mouse
cursor from JSF menu screen)
redirect all mouse input to client window (enables mouse controls
in Red Baron 3D, King's Quest 8: Mask of Eternity)
handle WM_SETCURSOR messages to avoid the Windows "ding"
sound on mouse clicks
move client window to "NOTOPMOST" instead of "BOTTOM"
(Red Baron 3D is no longer lost in the background after exiting flight;
similar for UltraHLE)
tweaked client window resizing to make Red Baron 3D mouse cursor correctly
'hit' menu buttons
window no longer shows up in the systray or the ALT+TAB task switcher
increased maximum selectable texture memory from 8MB to 16MB
bumped up subpixel precision - previously 4 bits, now >=11 bits
extensive gold plating
"shader optimizer" :-) - conserves effective fillrate
lots of smaller bug fixes and stability improvements
various efficiency tweaks
Changes: version 0.74 posted Sep-11-2003 vs version 0.70beta, posted
Complete rewrite of all things LFB
Much better performance, especially on Radeon line (MDK performance
index 40 -> 150)
Handles simultaneous read and write locks to the same buffer (fixes
Outlaws menu issue)
Can now transfer multiplexed depth/color data (Test Drive 4 car interior)
Can blend/alpha test/depth test lfb transfers
fixed texture format precision issue with chroma keying (Ultima IX,
Rayman 2, Red Baron 3D on R300)
fixed broken alpha/intensity44 texture converter (texture corruption,
possible GPF; Dethkarz)
fixed clip window off-by-one issue (MDK health bars, jump sequence)
mangle w buffer clear values to match geometry depth (fixes Dethkarz
"where am I?" issue)
replace GL polygon offset with per-vertex processing and clamp
make depth bias non-linear when w buffering (fixes most of Ultima
IX z fighting)
found and removed even more CMOVs (K6 compatibility, as promised last
fix "aitrgb" bug (but not a single game uses it?)
added ARB_fragment_program target and exposed it
added and exposed "r300 line smooth workaround"
fixed indexed polygons having their last vertex shredded to bits
corrected wrong texture format size information
added missing z fog support
the configurator now displays the core library release version
made "force trilinear" a little stronger; it will now also
replace point sampling with a linear base filter
now support MULT2 multipass fog mode in all paths (duh ... black!)
fix missing output inversion in R200 path