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?