To slow down from 70hz to 60hz without letterboxes, one would have to "sink" time for the duration of those extra 10 frames somewhere. This could theoretically be done in one of three ways:
1. slow down the pixel clock from 12.6 MHz to 10.7 MHz. Unfortunately this would be a soldering job to change the crystal on the VGA card.
2. increase the duration of vertical retrace. The CRT ray would be locked in vertical position for the duration of vertical retrace, so scanning will be effectively "paused" and the geometry would not be affected. In order to get 60hz, reusing the geometry calculations from above, one would need 12600000 / (320+8+6+48+18) / (400+14+6+78+27) = 60.000 hz, i.e. a vertical retrace period of 78 lines. But unfortunately the VGA CRTC registers have a limitation that vertical retrace period can be only at most 15 lines (maybe at a stretch 16 lines, though that may be incompatible with some adapter implementations), since there are only 4 bits of space in the vsync length register.
3. increase the duration of horizontal retrace. Similar to above, the CRT ray will then be locked in horizontal position to "pause", and the scanning geometry would not be affected. In order to get 60hz, calculating the numbers again gives
12600000 / (320+8+6+116+18) / (400+14+6+2+27) = 59.96 hz.
This is actually possible, almost. The horizontal retrace register does have enough bits to express this, but due to the way hretrace and hblank end register scanning works, I needed to transfer 8 clocks from horizontal back porch to horizontal sync to get that mode to work.
This gives the following video mode:
Pixel clock: 12.6 MHz
Horizontal:
- active: 320 pixels,
- border: 8 pixels (standard)
- front porch: 6 pixels, (standard)
- sync: 124 pixels, (modified up from standard VGA 48 pixels)
- back porch: 10 pixels (modified down from standard VGA 18 pixels)
Vertical:
- active: 400 lines, (vertical resolution = 200 lines doubled) (standard)
- border: 14 pixels, (standard)
- front porch: 6 lines, (standard)
- sync: 2 lines, (standard)
- back porch: 27 lines (standard)
But there is then the big drawback that Timo already mentioned above:
Horizontal refresh rate = 12600000 / (320+8+6+116+18) = 26.923 kHz is completely nonstandard, so many VGA monitors will be unable to sync to this mode. Multisync monitors might not care.
Still, trying it out, adjusted the test program to produce this video mode:
View attachment 1251483
Curiously, not even my new 2022 ASUS ProArt PA248QV (1920x1200@75hz display with VGA and HDMI inputs) wants to sync to this video mode via VGA (so even modern digital displays might not like non-31.5 kHz video signal via VGA), but my video capture equipment does not care, and it looks like this:
View attachment 1251486
The color moire is from the camera, not visible in reality. I'd be curious to hear if that would have any chance of working.
Apart from that, the only way would be to do it like Pinball Fantasies and Pinball Illusions did, i.e. leave it to the user to adjust the vertical scaling knobs to remove the letterboxes.