A VGA Retro Console With Everything Generated From A Single ARM Cortex M0

The later game consoles of the 8-bit era such as Nintendo’s NES or Sega’s Master System produced graphics that went beyond what owners of early 1980s home computers had come to expect from machines with the same processors, but they did so only with the help of powerful custom chipsets for their day that took care of the repetitive hard work of assembling frames and feeding them to the display device. Reproducing their equivalent with more modern hardware requires either some means of creating similar custom silicon, or a processor significantly more powerful such that it can do the work of those extra chips itself. But even with a modern microcontroller it’s still a significant challenge, so [Nicola Wrachien]’s uChip, a VGA console that does the whole job in software on a humble ARM Cortex M0 is a significant achievement.

If you are familiar with the home computers that used the processor to generate the display output, you’ll know that they spent most of their time working on the lines of the display and only had a few milliseconds of the frame blanking period for the device to perform any computing tasks before returning to the next frame. The 320×240 at 57 frames per second gives a line sync frequency of 30 kHz, and the computing happens while the display is sent the black space at the top and bottom of the screen. This is reckoned to be equivalent of the ATSAMD21E18 microcontroller on the uChip module the system uses running at only 10MHz rather than the 48MHz it is running at in reality, and with these resources it also runs the game logic, USB controller interfacing, reading games from the SD card, and game sound.

The result is a complete game console on a small PCB little longer on its longest side than its connectors. We may have largely seen the demise of VGA on the desktop several years after we called it, but it seems there is plenty of life in the interface yet for hardware hackers.

17 thoughts on “A VGA Retro Console With Everything Generated From A Single ARM Cortex M0

  1. It’s a bit of a clunky run-on sentence, but it’s still valid – “Video generation takes up 4/5ths of the total CPU time, but the remainder is still enough to do X, Y, Z and Q.”

  2. It is the way the English speak and write. I got told off for speaking like that to foreign customers even though their English language language skills were excellent. ‘Single idea per sentence’ I was told. Similar problems exist in many languages.

    1. > ‘Single idea per sentence’

      Thanks, I’m not sure I’ve done that well. One thing I learned from writing a book: Always answer the question “What is ‘it’?”. Or put another way avoid ‘it’. Make it clearer what you are talking about.

  3. > Nintendo’s NES or Sega’s Master System produced graphics that went beyond what owners of early 1980s home computers had come to expect from machines with the same processors

    ERROR, ERROR, UK home computer user detected! :)
    Both Atari 800XL and Commodore 64 released earlier, offered similar graphics, and cost the same ~$150.

  4. If memory serves, 320 x 240 resolution is CGA not VGA, which started at 640 x 480.

    I did some contract work for a guy back in the early 80s that put my software running CGA displays in GM and Ford factories, replacing old 110 baud Teletype stations, saving them tons of money (it only displayed 3 lines of manufacturing codes at work stations as: previous, current, next).

    1. 320×240 8 bit color is a mode in VGA. It was also called MCGA in some IBM PS/2 computers that had 640×480 resolution capability but only with 16 colors or less. Many early 3rd party VGA cards were also limited like that, with some having empty sockets for RAM to enable 640×480 8 bit or higher.

      That’s why there were such a large amount of 320×240 8 bit color PC games, to cater to the best lowest common capabilities of VGA cards circa 1984 to 1994.

      1. Nah, 320×240 is ModeX “popularized by Michael Abrash. It was first published in July 1991..” and so on, Im sure you can read wikipedia.
        Mode 13h 320×200 is the standard VGA 8bit color resolution. Nothing used ModeX pre 1992.
        The Lost Vikings from 1993 is the earliest commercial game I could find running in ModeX. Blackthorne in 1994 (same publisher), then a lot more in 1995 like Pinball Illusions or Earthworm Jim.

  5. 320×240 wasn’t a standard resolution until well after VGA cards.

    The standard video modes that the original VGA supported were 320×200 in 256 colors, 640×480 in 16 colors, and 720×400 text mode, plus all the modes inherited from the CGA and EGA.

    The VGA was versatile enough to be tweaked to generate any video mode with 320,360,640,720 pixels by 200,240,350,400,480, but not all of them were widespread.

  6. Some clarifications: the standard resolution of this console is 320×200, not 320×240… Yes, you can get 320×240 too, but it would leave too little time for handle USB, sprite handling, game logic, etc.

    The name of the project contains “VGA” because it connects to a VGA monitor, and not because it features a 640×480 standard VGA resolution.
    Many games in the 90s ran on VGA cards, still they had 320×200 or 320×240 pixels. Actualy, in this console the 320×200 resolution is simply a 640×480 resolution with horizontal pixel doubling, and each scanline is repeated two times… (whereas the remaining 40 + 40 lines are simply black).

  7. One nice thing about VGA is, if your output is rigged for resistor-ladder DACs, and your resolution is high enough, you can pipe the signals directly into an HDMI transmitter chip for digital output.

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.