Bugs & Glitches of High-Level NES Tetris

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 พ.ค. 2024
  • 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: / 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/...
    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
  • เกม

ความคิดเห็น • 541

  • @gentlesoul221
    @gentlesoul221 2 หลายเดือนก่อน +1154

    "And viewers like you, thank you." That brought me back to watching PBS Kids every saturday

    • @VGCCCCC
      @VGCCCCC 2 หลายเดือนก่อน +12

      Same

    • @Itz_CCHIPP
      @Itz_CCHIPP 2 หลายเดือนก่อน +8

      Same

    • @purplepeak8575
      @purplepeak8575 2 หลายเดือนก่อน +7

      Same

    • @lifinale
      @lifinale 2 หลายเดือนก่อน +26

      Funding for this program

    • @GamingGardevoir
      @GamingGardevoir 2 หลายเดือนก่อน +4

      Same

  • @voratheexplorer6442
    @voratheexplorer6442 2 หลายเดือนก่อน +407

    Ah, my good friend "Important table indexed out of bounds resulting in important functions being fed garbage data"

    • @brinleyhamer729
      @brinleyhamer729 2 หลายเดือนก่อน +64

      im pretty sure "table indexed out of bounds resulting in functions being fed garbage data" is the cause of most glitchiness in older games

    • @animowany111
      @animowany111 2 หลายเดือนก่อน

      @@brinleyhamer729It's also the cause of 70% of computer bugs in general, if you trust google and microsoft (although that's a more general 'memory safety bugs' category, which includes out-of-bounds accesses and buffer overflows)

    • @markb5249
      @markb5249 2 หลายเดือนก่อน +70

      If not code, why is code-shaped?

    • @absurt11
      @absurt11 2 หลายเดือนก่อน +23

      If you want things to fall apart with style, you gotta use pointers!

    • @Operational117
      @Operational117 หลายเดือนก่อน

      @@brinleyhamer729
      Absolutely. That's essentially what MissingNo. is: a Pokémon entry that references garbage data that is located outside of the table of valid Pokémon-species.
      Without safeguards to ensure the index pointer *never* exceeds the valid boundary of a table, things like wrong palette colors and MissingNo. happen. Even if you try to develop safeguards against that, you may still experience edge cases where these safeguards fail.

  • @raggedystar8255
    @raggedystar8255 2 หลายเดือนก่อน +298

    The fact that half a 'byte' is called a 'nybble' is a fact that I often forget and always feel joy upon remembering.

    • @halfsourlizard9319
      @halfsourlizard9319 2 หลายเดือนก่อน +9

      nibble*

    • @raggedystar8255
      @raggedystar8255 2 หลายเดือนก่อน +59

      @@halfsourlizard9319 The subtitles/transcript uses 'nybble', so I went with that spelling - though, according to Wikipedia, 'nibble', 'nyble' and 'nybl' are also used, with the 'y' usually added in place of the 'i' because it matches the spelling of 'byte'

    • @NocturnalTyphlosion
      @NocturnalTyphlosion 2 หลายเดือนก่อน +39

      ​@@halfsourlizard9319 i love when pedants are wrong

    • @usernametaken017
      @usernametaken017 2 หลายเดือนก่อน +19

      2 Bytes should be a Chomp

    • @Monody512
      @Monody512 2 หลายเดือนก่อน +6

      I've always seen it spelled "nibl".

  • @radomiami
    @radomiami 2 หลายเดือนก่อน +434

    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.

    • @TheDMan2003
      @TheDMan2003 2 หลายเดือนก่อน +31

      24:20 And then they desync for a moment there… (at least it actually gets fixed immediately).

    • @RGMechEx
      @RGMechEx  2 หลายเดือนก่อน +199

      I use an external program to create the captions which allows for color and positional changes. However TH-cam's support isn't entirely perfect so sometimes the text snaps back to the center when it shouldn't. It's better than the alternative of all the text being in the default position at least.

    • @thezipcreator
      @thezipcreator 2 หลายเดือนก่อน +20

      @@RGMechEx what program is it?

    • @d-man4485
      @d-man4485 2 หลายเดือนก่อน +16

      @@thezipcreatorYeah, it’d be nice to know how fancy captions can be created for videos!

    • @forgettablePyromaniac
      @forgettablePyromaniac 2 หลายเดือนก่อน +12

      ​@@thezipcreatori would also like to know. Seems very useful! Assuming it can also do colour and things like that, and next thing you know, we have Tom Scott subs.

  • @aGameScout
    @aGameScout 2 หลายเดือนก่อน +137

    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.

    • @avri_tetris
      @avri_tetris 2 หลายเดือนก่อน +3

      pin this

    • @crazilycrazy29
      @crazilycrazy29 หลายเดือนก่อน

      hey I know you

  • @diribigal
    @diribigal 2 หลายเดือนก่อน +345

    Don't interrupt me when I'm in my lonely spinning loop.

    • @LiliumOrientalis
      @LiliumOrientalis 2 หลายเดือนก่อน +65

      *ONLY* interrupt me when I'm in my lonely spinning loop.

    • @charlotteshenkenberger345
      @charlotteshenkenberger345 2 หลายเดือนก่อน +4

      Apologies, but I must interrupt you now.

    • @thenoteverythingchannel
      @thenoteverythingchannel 2 หลายเดือนก่อน +3

      Someone watched the video!

    • @notnullnotvoid
      @notnullnotvoid 2 หลายเดือนก่อน +12

      I'm just out here, waiting for someone to come interrupt my lonely spinning loop

    • @argil7192
      @argil7192 หลายเดือนก่อน +3

      You're lonely rolling star
      Don't stand in one place, ok?
      You're lonely rolling star
      So, face forward and let's go!

  • @CambriaBold
    @CambriaBold 2 หลายเดือนก่อน +429

    Babe wake up, new Retro Game Mechanics Explained dropped

    • @TactileTherapy
      @TactileTherapy 2 หลายเดือนก่อน +14

      waifus dont sleep

    • @jmkqfnvyl87
      @jmkqfnvyl87 2 หลายเดือนก่อน

      She didn’t want to wake up. Or watch . . Kept saying Tetris was a product of Russian collusion. . . 😅

    • @jaredlee6591
      @jaredlee6591 2 หลายเดือนก่อน +3

      @@fuggler2465 my guy you are insulting

    • @olivercharles2930
      @olivercharles2930 2 หลายเดือนก่อน +1

      @@fuggler2465 ???

  • @EntergeticalakaBot
    @EntergeticalakaBot หลายเดือนก่อน +31

    The waiting spinning loop feels like a Sisyphus moment, just doing the same thing over and over until its out of its misery

    • @thisisachannelwhy42069
      @thisisachannelwhy42069 หลายเดือนก่อน +7

      One must imagine the CPU happy

    • @bensmith3890
      @bensmith3890 26 วันที่ผ่านมา +4

      More like the CPU is meditating, waiting for commands to process.

  • @betamaxuser1282
    @betamaxuser1282 2 หลายเดือนก่อน +46

    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.

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 2 หลายเดือนก่อน +7

      It makes sense this was omitted because an NES game didn't require BCD for much else other than data displayed to the user like time or score, while office applications on a C64 for example or Apple might have benefited more from it.

    • @Toonrick12
      @Toonrick12 หลายเดือนก่อน +4

      Now you might ask "Why didn't they want to pay royalties to MOS Technology?" The answer is simple. MOS was owned by Commodore at this time. Thus Nintendo didn't want to help the competition. It might sound odd since in America, the NES and the C64 were in completely different markets. In Europe however, they most definitely were market rivals.
      (Though in an alternative universe, if Nintendo did pay out the royalties, there's a chance the Commodore and MOS could of stayed in business thanks to Nintendo's payments.)

  • @AB-Prince
    @AB-Prince 2 หลายเดือนก่อน +165

    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.

    • @arlasoft
      @arlasoft 2 หลายเดือนก่อน +38

      Another way would be to restrict the number of times the score loop can run in one frame, it's no big deal if it's spread over a few frames, it would even give an unintentional counting up effect to the score display.

    • @davidmcgill1000
      @davidmcgill1000 2 หลายเดือนก่อน +43

      Considering they would have definitely known that the level number was 8 bits yet didn't bother to limit that going past that, I'd imagine they just never expected anybody to play that long. Missing 128 being signed would be an easy oversight however.

    • @ClassicTVMan1981X
      @ClassicTVMan1981X 2 หลายเดือนก่อน +13

      A similar extended routine is used in Super Mario All-Stars to fix the lives counter display problem in both Super Mario Bros. and Super Mario Bros.: The Lost Levels: first for the tens digits and the second for the hundreds digits; in the respective NES and FDS originals, the lives display counter used a crown for the tens digit, but the ones digit went through the entire character set from 10 lives onward.

    • @remskolney4040
      @remskolney4040 2 หลายเดือนก่อน +7

      You could also compare to a level where a score less than 999999 is impossible, alternatively you could limit the score counter input to only two numbers so it just rolls back to 00 at level 100.

    • @3rdalbum
      @3rdalbum 2 หลายเดือนก่อน +14

      ​@@davidmcgill1000 They never expected play beyond level 29 or 30. At that falling pace, it's impossible to tap the d-pad quickly enough to get pieces to the side walls, so you can't complete any more lines - at least, it's impossible with normal controller posture.
      The only reason human players can get higher is because they developed special techniques for holding the controller differently in order to achieve the required number of taps per second.

  • @hydrantdude3642
    @hydrantdude3642 2 หลายเดือนก่อน +146

    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!

  • @aceae4210
    @aceae4210 2 หลายเดือนก่อน +70

    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)

  • @sirembrum49thegreatmoth2
    @sirembrum49thegreatmoth2 2 หลายเดือนก่อน +171

    7:44 This isnt palette glitches. THIS IS PATRICK

    • @patientallison
      @patientallison 2 หลายเดือนก่อน +14

      Since some glitched palette levels have names (dusk, charcoal) I like to call this one watermelon.

    • @sirembrum49thegreatmoth2
      @sirembrum49thegreatmoth2 2 หลายเดือนก่อน +9

      @@patientallison that's pretty good right there! :D I gotta look at more of these glitched palettes and see what funs to cook up :) like color table 244: (61) it's mostly very dark blue's and they're barely different from one another. So I call this Deep Sea or Twilight Zone

    • @JetFalcon710
      @JetFalcon710 2 หลายเดือนก่อน +7

      ​@@sirembrum49thegreatmoth2 There's one that I fondly refer to as "Nuclear Christmas"

    • @sirembrum49thegreatmoth2
      @sirembrum49thegreatmoth2 2 หลายเดือนก่อน +4

      @@JetFalcon710 oooo which one is that ? :D

    • @JetFalcon710
      @JetFalcon710 2 หลายเดือนก่อน

      @@sirembrum49thegreatmoth2 125 (32), it's at the very top of the second column

  • @TuxraGamer
    @TuxraGamer 2 หลายเดือนก่อน +411

    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

    • @michaelcalvin42
      @michaelcalvin42 2 หลายเดือนก่อน +14

      Wait, really? I missed it (probably because I, too, was in 100% serious mode.) You got a timestamp?

    • @eljefecom
      @eljefecom 2 หลายเดือนก่อน +18

      Starts at 22:13

    • @macstevins
      @macstevins 2 หลายเดือนก่อน +13

      i hate that i saw this before the scene, and i *still* didnt notice it

    • @DrPeeper
      @DrPeeper 2 หลายเดือนก่อน +17

      LMFAO IT'S SO SEAMLESS

    • @michaelcalvin42
      @michaelcalvin42 2 หลายเดือนก่อน +6

      @@eljefecom Haha, nice. I completely missed it the first time, but there it is, plain as day.

  • @GamingGardevoir
    @GamingGardevoir 2 หลายเดือนก่อน +45

    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!!! 😊

  • @creepercraftytT99
    @creepercraftytT99 2 หลายเดือนก่อน +31

    Finally RGMEx made a video about a Tetris Game!!
    Wait, what about the 810-line long level?

    • @tookiecar1
      @tookiecar1 2 หลายเดือนก่อน +1

      B L U E

    • @h3nry_s71ckm1n
      @h3nry_s71ckm1n หลายเดือนก่อน +1

      The 810-line long level happens for the same reason that it takes 130 lines for you to level up from level 18 to level 19 on a 18 start.

    • @creepercraftytT99
      @creepercraftytT99 หลายเดือนก่อน +1

      ​@@h3nry_s71ckm1n yeah but i meant why wasn't it featured on the video

  • @Dr_Cosmobyte
    @Dr_Cosmobyte 2 หลายเดือนก่อน +103

    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.

    • @brian8152
      @brian8152 2 หลายเดือนก่อน +2

      Same lol

    • @lmnk
      @lmnk 2 หลายเดือนก่อน +8

      The fun thing is, we had Assembly on 1st uni course, and just watching RGME out of fun when I was in high school made me feel much more familiar with it (despite like 2/3 of the instructions being different), even though I never programmed in it (I only programmed in Python and JS) before uni. So, who knows? =)

  • @zeta0134
    @zeta0134 2 หลายเดือนก่อน +15

    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

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 2 หลายเดือนก่อน

      That's why it blows my mind that the PC Engine was designed with completely ignoring the NMI. It is simply not connected to anything, you have to use any sync to video through the IRQ vector, and you need to set it up on the display's side whether you want it triggered by VBlank or the scanline counter.

  • @PubstarHero
    @PubstarHero 2 หลายเดือนก่อน +24

    Why did you upload this? I have chores I wanted to handle, but now I have to watch an hour long video about the tetris kill screen and glitches.

  • @Kaishidow
    @Kaishidow 2 หลายเดือนก่อน +46

    Blessing us with a nearly 1h video

  • @dakotaboy80
    @dakotaboy80 2 หลายเดือนก่อน +7

    As soon as Blue Scuti broke the game, I knew RGM would have to do an episode like this. Well done, sir.

  • @breadcodes
    @breadcodes 2 หลายเดือนก่อน +31

    This is literally the first channel I name when someone asks what I watch. Thanks for the hard work!

  • @Zettymaster
    @Zettymaster 15 วันที่ผ่านมา +3

    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.

  • @taylorgwynn
    @taylorgwynn 2 หลายเดือนก่อน +40

    This video reignites the spark of wonder I get from low-level programming. Things are what we make of them. The numbers aren't "signed integers" unless we treat them like one. It's all just ones and zeroes. Excellent explanation as always ❤

  • @YaroKasear
    @YaroKasear 2 หลายเดือนก่อน +24

    Fun fact, the 6502 ISA actually has a BCD mode, but the Ricoh chip has that physically severed and disabled in the NES.

    • @jacoblister
      @jacoblister 2 หลายเดือนก่อน +6

      the Gamboy Z80ish CPU does have BCD adjust instructions - don't know if they are used by the game though. I wrote emuboy on github recently - just remembered the BCD codes were a pain to implement

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 2 หลายเดือนก่อน +3

      @@jacoblister Now that's an interesting thing, since the Gameboy's version is sort of cut down and a tad closer to an Intel 8080, especially since the Z80's IX and IY registers were removed. In general this gen of CPU's had some smart 16-bit like operations on an 8-bit CPU, while the 6502 took a cheap but still decent approach instead. It's a bit like modern Intel vs. AMD honestly.

  • @ExaltedUriel
    @ExaltedUriel 2 หลายเดือนก่อน +16

    This is exactly the calming content I needed right now, been super stressed out. Time to pop this on and let this super neat info I won't retain wash it away...

    • @ExaltedUriel
      @ExaltedUriel 2 หลายเดือนก่อน +4

      ​​@@ToTheGAMESWow thanks for the extremely specific and actionable advice, you obviously know exactly what I'm going through Mr. Comments Section Therapist. Nice job liking your own comment btw.

    • @celsiuspsi6770
      @celsiuspsi6770 2 หลายเดือนก่อน +3

      i'm sure you're doing great, even just by getting through the day and doing your best; i sincerely hope you feel better soon, the stress won't last forever ❤

  • @JJW410
    @JJW410 2 หลายเดือนก่อน +10

    Found this channel last night and I'm endlessly impressed. Fantastic communicative visuals, great voice over, no distracting music -- 10/10, love it.

  • @jakint0sh
    @jakint0sh 2 หลายเดือนก่อน +11

    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!

  • @MM4646
    @MM4646 2 หลายเดือนก่อน +24

    Always fun to see the details of why a game breaks, ty for all the good content

  • @brianalmon
    @brianalmon 2 หลายเดือนก่อน +4

    Going beyond the expected address space is like going off the edge of a medieval map - here there be dragons.

  • @glarynth
    @glarynth 2 หลายเดือนก่อน +8

    Really enjoyed this one! I think Dr Mario has a similar problem getting bogged down in binary-coded decimal scorekeeping when there's an extremely large combo.

  • @egg.mpeg4
    @egg.mpeg4 2 หลายเดือนก่อน +14

    i can not describe my excitement when a new video uploads
    YESSS

  • @shaveandahaircut3bits
    @shaveandahaircut3bits 2 หลายเดือนก่อน +6

    really liked the way colors were for the code this time, making it easier to spot different commands. the whole video looked really nice!

  • @biggallcaps
    @biggallcaps 2 หลายเดือนก่อน +4

    Thanks for covering this! With the Tetris records being broken, now I can finally have an idea as to why it does what it does

  • @opalpersonal
    @opalpersonal 2 หลายเดือนก่อน +1

    your infographics and special animations while explaining processes really help me understand what’s going on way more than just an explanation on its own. thank you so much for taking the time to make them (especially making them so sleek and nice), it really helps me get the concepts much better!!

  • @BWGLite
    @BWGLite 2 หลายเดือนก่อน +7

    Your videos are always excellent and a joy to watch and be intrigued by! Got so excited when I saw a new upload! ^^

  • @sierranicholes6712
    @sierranicholes6712 2 หลายเดือนก่อน

    i always really appreciate how these videos build up the topics on each other as the video progresses! feels really clear and easy to understand.

  • @Grey-mo5py
    @Grey-mo5py 2 หลายเดือนก่อน +1

    I always love when you post a new video, especially these super long ones. it's so intriguing to learn about how all these older games and systems worked with their limited capabilities.
    amazing video as always, time to rewatch over and over until I memorize it :)

  • @plindquist84
    @plindquist84 2 หลายเดือนก่อน +1

    Thank you so much!!! It is so much fun learning about what's going on behind the digital-curtain!!!

  • @RhythmJigoku
    @RhythmJigoku 2 หลายเดือนก่อน +5

    Welp, time to clear my schedule for an hour!
    It's always amazing how approachable these videos are, even to people who aren't this type of tech-inclined.

  • @WingedAsarath
    @WingedAsarath 2 หลายเดือนก่อน +14

    I see those choices of the numbers 69 and 420 in your example at 22:39 🧐

  • @LovroPlaninsek
    @LovroPlaninsek 2 หลายเดือนก่อน +1

    THANK YOU SO MUCH for the detailed explanation of the line clear crashes, I was confused as to what was happening back in 2019 when I made my mullti-255-level-loop TAS (I made it to around level 700 or so before giving up)
    After a bit I read somewhere that "the score calculation would take too long", but I wanted to know more details. I've known about this channel even back then, but unfortunately I'm not very savvy when it comes to understanding assembly, so basically I've been waiting for your visualisations in this specific video since early 2020 haha

  • @atc_wro
    @atc_wro หลายเดือนก่อน +3

    I thought the youtuber TheZZAZZGlitch had some insane machine code analysis, this is just next level, you're showing specific instructions and explaining them one by one and It is way easier to follow, I love the visual component to those videos, since it better utilizes the medium than just having text on screen to pause and read.

  • @terrafimeira
    @terrafimeira 2 หลายเดือนก่อน +5

    I could listen to these all day. Interesting to learn the workings and quirks of deeper hardware/software through the context of gaming.

  • @Allen_isnt_available
    @Allen_isnt_available 2 หลายเดือนก่อน

    I absolutely love how you explain the code line by line!!!!

  • @AubrianneAnderson
    @AubrianneAnderson 2 หลายเดือนก่อน

    Thank you for all your videos. I've watched them all and learned a lot, then subsequently rewatched them many times for their calming effect. In fact, I've watched them enough that I'm actually starting to retain some of the information through osmosis, despite not having much of a technical background (or brain).
    Also, I doubt you think about this, but I was glad to see another of your videos with a black background for improved night mode learning!

  • @evidence2839
    @evidence2839 2 หลายเดือนก่อน +8

    I was busy but not anymore, RGME video!!

    • @raafmaat
      @raafmaat 2 หลายเดือนก่อน

      i was gonna sleep but i guess that'll have to wait an hour! :)

    • @evidence2839
      @evidence2839 2 หลายเดือนก่อน

      @@raafmaat ooooh noooo... /s

  • @DanielsG
    @DanielsG 26 วันที่ผ่านมา +1

    Hi RGME, first of all, amazing video as always! I've been watching your content for a while and thought you would be the perfect guy for diving deep in to the Playstation's personified fear and fearful harmony errors, I've always wondered how they've worked down to specifics and your content style seems perfect for them!

  • @AlecInstant
    @AlecInstant 2 หลายเดือนก่อน

    Videos like these are the only way I can understand more complicated topics. And insanely entertaining. Thank you

  • @Chubby_Bub
    @Chubby_Bub 2 หลายเดือนก่อน

    Even though I know how assembly language works in general, it always seems so daunting when it appears on screen, but you do such a good job of explaining it. Explanations of low-level language like this, especially with the dependence on frames, serve as a reminder of just how much computers are doing each instant, and games like this are the perfect way to demonstrate it. :)

  • @willarasmith4893
    @willarasmith4893 2 หลายเดือนก่อน

    Watched the whole thing. Had no idea what you said for any of it. Enjoyed it immensely.

  • @forgor-uhh
    @forgor-uhh 2 หลายเดือนก่อน +5

    I was wondering how this happened after watching a StackRabbit video yesterday. Today, I see this. TH-cam recommendations are absolute gold, thank you for making this!

  • @jamesdoesthings1096
    @jamesdoesthings1096 หลายเดือนก่อน

    I've been blessed to find such a channel that makes incredibly informative and clear explanations on things I am so interested in.

  • @eduardorickrot4763
    @eduardorickrot4763 2 หลายเดือนก่อน +2

    Amazing how it’s very interesting but also this video is great at making me fall asleep. Thank you, one day I’ll finish watching!

  • @COlimar788
    @COlimar788 2 หลายเดือนก่อน

    Truly fascinating video and extremely well explained, thank you!

  • @Controllerhead
    @Controllerhead 2 หลายเดือนก่อน

    Incredible video! Excellent explanations and visualizations of raw 6502 into game concepts. Your label names are very well chosen. I did a romhack a while back of this game (Tetris Excel on RHDN) and it's great to see these routines all laid out like this so clearly: Perhaps releasing your label file (.MLB?) could help future romhackers, i would have LOVED to have a resource like that.
    It's also very silly to see that most of these crashes could have been avoided lol, though, humans weren't really supposed to get past level 29. Honestly, it was a fair thing to assume, no one in 1988 could have predicted the controller tapping methods perfected by the Classic Tetris community in the 2020s. I'm excited to see the race to 255, and if humans will ever get there...

  • @n_eve_r_again5860
    @n_eve_r_again5860 2 หลายเดือนก่อน

    I'm glad you make such amazing and detailed content, thank you :3

  • @bmenrigh
    @bmenrigh 2 หลายเดือนก่อน +6

    I'm very glad you decided to tackle this. I was not satisfied with the technical depth (or lack of, as is the case) with the other explanation video(s).

    • @sugardude
      @sugardude 7 วันที่ผ่านมา

      Exactly. However, to be fair, I thought it is reasonable to not provide technical explanation after watching this, because it is just that hard. You basically have to do a course for CPU architecture and assembly code; a notoriously difficult subject.

  • @whamer100
    @whamer100 2 หลายเดือนก่อน +1

    this is such a nice video, absolutely well worth the wait

  • @RobinLeGaming
    @RobinLeGaming 2 หลายเดือนก่อน

    I've been waiting for a Tetris video from RGMechEx for a while now, and I'm not disappointed ☺️

  • @Dragonmaster022783
    @Dragonmaster022783 2 หลายเดือนก่อน +1

    Great vid and thanks for the explaination of the code. I guess one "bug" that was left out of the video on the code would be the one level that goes on for 800+ lines.

  • @RipVanFish09
    @RipVanFish09 2 หลายเดือนก่อน +6

    Party time, RGME upload! :D

  • @dietpebsi
    @dietpebsi 2 หลายเดือนก่อน +1

    Love this!! Your voice is so calming and I love how you describe these things in detail so we know exactly what's going on behind the scenes instead of a sanitized explanation. For some reason youtube unsubscribed me to you and I think it did this for other ppl too so don't think your vids aren't interesting, youtube is just weird!! This video is awesome and even though I'm def not an expert on NES coding and honestly hex in general (I'm more of a bash and python fella myself) you explained it in a way that I could still mostly understand with limited knowledge!! Awesome vids as always!!

    • @dietpebsi
      @dietpebsi 2 หลายเดือนก่อน

      Also garbage data truly seems to cause so many problems in these types of games lol

  • @NickNackGus
    @NickNackGus 2 หลายเดือนก่อน

    Excellent video as always :) Speaking of code waiting for an interrupt to occur - more modern processor designs allow you to effectively turn off the CPU until an external interrupt occurs instead of spinning in a loop, which is useful for reducing energy usage in battery powered devices like phones. Modern operating systems do something similar to this to allow a program to stop running until it's got something it needs, like keyboard/mouse inputs or network messages.

  • @20LeeBrian1
    @20LeeBrian1 หลายเดือนก่อน +1

    “And viewers like you, thank you.” I really like that quote since it brought me PBS and PBS kids nostagia!

  • @lukasrainbow8275
    @lukasrainbow8275 2 หลายเดือนก่อน

    I always wondered how that worked, thanks for explaining!

  • @wiirambo7437
    @wiirambo7437 2 หลายเดือนก่อน

    Great video!
    Some minor corrections:
    There are actually two lookuptables for the level display the other one goes up to level 49.
    When the score loop takes so long and is interrupted by the NMI, the counter get overwritten by the BCD represention of the lower 2 digits of the (old *) line counter.
    That means after returning from the interrupt the score loop runs BCD represention of the lower 2 digits of the line counter - 1 times before exiting. This is a value beetween 0 and 152. Running it 152 time will finish before the NMI trigges again so no further corruption can happen. If the line counter ends in 00 it will run 255 times which is so long it will overrun the next frame too and will cause another lag frame. But it is so long that NMI will never happen to corrupt anything. So it is sort of lucky that can never trigger any corruption.
    The PAL version has some different effect when reaching high levels.
    * past some point the displayed numbers of the line counter no longer matches that used in working RAM

  • @HBMmaster
    @HBMmaster 2 หลายเดือนก่อน +7

    I'm never going to unhear "x position" as "exposition"

    • @RGMechEx
      @RGMechEx  2 หลายเดือนก่อน +6

      Neither can my captioning software!

    • @janajusimi269
      @janajusimi269 2 หลายเดือนก่อน

      I did not expect to see you here hi

  • @alandecowski5945
    @alandecowski5945 2 หลายเดือนก่อน

    We have been blessed with nearly an hour of Retro Games Mechanics!

  • @BrunoValads
    @BrunoValads 2 หลายเดือนก่อน +1

    Amaaaaaaazing video! I would love a part 2 where you propose fixes for these various coding mistakes, to make it failproof

  • @csehszlovakze
    @csehszlovakze 2 หลายเดือนก่อน +3

    I assumed it would be something like this, but thank you for going in extra detail!

    • @turnkey_hole
      @turnkey_hole 2 หลายเดือนก่อน

      Why is the Palestine flag in your picture so weird

    • @csehszlovakze
      @csehszlovakze 2 หลายเดือนก่อน +1

      @@turnkey_hole what? 🤣 the background is the Hungarian flag, and what Gollum's holding is Possessed's _Seven Churches_ LP.

    • @turnkey_hole
      @turnkey_hole 2 หลายเดือนก่อน +1

      @@csehszlovakze oh... Well, respect. Free Hungarian, too

  • @the0007lord
    @the0007lord 2 วันที่ผ่านมา +1

    With Summoningsalt's new video, I got reminded of this and am rewatching to see just what causes the legendary crashes.

  • @HmmmmmLemmeThinkNo
    @HmmmmmLemmeThinkNo หลายเดือนก่อน

    Someone in the comments mentioned the captions and i'm going to cry, there's real captions!! Thank you _so_ much for having them. I can actually understand so much more easily now

  • @erok0809
    @erok0809 2 วันที่ผ่านมา +2

    Summoning Salt just put out a new video on NES Tetris, and I already knew some of the stuff he was going to mention like the glitch colors because of this video

  • @Arcsin27
    @Arcsin27 2 หลายเดือนก่อน

    I WAS HOPING YOUD COVER THE LATE TETRIS GLITCHES DUDE!! BLESS

  • @mattlau04
    @mattlau04 2 หลายเดือนก่อน

    These videos give me a better understanding of computers than my computer architecture classes, pretty amazing

  • @Lefty7788tinkatolli
    @Lefty7788tinkatolli 2 หลายเดือนก่อน +8

    In the 200s a "super level" occurs too, due to an issue with the level-up code.

    • @jangamecuber
      @jangamecuber 2 หลายเดือนก่อน +3

      and the fact that at least 1 level up and at least 1 line will not visually update the level/score count

    • @EebstertheGreat
      @EebstertheGreat 2 หลายเดือนก่อน +3

      That is related to the bug that causes games starting on level 10 or higher to transition at the incorrect number of lines. Unlike the bugs mentioned in this video, that bug is actually super relevant to normal play. For instance, if you start at 18, you will transition to 19 after just 130 lines instead of the expected 190. This is just a mistake in the code; it's supposed to convert a binary value to packed BCD using the lookup table, but it just doesn't. Meatfighter has a good description of it at nintendotetrisai.
      Incidentally, this is one way in which wrapping around from level 255 to 0 doesn't really "reset" the game. Since the bugged level is based on line count, it will occur at a different level the second time around.

  • @damiencouturee6240
    @damiencouturee6240 2 หลายเดือนก่อน

    I just realized I havent been subscriibed, I thought I was cause you were always in my feed. Fixed that now lol, thanks for all the great videos!

  • @RoysGamingGarret
    @RoysGamingGarret 2 หลายเดือนก่อน +5

    There is one thing that is missed. One of the levels between 210 and 220 is around 800+ lines before it proceeds to level up.

  • @dwcalle
    @dwcalle 2 หลายเดือนก่อน

    Beautiful explanation. Great video!!

  • @Periwinkleaccount
    @Periwinkleaccount 2 หลายเดือนก่อน +4

    Great to see one on Tetris.

  • @MaysonEngstrom-st4tj
    @MaysonEngstrom-st4tj หลายเดือนก่อน

    Nice :)
    I was always wondering how these things came to be.
    (Also nice PBS Kids reference.)

  • @maker0824
    @maker0824 2 หลายเดือนก่อน +3

    I was really hoping you would make a video on this

  • @asterpw
    @asterpw 2 หลายเดือนก่อน +1

    36:53 Totally amazing to see the code of a single cycle. What a cool visualization! I wish debuggers could show things like this.

  • @Axcyantol
    @Axcyantol 7 ชั่วโมงที่ผ่านมา

    i love watching game explanations instead of sleeping

  • @wamp9175
    @wamp9175 2 หลายเดือนก่อน +1

    As an old C64 coder, every time I see 6502 code I just have to stop and watch. Dude, you have a good handle on it. Kudos...

    • @D0Samp
      @D0Samp 2 หลายเดือนก่อน +1

      Also this is extra painful since the 2A03 does not have BCD mode. If it did, the level and score counter would just be SED + a bunch of ADCs + CLD.

  • @Marksman560
    @Marksman560 2 หลายเดือนก่อน +1

    This video is such a masterpiece, one every dev and gamefreak should watch.

  • @dioneto6855
    @dioneto6855 2 หลายเดือนก่อน

    best channel on youtube, love your videos

  • @MozzarellaWizard
    @MozzarellaWizard 2 หลายเดือนก่อน

    I think I need to binge watch this guy's stuff now

  • @arcycatten
    @arcycatten 2 หลายเดือนก่อน

    awesome video! can’t wait for more :)

  • @johneygd
    @johneygd 2 หลายเดือนก่อน +6

    Eventrough it’s all very complicated to understand,but it is well explained,also i absolutely like how you explain stuff,no annoying generic stuff,no overhumorism,no sarcasm,no jokes and that’s how i like it,just focussing on the subject rather then interrupting it with jokes or so,
    And that’s how it always should be😁

  • @theGuineaPigArtist
    @theGuineaPigArtist หลายเดือนก่อน

    THE KING IS BACK.

  • @RetroPokemonDepot
    @RetroPokemonDepot 2 หลายเดือนก่อน

    Amazing video as always!

  • @nathang5518
    @nathang5518 2 หลายเดือนก่อน +1

    I don't know why I like these videos so much but I really do 😂

  • @Leadbraw
    @Leadbraw 2 หลายเดือนก่อน +2

    Gotta be my favorite channel

  • @stonedboglin
    @stonedboglin 2 หลายเดือนก่อน

    hi RGME

  • @i_want_pizza7576
    @i_want_pizza7576 2 หลายเดือนก่อน

    i got one for you: sound tunnels in doom.
    when i was a kid and i sometimes saw mysterious little holes in the wall, i figured they were used for something that had to do with the game but not what. much later i learned that's for the "sound" of the player to travel through to other rooms and wake up enemies.

  • @Nightcaat
    @Nightcaat 2 หลายเดือนก่อน +1

    Oh I’m so happy to see this :)

  • @SkootaBoota
    @SkootaBoota 2 หลายเดือนก่อน

    I love watching this guy. Someone who understands asm

  • @Desmaad
    @Desmaad 2 หลายเดือนก่อน +2

    The BMI instruction reminds me of "arithmetic if" in early Fortran.