Jump to content

NVidia Video Driver Shutdown Fix


rloew

Recommended Posts

Apparently this is getting complicated. We need extensive testing under Windows 95, 98, 98SE and ME in order to find the working code for each system and driver version combination.

I will design the patcher with the ability to load specific patch code according to the current (or selected) OS version and driver file version. For that we need verified and working code for drivers starting with 77.72 to 82.69, each of them tested under Win 95, 98, 98SE and ME.

Hopefully videocard series would not add any more complications to this.

 

There is one more issue I just stumbled into: the available space for extra code may be extremely scarce for certain driver files. The 55.64 (even if that particular version is out of scope) couldn't hold the 15 bytes in the first code variant, not to mention the second one. If code grows much larger, we may have to find another address with enough empty space or simply abort the project, unless the files can be recompiled, which I very much doubt since the code is not publicly available.

Link to comment
Share on other sites


 

Try this Patch for 82.69:

144: C8 -> DB (changed)

329802: DA A7 E4 FF -> C2 05 00 00 (same)

329DC8: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 3C 25 74 04 3C 32 75 02 B0 52 89 44 24 04 E9 05 A2 E4 FF

Is this code to test for 98SE only or also for ME?

Only for 98SE and specifically for Miki. ME appears to need a different approach.

 

I just tried "25 75" with a 7200 GS and 81.98 Driver ...

It has a G72. Some years ago I tried to install the driver 81.98 for G70 and G73 without success. So I thought that 81.98 doesn't work with NV 7xxx cards.

The 7200 works with 81.98. The 7100 also works with 77.72.

 

Apparently this is getting complicated. We need extensive testing under Windows 95, 98, 98SE and ME in order to find the working code for each system and driver version combination.

I will design the patcher with the ability to load specific patch code according to the current (or selected) OS version and driver file version. For that we need verified and working code for drivers starting with 77.72 to 82.69, each of them tested under Win 95, 98, 98SE and ME.

Hopefully videocard series would not add any more complications to this.

So far it seems that ME has a different problem.

There is one more issue I just stumbled into: the available space for extra code may be extremely scarce for certain driver files. The 55.64 (even if that particular version is out of scope) couldn't hold the 15 bytes in the first code variant, not to mention the second one. If code grows much larger, we may have to find another address with enough empty space or simply abort the project, unless the files can be recompiled, which I very much doubt since the code is not publicly available.

It is possible to expand a Section of a VXD File but it is quite a bit more complicated.

I wrote an Expander for ESDI_506.PDR when I developed my Encrypted Disk Patch.

Otherwise you have to find and write over some unimportant existing data.

Link to comment
Share on other sites

@Miki:

Try this Patch for 82.69:

144: C8 -> DB (changed)

329802: DA A7 E4 FF -> C2 05 00 00 (same)

329DC8: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 3C 25 74 04 3C 32 75 02 B0 52 89 44 24 04 E9 05 A2 E4 FF (changed)

 

Dear RLoew, this code works great !! I did shutdown twice to make sure that I am not imagine things. Thanks !!!

 

Follow up: Shutdown now also works on my other system with VIA-chipset and a GeForce 6200.

 

And for later on:

At first I made a typo at 144: D8 instead of DB and I did get a protection error. That gave me the idea that with changing the correct code in nvcore.vxd more of these annoying 'protection error PCI-E cards' could maybe be make working ??

Edited by MiKl
Link to comment
Share on other sites

So far it seems that ME has a different problem.

 

It is possible to expand a Section of a VXD File but it is quite a bit more complicated.

I wrote an Expander for ESDI_506.PDR when I developed my Encrypted Disk Patch.

Otherwise you have to find and write over some unimportant existing data.

 

 

 

 

Overwriting existing data may be risky. Maybe I should put the patcher on hold until problems get sorted out. Still, it could help for testing, instead of hex editing.

Well, I'll just wait for a while.

Link to comment
Share on other sites

And for later on:

At first I made a typo at 144: D8 instead of DB and I did get a protection error. That gave me the idea that with changing the correct code in nvcore.vxd more of these annoying 'protection error PCI-E cards' could maybe be make working ??

As if it were that easy.

The error you made causes a protection error on every card in every system.

It would have never been released.

The protection errors you are referring to are far more subtle and would take much longer to find. Even finding the code that triggered the protection error is often only the beginning of finding the cause or a fix.

I have updated Post #1 to reflect the added code.

Link to comment
Share on other sites

Frikkin' AWESOME!

 

I just installed my MSI 7950GT PCIe 256MB (passively cooled) on W98SE (which i didn't before, as the shutdownfail annoyed me to death), and it worked (aka shut down) like a charm!

 

You made my day/week/holiday/whatever... YEAH!

 

P.S.: How about a re-release of the 82.69, i.e. as an 82.70, for W98SE, including the fixed file? With a readme naming the limitations, of course...

Edited by ragnargd
Link to comment
Share on other sites

Nope! No can do. (Generally) against the rules, hence the instructions instead. ;)

You have the links to the Originals, so why should this be a problem anyway? Get it and patch it. Done! :thumbup

Link to comment
Share on other sites

I did, i did, oh my! (Used the HxD Hex Editor, as it runs on practically every OS... primarily on W98SE, of course :-D.

Still, the 82.69 is not really an official driverpack anyway... and if a 82.70 would appear like *poof!*, announced here, then what? :-)

And as we are at that, someone could remove the 8x00-entries, which motivate people to waste time...

Just my 2 cent, of course...

...don't want anyone to break any rules, don't we...

Link to comment
Share on other sites

We're working on a generic patcher that can (at least theoretically) do the job for almost any driver version. It's almost done but it has only been tested on English language drivers, from 45.32 to 82.69.  Should be ready for next week at the latest unless something interferes.

Link to comment
Share on other sites

Because we can! :ph34r:

 

Now seriously, the patch operation itself has been tested on a wide variety of driver versions just to make sure the logic of it stands firm. At some point we may receive requests for different language versions and the logic may work for them as well. Or not.

 

Nobody needs to patch drivers that don't need patching. But it's good to have choices - it brings responsibility with it. ;)

 

Anyway, there is a version limit according to the feedback and that limit can be overridden if desired, for testing purposes or whatever.

By the way, we still need testers for all flavors of Win95. And hopefully Mr. Loew will come up with a working version of the code for ME.

Link to comment
Share on other sites

If and when Rloew decides that his solution is "complete," and gets it working for all flavors of 9x, and is reasonably certain it has no adverse side effects then I think I can repack the driver package with the patched file included. I'm confident that is what MDGx did originally when he expanded the INF's anyway.

Edited by LoneCrusader
Link to comment
Share on other sites

Unfortunately the solution for ME, if found, will be quite different from the current 98SE one. For this reason there can not be a single patched driver file that could be repacked.

Each user will have to install (if not already installed) the original drivers - any version that works best for them - and then use the patcher which will detect the operating system and driver version and patch the file accordingly (and only if needed).

Link to comment
Share on other sites

A "universal to 9x" solution may never be found, but I have a feeling that the root cause of the Shutdown bug is the same regardless of whether the driver is running on 98SE or ME or whatever. The current solution works around the problem on 98SE, but not for ME, and 95/98FE are untested.

 

I may be wrong but I think the bit I noted about the "Windows is shutting down" screen not getting displayed is relevant, because I always see this screen on a normal shutdown, even if only for a split second. The 98SE solution allows the machine to achieve a clean shutdown/power off, but I believe something is being "bypassed" to do so.

Link to comment
Share on other sites

We do not know the root cause yet. It may very well be different from 95 to 98 to ME. If we knew it, it would have been fixed already.

Indeed the workaround does bypass a couple of system messages. Mr. Loew tested the patch - it's his code - and considers the bypass safe. The missing shutdown screen is just a minor inconvenience. A different version of the code may work for you, one that does not bypass that particular message, but you'll have to test that.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...