20160109 - Driving NTSC TVs From Modern GPUs at 59.94 Hz Without Interlacing

Using a HDFury 3 (purchase directly from HDFury.com and DHL shipping is free and only a few days from Taiwan), along with a Crescendo Systems: TC1600. Unfortunately it is only possible to the get TC1600 used now. There are few converters which will output progressive NTSC signals...

The HDFury 3 was designed for HDTV component output. I was not able to get it working for the lower resolution NTSC TVs. So I drive standard VGA output into the TC1600 which converts to component for the NTSC TV.

NTSC TVs are fixed frequency 15.734 KHz horizontal rate doing either around 480 lines at 27.97 Hz interlaced or 240 lines at 59.94 Hz without interlacing. The horizontal resolution is variable, but vertical resolution is fixed. Also there is an overscan region which scans outside the visible area of the screen. The lowest horizontal resolution I could drive from this setup was 512 pixels using the following modeline pulled from Useful Modelines,

Modeline "512x240_60,0Hz 15,7KHz (60Hz)" 9.935 512 520 567 632 240 241 244 262 -hsync -vsync

Guessing anything under that has a dot clock which is too slow for the GPU I tried, or too slow for the HDMI output, or something in the pipeline. Going higher, it is possible to easily drive 720x240 but the TV's slot mask is not fine enough to resolve the extra pixels. I drive the TV using a mode which starts out as a 640x240 mode. Pixels are near 1:2 aspect ratio, which is fine for custom rendering. Here is the starting modeline,

Modeline "640x240" 12.312 640 662 719 784 240 244 247 262 -hsync -vsync

The first and last 8 lines tend to be in overscan, so I drop vertical resolution to 224 by moving lines into the blanking regions. Then I drop horizonal overscan which drops the width to 592, and then finally adjust the modeline to center the image horizontally by changing the h-sync region. Here is the final modeline next to the origional modeline,

Modeline "592x224" 12.312 592 654 711 784 224 236 239 262 -hsync -vsync
Modeline "640x240" 12.312 640 662 719 784 240 244 247 262 -hsync -vsync