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.
Very nice work. It’s great to see hardware pushed like this.
It’s amazing what a few people can do with hardware which some of us just use to inanely blink LEDs and read buttons.
Don’t underestimate blinking a light is a veritable achievement for many. Even though it may be mundane for many others, it can be a great leap and the start of something great.
Yup, it’s really neat! ^^ It reminds me a bit of the PIC Tetris for the PIC16F84.
That one was not nearly as sophisticated, of course, but had similar features.
Both sound and video were generated solely by an ancient microcontroller, as well.
Sample video found at the web -> https://youtu.be/aGwuL0Iy2mM?t=58
Nice! Would it be possible to use VGA output?
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.
It was done with a lot of work:
VGA: https://www.linusakesson.net/scene/craft/index.php
PAL: https://www.linusakesson.net/scene/phasor/index.php
Cheat mode is to just cobble the mono video to the green, some monitors will take synch off the green and it’ll work. Of course it will all be green.
Very impressive!
I think it’s great, that in an otherwise absolutely minimalist implementation, the designer decided to go for four-channel audio!
All that’s missing is a part number for the lcd screen. cool project though.
It works with any TV with compositie video input.