PDA

View Full Version : Mini-tutorial: How to edit AA compatibility modes without nHancer


Sweetz
09-24-09, 12:05 AM
---UPDATE---
As of the 191.xx series drivers, a lot of this info is now irrelevent. The drivers now directly read the profiles from the nvapps.xml file. Although the profiles are still maintained in the registry, they're not actually used anymore (why nVidia still does it then, is a question for nVidia).

As a result, you pretty much just need to do steps 6 & 7 below and can skip all the registry editing stuff.

------

I've been meaning to write this down for a while, now is as good a time as any.

I think nHancer is a great app, but it's something I only rarely have a user for, since I don't often have the need to change settings that can't be accessed through the nVidia control panel. When the odd occasion pops up that I do need to edit something that can't normally be accessed (most of the time AA compatibility modes), it's a bit a of a hassle to find the latest version of nHancer and install it; and of course major driver revisions can break it from time to time until the author is able to update it.

So with a bit of research I learned where the nVidia profiles are stored, what they mean, and how to edit them directly.

---Here begins the tutorial---

There are two parts to nVidia profiles.
•The first is nvapps.xml, which many of you may be familiar with (In Vista it's kept in the hidden directory C:\ProgramData\NVIDIA) This is really just a backup or secondary reference of the profiles. This is not what the drivers actually use during runtime and making changes to this file only will not actually be put into effect when the game is run.

•The second is registry entries - which is what the drivers actually use during runtime. These are stored under: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cl ass\4D36E968-E325-11CE-BFC1-08002BE10318\0000\

Rather than straining your eyes to find the right device class GUID (that big code), it's easier just to perform a find for one of the appropriate keys.

1. To find the appropriate registry path, do a find on _3Dmark (include the underscore!)

2. What you'll see is a list of all the profile settings. They have the following format:
_GameExecutableName.exe:D3DOGL_[setting enumerated value].

Every setting you see in the control panel, and some you don't, are assigned a numeric value. The one you'll see most often is 67207556, which is the enumerated value for the SLI mode setting. So for example, the registry key that determines the SLI mode used for Cryostasis is: _cryostasis.exe:D3DOGL_67207556

3. The two enumerated values we're worried about regarding AA compatiblity modes are:

05143845 - This is the AA behavior setting, it locks you out from being able to select the "Override any application setting" AA mode in the control panel. This corresponds to "aa_behavior_flags" in nvapps.xml

32661390 - This is the AA compatibility mode setting. The value of this determines what special AA mode is used. This corresponds to "aa_feature_bits" in nvapps.xml.

4. So if you want to try out a certain AA compatibility mode on a game, first you need to delete the 05143845 key if it's present. Then find the 32661390 setting for the game that has the compatibility mode you want to try. Double click, and copy the value from the editor window.

5. Create a new Binary value key for the game you want to modify and name it according to the above format (assuming the game doesn't already have a 32661390 key) E.g. If you wanted to try an AA compatibility mode for dead space, you'd name it: _deadspace.exe:D3DOGL_32661390. Double click the new key to edit, and paste in the value from the source game.

6. You should make the corresponding edits to the nvapps.xml file. Find your modified game's section and remove the aa_behavior_flags line if present:
<PROPERTY Label="aa_behavior_flags" Value="0x00000001" Default="0x00000001" Itemtype="predefined"/>

And also copy the aa_feature_bits line from the source game to your target game's section:
<PROPERTY Label="aa_feature_bits" Value="0x[some value]" Default="0x[some value]" Itemtype="predefined"/>


If you want to try different aa_compatibility modes, obviously you just need to change the value of the 32661390/aa_feature_bits setting.