Blog Home

A shift register is all you need to build an Arduino Nano-based retro computer

Arduino TeamApril 5th, 2024

If you’ve ever tried to produce an analog video signal with an Arduino, then you know that it isn’t easy. That’s a bit counterintuitive if you think of analog video as “old” and assume that generating an analog video signal would be trivial with our powerful modern hardware. But there are many ways in which analog signals are tricky and that’s especially true if you want something like VGA output, which requires very precise timing. That’s why it is so impressive that Slu4 was able to build this retro computer with just an Arduino Nano and a shift register.

This was no simple feat and it really showcases Slu4’s programming prowess. His creation can output 320×200 resolution VGA video while reading PS/2 keyboard inputs, with enough processing power leftover to handle basic video game logic and graphics. He demonstrates that with a Tetris­-like games that runs very smoothly. And Slu4 says that it is even possible to add 16 colors per row, though he doesn’t show that in action.

Slu4 first achieved a similar result a few years ago, but that required several IC (Integrated Circuit) chips. This version only needs one: a standard 74HC166 shift register. That helped him overcome some of the challenges related to VGA timing, which the Nano’s ATmega328 microcontroller can just barely keep up with. This did necessitate some low-level programming to maximize efficiency, but Slu4 was able to pull it off. Even more impressive, he was able to read PS/2 keyboard input at the same time so the player can control the game.