We love old video games, but we hate the way analog interlaced video looks on our new LCD monitors. [Michael] feels the same way, so he’s created NeoVGA, A Neo Geo Line Doubler in VHDL. Neo Geo, like many classic consoles, didn’t use the full resolution of an analog TV. In NTSC mode, it ran at 320×224 pixels. PAL users got an extra 32 vertical pixels for 320×256 pixels. The system ran with an approximately 15kHz horizontal sync and ~60Hz vertical sync.
This is not exactly a VGA compatible signal, so it would be relegated to composite or S-Video capable displays. The signals looked pretty good on a CRT, but on an LCD, they tend to look crummy. Modern LCDs don’t natively handle interlaced and/or low resolution input signals. The TV’s controller performs the magic of buffering, interpolating, and transforming the input signal to be compatible with the LCD panel. As [Michael] explains, most of these algorithms are optimized for TV video signals with lots of motion. They perform poorly on static high contrast images such as the background of a fighting game. TV controllers also add lag to the signal chain. Not much of a problem when watching movies, but it’s a big problem when you’re trying to pull off that triple hit combo.
Click past the break for more on [Michael's] creation.
There are commercial solutions out there such as the XRGB-3, though they are expensive and hard to obtain. [Michael's] solution is a classic one: line doubling. As each line is clocked in from the source, it is output twice. This doubles the horizontal scan rate to 30kHz, a frequency compatible with VGA. Since the video is output in lock step with the input, there is little or no lag created by the line doubling process.
The circuit was originally implemented on a borrowed Altera DE2 board, though [Michael] eventually switched things over to a Xilinx Virtex 2 Pro devboard. He’s still working on a few stability issues, but we’re excited at the progress.