PDA

View Full Version : 41.03 Refresh Rate Modes fixed!


jsg2021
10-24-02, 02:50 AM
In the new 41.03 dets the refresh rate modes have changed some what... instead of one entry for each nv chip...there is now just one entry. "NV_Modes"

This string valuse contains mode data for each nv chip...and is seporated by {chip hex id numer range}

the first entry is {*} this means ALL chips, and contains the common modes.


Because you only have 1 card, you can simply take your Modes delta string from the previous det40's and overwrite all that other data with it.

Ex:

{*}S 320x200 320x240 400x300 480x360 512x384 640x400=E0; SHV 640x480 800x600=E0; 1024x768 1152x864 1280x720 1280x768=6E0; 1280x960 1280x1024 1360x768 1600x900 1600x1024=10;SHV 1600x1200 1920x1080=C; 1920x1200=2; SHV 1920x1440=B; 2048x1536=F;


so basically all you need to do is append {*} to the begining of your string and paste over the default one.

You can find this value at:
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Video\ {128bit GUID number}\ 0000



also, recreating keys (ex: nv25_modes_delta, usecompressedmodes, etc...) will not work in this set. Just use the provided "NV_Modes" key.

Khan
10-24-02, 10:42 AM
hm well ok but it seems the coding of screenmodes has changed so that 10 for example no longer means "only 85Hz" as it was in the official 30.82.

For the 40dets I used Refreshforce to fix the refreshrate bug but with the new 41.03 this does not work anymore (I even had to use a restorepoint to get it to work again after I tried to use refreshforce after deinstallation and reinstallation of the 40.72 dets).

So I don't have a changed reg kez or NV_Modes entry for anything beyond 30.82. I basically want to force 85Hz for 640x480, 800x600 and 1024x768. What Hexcode would force 85Hz with the 40/41 dets?

jsg2021
10-24-02, 11:27 AM
ok, to calculate your mode take this 16-bit chart: (each bit represents an alowed/disalowed mode. (the left most bit is 15--its 16 on a zero based index-- and the right most is bit 0.

basically open windows' calculator, switch it to scientific, and set the mode to "Bin". Then reading from left to right, type a '1' for each mode you want to enable, and a '0' for each mode you want to remove/disable.

| X X X 240 | 200 170 150 144 |140 120 100 85 | 75 72 70 60 |

ex:
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0



once you have the binary number typed into Calc...switch the mode from "Bin" to "Hex"

and walla...you modes number :)

Khan
10-24-02, 12:34 PM
well that would give me 10 wouldn't it? And that didn't work. It was set like this:

640x480 800x600 1024x768 1280x960=3D;

and I changed it to:

640x480 800x600 1024x768=10; 1280x960=3D;

With the effect that I now had a locked refresh rate of 70Hz... when I tried to set it to 20 I received a crash and DX8 error message.

jsg2021
10-24-02, 12:55 PM
Originally posted by Khan
well that would give me 10 wouldn't it? And that didn't work. It was set like this:

640x480 800x600 1024x768 1280x960=3D;

and I changed it to:

640x480 800x600 1024x768=10; 1280x960=3D;

With the effect that I now had a locked refresh rate of 70Hz... when I tried to set it to 20 I received a crash and DX8 error message.


If you are using the 41.03s you must use the NV_Modes key. Assuming you are using that key...are you pre-appending "{*}" to the very beginning? that seems to be required.

20hex is 0010 0000 binary, which is 100Hz

This does work as it should. The valuse are not wrong. We just have to figure out whats isn't clicking into place :)

jsg2021
10-24-02, 01:20 PM
NVCompMode_UG_20.pdf (http://download.nvidia.com/Windows/40.41/NVCompMode_UG_20.pdf)
This pdf file's tutorial is still valid, the only thing that has really changed is how the data is grouped.

Instead of creating multiple keys for each chip (NVxx_modes_delta) they have consolidated them all into NV_Modes key.

The date for each chip is grouped by hardware product id number ranges. ex: {200-253} is all Geforce3s and Geforce4s through Ti4600. {100-288} is all Geforce256's - the latest AGP8x Geforce4ti
then there is the wildcard {*}, which means every and any chip. -- this is what we want to use.(we don't want to care about our hardware id #s do we:)?)

Follow the instructions of the pdf to create your modes string. Then edit the NV_Modes value with that string and be sure to have the wildcard group delimiter {*} at the beginning

example:{*}S 320x200 320x240 400x300 480x360 512x384 640x400=E0; SHV 640x480 800x600=E0; 1024x768 1152x864 1280x720 1280x768=6E0; 1280x960 1280x1024 1360x768 1600x900 1600x1024=10;SHV 1600x1200 1920x1080=C; 1920x1200=2; SHV 1920x1440=B; 2048x1536=F;

Renots
10-24-02, 01:33 PM
Within the 41.03 drivers i see the option to over ride the refresh rate built right into the drivers. I just went through it and set 800x600 and 1024x768 ( the only modes i ever use in games ) to 85mhz. And it seems to work. Im a newbie with this stuff so whats the diffrence between what i just did and what you guys are talking about? Thx

jsg2021
10-24-02, 01:51 PM
Originally posted by Renots
Within the 41.03 drivers i see the option to over ride the refresh rate built right into the drivers. I just went through it and set 800x600 and 1024x768 ( the only modes i ever use in games ) to 85mhz. And it seems to work. Im a newbie with this stuff so whats the diffrence between what i just did and what you guys are talking about? Thx

The difference is your method is preemptive, you change the values before you install...makeing the drivers a little more complex to install. (in number of steps, and complexity)

what i've done is change the modes data after the drivers are installed. (editing the registry)

if you have done the same thing to your INF file that i have done to the registry, then you have effectivly done the same thing. (modifying the NV_Modes string)

Khan
10-24-02, 01:56 PM
well then lets go into detail (many thanks btw for your replies!):

I don't have the registry entry at the place you described (there are only GUIDs that are different from 4D36E968-E325-11CE-BFC1-08002BE10318 which is the GUID listed in the NV4_Disp.inf file.

I guess the key for me is at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\Settings

There is a key named NV_Modes there which now looks like this:

{*}S 720x480 720x576=1;320x200 320x240 400x300 480x360 512x384 640x400=F;SHV 1920x1200x32=1;1600x1200x8,16=1D;640x480 800x600 1024x768=10;1280x1024=3D;1600x1200x32 1920x1200x8,16=D;{100-288}SHV 2048x1536x32=1;1920x1440x8,16=10;1920x1200x32=1C;1 600x900x32 1600x1200x32 1920x1200x8,16=20;1920x1440x32=8;2048x1536x8,16=C; {100-18B,200-288}SHV 1920x1080x32=10;1024x768x8,16=1000;848x480=1DFF;19 20x1440x32 2048x1536x8,16=2;1600x1024x32=20;
1280x720x32 1280x768x32 1280x960x32 1280x1024x32=280;1360x768x32=2FF;1600x900x8,16=380 ;1600x900x32 1600x1024x8,16 1600x1200x8,16=40;1152x864x32 1280x720x8,16 1280x768x8,16 1280x960x8,16 1280x1024x8,16=400;1360x768x8,16=7FF;1024x768x32 1152x864x8,16=800;{20-18B,200-288}SHV 800x600=1DC2;1600x1024x8,16 1920x1080x8,16=1F;640x480=1FC2;1280x1024x32 1600x1200 1920x1200x8,16=2;1152x864x8,16=3FF;1280x1024x8,16= 42;1920x1080x32=7;1024x768=7C2;1600x1024x32=F;1152 x864x32=FF;
{28-29,2D-288}SHV 1920x1440x32 2048x1536x8,16=1;1600x1200x32 1920x1200x8,16=10;1600x900x32=1D;1600x1200x8,16=20 ;1600x900x8,16=3D;1920x1440x8,16=D;{28-29,2D-18B,200-288}SHV 1600x1024x32=10;1600x900x32 1920x1200x32 1920x1440x8,16=2;1600x1024x8,16 1920x1080x8,16=20;1152x864x32=200;1280x1024x8,16=3 80;1280x720x8,16 1280x768x8,16 1280x960x8,16=3FF;1280x1024x32=40;1152x864x8,16=40 0;1600x900x8,16=42;1280x720x32 1280x768x32 1280x960x32=7F;1920x1080x32=8;1024x768x8,16=800;
{1A0}S 1920x1200x32 1920x1440x8,16=20;2048x1536x8,16=30;1920x1440x32 2048x1536x32=4;

The changing from ....800x600 1024x768 1280x1024=3D... to ...800x600 1024x768=10;1280x1024=3D... results in me getting 70hz in games and not like I would have expected 85 Hz.

Could you tell me what I have to do to make it use 85Hz on a Geforce 3 ti 200 for the three modes 640x480, 800x600 and 1024x768?



BTW I tried the built in settings to force refresh rates in the display properties but first of all there is no 800x600 listed there and second its only valid for D3D not for openGL.

Khan
10-24-02, 02:19 PM
AH!
Refreshforce works again YAYYYY!!! :)

I just read the refreshforce readme (yeayea I know I should have done that before) and it says to not uncheck the "don't display modes this monitor can't display" tab in the monitor properties. Once I rechecked that box, the changes set in Refreshforce worked again.

Phew the manual registry changes should have worked too though but all I wanted was to play at 85Hz and thats done now.

Thanks for the replies.

BTW does anyone have an idea why the heck MS or Nvidia can't resolve that stupid problem once and for all?

jsg2021
10-24-02, 02:26 PM
Khan, if you are in WindowsXP the registry path will be:
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Video\ {guid}\ 0000

the guid is randomly genorated on install.

If you are in Windows2000, which by your post i think you are, the Video key in
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control
does not exist. But, i see you found NV_Modes, so lets get on with the debugging!

what i think is happening is that you are changing the mode value in one place but, its getting overwritten by the section of that string that is specific to your chip.

you just need to replace the ENTIRE string with a custom one.

You only want a select few resolutions? so just deal with those resolutins :) and paste over the default modes data.

Using a program to lock refresh rates is, imho, not the way to go. I think its best to make things work with out extraneous applications littering memory.

Khan
10-24-02, 03:12 PM
yes that was what I was thinking too but I changed all entries for 800x600 and 1024x768 that are in the NV_Modes key and still it did give me 70 Hz.

The program I used (Refreshforce) is not memory resident but makes the change once. I guess it just does what I would normally have to do manually.

On the point of where the regkey is:

There are several entries in my registry called "NV_modes" and I have about 6 or more GUID entries under HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Video\
All do look like they could be the valid one. How would you know which is the right one?

But as I said there's no need to go into detail anymore as it seems to work. On the other hand of course there might be others interested in the mechanism of this stuff too (I say it's not needed but I'd of course still like to know what the heck I was doing wrong).

jsg2021
10-24-02, 03:36 PM
The only value that will effect the detonator's in WinXP is the one located under
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Video\ {guid}\ 0000\ NV_Modes

how to find the correct guid? thats simple (at least i think so :p:))
Go here:
HKEY_LOCAL_MACHINE\ HARDWARE\ DEVICEMAP\ VIDEO
the key labeled: "\Device\Video0" is our primary display driver. (the other three are the SafeMode VGA driver, Terminal Services, and something else)

Evolution
10-24-02, 07:31 PM
I just copied the all the NV_Modes straight from the 40.72 inf into the 41.03 inf, installed, ran the vnrefreshtool and it worked. Quick and simple.....just like me :)

Mike89
10-26-02, 01:29 AM
Man I wish Nvidia would make up its mind. Just when I get used to editing the driver inf, they change it again.

Actually though this time they made it simpler by just combining the settings for all Nvidia cards. I hope they stick with this.

I did as I read here. I deleted the entire string in the inf and replaced it with this.

HKR,, NV_Modes, %REG_SZ%, "{*}S 640x480x16,32=20; 800x600x16,32=20; 1024x768x16,32=20; 1152x864x16,32=10; 1280x960x16,32=10; 1280x1024x16,32=10; 1600x1200x16,32=4;"

Now I have only

640x480 - 16,32 bit color depths, 100hz.
800x600 - " " "
1024x768 - " " "
1152x864 - " " 85hz.
1280x960 - " " 85hz.
1280x1024 - " " 85hz.
1600x1200 - " " 72hz.

This is all I need or want. No problems and no third party refresh rate software. Only way to go (for me anyway).

Kruno
10-26-02, 04:01 AM
Anyone going to give out a reg patch to us lazy batards? :)

WeeFatBob
10-28-02, 05:22 AM
The above posts solutions (when they work) only adjust the maximum frequency the card can use, and they still leave all the frequencies below the desired refresh rate you are after. So if you done the 40 code you would still have 60, 70, 72, 75.....etc to mess things up.

If all you want is a specific frequency, then instead of using the binary to hex solution up above, read the pdf file and at the bottom check the part where it is using a 4 digit number beginning with 80, these are for custom frequencies, and the number following it is just a normal hex number, so 100 would be 64, and 85 would be 55.

e.g. {*}S 640x480 800x600 1024x768=8064;1280x1024 1600x1200=8055;

The above string would only allow 100hz in 640x480 to 1024x768 modes, and only allow 85hz in 1280x1024 and 1600x1200, and in all colours.

Below is the string I used myself still using the initial part Nvidia uses to eliminate the really low resolutions up to 640x400. I get just the frequency I want and nothing else.

{*}S 320x200 320x240 400x300 480x360 512x384 640x400=F;S 640x480 720x480 720x576 800x600 848x480 1024x768 1152x864 1280x720 1280x768 1280x960 1280x1024 1360x768 1600x900 1600x1024=8064;1600x1200 1920x1080 1920x1200=8055;1920x1440 2048x1536=804B;

jsg2021
10-28-02, 10:14 AM
Thats not true. These do not set maximum refreshrates. These codes set the refresh rates that are avalible. If you set the bit to zero for the refresh rate you don't want...it WILL not be avalible.

example:

view this as a 16 binary number each position represents a refresh rate...

| X X X 240 | 200 170 150 144 |140 120 100 85 | 75 72 70 60 |

if you modify you refresh mode value to say:
| 0 0 0 0 | 0 0 0 0 | 1 1 1 1 | 0 0 0 0 |

or simplified: 11110000 (this is 'F0' in hex)

if you use this then only 140, 120, 100, and 85 will be avalible. Nothing below, nothing above.

Mike89
10-28-02, 10:52 AM
I had posted this link awhile back when Nvidia changed their driver method. It was for the last set of drivers but still applies to the 41.03. I couldn't figure out the PDF so I posted in the Beyond3d forum and got good feedback.

Here is the link.

http://www.beyond3d.com/forum/viewtopic.php?t=2310