AVR Tetris

Tetris, the timeless classic, is one of those concepts that someone will try to run on every conceivable hardware platform. I took on the challenge of programming a Tetris clone from the ground up using hardware I had on hand. At the heart of the build is an ATmega168 microcontroller. The game displays on a KS0108 128×64 LCD module with five momentary push switches to provide directional, rotational, and input controls. You can see the resulting monochrome action embedded after the break.

I had several goals in mind while writing the code for the game.  I wanted the code to be portable so that the size of the board and type of screen used could be easily changed. With that in mind I developed the trunk for a Nokia 3595 cellphone screen and a parallel branch for the graphic LCD. Originally I was working with an ATmega8 but upgraded so that I could operate at the 3.3v the cell phone screen required.

The firmware for the graphic LCD branch compiles to just over 6 kB which means it can still be run on a mega8. Also, the ATmega168 is the same processor used in the Arduino Duemilanove so another Tetris port is not out of the question. I just got a hold of my first Arduino so we’ll see if I find time to start a new branch in the code.


16 thoughts on “AVR Tetris

  1. over the weekend I was looking at my 128×64 lcd on its end and though, hm … that would be cool for some games like tetris or even pacman

    good thing my thoughts pass by pretty quick, cause now I can just use this version and save a lot of grief


  2. Very very nice work. I just ordered my first arduino ever (Duemilanove with an atmega328) so when it ships I might try this one out myself. The only thing I could think of would be to add a buzzer to play the theme :P

  3. dun da da dun da… dun da da dun da… Ummm, is it possible to love a theme so much and hate it just as equally? Now I have to go download both themes. Damn Russian brainwashing-like teaching tactics( read: the original purpose of the game).

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

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