InterClaw wrote on 2025-01-05, 00:10:
But after the POST screen then it switches to outputting what I now have learned technically is 720x400@70Hz then (DOS text), but actually internally is doubled from 360x200?
The DOS 80x25 text Mode 03h is actually full 720x400 in VGA, and not a scan- or clockdoubled 360x200. VGA adapters only scandouble the original 320x200 graphics mode.
To give the full historical details of this scandoubling business (maybe too much information for this VGA->HDMI conversation, but here we go):
Historically, CGA adapter brought three types of video modes:
- Modes 00h and 01h: 320x200 pixels 40x25 text mode in 60Hz with 8x8px font,
- Modes 02h and 03h: 640x200 80x25 text mode in 60Hz with 8x8px font,
- Modes 04h and 05h: 320x200 pixels 4 color graphics mode in 60Hz
VGA "updated" these video modes in four ways:
- it upgraded the earlier 8x8px adapter font to a 8x16 px font,
- it added a new "Dot 9" mode, which added extra 9th column of empty pixel space after each horizontal 8px of font to give a bit of spacing between characters to make them more readable (i.e. 320px -> 360px and 640px -> 720px),
- it added this scandoubling mode of operation to allow doublescanning modes with 200px of vertical resolution (for better visual clarity)
- it changed the original 12.5 MHz CGA crystal to two different, 25 and 28.25 MHz pixel clock crystals that could be divided by 2 to get 12.5 and 14.125 MHz respectively.
Putting these effects all together changed the above CGA video modes to:
- Modes 00 and 01h: 360x400 pixels 40x25 text mode in 70Hz with 8x16 font with Dot9 spacing, using 14.125 MHz pixel clock
- Modes 02h and 03h: 720x400 pixels 80x25 text mode in 70Hz with 8x16 with Dot9 spacing, using 28.25 MHz pixel clock
- Modes 04h and 05h (and a new Mode 13h): 320x400 pixels graphics mode in 70Hz using 12.5 MHz px clock (no Dot9 spacing)
InterClaw wrote on 2025-01-05, 00:10:
And most older games, internally running at 320x200, are technically output as 640x400@70Hz throught the VGA port?
Technically to be a bit pedantic, in VGA the 320x200 video modes become 320x400, not 640x400. However, like mentioned before, analog VGA wire does not carry information about horizontal resolution, so for any receivers on the VGA end, one can effectively pretend as if that mode is 640x400. But every two pixels of that 640 pixels are effectively the same, i.e. there's only 320 pixels worth of information in X direction.
I.e. when the signal is still digital before reaching RAMDAC, it is actually only 320x400, and not 640x400. (VGA only scandoubled, but not clockdoubled)
Though that is a technical distinction that is only visible to devices that are interfacing with the Feature Connector, e.g. when using CRT Terminator Digital VGA Feature Card ISA DV1000 .
InterClaw wrote on 2025-01-05, 00:10:
So you still think these oddbal resolutions, at or around 25MHz pixel clock, are just put into an HDMI signal the way they are? These adapters aren't converting/scaling them to anything more "modern" or commonplace for HDMI?
I believe that is the case: the VGA->HDMI converters won't do any "magic" reshaping, or re-framerateing of the signal. Re-framerateing would require a framebuffer-based rescaler, which is much more complex than a simple genlock + TMDS+LVDS encoder.
It is very likely that the cheaper the device, the simpler its operation is, so no framebuffer-based complex reshaping.
InterClaw wrote on 2025-01-05, 00:10:
It's technically possible for the HDMI signal to have pretty much any resolution?
That is correct. HDMI can carry any arbitrary horizontal and vertical resolution and arbitrary xx.yyzz... Hz fraction of a refresh rate that one can imagine. The cable framing protocol itself doesn't impose any restrictions.
In addition to those parameters, there are also other "blanking" and synchronization parameters that relate to nonvisible aspects of the video timing, and also a possible (visible) overscan/border that can be present. These variables together constitute "timing geometry", that can either follow some timing standard, such as "DMT", "VESA", or "CVT", or "CVT-Reduced Blanking" (of which there is now a third iteration of coming out), or the video geometry might not follow any standard, which e.g. these 720x400 70Hz or 320x400 70Hz video modes will fall under.
InterClaw wrote on 2025-01-05, 00:10:
Might be formally out of spec and not easily understood by the receiving display, but technically possible to at least send like that?
In my tests, most LCD displays are generally quite compliant to displaying many arbitrary nonstandard resolution modes, but the most critical requirements are the min and max horizontal and vertical frequencies. So the 70 Hz vertical refresh requirement is most often the out of spec requirement. The VGA -> HDMI scalers will generally happily pass through 70Hz VGA out as 70Hz HDMI, and leave it to the receiver to be able to cope with such a signal.
(with a somewhat limited test size set,) TVs tend to be more picky.. Modern Samsung smart TVs at least have been quite picky to only want to accept "standards compliant" CVT video timings, or they bark with a blank screen.
InterClaw wrote on 2025-01-05, 00:10:
I will probably not go all the way and get an OSSC that you mention, but out of curiosity, do you have experience with it? If so, what does it do with the 70Hz signal? Do you have the option of either also outputting 70Hz as well, or to convert it to 60Hz (with resulting stuttering)?
I have the earlier regular (non-pro) OSSC: https://videogameperfection.com/products/open … scan-converter/ . That one is a rapid naive (in the positive sense of the word) "scan multiplier" upscaler: i.e. what it does is it buffers up a single scanline, and then clock- and scan multiplies it N*M times (N and M being 1x, 2x, 3x, 4x, ...). It has a limitation (or benefit, depending on one's intended use case perspective) that it will (must) retain whatever the vertical refresh rate of the input was intact to the output. So input VGA 70Hz will likewise output that same 70Hz to HDMI. I.e. it physically cannot alter the frame rate of the video.
Scan and clock multiplication upscaling has another limitation that it cannot shrink the "time in blank" portion of the video, so large scan multiplication factors become infeasible. E.g. 320x400 -> 1600x1200 would require 5x3 scan+clock multiplication, which would result in a baffling pixel clock of 376.875 MHz, way out of any reasonable pixel clock (that OSSC non-pro could handle).
The newer OSSC Pro has a more complex framebuffer mode that enables upscaling in a way that does not amplify "time in blank". As result, it can do more sophisticated rescaling that also achieves re-framerateing.
CRT Terminator Digital VGA Feature Card ISA DV1000 is also a framebuffer based upscaler (and it can also do a simpler framebuffer bypassing clockdoubling upscaling in "Passthrough" mode) like OSSC Pro, although from what I gather, OSSC Pro has a wider family of different upscaling algorithms to choose from. (I don't have OSSC Pro to verify how exactly it operates)