Software Defined Television On An ESP32

Composite video from a single-board computer? Big deal — every generation of Raspberry Pi has had some way of getting composite signals out and onto the retro monitor of your choice. But composite video from an ESP32? That’s a thing now too.

There are some limitations, of course, not least of which is finding a monitor that can accept a composite input, but since [bitluni]’s hack uses zero additional components, we can overlook those. It really is as simple as hooking the monitor up to pin 25 and ground because, like his recent ESP32 AM radio station, the magic is entirely in software. For video, [bitluni] again uses his I²S tweaks to push a lot of data into the DAC really fast, reproducing the sync and image signals in the 0-1 volt range of the PAL composite standard. His code also supports the NTSC standard, but alas because of frequency limitations in the hardware it’s monochrome only for both standards, at least for now. He’s also got a neat trick to improve performance by running the video signal generation and the 3D-rendering on separate cores in the ESP32. Check out the results in the video below.

It looks like the ESP32 is getting to be one of those “Is there anything it can’t do?” systems. Aside from radio and video, we’ve seen audio playback, vector graphics, and even a Basic interpreter easter egg.

Continue reading “Software Defined Television On An ESP32”

Neo Geo Gets Line Doubled

NeoGeoScan

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.

Continue reading “Neo Geo Gets Line Doubled”