Fully agree, you hit all the relevant points on observations about refresh rate. Most older LCD displays (that were built in the era when 4:3 LCDs were still a thing) did not actually support 70Hz inputs, but frameskipped such inputs to 60Hz, creating the stutter.
Many modern LCDs do accept up to 75 Hz refresh rate signal to fix up for that fault. But unfortunately by the time modern LCDs ended up doing that "fix", the panels had already moved to 16:9, which is why there are practically no 4:3 era LCD panels around that would also properly support the DOS 70Hz signal.
shamino wrote on 2024-12-02, 03:57:
To get it all, you need a CRT.
There is another way. But to illustrate why/how, let me first highlight one other major challenge that anything based on VGA has, which is not so often brought up.
The major problem with the VGA signal is that it does not provide enough information for the receiving end to automatically reconstruct the input pixels. Mainly, the VGA signal is missing information about two things:
1. the individual pixel clock signal, and
2. the display blanking versus border versus active display area, i.e. the "display blank" and "VGA borders".
The lack of these two things makes it practically impossible for an LCD display/converter/capture device with VGA inputs to automatically get the video right. (here by automatic, I mean "without human calibration/configuration") The first limitation means that there is no direct way for the LCD display to distinguish between 320x200 (which is actually line-doubled to 320x400) and 720x400 video (or simply put, between 80x25 text mode and mode 13h graphics). As a result, for example when I view 320x200 graphics via VGA input on my ASUS ProArt PA248QV, it incorrectly interprets "720x400" for the signal:
The attachment ASUS_PA248QV_incorrectly_interprets_DOS_320x200_as_720x400.jpg is no longer available
Automatically distinguishing from the input VGA signal whether it is 320x400 or 720x400 would require some sophisticated heuristics, measuring either the subtle timing differences in the blanking periods or doing a global picture pixel aware signal analysis, which I haven't seen any LCD display do, probably on the basis of "it's not worth it". They just sample according to the bigger of the two, i.e. 720x400 and call it a day. So like seen in the above screenshot, the displays will then misinterpret the video resolution, resulting in aliasing artifacts.
The second problem, 2. above, is more challenging. Because the VGA signal does not carry information about where a) the active image starts and b) the DOS framebuffer content starts, there are actually several pixels worth of black, followed by a VGA border that frame the image.
For example, if we take that input 320x200 image (digitally captured from the same game):
The attachment dos_320x200_digitally_captured_with_crt_terminator.png is no longer available
The VGA signal does not actually "see" 640x400 like above, but it sees an image that has 16 pixels of a border on left and right side, and 7 pixels of a border top and bottom, like this:
The attachment dos_320x200_with_vga_border_intact_digitally_captured_with_crt_terminator.png is no longer available
So the LCD displays that take in a VGA input, must have subcircuitry that would somehow magically detect the VGA border from the signal, and then crop it away. And they actually do. But here's the problem: this magic detection is actually just a hardcoded assumption that there will always be exactly that number of bordering pixels.
And here lies the disappointment: the above VGA border pixel values were not uniform across video modes or across different clone (S)VGA adapters. (They were actually freely programmable in color and width in all four directions by the graphics programmer!) So if you look up at the very first image in my comment, the analog VGA subsystem on this ASUS PA248QV has got the VGA border cropping wrong (likely because mistaking between 640x400 and 720x400), and hence there is a one pixel seam of cyan "glowing" through at bottom and at right edges of the image. I.e. the hardcoded signal timings values were off there. Poor VGA.
So to summarize the whole thing: even if one had a 1600x1200 display that would technically enable that integer pixel perfect upscaling of 320x200 input DOS content, because of the complexity of reconstructing the correct pixel clock and cropping away the VGA border, I have never seen an LCD display that would have pulled that off (or even cared enough to try), and the resulting image is aliased and often the VGA border "glows" from the edges.
To close off, let me comment on
shamino wrote on 2024-12-02, 03:57:
To get it all, you need a CRT.
and the other way I referred to: here is that same ASUS PA248QV, showing that same Keen image:
The attachment ASUS_PA248QV_displaying_pixel_perfect_DOS_320x200.jpg is no longer available
This is a pixel perfect integer upscale from 320x200 up to 1600x1200 with the correct VGA border crop, while being framerate-synchronized up to 1/1000th Hz of the input 70.362 Hz. All coming from my 486 Cyrix DOS PC with a VGA card and shown in real-time on that PA248QV. This is the "have-it-all" situation for 320x200 DOS video mode.
The way this is achieved is with CRT Terminator, which sidesteps the analog VGA path and has been carefully implemented to distinguish between several dozens of possible input DOS video modes like 640x400 and 720x400 and their VGA border crops, and has been analyzed on more than a hundred different VGA adapters from different manufacturers. Check out Lossless and pixel perfect video capture of DOS 70 Hz 320x200? for related info and download example video captures.
Note that in particular, CRT Terminator is achieving something that a scanline-based scaler like OSSC v1.8 cannot do. (This is due to a technical problem that scanline-based scaling that OSSC does must also amplify timings in blank, running out of HDMI bandwidth if 1600x1200 upscaling is attempted). OSSC Pro advertises a "full video scaler mode", so they might be able to do the same, but only if one manually programs the needed frame geometry pixel timings into it - CRT Terminator does so automatically. CRT Terminator even works with the custom video modes that games programmers like Pinball Fantasies or Jazz Jackrabbit utilized, and also with Mode-X, which I've seen no LCD display to get right.
There is a very long conversation thread about CRT Terminator at CRT Terminator Digital VGA Feature Card ISA DV1000, maybe by now a bit longer than one may care to read.. 😀