I got it sorted out. My NVidia control panel has four options:
1> Use Monitor for scaling
2> Use Video Card for scaling
3> No Scaling
4> Fixed Aspect Ration scaling
1 and 2 are pretty much self explanatory. Option 3 will literally use the very center of the screen, but only 640X480 pixels (Very small square on this monitor). Option 4 is 'supposed' to stretch it out vertically to fit the screen, and stretch it out horizontally only enough to maintain the same aspect with black bars on the left and right... but it doesn't work. The monitor kept stretching it out to fit the whole width anyway.
Anyways, I did some research and apparently it's some kind of glitch in the video drivers that they still haven't fixed. I played around with the manual resolution settings and had to 'trick' it in a way, but I did get it to work (and flawlessly at that).
Here is the post I made to the Nvidia forums about my fix:
OK Guys.. listen up. I just got a Soyo 22" widescreen LCD (MT-NI-DYLM2284). It works great, but the widescreen doesn't work well with some of my older games, and the wife doesn't like the high resolution (makes everything smaller). If the resolution is lowered then everything gets stretched out horizontally... not much fun.
Anyways, I've been playing around with the Scaling options in the NVidia control panel.. and selecting the default "Use NVIDIA scaling with fixed-aspect ratio" simply doesn't work. This is with a 7900GS running driver version 178.24. I figure if there was a way to disable scaling on the monitor itself, it would probably work, but my monitor doesn't give me that option.
So.. I've been spending the last hour trying to find a solution, and apparently I'm not the only one with this issue. I tried playing with some settings with little or no success... BUT I JUST FIGURED IT OUT!
You see, if I disabled scaling "Do not scale option", I would get a little tiny screen in the middle when trying to play StarCraft (640X480 resolution) making it almost impossible to see, let alone play. BUT this is progress... it means that in fact, the drivers are able to override the monitors automatic scaling.
OK, next... CUSTOM RESOLUTIONS. If you create a custom resolution, click on advanced, plug in the resolution you want to create, set the Timing Standard to "Manual" and play with the numbers... well you'll find that it STILL won't work. Maybe if I knew exactly what all this meant I could make it work, but I don't... and I don't think 99% of you guys do either.
So now it was time to get a little creative. I decided to do a bit of manipulation here. I'll go step-by-step here so you can follow exactly what I did and maybe reproduce this on your machine. I should add that it works like a charm for me!
1> Set your resolution to your monitors NATIVE RESOLUTION (In my case, 1680X1050 @ 60Hz). Look at your monitor's specs for what yours is.
2> Open up NVidia Control Panel.
3> Turn on ADVANCED SETTINGS (If not done already)
4> Click on "Change Flat Panel Scaling" and select "Use NVIDIA scaling with fixed-aspect ratio". Click Apply.
5> Click on "Manage Custom Resolutions". Click on "Create".
6> Click on "Advanced>>"
7> Change the drop down box for "Timing Standard" to manual. *It is important to do this BEFORE changing the resolution settings.
8> At the top next to "Horizontal desktop pixels", "Vertical desktop lines", and "GDI Refresh rate" insert whatever values you need.
EXAMPLE: In my StarCraft game which runs at 640X480 @ 56Hz I had to insert Hdp:640 Vdl:480 and GDIRr:56
9> Click Test
10> Repeat steps 5-9 for each resolution setting you plan on using.
I basically created an entry for every resolution setting available to me. Most settings will use a 60Hz refresh rate, but you might need to add multiple entries for 75Hz... or in the case of StarCraft, 56Hz (I was going nuts trying to figure out why it wasn't working until I realized I had to add a 56Hz entry).
Anyways, what you are doing is letting it automatically fill in the Back-end parameters for the native resolution. When you change it to "Manual" it locks in those numbers, so when you change the resolution settings those numbers will not change. If you try changing the resolution settings FIRST (while "Timing Standard" is still selected AUTO), then the parameters will change to reflect whatever resolution you put in, and it will not work.
It's kind of backwards, I know... perhaps it's a programming glitch in the control panel or drivers... but all I know is I got it working flawlessly and I figured I'd share this with you as it may help someone else out as well. I've seen many, many complaints of this issue on the net, and people simply saying "Just deal with the stretched out screen as there's nothing you can do about it".... well this simply isn't true.
Good luck!