The new circuit, featuring five sloppily-wired input buttons.
I added five buttons to the test circuit -- up, down, left, right and fire -- to act as game input. This circuit is shown in the photograph above. I also added support for 8x8 characters alongside the existing 6x8 characters to the library, set as a compile-time option. This drops the number of characters per line from 32 to 24, but having square tiles makes producing graphics much easier. The reduction in size of the text buffer also frees up more of the precious 1KB of SRAM for the game!
Even though it was always recommended as an excellent game for beginners to write, I don't believe I've ever written a Tetris clone before. Its simple block graphics makes it an ideal candidate for this system, and it always helps to work on a game that's fun to play. Armed with a Game Boy and a stopwatch I attempted to recreate a moderately faithful version of what is probably the most popular rendition of the game.
Click to watch a gameplay video on YouTube.
I think the result plays pretty well, but don't take my word for it -- if you have an ATmega168 lying around, you can download the source and binaries here.