XGl200 0.03a a.k.a. Scott's Glide Wrapper
------------------
In case you don't know, this is a program that emulates 3dfx
hardware by translating Glide (3dfx's proprietary programming
interface) calls into Direct3D calls.
I'm developing this on a system with a G200, so results are 
probably best on that card.  However, I have heard that this
wrapper works well on ATI Rage Pro, Rage 128, and TNT cards
as well.


Usage (Be sure to read this!)
------------------
Just copy the file glide2x.dll to somewhere in your path. 
Alternatively, copy the file to the game directory (e.g., 
the same directory as ultra.exe in the case of UltraHLE).
You must also copy the configurator.exe file to somewhere.
The location is not critical, but you MUST run it before 
using the wrapper, and you must rerun it for every new 
version of the wrapper.


Testing
------------------
I have only tested this on my home system:
PII-400
G200
DirectX 6.0
Win98

Games:
Perfect:
None :-)

Almost perfect:
MadTrax
Croc - Legend of the Gobbos
Need for Speed 2
UltraHLE /w Mario 64
UltraHLE /w Quake 64
UltraHLE /w Zelda 64
UltraHLE /w Bomberman Hero

Very playable:
UltraHLE /w Doom 64 (very dark)
UltraHLE /w StarFox
UltraHLE /w WaveRace
UltraHLE /w Banjo Kazooie
UltraHLE /w Tetris 64


Playable, but a little slow:
UltraHLE /w Goldeneye
UltraHLE /w Mario Kart
UltraHLE /w Rampage World Tour

Playable, but ugly:
NBA Live 98
Pandemonium 2
Unreal
Outlaws



These are the only games I have to try it with, but let me know
if you have different results!


Source code
---------------------
Licensed under the Library GNU license agreement.  See below for details.
If you want to help develop, I'm not really interested in a partner,
but if you fix a nasty bug, let me know and I'll be sure to
include it.
You need VC++ 6.0 to compile the source.  No need for the  Glide 2.0 SDK 
anymore.


Credits
---------------------
Massive credits go to Khalid Shaikh of the DirectGlide wrapper and
Let of the Glid3D wrapper.  A number of times I got past sticky points
by glancing at (or sometimes cut & pasting from :-) these guy's code.
Other credits go to (for spotting bugs and other stuff):
Francisco Leong   For some great performance tips
Mark Bridgett	   For the awesome XGl200 logo!
Norman Jonas	   For some great programming tips
"ClideMan"	      For the great idea of using execute buffers
Wes Harris	      For bug reports and moral support 
Rene Gollent	   For some great help
Les Ramer	      For some performance tips
Richard R.	      For more performance tips	
Ryu ChongJin	   For pointing out a subtle bug
"Sifun"		      For showing me how to disable the cursor
and many more... (don't feel bad if I forgot you, I just have a bad memory)!


Configuration
---------------------
You can set various tweaks with the configuration tool
Please select your card under "Card Model" for the optimum
configuration.  If you don't see your card, please select 
default, and let me know so I can add your card to the list!

VSync:
	Tells the card whether to wait for a vertical refresh before 
	swapping buffers.  May be faster in off position, but ugly 
	"tearing" may result.
Antialiasing:
	May result in smoother appearance, but will be much slower, 
	and only supported by some cards.
Texture clamp mode:
	Try selecting "alternate" if characters seem to have duplicate
	features (i.e., Link has three mouths).
Z-Buffer:
	Can be used to reduce "out of order polygon" problems.  For example,
	the pathways in Zelda may flash.  The default for your card should 
	work best, but you might want to play around.  G200 owners, please
	enable "32 bit zbuffer" in Matrox Display Properties for best results!
AlphaOps/ColorOps:
	Only for the advanced user.  Gray checkboxes mean "use defaults".  For
	those of you who are wondering, if the intro Mario has a black head, 
	unselect D3DTOP_ADD to get it looking correctly... and be sure to let me
	know what configuration you're using, so I can add that to the list!
	The other checkboxes may or may not fix other blending problems.
FPS Count:
	Makes a cute little FPS meter in the corner of the screen.  It actually
	decreases performance slightly, so only use it for comparison.
Process Priority:
	Really, this is only for UltraHLE, although it may work for other games.
	Set to High or Realtime to boost the priority of UltraHLE, hence increasing
	it's speed (and decreasing the sound skipping).
Buffering:
	Triple is fastest if you have an 8+ meg card, but it might not be compatible
	with some games.  Set to double if you're having problems.
Card model:
	Select your card from the list to load the optimum settings.  The database will
	be expanded in the future, especially with input from you guys!  If you would
	like to see an addition, and you know the best settings for that card, let me
	know and I'll add it to the list.
Emulated Texture Memory:
	Sets the amount of memory the program thinks the card has.  A good setting
	is half the total amount of video RAM.  Some games seem to have trouble using 
	more than 4 megs.  I doubt that there is much of a performance increase 
	beyond that anyway.
Logging:
	This setting should not matter much.  If your glide.log file is filling up
	to megabyte size with error messages, drop me a line with the messages you're
	getting so I can attempt to fix them.  In the meantime, you can disable the 
	logging so your game doesn't grind to a halt.
ATI Text Fix:
	Enable a workaround to make text visible on the ATI cards in Zelda.  May make 
	the game ugly in other parts, though.  I don't know of a way to truly fix it,
	since their driver is broken.




Caveats
---------------------
Obviously, this is a work in progress.  
Many color/texture blending modes are not supported.  
You must have a hardware accelerator.
The wrapper will create a glide.log file in one of your directories.  It shouldn't get too
big unless you play for hours on end :-).
You'll quickly find out any other problems I forgot to mention :-).


Contacting me
---------------------
The best way is email, at spcutler@ucdavis.edu.  You may also visit my web page
at http://wwwcsif.cs.ucdavis.edu/~cutler (check out the programming section).  
You may also visit www.glideunderground.com for updates.


Version Log
---------------------
0.01   First versioned release
0.01a  Multi-resolution support
       Performance enhancements
       More color modes (Mario Kart fixes)
0.01b  Color mode fixes (Zelda fixes)
       Capability checking and logging
0.01c  (beta) Mario cart fixes
0.01d  (beta) Zelda text fixes for TNT and ATI cards
0.01e  Performance enhancements
       Official release of 0.01c-0.01d features
0.01f  Performance enhancements
       Zbuffer fixes, enhancements (water in Mario now correct)
0.01g  Zelda button text fixes
       Screenshots now work in UltraHLE
       NBA Live 98 almost works
0.01h  Mario Kart fixes
0.02   New configuration utility
0.02a  Fixed bug in config utility
0.02b  NFS2 SE now working again
       Performance enhancements
0.02c  More performance
       Broke NFS2, sorry :-(.
0.02d  NFS2 working again :-)
       Added FPS counter and priority setting to config util
       Color blending fixes
0.02e  Configurator additions
       Now correctly exits the window, so you may save games 
       to a file properly in UltraHLE
0.02f  Croc - Legend of the Gobbos working almost perfectly
       Fixed Z-buffer and color keying because of it (so other
       games may start working).
       Zelda text workaround on Rage cards
0.02g  Goldeneye bug fixed again
       Backend improvements
       Prformance enhancements
0.02h  Fixed palette support
       Compatibility improvements, Outlaws, Madtrax, NBA Live 98, and Croc
0.02i  Backend improvements
       Performance increases
0.02j  Frame buffer lock emulation (fixes Croc, among others)
       TNT Goldeneye fix
0.03   Removed the SDK!
       Lots of other bugfixes, I don't remember them all.
       The may be other problems, though, from converting to non-SDK code.
       

License
---------------------
Copyright (C) 1998-1999 Scott Cutler

This library is free software; you can redistribute it and/or             
modify it under the terms of the GNU Library General Public               
License as published by the Free Software Foundation; either              
version 2 of the License, or (at your option) any later version.          
                                                                          
This library is distributed in the hope that it will be useful,           
but WITHOUT ANY WARRANTY; without even the implied warranty of            
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         
Library General Public License for more details.                          
                                                                          
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free                
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 