Back to main readme and recent changes
Changes: version 0.82b posted Dec-30-2004 vs version 0.82 posted Dec-21-2004
- core: fixed 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 times faster)
- 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
- core bugfix: 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 such systems.
- 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 some performance.
- 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 Jun-25-2004
- core 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 from 0.80c)
- 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 Superbike)
- 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 Jun-20-2004
- Glide3 bugfix: polygon/fan tesselation no longer clobbers the (client supplied) list of vertex pointers (affected ePSXe w Lewpy's Glide
plugin)
- readded redundant ShowWindow call (mysteriously brings back sound to Dethkarz)
Changes: version 0.80c posted Jun-25-2004 vs version 0.80b posted Jun-24-2004
- 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 screen
- bugfix: "z" type depth is no longer garbage in base x86 path
- 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").
- Glide 2
- improved "malformed vertex" handling. Fixes issues with the mouse cursor and map overlay in Dethkarz
- Glide 3
- 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 eVoodoo 2.6)
- 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 0x0000000C)
- 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 down gracefully.
- 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 more cards
- 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 didn't.
- Glide 3 related changes
- bugfixed partial texture updates
- added missing functionality:
depth buffer
fog
triangle lists, line lists, line strips, point lists
gamma controls
a whole bunch of grGet queries
resolution queries
- usability changes:
- 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
- documentation cleanups
Changes: version 0.78b posted Mar-05-2004 vs vesion 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 vesion 0.76b, posted Feb-22-2004
- bugfix: 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 2 glitches)
- 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.
- documentation fixes
Changes: version 0.76b posted Feb-22-2004 vs version 0.76, posted Feb-07-2004
- 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 to 270)
- 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
-
- render 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 Aug-19-2003
- 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 time ...)
- 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
Changes: version 0.70beta, posted Aug-19-2003 vs version 0.69, posted May-26-2003
- removed the old 800x600 resolution cap
- now identify as SLI setup (allows higher resolution through Q2 MiniGL driver)
- fixed CMP_ALWAYS depth buffering issue (oh my ... UHLE/Q64)
- fixed the NV multi-pass fog issue (UHLE/Zelda)
- removed stray CMOVs from assembly module (compatibility w AMD K6 series)
- added a few dozen dummy stub functions to be compatible with Glide2x debug build (Vertigo's Nature demo)
- small efficiency improvements
Changes: version 0.69, posted May-26-2003 vs version 0.68, posted May-22-2002
This is mostly a bugfix release, as a couple of serious bugs have made it into the last release.
- found and fixed a serious issue with the ATIX_texture_env_combine3 path:
the dummy texture creation happened too late, only texture env0 worked at all (no color combiners ...)
- fixed an embarrasing bug (typo) in an updated 3DNow! vertex conversion macro (symptoms: Subculture without any textures ...)
- improved handling of mouse cursor visibility (will hopefully not show in Glide games anymore)
- improved polygon offset handling (fixes flickering car shadows in Test Drive 4)
- moved in the updated timer stuff from the archmark project (faster startup, much better consistency)
- updated configurator to expose the default_gamma setting
- added (and exposed) gamma_lock, lod_bias and lod_bias_lock settings
- documentation fixes (typos ...)
Changes: version 0.68, posted May-22-2003 vs version 0.59, posted Oct-02-2002
If you've been following this, you know that the last public release was way back. There are way too many changes
to list them all. The following list has been trimmed down for brevity.
- fixed a serious bug with extension loading after destruction/recreation of output window
- added recognition of GL_ATI_texture_env_combine3 extension (future driver releases may drop the ATIX version)
- fixed bug in alpha_intensity44 texture conversion (possible GPF/texture corruption)
- added fully functional NV_register_combiners code path (Geforce series support)
- completely changed vertex conversion wrt to perspective projection. faster, and eliminates all multi-pass depth artifacts
- fixed a long standing, stupid bug in fragment shader caching (R200 path). performance more than doubled (U1 Flyby minimum fps at low resolution)
- fixed broken ARGB1555=>RGBA8888 pixel converter (affected: Subculture)
- relocated all assembly code from inline to its own NASM module (better compiler portability)
- added SSE vertex conversion
- implemented a convex polygon 'tesselator' that transforms everything into triangle lists. this has several benefits:
- GeometryPipe::submit is much more lightweight (no more branches in critical path, everything goes through glDrawArrays)
- intermixed polygon/triangle rendering can be collapsed into a single triangle batch (Ultima IX seems to benefit)
- we don't need index storage and management anymore
- many, many more small bug fixes and efficiency improvements
- added 'configurator' companion app, and made a few things configurable. this also obsoletes the 'alternative'
version. use the 'render to client window' option instead.
- changed to proper install system (NSIS script)
- switched to HTML for the documentation