diff --git a/zetris.lua b/zetris.lua
new file mode 100644
index 0000000..1b58b9c
--- /dev/null
+++ b/zetris.lua
@@ -0,0 +1,186 @@
+-- title: Zetris
+-- author: Pascal Batty
+-- desc: First training game
+-- script: lua
+
+blocksize=8
+bgspriteof=-240
+
+pieces = {
+ t={sprite=256,
+ {x=0, y=0},
+ {x=-1, y=0},
+ {x=1, y=0},
+ {x=0, y=-1}
+ }
+}
+
+-- GAME STATE
+currentPiece = { piece = pieces.t,
+ position = {x = 11, y = 2},
+ rotation = 0
+ }
+
+function rotatedpiece()
+ points = {}
+ if currentPiece.rotation == 0 then
+ return currentPiece.piece
+ elseif currentPiece.rotation == 1 then
+ for i=1, 4 do
+ points[i] = {x=currentPiece.piece[i].x,
+ y=currentPiece.piece[i].y}
+ --points[i].x = currentPiece.piece[i].y * -1
+ --points[i].y = currentPiece.piece[i].x
+ points[i].x = currentPiece.piece[i].x
+ points[i].y = currentPiece.piece[i].y
+ end
+ elseif currentPiece.rotation == 2 then
+ for i=1, 4 do
+ points[i] = {x=0,y=0}
+ points[i].x = currentPiece.piece[i].x * -1
+ points[i].y = currentPiece.piece[i].y * -1
+ end
+ elseif currentPiece.rotation == 3 then
+ for i=1, 4 do
+ points[i] = {x=0,y=0}
+ points[i].x = currentPiece.piece[i].y
+ points[i].y = currentPiece.piece[i].x * -1
+ end
+ end
+ return points
+end
+
+
+function piecedropped()
+ piece = rotatedpiece()
+ point = currentPiece.position
+ for i=1, 4 do
+ x=(point.x + piece[i].x)
+ y=(point.y + piece[i].y)
+ if mget(x, y+1) ~= 0 then
+ return true
+ end
+ end
+ return false
+end
+
+function canmove(point)
+ piece = rotatedpiece()
+ for i=1, 4 do
+ x=(point.x + piece[i].x)
+ y=(point.y + piece[i].y)
+ if mget(x, y) ~= 0 then
+ return false
+ end
+ end
+ return true
+end
+
+function droppiece()
+ piece = rotatedpiece()
+ point = currentPiece.position
+ sprite = piece.sprite + bgspriteof
+ for i=1, 4 do
+ x=(point.x + piece[i].x)
+ y=(point.y + piece[i].y)
+ mset(x, y, 16)
+ end
+end
+
+function resetcurrent()
+currentPiece = { piece = pieces.t,
+ position = {x = 11, y = 2},
+ rotation = 0 }
+end
+
+function drawpiece()
+ piece = rotatedpiece()
+ origin = currentPiece.position
+ for i = 1, 4 do
+ point = { x = (piece[i].x + origin.x) * blocksize,
+ y = (piece[i].y + origin.y) * blocksize}
+
+ spr(piece.sprite, point.x, point.y)
+ end
+end
+
+function TIC()
+ map(0,0,30,17)
+ local newPosition = {x = currentPiece.position.x,
+ y = currentPiece.position.y}
+ if btnp(2) then
+ newPosition.x = newPosition.x - 1
+ elseif btnp(3) then
+ newPosition.x = newPosition.x + 1
+ elseif btnp(1) then
+ newPosition.y = newPosition.y + 1
+ elseif btnp(4) then
+ r = currentPiece.rotation
+ currentPiece.rotation = (r+1)%4
+ end
+
+ if canmove(newPosition) then
+ currentPiece.position = newPosition
+ elseif piecedropped() then
+ droppiece()
+ resetcurrent()
+ end
+
+ drawpiece()
+end
+
+--
+-- 001:0ffffff0ffffffffffffffffffffffffffffffffffffffffffffffff0ffffff0
+-- 016:1111111190000001901111019019910190199101901111019000000199999999
+-- 017:66666666e0000006e0666606e06ee606e06ee606e0666606e0000006eeeeeeee
+-- 018:bbbbbbbb3000000b30bbbb0b30b33b0b30b33b0b30bbbb0b3000000b33333333
+-- 019:22222222a0000002a0222202a02aa202a02aa202a0222202a0000002aaaaaaaa
+-- 020:44444444c0000004c0444404c04cc404c04cc404c0444404c0000004cccccccc
+-- 021:dddddddd5000000d50dddd0d50d55d0d50d55d0d50dddd0d5000000d55555555
+-- 022:8888888870000008708888087087780870877808708888087000000877777777
+--
+
+--
+-- 000:1111111190000001901111019019910190199101901111019000000199999999
+-- 001:66666666e0000006e0666606e06ee606e06ee606e0666606e0000006eeeeeeee
+-- 002:bbbbbbbb3000000b30bbbb0b30b33b0b30b33b0b30bbbb0b3000000b33333333
+-- 003:22222222a0000002a0222202a02aa202a02aa202a0222202a0000002aaaaaaaa
+-- 004:44444444c0000004c0444404c04cc404c04cc404c0444404c0000004cccccccc
+-- 005:dddddddd5000000d50dddd0d50d55d0d50d55d0d50dddd0d5000000d55555555
+-- 006:8888888870000008708888087087780870877808708888087000000877777777
+--
+
+--
+
+--
+-- 000:00000000ffffffff00000000ffffffff
+-- 001:0123456789abcdeffedcba9876543210
+-- 002:0123456789abcdef0123456789abcdef
+--
+
+--
+-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000
+--
+
+--
+-- 000:140c1ceaea30555dd64c794cc6810834a1a5d04648a5249dca71ced2ae2c3030956daa2c7555286dd6e2ba2418d6dad2
+--
+