[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)