luciodra wrote: Fri Oct 23, 2026 7:56 am
One thing I don't understand: with the ET4000 the resolution should be the same, but with the same adapter and the same monitor it works....
It's not so much the pixel resolution that the CPU sees, but the signal timings / output resolution that goes to the monitor.
(for these low resolutions, the graphics card is being told to pixel double, otherwise you would need a 15khz capable screen and those are very rare)
The 320x200 setting I made for ET4000 was tweaked to output something close enough for a monitor to recognize as a 640x480@60hz signal.
The standard for PC graphics cards was to output that resolution as a 640x400@70hz signal and modern HDMI-only stuff often don't care to support that because nothing modern ever outputs that size and frequency over HDMI. (Same thing for VGA hardware text modes as used by MS-DOS etc, they are 720x400@70hz signals)
The SVGA driver set graphics mode not by directly writing VGA + per-card-specific registers based on user-settings but by telling the gfxcard "please set mode number X" (*) and then the vgabios on the card itself does that, same as how it was done on PC.
So 320x200 ends up as the then-standard 640x400@70hz but which modern stuff can often ignore.
(*) There are exceptions to this. 1280x720 was never a thing on ISA graphics cards so no card has built-in timing tables for such a mode.
For these I first set SVGA 1024x768 through the vgabios to get most of the internals set up roughly where they need to be and then I modify only what is needed to make that into 1280x720.
The fix is not super complicated.
I'll just have to add a 320x240 which is derived from the cards own built-in SVGA 640x480@60hz -- basically enabling pixel doubling so that 320x240 on the cpu becomes 640x480 on monitor.
Another alternative is to make the 320x200 derived from that instead of using the true Mode13h.
But there are both pros and cons in doing so.