VOGONS


First post, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
I have noticed that one of the more important VESA (VBE) functions always fails on my Geforce GTX 960. I could also reproduce the bug on a GTX 1060.
The buggy function is this:
Function 07h - Set/Get Display Start.
This is a required function at least form VBE 1.2 and used for implementing virtual scrolling and hardware double/triple buffering (so it's an important one).
The function is reported as supported but always fails on the tested cards. I would like to get some help to find out whether all the NVIDIA cards in these newer series are affected and in which series the bug appeared.
I have written a little test (VBEVSTST.EXE attached, source code included) that can be used to discover if a card is affected. After staring the program in DOS/Win9x/XP you just have to press the arrow keys. If Set/Get Display Start is working then you will see the screen moving in the corresponding directions and also you can see some info about the function call success.
Also Scitech Display Doctor(UniVbe)'s VBETEST.EXE can be used for testing. Both the virtual scrolling and double buffering test fail if the card is affected (more precisely the double buffering test is 'working' but you will see flickering screen and always 'Page 1 of x' info instead of paging).
Thanks in advance for your help.

Filename
FALCO_VBEVSTST.zip
File size
23.9 KiB
Downloads
139 downloads
File license
Fair use/fair dealing exception
Filename
UNIVBE_VBETEST.zip
File size
112.35 KiB
Downloads
93 downloads
File license
Fair use/fair dealing exception

@Edit:
!!! For Geforce 4xx and 5xx series users: Please, help us by testing your cards since this way we can identify the first generation of cards where this bug appeared. Thanks !!!

@Edit2:
There is now a workaround available (in the form of my MSKVBEF7 patch/TSR) that according to tests fix problems at least with Quake1 and Build engine games ( Blood and DND3D tested).
MSKVBEF7 download:
download/file.php?id=56935

Last edited by Falcosoft on 2018-12-27, 17:02. Edited 5 times in total.

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 1 of 33, by gandhig

User metadata
Rank Member
Rank
Member

Yes, you are right. When your test program was run under DOS, the functions were shown as supported, but failed. Also flickering was observed when UniVBE's vbetest was run.

I'm not familiar with the virtual scolling test aspect. Also when I initially tried the programs on XP's cmd prompt, just got a blank full screen with a blinking cursor on running VBETEST. Your test program made the nvidia display driver to crash and the system had to be restarted. Probably I missed something. Since I don't have a native Win9x system, directly skipped to DOS on a floppy.

My Video Bios Version is 84.06.0D.00.F1 dtd. 24.12.2014.

Last edited by gandhig on 2017-12-16, 15:19. Edited 1 time in total.

Dosbox SVN r4019 + savestates Build (Alpha)
1st thread & the only one related to the forum(?)...warning about modern-retro combo
Dead, but, Personal Favourite
Replacement for Candy Crush...Train the Brain

Reply 2 of 33, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

<placeholder> hoping that edit will be re-enabled

What happened?

I will share the results this weekend for a GTX 960

Thanks

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 3 of 33, by Stiletto

User metadata
Rank l33t
Rank
l33t
Falcosoft wrote:

<placeholder> hoping that edit will be re-enabled

What happened?

Suddenly can't edit posts anymore?

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 4 of 33, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++
Falcosoft wrote:

<placeholder> hoping that edit will be re-enabled

What happened?

Two tantrum boys had a tantrum.

All hail the Great Capacitor Brand Finder

Reply 5 of 33, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
gandhig wrote:

Yes, you are right. When your test program was run under DOS, the functions were shown as supported, but failed. Also flickering was observed when UniVBE's vbetest was run.
....
My Video Bios Version is 84.06.0D.00.F1 dtd. 24.12.2014.

Thanks for your test. The conclusion so far can be that not only one GTX 960 BIOS is affected since mine is Version 84.06.0D.00.6E.

I'm not familiar with the virtual scolling test aspect. Also when I initially tried the programs on XP's cmd prompt, just got a blank full screen with a blinking cursor on running VBETEST. Your test program made the nvidia display driver to crash and the system had to be restarted. Probably I missed something. Since I don't have a native Win9x system, directly skipped to DOS on a floppy.

I forgot to mention that GTX 960 under WinXP is totally unable to display any DOS VESA/VGA modes by default with available drivers (any attempt results in a blue screen in my case) . You need to patch videoprt.sys to get it working.
I have attached the package that worked for me.

Filename
XP_videoport_patch.zip
File size
47.76 KiB
Downloads
94 downloads
File license
Fair use/fair dealing exception

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 6 of 33, by RayeR

User metadata
Rank Member
Rank
Member

I confirmed the bug on EVGA GTX 670 so probably whole Kepler family is affected. Problem persist with the latest BIOS 80.04.5C.

I please other users of nvidia GTX 4xx and 5xx series to run the test so we could find the point where the nVidiots introduced this bug.
I can only confirm that GT230 is not affected (and probably whole 2xx serie).
Does this bug still persist in latest nvidia models?

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 8 of 33, by RayeR

User metadata
Rank Member
Rank
Member
dr_st wrote:

It's been a year since this thread was started; has anyone informed nVidia about the bug?

Do you think they would care about something such obsolete as VBE? They will phase out VBE and replace it by UEFI...
I reported some older BIOS bugs to nvidia but never got a reply. We need to help ourself. Probably most painless way would be to write a TSR that hooks INT10h...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 9 of 33, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for reviving this thread.
1. Maybe the thread's title was not clear enough so it cannot attract enough attention. Now that we know that this problem is more widespread than I originally thought I renamed the title to be a little more attractive. I hope soon we will have more data to identify the point where/when things have gone wrong in Nvidia' BIOS cooking laboratory 😀
2. The problem is this function is not an optional one (it's mandatory since version 1.2 of VBE) so even if there is an option to get the supported status of this function it's likely that games when detect the presence of VBE 1.2/2 rightfully try to use it without first checking the supported status. So I do not think games implemented an alternative fallback code path. Or as in the case of Quake1 and alternative code path exists (activated by vid_nopageflip 1), but you can only choose it manually.
Nevertheless we could try to write a patch. INT 10h should be intercepted and when function 07 is called we should give back the status of not supported.
I have a template for this so I can write the patch/TSR and then we could test if it makes any difference with problematic games.
Stay tuned 😀

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 10 of 33, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

OK, I have made a TSR that masks INT 10h 4F07h calls and reports function status as not supported.
It should be tested if it makes any difference in case of problematic games (I do not think so, but a try cannot hurt)

Filename
MSKVBEF7.zip
File size
695 Bytes
Downloads
55 downloads
File license
Fair use/fair dealing exception

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 11 of 33, by RayeR

User metadata
Rank Member
Rank
Member

Thanks, I just have the same idea according to VBE spec:
VBE RETURN STATUS
AL == 4Fh: Function is supported
AL != 4Fh: Function is not supported
AH == 00h: Function call successful
AH == 01h: Function call failed
AH == 02h: Software supports this function, but the hardware
does not
AH == 03h: Function call invalid in current video mode
So it should be enough to set AL=0, AH=1 for function 7. I'll try your patch this night.

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 13 of 33, by RayeR

User metadata
Rank Member
Rank
Member
kjliew wrote:

Intel will EOL'ed legacy BIOS support in year 2020. INT10h, INT13h and rest of the original IBM BIOS INTxx software interface will be gone.

Sure, I know but it will probably take longer. Intel was already a pioneer in deprecating legacy stuff (ISA, PCI, etc.) but other manufacturers like Gigabyte may be more conservative and they could support CSM longer. Also it is possible to compile opensource SeaBIOS project as an UEFI module and insert into CSM-less UEFI image. I hope so, never tried deal with UEFI modding. Anyway PC-compatible era is going to dead end, after intel will remove realmode and v86 mode from CPU no DOS will be able to run on it. So we have to stick with latest reasonably compatible HW...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 14 of 33, by RayeR

User metadata
Rank Member
Rank
Member
Falcosoft wrote:

OK, I have made a TSR that masks INT 10h 4F07h calls and reports function status as not supported.
It should be tested if it makes any difference in case of problematic games (I do not think so, but a try cannot hurt)

The attachment MSKVBEF7.zip is no longer available

As expected it didn't help (any change in Blood). Maybe because there is still page flipping support reported somewhere in VESA info - UniVBETest reports it regardless TSR loaded and line trest is flickering in all resolution - see below. It's strange that Quake doesn't flicker in some modes (in my case afected modes are: 320 x 240, 320 x 400, 640 x 400, 640 x 480, 800 x 600, 1024 x 768 - about a half of total available modes.

I found a workaround for Blood & Duke - load NOLFBLIM TSR to disable LFB. Then it's not flickering but less performance. It is still playable up to 1024 x 768 so better than nothing. But I'd rather find some better fix. Maybe comparing of good and bad VBIOS disassembly could point the problem. Here's DASM of my runtime VBIOS image, entry point of INT10h handler is at 19D4h
http://rayer.g6.cz/1tmp/GTX670DA.TXT

Attachments

  • v4.jpg
    Filename
    v4.jpg
    File size
    61.47 KiB
    Views
    5542 views
    File comment
    VBETEST with MSKVBEF7 loaded
    File license
    Fair use/fair dealing exception
  • v3.jpg
    Filename
    v3.jpg
    File size
    60.36 KiB
    Views
    5542 views
    File comment
    VBETEST with MSKVBEF7 loaded
    File license
    Fair use/fair dealing exception
  • v2.jpg
    Filename
    v2.jpg
    File size
    57.91 KiB
    Views
    5542 views
    File comment
    VBEVSTST
    File license
    Fair use/fair dealing exception
  • v1.jpg
    Filename
    v1.jpg
    File size
    17.37 KiB
    Views
    5542 views
    File comment
    VBEVSTST
    File license
    Fair use/fair dealing exception

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 15 of 33, by RayeR

User metadata
Rank Member
Rank
Member

Beside in Ruthan's thread Old+Modern videocards pure DOS benchmarking- which one is fastest?, need your numbers + analysis, 320x200 to 1600x1200! I found he stated:

Geforce 730 difference, i have two G730 cards, one with GDRR3 and one with GDRR5 - i though than difference would be only in memory, but card with GDRR3 has not blinking problem and working with VIA 880 chipset, GDRR5 card has blinking problem (again Q1 only Q2 same resolution is not affected) and not working with VIA no picture at all + broken Text modes in FileWizzard. It could be manufacturer or bios difference, slower if Gigabyte, faster is Zotac, its i also has 4 GB of VRAM what is of course useless on such card..

So this prove that not ALL modern nvidia cards are afected by this bug and there may be a chance to find also some 6XX BIOS that is not affected and could be flashed to GTX 670 after some mods. Or if I get a dump of good video BIOS from GTX 730 I can disassemble it and try to look for code of VBE func. 07h and compare it with bad version. Good function then may be used as a TSR or direct BIOS insertion patch...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 16 of 33, by RayeR

User metadata
Rank Member
Rank
Member

Thanks to Ruthan providing me runtime video BIOS dumps of both GT 730 cards. The 1st visible difference is that card without his issue use older BIOS version 70.08.D5.00.04 while newer affected card use BIOS version 80.28.92.00.8D. So this can imply that all BIOSes with major version 80.x are bad and older 70.x are OK - this inludes GTX 5xx and 4xx families that should be OK...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 17 of 33, by ruthan

User metadata
Rank Oldbie
Rank
Oldbie

I dunno if it matters, but that slower 730 is PCI-E 2.0 card, faster is PCI-E 3.0

Im old goal oriented goatman, i care about facts and freedom, not about egos+prejudices. Hoarding=sickness. If you want respect, gain it by your behavior. I hate stupid SW limits, SW=virtual world, everything should be possible if you have enough raw HW.

Reply 18 of 33, by RayeR

User metadata
Rank Member
Rank
Member
ruthan wrote:

I dunno if it matters, but that slower 730 is PCI-E 2.0 card, faster is PCI-E 3.0

This doesn't matters. But it is interesting that the same GPU is presented with various PCIE spec. This makes stronger my assumption that older Gigabyte card use some older re-labeled GPU (probably GT 630? it's a PCIE 2.0 chip: https://www.geforce.com/hardware/desktop-gpus … /specifications) as they needed to sold out old stocks. So they used also older video BIOS with major version 70 that is not crippled yet.

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 4GB DDR3, 128GB SSD, GF7900GT, SB Audigy + YMF724F + DreamBlaster combo

Reply 19 of 33, by Matth79

User metadata
Rank Oldbie
Rank
Oldbie

The GT730 has a massively split personality as there are rebadges:
1. True GT730 - Kepler core with 64 bit GDDR5
2. Rebadged GT630 V2 - Kepler core with 64 bit DDR3
3. Rebadged GT430 - Fermi core with 128 bit DDR3
Though in my resource, they are all down as PCI-E 2.0, though the two Keplers only implement X8