AVR Tetris

posted Jan 14th 2010 9:38am by
filed under: handhelds hacks

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 Responses to AVR Tetris

  • Dan says:

    Even though there’s no audio, I’m still going to have the Tetris theme stuck in my head for the rest of the day…

    \good work, btw!

  • yuppicide says:

    I wasn’t going to have the Tetris theme stuck in my head, but reading your reply I will now.

  • yuppicide says:

    Do do de do de do do.. damn you! Great hack by the way.

  • osgeld says:

    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

    Thanks!

  • walt says:

    nice one! looks fun.

  • Michael L. says:

    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

  • supershwa says:

    Crap. Why did you mention the theme song? Now my day is doomed!

  • Brent says:

    Really cool, there is another cool tetris using the atmega168 at http://depg.ca/

  • Paul Potter says:

    Pure brilliance. I really want to do this when I get my Arduino.

  • Ben Ryves says:

    Very nice. :-) I also wrote an Atmega168 Tetris and Snake game, which generates composite video output using a couple of resistors for playing on a TV screen – http://benryves.com/products/avrtvgame

  • eric says:

    Speaking of Tetris, I made the theme like a week ago

  • Rollyn01 says:

    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).

  • AvrLabCom says:

    Here is a similar project, but with display is used TV or LCD monitor from PC benryves.com

  • Kodie389 says:

    Is it possible to get it to output in ntsc?

  • Leave a Reply

    XHTML: You can use these tags: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    Hack a Day serves up fresh hacks each day, every day from around the web as well as hacking related news.

    Send us your hacks






         




    Hacks

    Resources