Miroslav Nemecek's PicoVGA Brings High-Res Video to the Raspberry Pi Pico — Just Add Resistors
Designed to make video handling as simple as possible, PicoVGA includes sprite handling, high-resolution modes, and more.
Developer Miroslav Nemecek has released a library designed to give the Raspberry Pi Pico a VGA video output — only needing a handful of resistors — while providing a framework around which graphical applications, including games, can be written.
"The PicoVGA library allows output from the Raspberry Pico to a VGA monitor or PAL/NTSC TV, with a focus on ease of use in technical and gaming applications," Nemecek explains of his project. "It provides 4 graphic overlay layers with transparency, nearly 30 frame buffer formats that can be freely combined with each other, making do with limited RAM memory size. The limitation of output to 8 bits also contributes to RAM saving."
"The RP2040 processor contains 264kB of RAM. This is not much for higher resolution image output and therefore RAM needs to be very sparing. In technical practice and for retro games (the processor does not have the power for more advanced games), 8-bit graphics output in R3G3B2 format (i.e. red 3 bits, green 3 bits and blue 2 bits) is fully sufficient. Using the dithering technique, interesting display results can be achieved even with 8-bit output."
Nemecek's software isn't the only attempt to give the Raspberry Pi Pico we've seen, though most — a recent release by Robin Grosset aside — centre around the use of a dedicated carrier board. Not so PicoVGA: All you need on the hardware front, beside the Raspberry Pi Pico itself, is a handful of resistors and a suitable VGA display.
The software includes configurable resolutions up to 256x192 to 1280x960 resolution, or 1024x576 for PAL and 848x480 for NTSC interlaced displays, comes with near to 30 frame-buffer formats, various colour palettes, built-in image compression, transparency, hardware sprites, and an optional PWM audio output. It also automatically overclocks the RP2040 to boost performance at higher resolution modes, and does all its magic on the chip's second core — leaving the first free for your application.
Nemecek has written a guide to getting started with PicoVGA on his website, while the source code — along with a variety of examples, including ports of Pac-Man, Sokoban, and Tetris - can be found on his GitHub repository under a custom permissive free-software license.