A Tetris To Be Proud Of, With Only A Nano

Tetris may have first arrived in the West on machines such as the PC and Amiga, but its genesis at the hands of [Alexey Pajitnov] was on an Electronika 60, a Soviet clone of an early-1970s DEC PDP-11. Thus those tumbling blocks are hardly demanding in terms of processor power, and a game can be implemented on the humblest of hardware. Relatively modern silicon such as the Atmega328 in [c0pperdragon]’s Arduino Nano Tetris console should then have no problems, but to make that assumption is to miss the quality of the achievement.

In a typical home or desktop computer of the 1980s the processor would have been assisted by plenty of dedicated hardware, but since the Arduino has none of that the feat of creating the game with a 288p video signal having four gray scales and with four-channel music is an extremely impressive one. Beside the Nano there are only a few passive components, there are no CRT controllers or sound chips to be seen.

The entire device is packaged within a clone of a NES controller, with the passives on a piece of stripboard beside the Nano. There is a rudimentary resistor DAC to produce the grey scales, and the audio is not the direct PWM you might expect but a very simple DAC created by charging and discharging a capacitor at the video line frequency. The results can be seen and heard in the video below the break, and though we’re sure we’ve heard something like that tune before, it looks to be a very playable little game.

12 thoughts on “A Tetris To Be Proud Of, With Only A Nano

    1. The description says the video is 288p, with a 15.625 kHz horizontal rate. 288p is the progressive equivalent to 576i, the PAL standard scan rate. So it’s either 312 or 313 lines at 64 usec/line, for 20 ms vertical frames (50 Hz). Most multi-sync VGA monitors will do this, no problem. Since the luminance and sync are produced separately, it should be no trouble to adapt the design to send luma to the R, G, and B pins. The only difficulty is that the sync is combined to provide composite video, whereas VGA expects separate vertical and horizontal sync. However, this should be a minor issue, as there are unused pins on the microcontroller. Just a bit of re-coding, but the result should be simpler than the composite sync. I would say highly possible, but not without a little work.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.