I have some arcade machines which I build custom Linux PCs for. They all have 15khz monitors in them so I do some funky Linux stuff to output (what I think is) a correct signal to drive them.
This is the spec of the display:
Arcade CGA 640x240 Horizontal Vertical Scan Frequency: 15.725 KHz Scan Frequency: 60.018 Hz Scan Period: 63.6 µSec Scan Period: 16.7 mSec Active Video: 50.0 µSec Active Video: 15.3 mSec Video Delay: 11.9 µSec Video Delay: 1.2 mSec Sync Pulse: 4.7 µSec Sync Pulse: 0.2 mSec Resolution: 640 Resolution: 240 Clock Freq: 7.16 MHz
However, I run the game at 640x480. To do this I use a XFree86 Modeline, specifically this one:
Modeline "640x480" 12.324 640 648 706 784 480 483 489 524 interlace -Hsync -Vsync
If you're not familiar with modelines this is what the numbers mean, they translate to this:
Horizontal: Width: 640 Sync start: 648 Sync end: 706 Sync total: 784 Vertical: Height: 480 Sync start: 483 Sync end: 489 Sync total: 524 Pixel clock: 12.324MHz
Based on these numbers I can do some calculations to see what frequency the display is being driven at:
(12.324*1000000)/784 = 15719hz = 15.719kHz (horizontal refresh) (12.324*1000000/(784*524) = 29.99Hz (vertical refresh)
Since this display needs to be run at 60Hz, I interlace the signal (interlace option in the modeline), which I understand effectively doubles the vertical refresh rate.
Based on the specs, does this output signal seem safe? Is there a better modeline I could use?