Adolf Hirémy-Hirschl: Souls on the Banks of the Acheron painting
Andrew J. Baker's avatar

Projects

SDL2-based NovaVGA Simulator

This was my Winter 2020 project. I ordered a NovaVGA graphics shield from Tindie and, while waiting for it to be shipped from the US, decided to create a simulator for it using SDL2 and C++ so that I could begin creating some demos.

The shield itself is capable of rendering a 6-bit, 160x120 framebuffer to a conventional VGA monitor; 6-bit colour translates to a palette of only 64 colours total.

Photo of a laptop and VGA monitor both displaying the same picture of a woman

MicroNova, the company responsible for producing the NovaVGA shield, provide a simple graphics library for Arduino. I essentially reimplemented that same graphics library using SDL2, creating a library I have [boringly] named SDL2NovaVGA.

With the use of C++ preprocessor macros it's possible to compile the .ino examples both for Arduino Uno and for GNU/Linux. This means that graphics programs can be prototyped rapidly on a GNU/Linux system ahead of testing on actual Arduino Uno/NovaVGA hardware, speeding up the write..compile..test loop and ensuring that the flash on the Arduino Uno is written to less often; compile and upload to the Arduino Uno is slow by comparison and the flash has only a finite number of program/erase cycles.