Is flicker-free interlaced mode toggling possible to implement?

Alberto Simón Francés alberto at simon.ph
Fri May 20 14:08:33 UTC 2016


The reason I'm asking is because I'm working on a embedded system using
(mostly) off-the-shelf parts for historical purposes that has to be able to
drive a CRT display change modes in a flicker-free way between certain
modes just like certain older systems would do it. The Super Nintendo, for
example, can switch between 256x224, 512x224, 256x448i and 512x448i
completely flicker-free, that means that the CRT monitor it drives always
sees the same horizontal and vertical timing signals and doesn't have to
resync on mode switch. For horizontal scaling it simply pixel-doubles as
CRTs are excellent at hiding horizontal scaling artifacts assuming
fractional scaling.

Flicker-free interlaced mode switches is what I'm after and so far I
haven't been able to achieve it. Maybe there is some way to sync
mode-switches in order to prevent the flicker when the pixel-clock and
horizontal timings are the same, and it's basically switching between an
interlaced mode with twice the vertical resolution and a non-interlaced
mode? (240p and 480i)

The way these older consoles implemented it is using something called
double-strike (as it was coined by Nintendo). It is a technique used by
older consoles to be able to send progressive resolutions on an interlaced
signal. This is how a Super Nintendo, for example, is able to send a
resolution of 256x224 using NTSC or 256x239 using PAL as those encoding
standards require interlaced signals. It was a hack, but it worked, and
because the signal was essentially an interlaced signal, it allowed
switching modes flicker-free. The hack works by sending even fields as odd
fields and, as such, the screen essentially sees 60 odd fields and 0 even
fields as opposed to 30 even and 30 odd.

I'm not afraid on hacking code in the proper parts in order to make it
work, but if that's the only solution, pointers would be great.

I know that I can create custom modes, and I also know that there is no
restriction for creating either progressive or interlaced modes and
switching between them, but even with matching pixel clock and horizontal
clocks, I'm seeing flicker happening when switching the mode. This doesn't
happen on the consoles and I would love to be able to replicate the effect
while driving a CRT display.

Your help to get me started would be greatly appreciated, and sorry for the
long email.

Best regards,
Alberto Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20160520/6b6812bb/attachment.html>


More information about the dri-devel mailing list