Riva TNT Information (Stand: 1999-07-29)
====================

Installing new drivers
----------------------
* Delete any old registry information.
  Use the Registry Editor, go to: HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation
  Delete the folder called "RIVA TNT"
* Install the new driver.
* Establish the Direct 3D and OpenGL registry.
  This is recommended as sometimes programs may run incorrectly, especially in 16bit, until the registry is fully initialized.
  Select the "Advanced...." button
  Select the "RIVA TNT..." tab
  Select the "Additional Properties..." button
  Select the "Direct3D Settings..." tab
  Select the "Restore Defaults" button
  Select the "Apply" button
  Select the "OpenGL Settings..." tab
  Select the "Restore Defaults" button
  Select the "Apply" button

  
Enable PowerUser options
------------------------
[HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RivaTNT\NVTweak]
"PowerUser"=dword:00000001


VSync Support in OpenGL of 2.08
-------------------------------
VSYNC has been left disabled by default, but to enable it, you can change the registry key:
[HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RIVA TNT\OpenGL]
"DefaultSwapInterval"=dword:00000001

What you're setting when you do this is the minimum number of vblanks that will pass between each rendering frame.
That's currently set to 0xffffffff (which means disable vsync wait and don't even allow apps that want it to enable it).
You can change that value to 0 to say "Disable Vsync by default, but apps can override it" (for example Quake2/3 will override it if you set gl_swapinterval or r_swapinterval).
You can set the key to 1 to say "Enable Vsync by default".
Apps can still make a call into our OpenGL driver to disable it if they want to.


Enable ForceMultiTexture in OpenGL 16Bit
----------------------------------------
[HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RivaTNT\OpenGL]
"ForceMultiTexture"=dword:00000001

This enables multitexturing in 16 bit mode, which by default is disabled.
In 32 bit mode this is by default enabled.


NoVSync Support in Direct3D (accessible through advanced Direct3D options when PowerUser enabled)
---------------------------
For several game titles, it is often desired to run them without V-SYNC.
To accomplish this, please follow the steps below.

1 - Establish the Direct 3D registry.
    If you followed the steps above for installing the new driver, you will have to create a new Direct 3D registry key.
    This is easily done through the "Display Properties" control panel

      Bring up "Display Properties" control panel.
      (Right mouse click on the desktop - select "properties" from menu) Select the "Settings" tab
      Select the "Advanced...." button
      Select the "TNT2" tab
      Select the "Additional Properties..." button
      Select the "Direct3D Settings..." tab
      Select the "Restore Defaults" button
      Select the "Apply" button
2 - Create a new DWORD in the Registry
      Use the Registry Editor, go to: HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RIVA TNT\Direct3D
      Create a new DWORD value called NOVSYNC Modify the value of NOVSYNC to be 1.

If you want to return to a VSYNCed behavior, you can merely modify the value of NOVSYNC back to 0.

This gives you a few more possibilities in the NVIDIA tab in the screen properties.
(some drivers before Detonator 2.08 may have "NV4Tweak" at the end of the reg key)


Avoid crashes in OpenGL with VSYNC enabled on Super7 systems (seems to be unnecessary for 2.08)
------------------------------------------------------------
[HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RIVA TNT\OpenGL]
"EnableBufferFlipping"=dword:00000001
"EnableVBlankWait"=dword:00000001

This enables BufferFlipping, so the bus will not get locked up.
VSync has to be enabled to avoid flickering.

Extract from Nick Triantos' plan file about 2.08:
"ALI chipset workarounds.  We've found what we hope is the secret sauce
 for allowing our graphics cards to work in the ALI 154x chipset-based
 motherboards."


VSync off speed with no tearing (taken from Entech's FAQ, http://www.entechtaiwan.com/)
-------------------------------
If, on a given hardware platform, an application is capable of rendering at, say, 75 FPS with vsync off, optimal refresh rates with vsync on will likely be 75Hz and 150Hz - clean multiples of the raw rendering frame rate, that come closest to sync'ing screen refreshes with page flips.
At 60Hz or 120Hz, an application that renders at 75 FPS with vsync off, is likely to deliver only 60 FPS with vsync on.
The "Optimal" refresh rate is not, therefore, the one which Windows chooses, or the highest your monitor can reach at any given resolution - its the one that comes closest to sync'ing with page flips.
Although experimentation with different refresh rates is required, it is possible to approach the raw rendering speed you get with vsync off, but without suffering the visual degradations of tearing.


Quake 3 32-bpp textures
-----------------------
If you use 32-bpp textures ("r_texturebits 32") you have to set texture quality one below max ("r_picmip == 1").
Otherwise you will suffer a big performance hit as the local memory of 32MB is not enough.


OpenGL texture depth
--------------------
Extract from Nick Triantos' plan file:
Many applications do not specify what they want the texture depth to be.
They tell OpenGL that a texture is RGB or RGB+Alpha, but don't explicitly request 32-bits per pixel.
We default to choosing 16-bpp textures unless the app requests otherwise, but if you want to change that, set the reg key:
[HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\RIVA TNT\OpenGL]
"RenderQualityFlags"==dword:00000004
Change from 0 to 4, this will set a bit that tells our OpenGL driver to default to 32-bpp textures unless the app explicitly requests a 16-bpp texture format.
