Dual-Core Microcontroller Drives RETRO-CIAA Retro Gaming Console
The console is designed around an NXP LPC4337 microcontroller and can stream 16-bit/32 kHz music and video using data stored on an SD card.
There are plenty of projects that make use of SBCs and MCUs for retro gaming, but very few of them feature zero graphics support for implementing a software-based, double-buffered, integer-scaled frame buffer over a high-definition video signal. Santiago Geronimo’s RETRO-CIAA retro gaming console is one of those that doesn’t feature native video support, but with some clever programming, he was able to play Wolfenstein 3D.
The RETRO-CIAA (Spanish acronym for Argentine Industrial Open Computer) is based on the Edu-CIAA development board, which is outfitted with an NXP LPC4337 microcontroller and packs an Arm Cortex-M4 core and a Cortex-M0 core. The board also includes 136 kB of RAM and 1 Mb of Flash that I used by both cores, but it doesn’t have native onboard video capable of driving retro video games. To get around that problem, Geronimo assigned the Cortex-M0 to act as a software video adapter that outputs video via GPIO. The Cortex-M4 is used to update the frame buffer by plotting individual pixels or groups in the form of lines, rectangles, text, and bitmap tiles.
Because of the limited SRAM, the RETRO-CIAA could only output video at a resolution of 256 x 144, making gaming a challenging prospect. The software-based video adapter overcomes that limitation by using on-the-fly integer scaling to generate a resolution of 1280 x 720, which preserves the sharp edges and video quality of retro games such as Wolfenstein.
Geronimo has uploaded a detailed walkthrough of the RETRO-CIAA gaming console on his project page for those who would like to recreate his build.