VGA Library For The Raspberry Pi Pico

[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

  1. 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?

    1. 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

  2. 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).

  3. 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.



Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.