Looking Beyond the NES Tetris Game Crash

Looking Beyond the NES Tetris Game Crash

It’s been an incredible week for the NES Tetris community. After Blue Scuti’s legendary game 2 weeks ago, stories started to circulate. The narrative eventually became that this Oklahoma teenager “beat” the game. A viral video by aGameScout is garnering hundreds of thousands of views per hour. Both aGameScout and Scuti are now finding themselves juggling press and media interviews.

Fractal161 has seen a huge increase in viewers on his livestreams. Last night, in front of thousands of people online, he got the second ever game crash, on level 155.

Third in line, literally while I wrote this post, PixelAndy pulled off a crash of his own, also on level 155.

Amidst all this activity, are new people with questions. Hi new people. I’m biggiemac42, call me biggie for short. I’ll attempt to share some of the timelines, clear up some confusion, and finally, talk about the ways to play past the game crash.

Let’s start with a big question.

Did Scuti “Beat” the game?

I attempted a content “speedrun” within hours of the crash. That culminated in a post here, which did get the word out a bit, and was featured on hackernews. I completely avoided using the wording of “beating” Tetris. The original title of aGameScout’s video a week and a half later, also didn’t try to claim that Scuti “beat” Tetris.

Canadian streamer and content creator SmallAnt is the first person I am aware of, to describe this particular accomplishment as beating the game. He was watching the video above with its original title, and remarked that it was a “missed opportunity” not to use a better title. Word made it back to aGameScout, who took SmallAnt’s suggestion as his new title. “Is The Newest Classic Tetris World Record Unbeatable?” became the iconic “After 34 years, Someone Finally Beat Tetris.”

The video started to get significantly more attention.

Marketing is a skill, and popular content creators have honed that skill. I think I lucked into it with my one extremely viral video; I never expected it to get anything close to this level of popularity. But SmallAnt has done this before, this was a pure display of marketing as a skill. Frustratingly, marketing hooks do tend to come at the expense of accuracy.

In my opinion, Scuti did not beat the game. He crashed it.

It’s no big deal, my game of Tetris has crashed before too

This is a take that I’ve heard. I want to clarify the difference between a hardware fault and a software fault.

If you kick a machine, it may change how that machine works. Electric fields and material contacts are finnicky, especially on older hardware. The kick doesn’t have to be physical. Heat can “kick” hardware with thermal energy. Cosmic rays can travel through the atmosphere in invisible wavelengths and disrupt the electric field of a single transistor, “kicking” it to a different state. If the game does something it wasn’t told to do, because the system on which it is operating misbehaved, that is a hardware fault.

Many people have had their game crash due to a hardware fault.

There are a few notable hardware crashes in Tetris history. This one invalidated a tense competition game between then-world-champion EricICX and inventor of rolling Cheez.

This one by Jonas Neubauer actually just sent the game directly to the win screen, followed by a garbled menu.

Tugi had a game corrupt without crashing, and he fixed it by slamming the table.

Code running on a computer is at the mercy of the computer itself; here the computer is a NES.

But if we pretend the computer always does exactly as it is told, it can still crash. It crashes if it is told to (on purpose or by accident). This is the realm of software faults.

Software faults and testing

This is all info I explain in my previous post, but hopefully now with better context and detail.

The actual code of NES Tetris, which comes in the cartridge as a binary ROM, has bugs. We can dump this binary code, reinterpret it as instructions in an assembly language, and debug it.

Buggy code is ubiquitous, eventually everyone runs into some case of software misbehaving. Generally, bugs are caught during development by running tests. The bugs that escape into the final product, are those which nobody tested for. I think that the broken level display, level 138+ colors, and game crashes of NES Tetris are all products of lack of testing.

But, why would you even bother to test for it? Level 29 speed is unplayable. Heck, a popular article in Nintendo Power magazine from December 1989 didn’t even seem to know that the speed increased on level 29! The expected audience was going to feel like levels 9 and above were “pure survival”.

To the vast majority of its audience, Tetris was in no danger of breaking.

But maybe you’re like me. Rather than look at a universe for what you think it is, seek to understand its true nature. In the real universe, that propelled me to study quantum physics and quantum computing. In the universe of possibilities contained in a video game, that propels me to look for the ways to break it. Don’t play by the “intended” rules, figure out the actual rules. Engineer your way into new, incredible realities. Combine parts. Dupe gold.

Break NES Tetris.

Non human players

When pushing the limits of games such as Tetris, tool assistance can be helpful. In a modern NES emulator called FCEUX, the user can open the “TAS Editor” and specify the inputs of a game frame by frame. The limits change dramatically, now you can just program the game to play itself in a superhuman way, even perfectly.

The owner of the blog meatfighter.com made a post in 2014 where he showed some of the curious behavior of late-game NES Tetris, including detail on the decompiled code. He identifies the colors, the game crash, and also a way to disable the game crash when playing in FCEUX by using a lua script to change scoring. This post culminates in an AI he wrote. He claims that this AI can play for “a statistical expectation of 2,877,688,349 Tetriminos or 1,151,075,340 lines until game over.” And the game over would be caused by pathological sequences of a few dozen impossible-to-accommodate pieces. There were no crashes – the lua script disabled them.

Separately, the owner of the now-deleted youtube channel quad8 made a video in which he plays all the way to level 256 without disabling crash. I’ve managed to get my hands on his original .fm2 file and can play it back in FCEUX myself. It has a number of start and select presses, which were linked to crash avoidance. In one case, I experimented with removing an instance of “select” (input “S” on the piano roll, which only changes the next box), and the game crashed on the spot.

I sent this .fm2 file to Vi Grey, who previously replicated my 959-piece drought TAS on original hardware. Unfortunately, quad8’s game did not reproduce. On a real console, these inputs crashed on level 160. FCEUX did not replicate the crashes perfectly.

The nature of the crash

It’s a parallel computing problem – one process starts using memory while another process expects to have that memory all to itself. This is a particularly nasty bug in computing, because the results typically resemble “undefined behavior”. It might turn out completely fine. It might brick your machine. You could even end up running code that you didn’t expect to exist at all – something known as arbitrary code execution or ACE.

Today, we know a lot more about this problem and what exactly is happening due to the software bugs. It may be undefined behavior from a software perspective, but since we can also model the machine it is running on, we can tell exactly what is fine and what is going to pose a crash risk.

Scuti’s run checked the box of “a human can now break NES Tetris by playing too well”. Fractal’s run checked the slightly more specific box of crashing at the earliest possible point, a single into level 155.

aGameScout’s video though, made a bold narrative claim that the true ending of Tetris is found not at level 155, but at level 255.

Rebirth

So many of the new arrivals to the NES Tetris community, have this word on their mind. Rebirth. Hardly ever before spoken in the community, the “wrap around” to level 0 was always just a fun tidbit of the 8-bit nature of the game. Since the level is stored in a single byte, its maximum value is 255. Getting past it and hitting the next level 0 was a nice end point to tool assisted runs, like quad8’s deleted video or De Martian’s perfect-efficiency run.

Player cobra6731 modified the game to have level 12 speed for all levels 29-255, and played for 3 hours to get this run:

As meatfighter’s AI showed us, the sequences of pieces that you simply can’t place, are literally one-in-a-billion. The game can be played nearly indefinitely, provided someone builds up the stamina to play this at full speed using rolling.

But the crashes. Those are the true challenge.

Level world record

Scuti’s level 157 required clearing multiple lines together while advancing from level 154 to 155. This is the flavor of requirement that gets added when trying to go for a level world record, moving forward.

If you are willing to accept a minor (single digit percent) chance of crash, then the only things you need to think about to set the current world record are:

  • Multi-line clears only when entering level 155
  • Multi-line clears only when playing on level 157
  • Multi-line clears only when entering level 158

If you do this, you hit 158 and break the level world record. Of course, there is a roughly 4% chance of crash for each single taken on 156, but none of those hit Scuti so why would they hit you..

To go even further, you need to play with only singles for several levels. Really though, singles are the easiest type of clear. They can be set up in the most ways, and provide very brief rest breaks with only 2.5 pieces between them on average so you can keep your mind sharp and eyes rested. I imagine that players will end up referring to levels 166 through 173 as the “minout” levels. While playing this segment of the game, a few new things fail.

The line counter

In all of the crash streams, players urge their poor confused viewers to use the line counter to track what level they are on. Assuming that the player started on level 18 or 19, the formula is to take the number of lines, divide by 10 without remainder, and then add 6. Interpret letters as coming after 9, so E44 lines would be 1444 lines, or level 144+6 = 150.

During the minout levels, the line counter finally breaks. It isn’t a horrible breakage, but the timing is so backwards at this point that the count is one line clear behind. At some point, you will clear a line, and it won’t update at all. From then on, it will always show the count prior to your previous clear.

Somewhere around this point, the level color palette also lags one behind. So while De Martian’s video above shows certain colors for certain line counts, an unmodified game will display differently after the minout section completes.

For more details on these subtle breakages, please await a video from EricICX. Eric has promised to make the ultimate reference for those who want to understand the long game.

Confetti

Amazingly, you can get a short break without pausing.

Sometimes, a single during the minout levels will also create a small delay without crashing. During this delay, a few display bugs happen around the matrix. But then the game resumes, and you can keep trying to play it. First confetti will be a fun milestone on the route to rebirth.

Here’s what confetti looks like (Fractal played this game 2 years ago using the 3 game genie codes pictured to replicate the conditions of late game Tetris at level 18 speed).

But the visual bugs aren’t always like this, sometimes they are far more cursed.. If you keep up with the community I’m sure you will see some wonderful examples as they come forward over the coming year.

In the clear

Level 157 is probably the most dangerous level, as it is an entire interval where singles are not allowed. Not only that, but level 157’s palette is dark, so you have to navigate the restrictions in “chin up, next box, eyes wide open” mode. (Please watch fractal’s crash video).

But beyond level 173, the end of the minout section, the game won’t have any crash risk.

That is, until level 247.

Placing a piece can crash the game

The final gauntlet. For those with the stamina to play the thousands of lines deep into a game, having passed level 157, passed the minout section, survived copious quantities of confetti, you are presented with a new hell.

Levels 247 through 255 are different from anything before them. Placing a piece can crash the game.

The exact probabilities of crash depend on what the piece is, and whether you pushed it down (or toggled the next box on the frame it lands – the return of the mysterious “select” button press).

Time will tell if anyone manages this. But level 249 is a killer. Looking with keen eyes at the crash spreadsheet, level 249 stands out as the second most evil level of the rebirth run. Accounting for the palette lag, its colors aren’t terrible.

But whenever placing a piece that is not a T or a J, you need to either push the piece down with the down button, or toggle the next box off. This is mechanically very awkward and difficult to get right. A mistake leads to a greater than 50% chance of crash. Don’t think too hard about the fact that it takes 25 pieces to clear 10 lines..

Level 253 is similar, but with closer to a 10% chance of crash per piece.

The most evil level is, of course, 255.

The final hurdle

Level 255 has the highest chance of crash for each piece placed without pushdown. The video by aGameScout colored it blood red, but this is unfortunately not what happens in reality thanks to the palette lag. When facing the ultimate demon, you are instead greeted with purples.

If you beat level 255, you are rewarded with level 0. This actually plays just like level 0 would if you started on it. The piece falling speed is slow again. The points the game tries to give you for a Tetris is back down from 307200 to 1200, and because large score increases are the reason for the crash there is no crash risk until the next 155. The line counter and palette both stop lagging behind.

There are still things that can break, notably the character in front of the line count, currently reading X, will run past Z and start to read non alphanumeric character blobs. Eventually the same will happen to the characters in front of each piece count. The long level, a bug that comes from failing to increase the level after 10 cleared lines and instead requiring 800, moves around to a new place. But it’s basically just what aGameScout called it in his video. It’s rebirth.

Strategy

I’ve tried a little bit of pushdown 29 in the past, for fun. I’m only able to push down pieces reliably, if the stack is at the bottom of the playing field. I don’t see how anyone could incorporate pushdown into the super dramatic survival digs that some players face during their killscreen play.

That said, if you’re in this sort of a situation during levels 249, 253, or 255, you probably just kiss the game goodbye. Your other option, playing without next box, is no easier. Elite level no-next-box play stops being able to keep up with the falling pieces at level 19 speed. 29 is out of the question. That preview is needed to be able to prepare the movement in advance. You don’t have to completely deprive yourself of the next box, you can flash it by pressing select multiple times as long as it is off when the piece lands. But that’s not very many frames to work with.

Hypothetical players who get to this point in the game have probably trained away all misdrops forever, and can focus just on the absurd challenge of either pushdown, or no next box. Probably pushdown.

To summarize:

Level 157 is the first key hurdle and will net you a new level world record.

The minout section is the next.

Confetti, long level, new fun colors, will join the journey from there, rewarding the player for surviving the crash triggers so far.

Level 249 is hell junior.

Level 253 is a nice bit of rage bait.

And then level 255 is the ultimate challenge.

Good luck out there.

Final remarks

In my last post I shouted out a bunch of players and content creators. I’ll pat myself on the back a little for good choices. The creators included aGameScout and EricICX , both now have excellent videos up. The players included Fractal, Scuti and PixelAndy. They all now have crashed the game, and the upcoming monthly Tetris tournament has them all on the same corner of the bracket. Watch that on MonthlyTetris.

Unfortunately, Scuti’s twitch link is no longer valid. In the time since that post, Twitch banned his account. He is 13, but the added visibility seems to have uncovered that he made the account before his 13th birthday. If he attempts to create a new account now, that qualifies as ban evasion. His prize winnings from crowdfunded events are tied to his matcherino account that is connected to his now-banned twitch account, so he has thousands of dollars in prize winnings on the line here too. This all just sucks.

He can be found on YouTube still, but he fights a different fight against the automated “YouTube Kids” detection system. This system thinks he is under 13 (based on appearance? in a world where Luke Littler is 16?) and so demonetizes his videos and disables comments. He had to send his original video of the game crash over to the owners of the Classic Tetris channel. They reuploaded it there with full permissions.

Obviously also, the media attention is not all positive, and some people live and die by the high horse of “gaming is bad”. Never mind that his family suffered an unrelated personal tragedy last month, and it’s been shown in at least one study that Tetris in particular gives the brain an outlet that can prevent the development of trauma symptoms following acute incidents.

Justice for Blue Scuti. I am hoping that this incredible human being gets a chance to live as unbothered of a life as he can, spend time with his family, and be a little better off for his piece of history.