Log In  

Cart #picotetris-5 | 2019-04-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Another Tetris clone, I know :P

I managed to squeeze in an extra mode, take a look if you want!

Why are you reading this, it's Tetris, you probably already know how it works

Anyways, this clone is guideline-compliant in large parts (except where the guideline is boring or confusing to me), including Standard Rotation System and kicks. It has a steep difficulty curve, and a lot of options to adjust gameplay, animations, or Tetromino sprites (I have 16 now!).

I implemented 9 different modes, and up to 3 highscores are automatically saved per mode (options are also automatically saved btw)

If that description was too dry and boring (writing it wasn't much fun either, so I understand you), it also has lasers and poorly drawn donuts, what more could you want from a game?

Thanks to @Actually_Ed and @DavidMazarro for some great ideas!


  • ⬅️/➡️
    -shift Tetromino

  • ⬇️
    -soft drop Tetromino (locks if hard-drop set to non-locking!)

  • ⬆️
    -hard drop Tetromino (locking by default, can be toggled in options)

  • ❎/🅾️
    -ccw/cw rotation (can be inverted in options)

  • ❎+🅾️

  • Enter
    -Pause menu (with options to retry, go back to title, or mute the game)


  • Survival (new!)

    • Single rows of garbage are randomly inserted at the bottom, see for how many line clears you can survive!
  • Infinite

    • There is no winning condition, you just go on until you top out or you get bored
  • Marathon

    • Game ends after you cleared 150 lines
  • Sprint

    • You have 2 minutes to clear as many lines as you can
  • Garbage

    • When you start the game, the well is filled with 15 lines of garbage, clear them all as fast as possible
  • Combo

    • The well is filled with walls of respawning garbage left and right, making combos incredibly easy
  • Master

    • Marathon mode, starting at lv 20 (instant gravity, and very low delays, extremely difficult!)
  • Invisible

    • Yeah good luck with that one, idk why I even implemented it
  • Secret Grade

    • It's a secret, don't you dare look it up


Please note these are all from old versions, I'm just too lazy to update them

Title screen

Options menu

Standard mode, standard sprites, standard everything

Alternate sprites, don't like these as much

This one's so good

Here is an image of garbage mode, with another good set of sprites (btw theres a rounded version of this one too)

This is what combo mode looks like

The mode that you shall not play


  • 0.9.1

    • Added Secret Grade mode
    • Changed Combo mode so walls are rebuilt as you clear lines
    • Combo mode ends if you drop the combo
    • Small changes to how hold works
  • 0.9.3

    • Different mode descriptions
    • Automatic saving and loading of options and highscores
    • Highscore menu, with option to delete all scores
    • Mini Tetrominoes in preview can now use the downscaled preview sprite
    • Changed game over screen to show your score if appropriate
    • Probably a bunch of other minor stuff I lost track of
  • 0.9.5

    • Mostly animations: for line clears, hard drops, backgrounds
    • Forgot about any other changes, probably just minor stuff
  • 1.0

    • I kept notice of my changes this time
    • When hard-drop is non-locking, soft-drop locks instead
    • Levelling is now static (30 lines/level)
    • Gravity increases twice as fast per level now (not sure if that makes it harder overall than before)
    • Line clears give more points on higher levels
    • Introduced higher delays between pieces
    • Why do you even read this
    • On higher levels, ghost/grid disappear, also delays incrementally decrease (brutal difficulty above lv20)
    • Highscore shown to the right
    • Several UI changes, SFX in menus
    • Progress bar and background grid (both adjustable)
    • Optional laser SFX for line clears
    • Game can be muted from pause menu
    • A bunch of new options to play with
    • Some new sprites, including donuts
    • Bugfixes
  • 1.1

    • Survival mode
    • Progress bar is now on by default

Old versions

Cart #picotetris-4 | 2019-04-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #picotetris-3 | 2019-04-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #picotetris-2 | 2019-04-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #picotetris-1 | 2019-04-02 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #picotetris-0 | 2019-04-02 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Any feedback and recommendations welcome! <3

P#63193 2019-04-02 18:34 ( Edited 2019-04-29 13:11)

All Comments

As a huge Tetris fan, this has been my favorite Pico-8 tetris clone so far! It's got a whole bunch of modes and options that I love. I think I see a bunch of TGM influences, too. :p
Here are my recommendations:
When locking hard drop is turned off, let down be the lock button instead.
In invisible mode, show the playfield in all its holey glory when the game is over.
Make line clears a bit more flashy! Add some particle effects or something, have fun with it :p

P#63370 2019-04-10 03:44

Sometimes I think up is the rotate button when it's actually hard-drop!

P#63448 2019-04-12 12:10

Amazing Tetris clone, has everything people want in a classic Tetris game (and some, with the extra sprites). :)

Also, "relaxing game of Tetris" can be an oxymoron sometimes, can't it?

P#63482 2019-04-13 21:30

Thanks, glad y'all like it :D

@Actually_Ed great recommendations!
So what you're saying is, if hard drop doesn't lock, make soft drop lock? (if the Tetromino is on the floor ofc)
Also I had big plans with animation, like line clears, screen fades or shakes, a prettier menu, but I'm close to hitting both compressed size and token limits, I don't know how much more I can implement and what to give up first :/

P#63615 2019-04-17 14:40

WOW! This is seriously one of the best Tetris versions I've ever seen, no joke. I specially love the animations you added in 0.9.5, it makes it so satisfying to play. The only thing I miss from other Tetris versions is the ability to save a tetrimino for later, but I understand that it's a PICO-8 limitation that you only have two buttons.

Did you base your animations in some resource out there, or did you come up with them on your own?

P#63778 2019-04-21 19:55

@DavidMazarro thank you! I also noticed I like it so much more now, even though core gameplay hasn't changed a bit - fascinating what a few simple animations can do, right?

About coming up with them on my own - depends on what you mean. Some were inspired by other games, though I didn't closely copy any one, some I just thought "Hey what if I did this thing, how would that look, lets try". Then I just enabled all at once and realized how well the swoosh and the crumble animations fit together, it looks like a Tetromino-seeking laser now :D

Also, you can actually do that, you need to press both buttons at once (that is what "hold" in the top left corner means). I guess I'll put a small hint in the game, thanks for pointing that out!

P#63781 2019-04-21 20:51 ( Edited 2019-04-22 10:39)

@Vanessa Ohh, I see! Then this is pretty much perfect!

Some suggestion I thought of: it would be cool to have some background pictures for the play area where tetriminos fall. Though maybe it would be better to prioritise other things, knowing that you're already reaching the token limit.

P#63783 2019-04-21 21:17

@DavidMazarro A still background would be doable, it would primarily take sprite/map space and a few tokens for the map() call, I'm just not sure if I could come up with something fitting (although that's what kept me from trying animations so long and they turned out fine)

The other thing is that I think backgrounds might be distracting for some people, yet I don't have the tokens left for an animations/backgrounds menu :/

Perhaps I'll just try and see how it turns out, thanks for the suggestion!

EDIT: ok so this is probably not what you had in mind, but I just tried putting in a grid (along with new ghost colors) and this is what it looks like:

I'm really not sure yet if I like it, especially with that leftmost column, and the ghost piece looking less like a shadow now (leaving it dark grey makes it melt into the grid lines)

P#63827 2019-04-22 10:38 ( Edited 2019-04-22 12:18)

@Vanessa Yeah, once again when I was thinking of a background, I had in mind something with dim colors, but I didn't consider the restricted color palette of the PICO-8.

I think the grid is cool, maybe you should allow in the options to turn it on/off, but I definitely like it :)

P#63884 2019-04-23 16:13

Wow, this is much more eye-candy and features than my Tetris clone! I think I can learn how to do proper animations here, too. Thanks for the great cart!

P#63887 2019-04-23 16:48

@DavidMazarro ok done, you can now choose from 8 different grid styles (0 being blank)

@bob1996w Thanks! Feel free to take a look and ask me if anything is unclear :)
Btw, I've played your tetris before, thats where I got the idea to offer several sprites for the different types of blocks, so thanks for your cart too! <3

P#63986 2019-04-26 14:17

Love the new changes! Thanks for doing the soft-drop-lock thing, that's personally my favorite way to play. The options sticking around is nice, too! I also think the new difficulty curve on gravity is much better. I see you're reeeeally squeezing those tokens, so I don't really know what I can suggest without turning your code into an unreadable mess of optimizations :p

P#64008 2019-04-27 18:03 ( Edited 2019-04-27 18:05)

Great work @Vanessa !
It only missing the original song ^^

P#64272 2019-05-09 19:48

This is absolutely incredible. Between this and tetramini deffect we've got it all. Thanks so much for this!

P#67191 2019-09-03 17:44

very good tetris clone, lvl 5 , 55 to go, PANIC... failed.....

P#68791 2019-10-12 15:44

Amazing Tetris port. Very configurable and easy to play. I see you like The GrandMaster?

P#68848 2019-10-13 21:05

I'm really not terribly fond of Tetris as while it's a puzzle, it's an action puzzle and I'm not very good at those.

But this cart has a feature sorely lacking in most, and that is to get a preview of where your block will land giving you a chance to rotate and position it best for a match. Makes it a lot easier for me to think about what to do next.

Nicely done ! Star for you.

P#68858 2019-10-14 02:01 ( Edited 2019-10-16 15:21)

Brilliant version! Love all the options. Additional joypad control options would be appreciated! :)

P#68930 2019-10-16 08:42

this is undoubtedly my favourite pico-8 game
everything is great, the sprites are running very smooth, the hold function works perfectly, you can start playing in seconds. Well Done, i hope to see more games like this.

it crashed somewhere at 17 lines in marathon but still.

P#71181 2019-12-18 10:01

Nice. feels very authentic, although I got a Runtime Error about 3/4 of the way through Marathon, not sure why... I wish I wrote down the error code.
(I just like to think that I played so well that the game couldn't handle it. lol)

P#74134 2020-03-23 05:14

@Custardly23 I've been encountering the same error, except it seems to occur every time I finish a finishable mode. I assume it has to do with high score saving.

@Vanessa, can you examine this more closely? It's the only flaw in this otherwise perfect game.

P#74136 2020-03-23 06:37

@JWinslow23 I have the same issue as well. Kinda sucks because it ruins the focus and smoothness of the game. Other than that, it's pretty great!

P#75922 2020-05-06 01:59

Like @Custardly23 and @JWinslow23, I got a runtime error before finishing the 'marathon' and 'garbage' modes, here is the error code:

runtime error line 65 tab 6
  if s[i+1]>s[i]or 0==s[i] then
attempt to index local 's' (a nil value)
in addscore line 65 (tab 6)
in update_game line 310 (tab 2)
in _update60 line 47 (tab 0)
at line 0 (tab 0)

Otherwise, good job on this port! I really liked the combo mode and the number of options available.

P#76559 2020-05-14 14:04

I could be playing all my life if i didn´t lose all the time
This game is great, thanks for sharing

P#76560 2020-05-14 14:14

Really, really clever!
I kinda want music in the game tho, maybe we could team up or something.

P#76694 2020-05-16 12:19

I also broke the game with my ninja Tetris skills :-)

But also, wow, there's some seriously high production values and attention to detail going on here.
And I've only tried marathon so far.

P#76820 2020-05-18 07:54

Great version of tetris, but found a bug:


P#77465 2020-05-31 22:46

What a great port!!!

It got super fast, but then it broke :(


P#78113 2020-06-15 09:32

I figured out how to fix the crash upon clearing certain modes!

On code tab 6, there's a function called INV_SCORES. It gets called when a mode is cleared to record high scores. It takes every value in a list and multiplies it by -1.

For some reason, the RETURN S line is commented out.
The crash can be fixed by uncommenting this line.

P#78382 2020-06-22 04:29 ( Edited 2020-06-30 23:12)

That’s a fantastic version of Tetris! Just wanted to look at some of the games before starting to work on my own pico-8 project but ended up playing this for hours!
@MarkGamed7794 Thanks for the crash fix!

P#78729 2020-06-30 22:30

Game crashed as soon as I cleared a line.
Blocks were going fast, so I think I beat the game?

P#78784 2020-07-02 06:31

Very nice version and plays very well. Big thumbs up from me.

P#78796 2020-07-02 16:08

Great game! However I think I might have maxed the game out as it crashed as I was playing https://imgur.com/a/yLMhIoQ

P#79221 2020-07-12 20:27


P#88163 2021-02-25 16:21

the best pico tetris clone i have seen!

P#90536 2021-04-14 14:03

got score of 209 lines cleared

P#91503 2021-05-04 20:18


P#91756 2021-05-10 13:51


P#95703 2021-08-06 00:46

that's not how you do 4w

P#96315 2021-08-21 14:34

It's really good, well done.

P#96416 2021-08-24 15:25

yesssss, finally got that magical 150 lines

P#96732 2021-08-31 17:52

Really impressed with this! I like a Tetris game that has high enough difficulty options to make me sweat.

I want to implement TGM-style top layer flash, so I'm playing Token Golf - I'm going through your code and looking for ways to save tokens, see what else can get squeezed in here.

P#106956 2022-02-15 05:55

With help from a friend, I've squeezed some 200-ish tokens out, mostly via:

  • the floor division operator, backslash
  • flr(rnd(x))+1 became a function
  • removing unnecessary parentheses, rearranging some expressions to make parentheses unnecessary

...and some more elaborate rearrangements when I noticed an opportunity.

there are certainly more opportunities here, but there's now more headroom to develop in. Wanted to share this in case the original author - or others! - wanted more space to add complication with.

No new behaviors yet, this is all golfing.

Cart #picotetris_1_1_1-0 | 2022-02-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#107019 2022-02-16 07:52

this is cool, you can see the next 5 or so turns on the side for very precise calculations

P#107046 2022-02-16 17:03

hey! i'm kistaro's friend. reduced it by like 400 more tokens. the most significant gains came from greatly simplifying the DAS code, rewriting the kick code (and fixing a bunch of bugs in the process) and deleting a bunch of stuff that wasn't used. cheers, this game rocks!!

Cart #picotetris_more_golfing-1 | 2022-02-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#107098 2022-02-17 08:29 ( Edited 2022-02-17 08:51)

I have spent all the tokens we reclaimed - and many more, I deleted more dead code and made increasingly aggressive token optimizations to get here - to implement a mode inspired by Arika's "Tetris The Grand Master" series. It has no credits roll challenge, but it does have a TGM-style level system, grading system, and a substantial increase in core game difficulty by using step reset rather than move reset (just moving a piece does not extend the lock timer, you must move it down to a row deeper than the piece has been in before) and preventing floor kicks from popping the piece all the way back up in the air (my algorithm has weird consequences if you carefully climb up a pyramid, run to the wall, and kick it - the piece plummets - but this seems like a very fringe scenario). It also uses a 3-bag randomizer rather than a 1-bag randomizer, so floods and droughts are much worse.

Try "Grandmaster" mode to check it out!

Cart #picotetris2-0 | 2022-02-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Additionally, does anyone here know a way to reach the original developer? She seems not to have been here for years. I'd love to thank her for her work, and show her what we did - and also give her a copy of one of the versions where we reduced the token count a bunch, since I know she wanted to implement her own additional modes.

This cartridge is very full, and I don't see a way to do a lot more with it without removing things. So, if I want to keep hacking on this, I think I'll copy this to a new PicoTetris cart that always uses the Grandmaster-style rules (so I can delete the logic specific to the standard rules) and removes basically all the "normal" modes - that might free up enough space for Shirase mode to have some surprises.

P#107436 2022-02-21 23:53

I wish there was a setting called “Pro controls” which changes up the controls a bit. Left, Right, and Down stay as normal, but the up button will rotate clockwise and a will be used to rotate counterclockwise. The hard drop button will be Space and c is used for hold. (I called it pro controls because the controls will be more familiarised to pros.)

P#108163 2022-03-07 01:09

there is a gravity overflow on infinite mode somewhere around level 10. the gravity resets back to slow and there is no ghost piece.

P#113544 2022-06-23 19:01

do u get extra points for doin t spins? its hard to see

P#123522 2023-01-02 19:09

[Please log in to post a comment]