Bugs & Glitches of High-Level NES Tetris

Published 2024-03-06
Why does NES Tetris start to break if you play for too long? It's all explained right here.
LINKS
Support the channel on Patreon: www.patreon.com/rgmechex
Join the RGMechEx Discord Server: discord.rgmechex.com/
Follow RGMechEx on Cohost: cohost.org/RGMechEx
INLINE LINKS
NES Tetris Crash Theory Spreadsheet: docs.google.com/spreadsheets/d/1zAQIo_mnkk0c9e4-hp…
HydrantDude: @hydrantdude3642
CHAPTERS
00:00 Intro
00:57 Falling Speed Limit
04:12 Level Number Display
07:40 Glitched Color Palettes
17:06 NES Code Structure
22:54 Jump Table
29:07 Game Crashes
40:08 Limited Tile Confetti
46:58 Infinite Tile Confetti
51:29 Outro

All Comments (21)
  • @gentlesoul221
    "And viewers like you, thank you." That brought me back to watching PBS Kids every saturday
  • Ah, my good friend "Important table indexed out of bounds resulting in important functions being fed garbage data"
  • @raggedystar8255
    The fact that half a 'byte' is called a 'nybble' is a fact that I often forget and always feel joy upon remembering.
  • @radomiami
    I have no idea why, but I got unreasonably excited when the captions moved to the bottom right corner to make better use of the white space at 24:14.
  • @aGameScout
    Thanks for covering NES Tetris! I'm blown away with not only how clear your explanations are, but how clean your editing and presentation style is, while showing a lot of very intricate stuff.
  • @diribigal
    Don't interrupt me when I'm in my lonely spinning loop.
  • @AB-Prince
    it would take ungodly amounts of foresight to have thought of this fix back when this game was made, but some of the crashes could have been avoided by checking if the score was already "999999" before running the score update routine. or once it's done the check at the end of the routine, then set a flag in memory to say to not bother running the routine again.
  • @aceae4210
    the subtitiles/closed captions are very good here, thank you. (like at 27:25, they go to the right where there is space so you can see the cpu and stack info but when that ui is not there, it just goes to the center, very good job)
  • @hydrantdude3642
    Wonderfully explained! This channel was a source of inspiration for my own videos on mechanics, so it coming back around and contributing to one of the videos is an incredibly cool feeling. Even though I already know how everything described worked, I still got some great value out of the visuals in this video. Writing out all the code in the frame at 37:00 is beautiful. Most of all though, I want to give Frieze credit for seemingly deriving lots of the info on his own-- our community has already disassembled the game fully, but when he reached out to me with the script, he'd disassembled the code himself with different labels! I barely had anything to correct him on, which was refreshing compared to a lot of other journalism following the publicity of Blue Scuti crashing the game. Thanks for the excellent work!
  • The waiting spinning loop feels like a Sisyphus moment, just doing the same thing over and over until its out of its misery
  • @CambriaBold
    Babe wake up, new Retro Game Mechanics Explained dropped
  • @betamaxuser1282
    33:17 - It should be noted that a real 6502 CPU has a built-in decimal arithmetic mode allowing it to add and subtract BCD numbers easily.  The CPU in the NES is not a true 6502, but a Ricoh 2A03 (or 2A07 in PAL/SECAM machines) made by Ricoh for Nintendo. The 6502's BCD logic was patented and required royalty payments to MOS Technology, the inventor of the 6502.  To avoid this, the 2A03/2A07 simply omits the decimal mode, requiring BCD calculations to be done manually, as shown in your example.  If the decimal mode had been available, the code to add points to the score would have been much simpler and shorter.
  • @GamingGardevoir
    The smile that came across my face when you said “…and viewers like you! Thank You!” is immeasurable. That was a heavy nostalgia bomb for me!!! 😊
  • @Zettymaster
    i love how this is essentially explaining bugs (mostly use after free, aliasing and out of bounds indexing) in context. still technical, but with enough game elements and diagrams to explain everything.
  • @TuxraGamer
    Bro really worked out how to smoothly blend a 69/420 joke in an otherwise 100% serious video. Absolutely epic. Edit: go to 22:13 for the sauce
  • @zeta0134
    When we talk about the vblank interrupt on the NES pausing the CPU no matter what it's doing, that's more true than you might think. The PPU signals vblank using NMI, which stands for "non-maskable interrupt", and it's a special signal the CPU is hard-coded to always take. Other interrupts (IRQs) can be ignored by the software during sensitive work. If you're reading the NESDev Wiki or doing research, you'll often hear people talk about their "NMI routine." It's the same thing, that's just the work that starts at the top of vblank. Naming things is hard. :D
  • @jakint0sh
    I absolutely LOVE the “viewers like you, thank you!” in the intro. Reminds me of when I used to watch PBS Kids in the late 2000s, such a throwback. Great video as always, keep ‘em coming!
  • @Kaishidow
    Blessing us with a nearly 1h video
  • @Dr_Cosmobyte
    Do i know programming? No. Is this important to my career? No. Do i understand what's going on? No. Will i make a Tetris-based game? Not that i know now. Do i like this? YES.