VOGONS


First post, by Rawit

User metadata
Rank Oldbie
Rank
Oldbie

Does that normally work? I have an S3 Savage4 with DFP(DVI) output. Perfect card, only problem with it is that its 640x400@70Hz output is recognized as 640x480@60Hz, on both VGA and DFP. These resolutions mostly share the same variables, except that for 640x400 the hsync is negative instead of positive. Reading from the register it shows that both hsync and vsync are set to positive. I changed the register value but it doesn't have any effect. Changing the DCLK does have effect, so I know that setting the register works.

Does anybody have any ideas how to do this?

Attachments

  • 3C2h.png
    Filename
    3C2h.png
    File size
    92.15 KiB
    Views
    607 views
    File license
    Fair use/fair dealing exception

YouTube

Reply 1 of 5, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie
Rawit wrote:

Does that normally work? I have an S3 Savage4 with DFP(DVI) output. Perfect card, only problem with it is that its 640x400@70Hz output is recognized as 640x480@60Hz, on both VGA and DFP.

Good question. At least on VGA output it should work normally, but I bet there is an external DVI encoder chip and there is a possibility they are able to set sync polarity differently.
But if a monitor says it's 640x480@60Hz, it most likely is, as the measurements are usually based on signal timing instead of just sync polarity.

Rawit wrote:

These resolutions mostly share the same variables, except that for 640x400 the hsync is negative instead of positive.

Not really, they have different amount of active lines and total lines per frame to make the frame rate difference, not just different sync polarity.
640x480 : (25175000 Hz pixel clock / 800 pixels per line) / 525 lines per frame = 59.94 Hz format (using 25.2MHz you get exactly 60.00 Hz).
640x400 : (25175000 Hz pixel clock / 800 pixels per line) / 449 lines per frame = 70.09 Hz format (using 25.2MHz you get 70.16 Hz).

(However, you might confuse this with 640x350 as it has exactly identical timing with 640x400 except the polarities are different).

In digital signals the sync polarities are not really useful but may need to be correct for it to work.
In analog VGA signals the sync polarities choose the CRT vertical scanning speed, which originally was limited to three modes, 350, 400 or 480 lines visible.

Rawit wrote:

Reading from the register it shows that both hsync and vsync are set to positive.

That's quite odd; officially there is no such VGA mode. Did you read it from port 0x3CC?
640x480 has negative HS, negative VS.
640x400 has negative HS, positive VS.
640x350 has positive HS, negative VS.
Higher resolutions used both positive.

Reply 2 of 5, by Rawit

User metadata
Rank Oldbie
Rank
Oldbie

That's quite odd; officially there is no such VGA mode. Did you read it from port 0x3CC?

They are both negative, I got confused. The default value is E3. If I change the value and start a game and read the value afterwards, it's back to E3. I tried setting it to A3, as I think those should be the correct settings.

At least on VGA output it should work normally, but I bet there is an external DVI encoder chip and there is a possibility they are able to set sync polarity differently.

Yes, I started testing on the VGA port as the card has an external TMDS and there are a lot of Flat Panel registers. Changing sync seems to have no effect. Changing the Clock Select does. I get at 68Hz signal then, at 640x480 still, both on VGA and DFP.

Does this mean that the DCLK PLL registers are overruled? I have to check SR15 in that case.

YouTube

Reply 3 of 5, by NJRoadfan

User metadata
Rank Oldbie
Rank
Oldbie

Its possible the video BIOS is forcing 60Hz output in text mode for compatibility reasons with LCD displays. What does the output look like when running VGA mode 13h (320x200)? Sync polarity really doesn't matter with modern multisync monitors and its completely irrelevant to DVI-D connections.

Reply 4 of 5, by Rawit

User metadata
Rank Oldbie
Rank
Oldbie

Mode 13h is displayed as 640x480@60hz, with black borders. It's possible that it is forced for compatibility reasons, as this card was advertised to be used with a digital projector. But doesn't the BIOS just set the registers to achieve that?

YouTube

Reply 5 of 5, by Rawit

User metadata
Rank Oldbie
Rank
Oldbie

I've played with the scaling registers. When using the registers for scaling everything <480 I get a fullscreen image on VGA and DFP. So it means the card is set to 480 pixels on purpose and that it's not a case of a misconfigured or misindentified signal. When I turn on the registers for scaling, Wolfenstein 3D is fullscreen. Doom and Blood seem to reset the register value somehow. Now to figure out how the 480 resolution is set.

Update: I disabled the Flat Panel output with a register. And now I have 640x400 on VGA. Most games are fullscreen now, but some screen mode changes make the register setting undone. Makes me wonder if I can get it to do 640x400 through DFP.

YouTube