[Miroslav Nemecek] really pushes the limits of the Pico with his PicoVGA project, which packs a surprising number of features. His main goal with this library is to run retro games which can fit within the limited RAM and processing power of the Pico, but the demo video below shows a wide array of potential applications.
The library provides a whole slew of features, including frame buffering, sprites, overlays, and resolutions up to 1280×960 in either NTSC or PAL timings. A PWM-driven audio output channel is also included in the package. His library takes full advantage of the programmable I/O module functionality and uses the second core which is dedicated to video processing. However, with care, the second core can perform application tasks in certain circumstances. The VGA analog output signals are provided by resistor ladders, and pixel color is 8-bit R3G3B2 format. To be clear, [Miroslav] does cheat a little bit here in one regard — he overclocks the processor up to 270 MHz to meet the timing demands in some of the resolutions.
[Miroslav] has developed these tools using ARM-GCC on Windows, but he lacks the experience to make a Linux build. He welcomes help on that front from anyone familiar with Linux. And stay tuned — there may be more coming from [Miroslav] in the future. He notes that the PicoVGA library was created as part of a retro gaming computer project which is still under development. We look forward to hearing more about this when it gets released.
A couple of weeks ago we wrote about a monochrome VGA version of Pong for the Pico by [Nick Bild]. It’s exciting to see these projects which are exploring the limits of the Pico’s capabilities. Have you seen any boundary-pushing applications for the Pico? Let us know in the comments below. Thanks to [Pavel Krivanek] for sending this project to our tip line.
11 thoughts on “VGA Library For The Raspberry Pi Pico”
This is incredible.
Can one create a video card for the regular Pi that can offload the processing and output of a VGA signal with the Pico itself? Even if it’s just HDMI to VGA conversion?
You’re more likely to just get hdmi – vga adapter, rather that try to use this.
Pico probably wont accept hdmi, and if someonne wanted to make their own converter using gpio this would add even more load on the pi itself and wouldnt be chaper than converter
It’s possible to generate HDMI signals with an overclocked pico, as shown before:
Receving HDMI might be more difficult since you would have to sync up with the 252MHz input somehow. Maybe if you could figure out a way to clock the PIO from the HDMI signal itself? And generate the VGA signal directly from the HDMI pixel data.
regular pee can output VGA with just a resistor ladder, its called Gert VGA 666
My regular pee can old output a standard stream of lightly colored liquid
At last, 8-bit colour PICO VGA with resolutions down to 320×200! The previous VGA support was really more of a trick, because the CPU had to generate the rasters in real-time (e.g. download from flash) since obviously there’s no enough RAM on a PICO to support 16-bit video at 800×600 or so (480K pixels * 2 bytes = 1MB, when the PICO only has 256kB ish). d
Great stuff, I’ll certainly try to hook my PICO up with that. I guess it also means Sega games can be emulated more easily (if 9-bit palettes are converted to 8-bit).
Now the Pico really got my attention!
That guy is just a frickin genius. His TI vintage progcalcs recreated on Atmega8 are simply miraculous.
Color me impressed. But then again, this is a bit better IMO:
* ESP32 VGA, Keyboard, Mouse Card V2 (PCB Only) $12.00
* ESP32 VGA PS/2, ESP32 runs FabGL to produce VGA display
I have created a new PicoQVGA display library for the Raspberry Pico – greatly minimized, with alone 320×240/8 graphics mode. It is mainly intended as a tutorial for using PIO and DMA on the Raspberry Pico. There is a detailed description of the program code on the page. … I was quite pleasantly surprised that the 320×240/8 video mode is sufficient in practice for most applications.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)