[HN Gopher] Celebrating the first NES Tetris game crash
       ___________________________________________________________________
        
       Celebrating the first NES Tetris game crash
        
       Author : davidrjones1977
       Score  : 184 points
       Date   : 2023-12-22 13:51 UTC (1 days ago)
        
 (HTM) web link (biggieblog.com)
 (TXT) w3m dump (biggieblog.com)
        
       | internetter wrote:
       | 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
        
         | paulcole wrote:
         | 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.
        
           | internetter wrote:
           | But why specifically 999,999? That's not an overflow or
           | anything...
        
             | MBCook wrote:
             | 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.
        
             | deater wrote:
             | 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.
        
               | hcs wrote:
               | No BCD support on the specific chip used in the NES,
               | though.
        
               | tom_ wrote:
               | 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
        
             | zeta0134 wrote:
             | 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.
        
           | darylteo wrote:
           | > 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.
        
             | tom_ wrote:
             | there's a disassembly here, it looks like:
             | https://github.com/CelestialAmber/TetrisNESDisasm
        
         | patrickpkt wrote:
         | 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.
        
           | userbinator wrote:
           | _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.
        
             | crtasm wrote:
             | 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
        
           | physicles wrote:
           | 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.
        
       | conradev wrote:
       | 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
        
         | Bluecobra wrote:
         | 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.
        
           | ilikehurdles wrote:
           | 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.
        
         | teruakohatu wrote:
         | Is the Miyoo Mini worth getting?
        
           | conradev wrote:
           | I personally love mine. The build quality is great and it
           | fits well in my hands
        
           | grimgrin wrote:
           | Yeah, and onionos is a very nice addition to it
           | 
           | https://onionos.neocities.org/
        
           | Keyframe wrote:
           | 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.
        
           | 0134340 wrote:
           | 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.
        
             | teruakohatu wrote:
             | Are there any cons vs the Miyoo?
        
           | criddell wrote:
           | 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.
        
             | ndiddy wrote:
             | You should try Tetris DX, it plays way better than the
             | original Gameboy Tetris.
        
         | grimgrin wrote:
         | check out apotris, a gba rom. it has classic mode, and is just
         | so fantastically polished. plenty of other modes too
        
           | 0134340 wrote:
           | 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
        
         | ausaus wrote:
         | 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.
        
       | keyle wrote:
       | Oddly I was just watching the best battle earlier today
       | 
       | Vod here https://www.twitch.tv/videos/2011328765
       | 
       | It's mesmerising.
        
       | gleenn wrote:
       | 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.
        
         | yard2010 wrote:
         | 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
        
           | Kwpolska wrote:
           | Same goes for saving games on the old systems -- that's using
           | a RAM chip kept alive by a battery inside the cartridge.
        
             | Uvix wrote:
             | 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.
        
         | NamTaf wrote:
         | 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.
        
           | iforgotpassword wrote:
           | Huh, shouldn't the save have vanished without power from the
           | battery? My Pokemon 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..
        
             | Danieru wrote:
             | Pokemon Red had no real time clock. That was the fatal
             | weakness of gold and silver.
        
               | jdiff wrote:
               | 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.
        
               | lightedman wrote:
               | The RTC constantly ate power way more than the battery-
               | backed RAM, that absolutely matters.
        
               | jdiff wrote:
               | It makes a difference, absolutely, but the battery still
               | exists and it's surprising for it to live for so long.
        
             | philistine wrote:
             | 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.
             | 
             | Pokemon Silver, Gold, and Crystal have a clock inside the
             | cartridge, limiting their survivability to around a decade.
        
               | jdiff wrote:
               | 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.
        
         | Dolototo wrote:
         | 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.
        
         | crtasm wrote:
         | 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.
        
         | andrepd wrote:
         | 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.
        
       | ceedan wrote:
       | 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.
        
         | layer8 wrote:
         | It doesn't normally cause sleep trouble. But I remember my
         | brain trying to "parse" my surroundings into Tetris blocks,
         | buildings in particular.
        
           | andrepd wrote:
           | I had it with 2048 as well. I kept having urges to mush
           | nearby objects together (cars, trashbins) to make a larger
           | object.
        
         | t0mek wrote:
         | 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).
        
       | dzdt wrote:
       | 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?
        
         | dansalvato wrote:
         | 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.
        
       | kristopolous wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2023-12-23 23:02 UTC)