Is flicker-free interlaced mode toggling possible to implement?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux