20 comments

[ 8.4 ms ] story [ 54.3 ms ] thread
This had me thinking it would be a comprehensive list of Microcontroller VGA interface projects but it's not. In fact, there was a store involved?
It’s possible to form monochrome VGA signal with an SPI, which is commonly available in microcontrollers.

I did little write-up on how to do it efficiently (DMA etc) on PIC32: https://hackaday.io/project/173682-color-ascii-terminal/log/...

On a fast enough STM32 you don't need any hardware tricks at all, you can just use DMA to feed values to an IO port, and get 8-bit VGA colour even at quite high resolution - 640x480 is entirely doable if you have enough memory.

See for instance https://github.com/SVatG/JupiterAndBeyond.

After all these years I still think this is the most impressive demo of generating a VGA signal on a microcontroller: https://www.linusakesson.net/scene/craft/
That is unbelievable... So much dedication.
At a quick glance I can't tell what makes this so impressive. The Gigatron outputs VGA with significantly fewer resources[0] than an ATMega88, for instance.

[0] except for the ram I suppose.

Ben Eater has a good VGA series https://eater.net/vga
I followed Ben's guide to make a little ATTiny 2 colour VGA output of a clock counting down. https://github.com/duncanspumpkin/ATTiny-B-W-VGA

It was quite a challenge building it into such a tiny controller. Was doing it for a University project where we wanted to have the clock started from an external source so needed to keep one I/O free for that input. It ended up with every I/O pin of the 8 pin micro having a use.

Let's add this one (warning large images): http://debuginnovations.com/TTL_Terminal/home.html

Last year I tried to get a VGA card for Arduino, like Gameduino. Sadly they are all sold out. The closest thing that I have found was https://www.tindie.com/products/petrohi/geoffs-vt100-termina... which is based on this project https://geoffg.net/terminal.html (already mentioned by other comments).

This is good for text UI but not so good for games. I was thinking about using real 8-bit ISA graphic card, but it turned out they are now considered collector items and have very high prices (at least where I live).

In the end the only sensible choice was to switch to ESP32, there is a module with PS/2 and VGA connectors and audio output I used it to run PCEmulator via FabGL library (https://blog.marcinchwedczuk.pl/fabgl-pcemulator-on-ttgo-vga...), but it is also suitable for programming simple games. Even better you can just put it in a small box with power socket and voila you have a working portable console for 8bit games.

The only problem that I had with this last approach is that you need to do some magic to connect NES controllers to it. I haven't tried it yet, but I was thinking about repurposing PS/2 IO ports.

Oh thanks for that first one! That's so neat and such a pretty board too.
> In the end the only sensible choice was to switch to ESP32

I understand and appreciate the fun to get something working on minimal hardware. But unless you are going to mass produce a stronger dev platform gets my project going much faster.

For example, I have ESP-WROOM-32 project that is ultimately aimed for an ESP-01. In any respect, this last step is only justified price wise, if I were to build dozens of devices. I do it once for intellectual curiosity but after that I don’t plan to spend much time on saving 5 bucks in hardware.

For games, I would definitely start with a pi zero at least.

As far as the gameduino goes, I believe there was one iteration (perhaps the first) based on the FTDI FT800 chip. the FT810 series can do up to 800x600, but they output as parallel digital data so you gotta feed the R,G,B bytes into a resistor ladder dac or something. I finally got one but I haven't managed to make it work yet.

The other Gameduinos were FPGA based.

The RP2040 (as used by the Raspberry Pi Pico) can generate some impressive video thanks to its PIO. E.g. Luke Wren's work giving DVI output https://github.com/Wren6991/picodvi and the scanvideo library: https://github.com/raspberrypi/pico-playground

I did a write up going over how to generate VGA video from scratch to produce some SNES like graphics:

https://gregchadwick.co.uk/blog/playing-with-the-pico-pt4/ https://gregchadwick.co.uk/blog/playing-with-the-pico-pt5/ https://gregchadwick.co.uk/blog/playing-with-the-pico-pt6/

I've been programming on a microcontroller for the first time this past year, and tinyvga and similar sites have been critical in getting my project working. It's very rewarding the first time you get some low level bit banging to produce a screen, keyboard interface, etc.
I've been sort of pondering the thought of using a microcontroller as the base of an ISA "soft video" card for vintage PCs.

I was looking at things like the Graphics Gremlin and the kit to build a Trident 9000-based ISA VGA card, and realizing that 1) I don't think my skills or gear are up to SMD soldering, 2) at least the Trident part is 20-year-old stock with limited supply and questionable reliability, and 3) you still end up with an analogue output that needs a chain of adapters to drive a DisplayPort or HDMI monitor. I may as well just use my old Realtek RTG3106 card.

I'm picturing a board that did some minimal decode of the ISA bus to filter accesses to upper memory or desired registers, then plumb the rest of the bus onto the RasPi GPIOs, and just run some emulation code to interpret the requests and maintain a framebuffer-- drawn to a HDMI output.

I figure by doing the emulation in software, you could cover a wide variety of cards and trivially switch (i. e. toggle between Tandy 1000/PCjr style CGA+, Hercules, and VGA, with some software command rather than having to physically change cards or detach the monitor).

It feels like something like this would exist already, but the closest I've seen (https://github.com/eyalabraham/vga-rpi) is not a drop-in replacement for a standard PC card-- it seems to expect custom hardware and BIOS shimming.

My recent crazy idea was an FPGA attached to PCI (possibly PCI-e) interface and a modern video interface for retro gaming. Essentially, program the FPGA to be a Voodoo II. Problem is reverse engineering gets complicated, and you can still find Voodoo IIs on ebay.