Hacker News new | past | comments | ask | show | jobs | submit login
Celebrating the first NES Tetris game crash (biggieblog.com)
204 points by davidrjones1977 on Dec 23, 2023 | hide | past | favorite | 56 comments



I recently blew the dust off my GameBoy and Tetris game, put some fresh AA batteries in, and it happily booted up and played like a champ even after decades. I wish any hardware or software written today would preserve so well, everything requires internet connections and the hardware hardly lasts this long.


I broke out my OG beige brick Gameboy and pokemon red about 5 years ago. I swapped out the dissolved acidic powder, cleaned off the terminals and threw in some fresh batteries before hitting the switch.

For a moment, I was deeply disappointed that nothing displayed. Then I remembered that they came with a brightness rotary dial. Swung that around and it was as good as the day I got it. The cartridge even held my childhood save.

What an incredible device.


Huh, shouldn't the save have vanished without power from the battery? My Pokémon gold save was already gone in 2018ish when I stumbled upon the cartridge plus gba, but then again that game contains an rtc, so higher power draw I guess.

Edit: got it, you helpfully left some batteries in the Gameboy for future you; you're not talking about opening the cartridge..


You're right that the save is going to vanish from the batteries, but tests and anecdata have shown that cartridge batteries on Game Boy can easily last more than three decades.

Pokémon Silver, Gold, and Crystal have a clock inside the cartridge, limiting their survivability to around a decade.


All Gameboy games (as far as I'm aware) have batteries inside the cartridge, the saves were stored on volatile memory and were battery-backed. Gold, Silver, and Crystal just made extra use of the battery with an RTC. I can find many instances across many forums of people talking and troubleshooting replacement batteries for their Red cartridges so I don't believe my memory is failing me here.


Pokemon Red had no real time clock. That was the fatal weakness of gold and silver.


Real time clock doesn't matter, I thought all Gameboy games had battery-backed saves. I can find forum posts of people talking about replacing batteries in their Red cartridges, troubleshooting why the game still won't save after replacing them, across iFixit, Reddit, GameFAQs. I'm pretty sure that G/S/C only took additional advantage of the existing battery, and didn't introduce an additional battery.


The RTC constantly ate power way more than the battery-backed RAM, that absolutely matters.


It makes a difference, absolutely, but the battery still exists and it's surprising for it to live for so long.


My selfwritten game with Microsoft xna still runs.

And I made that 18 years ago.

I had to change my intel q6600 only after upgrading my camera as Lightroom grinded to a hold with the bigger raw files.

Besides the Mainboard / capacity apocalypse ( https://en.wikipedia.org/wiki/Capacitor_plague?wprov=sfla1 ) I'm genuin happy with how well older things still work.


Agreed. But keep in mind that is not perfect either, some games that use a clock feature depend on a small battery in the cartridge which is depleted after a decade or so


Same goes for saving games on the old systems — that's using a RAM chip kept alive by a battery inside the cartridge.


Depends on how old. NES and Game Boy were all batteries, but by the N64 and Game Boy Advance they had started to use Flash memory or EEPROMs in many games instead.


There's software in my phone I installed two months ago and which doesn't work anymore. It's not even anything that needs an online connection for its features, too.


We got out our Nintendo DS consoles and played some download play games recently (no internet required, one sends the game program directly to the other). Great fun! The battery is less easily replacable though.


I recently got a Miyoo Mini and I almost exclusively use it to play NES Tetris. I’m hooked and I didn’t know there even was a community!

https://www.aliexpress.us/item/3256805029072733.html


I had an RG35xx but it's now replaced with a Powkiddy RGB30. A fantastic device for retro gaming due to its great 1:1 screen which covers so many aspect ratios. Also, a perfect device for Pico-8.


check out apotris, a gba rom. it has classic mode, and is just so fantastically polished. plenty of other modes too


If you want a much more refined version of the original GB tetris, check out the rosy retrospective mod: https://www.romhacking.net/hacks/5813


apotris’ master mode is very good, I just played a lot of it, thanks for the rec!


Ha, I did the almost the thing but to play Gameboy Tetris instead. The Miyoo Mini was impossible to get at a good price around this time last year so I got the Abernic RG35XX and been really happy with it.


What’s considered a good price? I’m blown away by how much functionality this packs for under $65 on this listing but I don’t know what’s normal.


Is the Miyoo Mini worth getting?


Yes it is (Miyoo mini plus). More convenient than steam deck, runs everything up to and including Playstation 1, just install OnionOS on it. Only downside is there's no bluetooth audio.


I bought an Analogue Pocket and installed a bunch of emulators and games from archive.org. Gameboy Tetris is great (I bought a cartridge from EBay) but for me, that’s the exception. I’ve tried a handful of the other games and came to realize that games from that era just don’t click with me.


You should try Tetris DX, it plays way better than the original Gameboy Tetris.


It's the epitome of mobile Tetris. No 7-bag, zero input delay, and of course, color. It's easy to cheese because of infinite lock delay resets (and wall climbing).

I also enjoyed Tetris DS because of its extremely addictive Push mode in multiplayer. I may have had to retake CS301 because of that game.


Yeah, and onionos is a very nice addition to it

https://onionos.neocities.org/


Or you could get an r36s for less price which has a bit more power to handle some PSP, Dreamcast and N64 games. I honestly can't review it yet because it's still in delivery but /r/SBCGaming sold me on it.


Are there any cons vs the Miyoo?


I personally love mine. The build quality is great and it fits well in my hands


The author and the AI video describes some very interesting bugs arisen from assumptions made by the original developers. I'm curious on the technicality of it – what were these assumptions? These are some fascinating bugs. There are some surface explanations here but I have no doubt somebody could write hours worth of content on this, like the other video [0] in the article that discusses real maths.

[0]: https://www.youtube.com/watch?v=BpEcjdr_YDo


The Tetris board is 10 blocks wide, so to be able to play the full field, you need to be able to tap left or right at least 5 times before the block lands. Without tapping at super-human speeds, the fastest way to move the blocks that fast is by holding the left or right button down and letting key repeat take over. When that’s someone’s approach, level 29 becomes fast enough that the pieces can’t reach the edges of the board, so it was traditionally called the “kill screen”, since it wasn’t practical to make progress from there. While it’s possible to get to 999999 before reaching level 29 with that play style, it just didn’t happen all that often, and only by the most elite players.

The last few years have seen people learn how to “roll”, effectively lightly pressing left or right and then drumming their fingers on the back of the controller, getting discrete taps far faster than typical. That lets modern players continue playing at level 29 speeds, and since the speed never increases again, they can play until the game gets to situations that could reasonably be ignored as impossible in the 80s.


The last few years have seen people learn how to “roll”, effectively lightly pressing left or right and then drumming their fingers on the back of the controller, getting discrete taps far faster than typical.

The essence of this trick being that one can move multiple fingers to hit successively with time intervals impossible for a single finger; the same mechanism is also how fast typists work.


Another comparison is a scratch DJ tapping the crossfader with 3 fingers in quick succession - the 'crab scratch': https://www.youtube.com/watch?v=oUQ7MviIaL8&t=34


Btw, rolling is a relatively new technique. Before that you had hypertapping, where players would hold the controller normally and just press the d-pad obscenely fast. IIRC the fastest hypertappers were capable of 16 presses per second.


I think the assumptions are pretty simple: Almost nobody’s going to get past 999,999 points and nobody’s going to be able to play at the speed of level 30, so we don’t need to worry about what happens in level 30 or what should happen when somebody gets 1,000,000 points.


> level 30

This is also an interesting one...

Thought 1 - is this a result of the limitations of assembly coding? Is it more efficient (either computationally or memory-wise) to store 29 constants rather than doing it computationally? This would make "29 levels" a conscious assumption and I'm assuming there must be some kind of technical hardware limitation that makes it 29.

Thought 2 - is this a result of game coding logic?

Game code runs on a game loop. So there is a "minimum" logical number of frames that things could possibly happen i.e. 1 frame. So, the "max speed" is set at 1 frame. You can't go any faster than that. So if they just made (e.g.) 1 frame less per next level, they just decided that 29 frames was a nice starting speed.

This makes "29 levels" less of an assumption, and more a consequence of other decisions.


there's a disassembly here, it looks like: https://github.com/CelestialAmber/TetrisNESDisasm


NES level 29 is a drop per frame, yes


But why specifically 999,999? That's not an overflow or anything...


I'm not familiar with Tetris specifically, but for a score display it was rather common to store each individual digit as a tile ID, which helped to speed up drawing that score into the nametable. I wouldn't be surprised if the algorithm that handles score addition was a simple loop that doesn't check the bounds of the highest digit; this would cause it to eventually corrupt adjacent memory in RAM.

Edit: the article covers much of this! Based on the 3 byte display I'm guessing it is indeed BCD as others have noted, with slower software routines to get around the 2A03's lack of a decimal arithmetic mode. The slower operation may be part of why the crash is possible, but the mechanism is simple unguarded lag: NTSC isn't going to wait around forever and the program wasn't prepared for this.


I’d have to double check a screenshot but it’s likely the largest number that can be displayed in the area given for the score.


It's likely it's 3 bytes of BCD (binary coded decimal). It's a handy way of storing things like scores, especially on 6502 processors which have built-in BCD handling support.


No BCD support on the specific chip used in the NES, though.


Looks like it might be doing the bcd by hand. See, e.g., L93C7 (and following code) in the disassembly here: https://github.com/CelestialAmber/TetrisNESDisasm


Do these players suffer from Tetris Syndrome? I played a bunch for a few weeks many years ago and had trouble sleeping because I couldn't stop seeing tetris pieces falling in place, every time I closed my eyes.


I suffer from this with many things. After intense hiking, my brain still tries to move move limbs in my sleep.after writing unit tests all day, it tries to write.them for real life scenarios. Etc etc. It is pretty inconvenient to have such highly susceptible brain


Now I kinda want to see what one of those unit tests looks like


I remember having similar effects after long sessions of Lemmings. I saw the damn rodents when I was closing my eyes in bed, but it didn’t disturb my sleep (I guess they acted as sheeps to count).


It doesn’t normally cause sleep trouble. But I remember my brain trying to “parse” my surroundings into Tetris blocks, buildings in particular.


I had it with 2048 as well. I kept having urges to mush nearby objects together (cars, trashbins) to make a larger object.


Thanks to gameboy tetris, the cartilage in my thumbs is still messed up 30 years later. I stopped playing video games entirely in the early 90s. Thumbs still crack.


One of my childhood claims-to-fame was getting a windows 3.1 version of Tetris to wrap around to negative scores. The score there was a 16 bit signed integer; after +32767 points it wrapped to -32768. At least in that version the challenge to playing at the highest speed wasn't so much the brainpower to decide where you wanted to get the pieces to go; when you get into the flow that is pretty much a nonissue. The challenge is getting the inputs to occur fast enough. On the PC the maximum key repeat rate you could set was no where near high enough, but with a good spring-loaded keyboard tapping keys that fast was doable. Later in college I tried with a laptop keyboard and it was completely impossible; the springs weren't strong enough to return the key in time to get the taps in. I'm curious about the "rolling" input method described here: maybe a workaround to get the NES controller to take inputs quickly enough?


Here is a video about the rolling technique, I remember watching it when the technique was first pioneered: https://www.youtube.com/watch?v=n-BZ5-Q48lE

In short, you hold the controller so that you have a finger resting on top of the d-pad, and then with your other hand, you drum your 4 fingers in sequence against the back of the controller, causing the d-pad to press into your finger in extremely rapid succession.

Tangentially to this, I'm part of the speedrun community, where controller legality can be a hot topic on a per-game basis. I think it's equally cool to maximize skill within the restrictions of the original controller as it is to use new hardware to break that barrier. Different communities decide upon what mods or alternate hardware is acceptable based on what they feel is appropriate for getting the most enjoyment out of their game.


Oddly I was just watching the best battle earlier today

Vod here https://www.twitch.tv/videos/2011328765

It's mesmerising.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: