I wrote this in a couple months using javascript and canvas. The rotation for line blocks is the transpose of a 4x4, and all other blocks are rotated by the column-swapped transpose of a 3x3. Being a complete newbie with Tetris, I wrote the game to the original Tetris' standards so no fancy ARS/SRS-ghostblock business.
Fullscreen Mode added by 'Kris Occhipinti'