Jump to content
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble

MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, register and become a site sponsor/subscriber and ads will be disabled automatically. 


Sign in to follow this  
Tommy

Dual monitors an issue with newer NVIDIA cards

Recommended Posts

This one is mostly for @blackwingcat but if anyone else knows how to fix this, please chime in!

I bought a newer card, a Gigabyte GeForce GTX 650. It's detected just fine and mostly all works as well as it should, except for one thing.

The darn issue with the NVIDIA Control Panel not working. I downloaded several versions of 3xx.xx modded by blackwingcat that have the control panel included in it but when I install the drivers and whatnot and reboot, I'm constantly greeted with a NVIDIA Control Panel Extension cannot be created, possible reason version mismatch whenever I go to advanced display properties or I try to launch it from it's location in Program Files. I've even followed these instructions and still have gotten nowhere

I don't even really care about the control panel itself. But without it, I don't really see a way to enable dual monitors, which is a deal breaker for me.

Currently running Extended Kernel v3.0a ENG with GameGuard fix and Extended Core v14b. This is essentially just a test installation before I put my new computer together so if I break this install, I don't care, I'll just reinstall and try again. But if I can somehow create a dual monitor setup via regedit instead of worrying about the control panel, then I'll be happy enough. Most games have their own separate settings that allow you to adjust graphic settings as needed.

Share this post


Link to post
Share on other sites

So while I'm waiting for blackwingcat to reply, I've been doing a bit of digging on my own.

I've dug into the drivers and discovered between and official Windows 2000 driver file and blackwingcat's unofficial Windows XP 3xx.xx files, there's a difference in how it handles dual view when it comes to later versions of Windows. First, Windows 2000 uses hardware ID driver\w2kdualview whereas it seems that XP uses driver\multiview, therefor dualview seems to be completely absent when it comes to later drivers even though the registry keys are there.

I added the missing dualview hardware ID to the driver file, so now it is found and "appears" to be fine with it, but when I try to enable dualview, it seems that it still won't change over. I still get the error code 106 when trying via the systray icon and when I try the control panel, it just does nothing at all.

Clone seems to work just fine, so does the extend either horizontal or vertical. But when it comes to dual view and configuring the displays independantly, it just will not work no matter what I do to it. I've even compared it to a later driver file that is compatible with Windows 2000 and it seems like everything I need for this to work is there. Unless someone else has any ideas, I'm probably going to try to use my old video card as a secondary card to extend my monitor in the new system. I can't try that with the current one since I only have 1 PCI-E x16 port whereas the new board will have two of them. I hate to go that route but if it has to be done, it has to be done. In Windows 98, I don't even remember dualview having to be installed, I thought on many NVIDIA cards, it just worked as soon as you installed the drivers.

Share this post


Link to post
Share on other sites

I did even more digging last night on this subject matter and I think I'm starting to understand what is wrong.

I think the problem is nView itself. As the driver gets newer and newer and I'm sure a bit more polished up, Windows 2000 is slowly moved more out of the picture. This is further supported by the fact that win2k shows up in some important nView files, especially those that suggest dual monitor support. EnableWin2kdualmonitor is one of the big ones. (give or take the name itself). It even shows up in some drivers as recent as 295.xx, but blackwingcat's 310.xx and higher drivers, Win2k is 100% completely absent in nView files, therefor I'm thinking when you try switching over to dual monitor support, the program has no idea what to do.

In order for dual monitor support to work, I believe it would have to be programed back into nView somehow so that Windows 2000 knows how to handle its request.

I probably jumped ship a bit too fast but I went ahead and just ordered a different video card, an EVGA GeForce GTX 275, which is supported by driver 190.38, which still has drivers for Windows 2000 and should work just fine. It's still decent and better than what I originally had so we'll see what happens when it comes in the mail. But unless someone knows how to program these commands back into nView, I'm thinking dual monitor support for newer cards via Windows 2000 is impossible.

Share this post


Link to post
Share on other sites
Posted (edited)

win2k doesn't natively support running multiple monitors on a single GPU unlike XP so vendors hacked in support through their drivers.

Have you tried swapping out the new nview.dll (or possibly all other associated dlls) with the old one? I looked through my 258.96 version of nView and found "EnableWin2kDualView" in notepad, but not in IDA so no way of disassembling it and sticking it into a newer version (at least at my extremely low level of ability).

This is where I found that API function in a hex editor. Try dropping it in below "NvGetWindowsDisplayState" in your existing nview.dll if the old one doesn't work.Screenshot (2).png

I may not be the best at hex but it appears to be 45 6E 61 62 6C 65 57 69 6E 32 6B 44 75 61 6C 56 69 65 77 at memory addresses 10187650 and 10187660 (in this version: later ones may be different).

When disassembled it looks like this:

.rdata:10187638 aNvgetwindowsdi db 'NvGetWindowsDisplayState',0
.rdata:10187638                                         ; DATA XREF: sub_10087710+6E↑o
.rdata:10187651                 align 4
.rdata:10187654 aEnablewin2kdua db 'EnableWin2kDualView',0
.rdata:10187654                                         ; DATA XREF: sub_10088480+64↑o

If all else fails, the only viable solution would be to pair another card with your high-end one (which is natively supported by Windows 2000; it supports up to 9 cards).

Edited by win32
  • Upvote 1

Share this post


Link to post
Share on other sites

Hmm, I liked this idea but unless I did something wrong, it didn't work out. Actually, dropping it in caused a lot of issues including explorer.exe crashes when I'd right click. I'm guessing maybe because other dependancy addresses weren't properly updated like they needed to be. Does the software you use in your screenshot automatically recalculate pointers or are pointers more reserved for video game hacking and whatnot? I know what I'd hack around with Zelda: Ocarina of Time, fixing pointers was a huge issue when it came to adding new stuff into the game and having to tell the game engine where stuff was located.

I also played around with nView a lot last night like you suggested just now with no luck, and mainly that's because of driver mismatches. The one other thing I could possibly try is lying about what version the driver is in the INF file. Not sure if other DLL files have the driver version hardcoded in somewhere or not, I'm sure they do. I could probably hex edit those to make nView happy and see what happens and see if not only it eliminates those mismatch errors but to see if it'll work and play nice together.

Share this post


Link to post
Share on other sites

Unfortunately, it doesn't appear that IDA (x64-only by the way) recalculates pointers. I do think that it would be important for the drivers because dropping that part in would (presumably) relocate everything below it. You may have better success sticking it below everything though there is, yet again, very low confidence with regards to attaining the intended feature. :( You may be better off changing the version numbers.

BWC is an "assembler guru" (unlike me) and would be probably be able to get to the bottom of this.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, win32 said:

You may have better success sticking it below everything though there is, yet again, very low confidence with regards to attaining the intended feature. :( You may be better off changing the version numbers. 

I already tried both of these, placing the dependency below was just ignored and changing version numbers on the drivers just resulted in a "problem". I'm not sure if I missed anything but I was sure to change what I could find in the driver files.

I think you're right, Blackwingcat could probably get to the bottom of this. I'm quite sure that not many people run a dual monitor setup, especially in a Win2k environment, so it probably wasn't that critical to get that running. This is the replacement card I got, I was looking for performance but on a cost effective basis since I've already sunk enough money into this new build that I can't build yet since I'm still waiting on the motherboard. https://www.ebay.com/itm/EVGA-GeForce-GTX-275-1-7GB-DDR3-PCIe-x16-Dual-DVI-S-Video-Card-017-P3-1175-AR/401760219453?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649

Share this post


Link to post
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
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...