Jump to content
LaptopVideo2Go Forums

editing own drivers, seeking help and advices


trodas

Recommended Posts

Hi guys. I wonder if I can get some help when tweaking an old drivers for maximum performance and custom tweaks :) I already managed some tweaks that I describe bellow, yet still there is a pretty good deal of things that I simply don't know what to do with them, so a little help is need :P

The drivers in question are oldie Forceware 45.28 ( http://rapidshare.com/files/290383806/Forceware_45.28.zip ) because they are VERY fast on the oldie computer (FX5600XT) and hence preffered.

What I did accomplish

nv4_disp.inf:

%NVIDIA_NV31.DEV_0314.1% = nv4_NV3x, PCI\VEN_10DE&DEV_0314

NVIDIA_NV31.DEV_0314.1 = "NVIDIA GeForce FX 5600XT"

(added these to make the drivers support FX 5600 XT card, otherwise no go - limitation, my card chip is reported as 5600SE, that had to be fixed in the nvcpl.dll by hand - replacing the 5600SE with 5600XT as it is in all later Forceware versions)

nv4_disp.inf:

[nv4.Services]

AddService = nv, 0x00000002, nv4_Generic_Service_Inst, nv4_EventLog_Inst

;AddService = NVSvc, 0x00000000, nv_NVSVC_Inst

(that disable the nVidia help service adding, it slow things down, lots of unnecessary HDD actions too...)

nv4_disp.inf:

[nv4.Services]

AddService = nv, 0x00000002, nv4_Generic_Service_Inst

; nv4_EventLog_Inst

(deleting the EventLog can only speed things up and I'm not a developer in need for logs, so...)

nv4_disp.inf:

HKR,, "DefaultSettings.XResolution",%REG_DWORD%,1280

HKR,, "DefaultSettings.YResolution",%REG_DWORD%,1024

(that give default resolution 1280x1024)

nv4_disp.inf:

In [nv4.SoftwareSettings] change AddReg = Default16BPP_AddReg

to

AddReg = Default32BPP_AddReg made, quite obviously, 32bits the default depth :unsure:

setup.iss:

[File Transfer]

OverwrittenReadOnly=NoToAll

to:

OverwrittenReadOnly=YesToAll

(no questions on reinstall, I hope :))

What I wonder about

How to STOP creating many custom resolutions nVidia force us to have? First I cleaned out the modes.txt down to this for every card:

320 x 200 32 60 70 72 75

320 x 240 32 60 70 72 75

640 x 480 32 60 70 72 75 85 100

800 x 600 32 60 70 72 75 85 100

1024 x 768 32 60 70 72 75 85 100

1280 x 1024 32 60 70 72 75 85 100

and absolutely NOTHING in the "Horizontal Spanning Modes" and "Vertical Spanning Modes", yet with little change.

Then I in nv4_disp.inf cleaned out these there lines:

HKR,, NV_R&T + rest of the line

HKR,, NV_Modes, %REG_MULTI_SZ% + rest of the line

HKR,, NV_Modes, %REG_SZ_APPEND% + rest of the line

down to this only ONE line:

HKR,, NV_Modes, %REG_MULTI_SZ%, "{*}S 320x200 320x240 640x480 800x600 1024x768 1280x1024"

That worked out beautifully, yet still two resolutions I don't want are present. A 720x480 and 720x576. How to get rid of them? In the registers, they are not even there!

os7501_th.jpg

That is driving me crazy. Do I need to hack some files? Let's hack them then!

The BIG question.

How to simulate the Linux option "AllowNon60HzDFPModes", witch I trying to find out unsucesfully. Looks like the TMDS encoder on my poor FX5600XT card wrongly fall into some category that says "60Hz only" in all Forceware drivers I tested (45.28, 53.03 WHQ, 81.95 WHQ)...

I see two ways to get more that 60Hz. Okay, there.

1) modify the drivers somehow to disable the check, as the Linux option does

2) modify the BIOS in my FX5600XT to report more modern TMDS encoder, witch is allowed to use higher refreshrates over DVI

3) buy new GFX card - friend 7300GS with the very same monitor and some 75.xx Forceware drivers do 75Hz refresh w/o a glitch

Yet since these card are not AGP and the FX5600XT got passive (nice quiet Zalman) cooling, the option no. 3 is not very viable one... Option two, modify the BIOS seems plausible, but after talking with NiBiTor autor Mavke it is on standstill now. He don't know where in the bios to look... As many of the TMDS encoders are in nVidia cards internal, it maybe even does not need to be in the BIOS. We simply don't know... If the TMDS are internal, then all you need to know is the GPU type and then you also know, if this TMDS is "locked" to 60Hz or unlocked.

(according to the Linux users sucesfull attempts to get past this artificial barrier it seems logical that this is only artificial lock and not technical one - if my card can drive a 2048x1538 resolution in 60Hz, then 2,4x smaller number of pixels in 1280x1024 it sure can draw faster that in 60Hz - looks like it can do it at, 144Hz! ...but that could be wrong, of couse...)

Okay, in fact, there is also option no. 4: use Linux, where things (probably) work!

Oh, well.

The Linux drivers only have the very fortunate possibility of override the default settings by the "AllowNon60HzDFPModes" option that let the driver bypass the checks and allow any refreshrate to be set, and hence drive the TMDS to or even over it's limits.

(I heard that it produce funny digital noise effects, if you go over it's capabilities, heh)

So basically it looks like that I have to search where the "60Hz refresh only on this chip" option of nVidia drivers is stored and then modify it (on installed drivers) and/or then go and modify the drivers to save the option as I want it - eg. leaving up to the user, how hard he want to drive his TMDS.

Anyone know know and can help what anything there?

Edited by trodas
Link to comment
Share on other sites

Try adding this to the INF:

HKR,, AllowNon60HzDFPModes, %REG_DWORD%, 1

You may need to add it to all the [nv_commonBase_addreg__XX] sections in the INF unless you know which is yours.

Link to comment
Share on other sites

Sounds rather like a blind shoot, but hey... worth it. To test it w/o installing - to what sections of the registers you suppose I should insert it?

Already tested:

HKLM,"Software\NVIDIA Corporation\Global\NVTweak",AllowNon60HzDFPModes,%REG_DWORD%,1

...and no change, yet no reboot yet, might be required.

No change after reboot either. Another interesting place is

HKLM\SYSTEM\ControlSet001\Services\nv\Device0

...yet no change here too. Again, maybe after reboot?

Don't you confuse a LINUX option to Windows registry value?

Edited by trodas
Link to comment
Share on other sites

I have seen the registry setting inside the driver (windows), just nor sure on how to implement it

Link to comment
Share on other sites

No, even after reboot nothing is changed by placing AllowNon60HzDFPModes in the HKLM\SYSTEM\ControlSet001\Services\nv\Device0 ...

I have seen the registry setting inside the driver (windows)...

Really? WoW! That is a good news! Where you saw this little thing? I searched the files of my 45.28 with all the options Total Commander let me to search inside of the files, yet AllowNon60HzDFPModes is nowhere to be found.

Of course, I'm very well aware that the drivers 45.28 is way old, so I immediatelly checked the 81.95 WHQ ones... and quess what! Altough I was highly dubious about it, Total Commander find it by the HEX settings searching in the Advanced.tv_ file. Hmmm, that is weird. When I tried repeat it, it stop working and never find it again? I even depacked the whole mess (D:\test>expand *.* d:\test2) of the 81.95 drivers and still nothing? That is like I was daydreaming...

What you find it? I just wonder, because i already lost it :P

...just nor sure on how to implement it

Me neither, but if such option exist, then it will be all very easy. Maybe something is in the data1.cab and data2.cab files, but 7-zip failed to extract them. Someone on the net suggested expand, but at least mine from Win2k SP4 is unable to extract these cabs...

At least by byte-to-byte comparsion I found out that in the nvcpl.dll that the FX5600XT is just wrongly named as FX5600SE, witch was the cause of the mystery "5600SE" in the control pannel in 45.28 drivers ONLY. Quick fix fixed that by editing the file, hehe. Also using reshacker I discovered that there are TWO avi files I never ever saw, totaling 400k - both resources deleted and the nvcpl.dll is now 400k smaller :) (the one for 45.28 is really big, 4,8MB in size by original, that is way too much bitmaps...)

BTW, I noticed there few odd things. First at all, a custom resolutions dialog:

Dialog 146

Custom resolutions

...and we all know that custom resolutions have debut far far later that in 45.28 ...

And this:

"ShowCustomModes"=dword:00000001

"NvCplCustomResConfig"=dword:00000001

...did not show them at all :unsure: See?

29wva84.jpg

And in the AGP properties page I was option bellow the FastWrites and SideBand addressing that I never saw in the real life:

Dialog 37

Enable 2D command buffer caching

Dialog 141

Enable 2D command buffer caching

v7427m.jpg

Of course I wonder, how can I enable this one to become visible... :) Because I never saw it before...

Edited by trodas
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...