Using Lakitu's Cloud to Defeat Bowser Quickly

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ธ.ค. 2024

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

  • @DragonslayerProd
    @DragonslayerProd ปีที่แล้ว +1241

    Darbian explaining frame rules: "Imagine a bus..."
    RGME explaining a bus: "Imagine the planet Earth..."

    • @Bismuth9
      @Bismuth9 ปีที่แล้ว +228

      Underrated comment

    • @generallyunimportant
      @generallyunimportant ปีที่แล้ว +21

      @@Bismuth9
      so true

    • @SomeRobIoxDude
      @SomeRobIoxDude ปีที่แล้ว +10

      @@Bismuth9 so true!!

    • @quill_x
      @quill_x ปีที่แล้ว +5

      ​@@Bismuth9 yoo bismuth wassup

    • @manioqqqq
      @manioqqqq ปีที่แล้ว +1

      @@Bismuth9 83

  • @baltakatei
    @baltakatei ปีที่แล้ว +546

    21:36 Every CPU should come with a tiny sticker reading: “WARNING: THIS CPU DOES NOT KNOW THE DIFFERENCE BETWEEN INSTRUCTIONS AND DATA NOR DOES IT CARE”

    • @Minty_Meeo
      @Minty_Meeo ปีที่แล้ว +85

      Modern processors often dedicate a bit in the page of an address to indicate wheter the memory should be executable or not.

    • @doublex85
      @doublex85 ปีที่แล้ว +45

      Instructions are data and have been since the first stored-program computers in the late 1940's. Your web browser compiles Javascript into machine instructions to make your webpages go faster.

    • @austinhemmelgarn1956
      @austinhemmelgarn1956 ปีที่แล้ว +27

      This type of exploit is exactly why most modern CPUs have a way to flag pages of memory as being executable or not. If used correctly, it completely prevents this type of exploit (and stuff like the ACE exploits used for the trifoce% run of Ocarina of Time). It’s a really important part of modern cybersecurity because it makes a significant percentage of ACE exploits much harder to execute.

    • @EchoFaustMusic
      @EchoFaustMusic ปีที่แล้ว +1

      Most CPU just do what you tell it to. Whether or not it's gonna crash everything is determined on what ya do

    • @harrytsang1501
      @harrytsang1501 ปีที่แล้ว +7

      ​@@EchoFaustMusic true, but most modern architectures/runtime often have memory regions flagged as exclusive for code and everything else can only be regarded as data. This is done for security and safety guarantees, so that shenanigans doesn't happen when you're trying to do serious work.

  • @tv-dawniej
    @tv-dawniej ปีที่แล้ว +1282

    When you see a video from Retro Video Game Mechanics Explained that lasts for over an hour, you know you're in for a ride

    • @nal101
      @nal101 ปีที่แล้ว +19

      Right? I saw the video length and had to look again.

    • @citizenstranger
      @citizenstranger ปีที่แล้ว +2

      yeah

    • @normconel2907
      @normconel2907 ปีที่แล้ว

      TH-cam engagement stats be foobazzlin, nummers augminted by 25.7 persen. Wat a hootenanny, bidness fribbulate frumbles crooz and bimble zooble ooper doopin! Meenwhile, skweekles zamboozled by 4.9 persen, crinkamink ramped to the gibblewackes by 19.6 persen.

    • @Iliek
      @Iliek ปีที่แล้ว +9

      When you see a video you like that is long, you know it will be a long time.

    • @diceLibrarian
      @diceLibrarian ปีที่แล้ว +27

      A magic open bus ride

  • @AndyGoth111
    @AndyGoth111 ปีที่แล้ว +478

    Started watching Bismuth's video, he said to come watch yours, then you said to watch Bismuth's video, now I'm caught in an infinite loop, hoping for an RTS to come my way

    • @m_affiliates
      @m_affiliates ปีที่แล้ว +29

      Here's the RTS

    • @stonebleeds
      @stonebleeds ปีที่แล้ว +39

      JSR GoToRickroll

    • @ThePageofRage
      @ThePageofRage ปีที่แล้ว +17

      I think we need Summoning Salt for this

  • @HBMmaster
    @HBMmaster ปีที่แล้ว +394

    eating a football player

    • @tonydai782
      @tonydai782 ปีที่แล้ว +10

      Yo jan Misali!

    • @generallyunimportant
      @generallyunimportant ปีที่แล้ว +16

      eating a football player

    • @geralds1500
      @geralds1500 11 หลายเดือนก่อน +13

      eating a football player

    • @Thomaas551
      @Thomaas551 10 หลายเดือนก่อน +8

      Eating a football player

    • @quinnstraught9636
      @quinnstraught9636 8 หลายเดือนก่อน +5

      eating a football

  • @YaroKasear
    @YaroKasear ปีที่แล้ว +39

    Open bus is basically the result of Nintendo failing to implement the use of a 65x family chip properly. The "correct" way to implement a data bus is to make sure each line on the data bus is connected to ground via a pulldown register, so that if the CPU tries to read from open bus, it'll get $00, and not whatever is on the MDR. The $00 opcode corresponds to the BRK instruction, and that's no accident: It's so that if the CPU finds itself trying to execute code from a place where there's not even any hardwae, a software interrupt will fire and this can enable the program to properly handle the fact it's trying to access open bus. There's not a lot to do for data reads/writes on open bus that aren't instructions, although arguably an engineer could put some logic in the circuit to detect if the bus is being pulled down as a result of the CPU's actions and raise an interrupt or NMI to alert the program of an invalid memory access.
    It's probably not a huge deal Nintendo botched this particular aspect of implementation, and of course for speedrunners and other fun stuff it's actually kind of neat this happens, and maybe even something like a weird RNG could possibly be implemented using open bus... But if Nintendo was designing a computer someone was actually planning on using, they just opened a gaping security hole on the computer not tying the bus to ground properly, since this open bus behavior is pretty much how arbitrary code execution happens on the SNES.
    Of course, the 65816 is hardly a CPU you'd find on any computer anyone would want to compromise, but it's still sloppy when you get down to it.

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

      How is it improper if there are no possible negative consequences? A device that the SNES that doesn't even have an operating system doesn't need these security measures. "This would be a problem if Nintendo were making a completely different product" doesn't actually constitute a problem.

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

      nintendo had a very strict testing and approval process for first and especially third parties before they let a game out lol this wouldn't be a problem

  • @storm5936
    @storm5936 ปีที่แล้ว +580

    It is rather strange that the P-Balloon isn't counted as a powerup by the game

    • @RGMechEx
      @RGMechEx  ปีที่แล้ว +655

      I actually completely forgot about it, and should have at least mentioned it. It's just a normal held item (like a springboard, P-switch, etc.) that turns invisible and makes Mario puffy and unable to drop the held item until it runs out. It's why you can't hold another item while puffy, and why you get an item from the goal tape if you finish the level while puffy (see Tubular).

    • @2WaterGuns
      @2WaterGuns ปีที่แล้ว +102

      Same with the 3-Up Moon, given the 1-Up Mushroom is a powerup.

    • @Realrich456
      @Realrich456 ปีที่แล้ว +138

      @@2WaterGuns The 3-Up Moon is actually an Object, like a coin or a block, not a sprite. Its Extended Object 0x18 in the game.

    • @pokepress
      @pokepress ปีที่แล้ว +61

      3-up moons are also kept track of (they won’t reappear until the game is reset or powered off).

    • @Wiimeiser
      @Wiimeiser ปีที่แล้ว +41

      @@Realrich456 It was probably done that way to reuse code from the Dragon Coins, since copy & paste is much easier than starting from scratch.

  • @rruhland
    @rruhland ปีที่แล้ว +394

    “Oh nice this will be a good short little video talking about how the cloud glitches out Bowser’s AI script.”
    *looks at timestamp*

    • @EthanSeville
      @EthanSeville ปีที่แล้ว +17

      Done this so many times get like 10 mins in then i look at the time and am like tf xD

    • @anthonylosego
      @anthonylosego ปีที่แล้ว +18

      Most interestingly, the rl span of the code time during execution (of the explained parts) is only a few 10s of milliseconds.

    • @b.clarenc9517
      @b.clarenc9517 ปีที่แล้ว +14

      Also in the video: "please watch this video for a deeper explanation. And that one too, I won't explain the details here."

  • @l9day
    @l9day ปีที่แล้ว +230

    Very detailed explanation. I've heard many times in the past about the chargin' chucks being "powerups" but never heard it explained. Makes me wonder if the chucks sprite properties were victim of copypasta leaving those erroneous bits set. The open bus broadcast analogy was also very understandable.

    • @JorWat25
      @JorWat25 ปีที่แล้ว +6

      @@paulmccartney2327 Are you going to respond to every comment with that? We get it, you don't like furries.

    • @rruhland
      @rruhland ปีที่แล้ว +19

      @@JorWat25 I just went ahead and reported every single one of them for harassment.

    • @LorenzJahn
      @LorenzJahn ปีที่แล้ว

      @Pinkamena! I also would like to know that.

    • @derivativeoflog7
      @derivativeoflog7 ปีที่แล้ว +2

      ​@@rruhland you sir are an ally

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

      if i were a coder, i would make these states true for everything so if ya glitched it, no patching unless possible accidentally.
      "ya got an enemy as a powerup? heres a glitch state."

  • @nobodynada_
    @nobodynada_ ปีที่แล้ว +66

    Some lower-level details on how open bus works at the electrical level, in case anybody's curious:
    The "memory data register" is a very useful model for understanding the open bus and implementing it in emulators, but no such physical register actually exists within the CPU. Rather, open bus behavior is the result of the analog effects that occur when the CPU attempts to try to read from a digital input that's not connected to anything ("open" in electrical-engineer speak, hence the term "open bus"). The data lines are not being driven by any hardware, and so the voltage on each line is said to be "floating".
    In many situations, a floating input is unpredictable -- the voltage can fluctuate based on tiny effects such as current leaking from other parts of the system, or even EM waves from nearby electronic devices or radio stations. So, we have to look at the analog characteristics of the circuit to see if we can understand how it will behave. A data bus is made up of very long copper traces on the circuit board, separated from the ground plane by a thin layer of insulating substrate. And two large conductors separated by a thin insulator makes a capacitor! (This effect is called "parasitic capacitance", and engineers usually try to minimize it because it makes it harder to drive the bus lines and thus limits the maximum length and speed of the bus.)
    In an open-bus scenario, the capacitance of the bus traces will cause the bus lines to tend to stay at whatever voltage they were last driven to before the bus went open -- in other words, each bus line forms a (rudimentary and unintentional) DRAM cell. This is the cause of the "MDR" behavior -- there is no actual memory data register built into the CPU, but the bus itself acts like a register when it doesn't have anything better to do. (For this reason, open bus behavior is not always stable. It's possible that the value on the bus might "leak" out of the capacitors and decay over many consecutive open-bus reads, and flashcarts and other similar devices sometimes have pull-up resistors that can defeat the parasitic capacitance.)
    Another fun thing that can mess with the open bus in surprising ways is HDMA. An HDMA transfer can interrupt the CPU at any point, even in the middle of an instruction; if it occurs immediately before the CPU reads an open-bus value, it can replace the value you would expect to see on the bus. I'm not sure if this happens often in Super Mario World, but in the Super Metroid speedrunning community this effect is notorious for ruining "GT Spacetime" runs (which rely on open-bus behavior). I'm also currently working on a (soon to be published) TAS that intentionally exploits this effect, by manipulating timings so that HDMA puts a "good" value on the open bus at the right time.

    • @RGMechEx
      @RGMechEx  ปีที่แล้ว +41

      In the Discord server, we've been discussing whether there actually is a physical MDR or not. If there isn't, then something is helping the bus stay stable even for several seconds and minutes at a time. I've done some tests on Super Mario World and Super Mario All-Stars cartridges that let the CPU hang on a JMP $4C4C like in this video, and it doesn't seem to ever decay at all.

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

      @RGMechEx Idk what y'all said on Discord, but I have read the datasheet for the modern W65C22 versatile interface adapter from WDC. The 22S has bus holding devices between each bus pin & the corresponding internal input, each having 3 components, a resistor & 2 inverters. (Shown in sections 3.6, 3.7, & 5.3) (Also, I have no idea what would have some type of bus holding device back then in the SNES... but at least that's a related example.)

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

      ​@@RGMechEx Maybe the gate capacitance of it's internal MOSFETs? Gate capacitance is way higher than the PCB trace parasitic capacitance, and can hold charge for much longer.

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

      @@RGMechEx I used to work with 74HC logic gates, you can flip a logic gate just by touching it's floating pins, and it will stay for a very long time.

  • @doublex85
    @doublex85 ปีที่แล้ว +221

    I've been writing a bit of C64 code lately, and that's also a 6502-derived machine, so a lot of this is very familiar. Thanks for doing your part in keeping these from turning into lost arts. If even a few people become interested in low level machine code I think it will help the world just a little bit.
    37:55 -> 38:30 "X equals 9 at this point"
    Oh my oh my oh my. A certain CarlSagan42 might find this a funny coincidence.
    41:36 "Memory address $17 holds the status of the buttons"
    That's wild! Seems like a miracle that this journey through open bus eventually gets out unscathed.

    • @MarioFanGamer659
      @MarioFanGamer659 ปีที่แล้ว +8

      "Oh my oh my oh my. A certain CarlSagan42 might find this a funny coincidence."
      That or TanukiDan who wrote this song (or both).

    • @jwhite5008
      @jwhite5008 ปีที่แล้ว +19

      "Seems like a miracle that this journey through open bus eventually gets out unscathed."
      Exactly my thoughts.
      Ok so 6502 is simple enough to not have as many modes of failure executing garbage as more complex systems - but still, this is an entirely new level of black magic for me.
      How in the world was this discovered, or even how did anyone know this tumble through depths of chaotic heck could even possibly be survivable?

    • @Charmlie.R
      @Charmlie.R ปีที่แล้ว +15

      @@jwhite5008 data mining is powerful, you see certain things like sprites being flagged as power ups erroneously, and wonder if that can be used for something funny. If you already know of methods to abuse it, then it's just a matter of either further dissection like this, or just testing it out and seeing what happens. If you don't then you can still try to find ways to make it happen by force
      Or get a lucky accident, like the yoshi tongue thing could totally happen by accident and leave someone confused and wanting to test out new things

    • @jwhite5008
      @jwhite5008 ปีที่แล้ว +16

      @@Charmlie.R Data mining is real until you reach stuff like open bus, manipulating in-game objects to later read them in completely unrelated places, and especially reading code directly from controller inputs...

    • @kenpanderz
      @kenpanderz ปีที่แล้ว +3

      idk how to feel about the fact that the instant x=9 was mentioned, i lost my mind like i just discovered the hidden meaning of life

  • @Bryce_the_Woomy_Boi
    @Bryce_the_Woomy_Boi ปีที่แล้ว +435

    I know it's a good day when he uploads a video that's over an hour long for 1 glitch

    • @henke37
      @henke37 ปีที่แล้ว +11

      There's several glitches.

    • @redstonewarrior0152
      @redstonewarrior0152 ปีที่แล้ว +15

      @@henke37
      But an hour was spent on one of the two entire glitches showcased here.
      So the point still stands.

  • @k-berry8771
    @k-berry8771 ปีที่แล้ว +111

    I just want to bring attention to the fact that the open bus was actually explained in RGME first ever video but the analogy and explanation was much different back then
    Now, the way is explained here, is a million times better than back then, is very understandsble and covers everything one must know about what it means
    It just comes to show how much has our boi improved ever since, plz keep up with the amazing work with your videos!

  • @maxwelseven
    @maxwelseven ปีที่แล้ว +65

    Man... all the explanations about Open Bus always confused me, but the explanation in this video was just BRILLIANT.
    Thank you very much! XD

    • @D0Samp
      @D0Samp ปีที่แล้ว +2

      Especially since this is different from the usual 6502-based breadboard computer, where the address decoder is often implemented in discrete logic and it is very unlikely that a given address does not enable any chip on the data bus at all. For example, the NES's memory map mirrors work RAM three times, but the PPU's control registers over a thousand times, simply because nothing else occupies that part of the address space. Even then, without that "holding area" you would be reading floating bit garbage most of the time.

  • @Damian_1989
    @Damian_1989 ปีที่แล้ว +39

    29:50 the address being "D00D1E" actually made me laugh a bit

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

      Could either be Doodle, or Doodie

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

      💀💀💀

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

      😭✋

  • @jamesknapp64
    @jamesknapp64 ปีที่แล้ว +49

    As someone who is just a "mathematician" but doesn't know programing these videos are just fascinating. I had known of the 11 exit glitch from Summoning Salt's video and interesting to see it explained in detail here.

    • @shinyhappyrem8728
      @shinyhappyrem8728 ปีที่แล้ว +6

      I recommend the talk "Reverse-engineering the MOS 6502 CPU" by Michael Steil and Ben Eater's series about creating a 6502 computer on a breadboard.

    • @rhaeven
      @rhaeven ปีที่แล้ว +2

      Seconded, watch Ben's breadboard series and prepare to understand how computers work!

    • @EchoFaustMusic
      @EchoFaustMusic ปีที่แล้ว

      Well coding would be quite interesting to you I feel, as coding is basically math with extra steps, especially assembly, which is all manual for the most part

  • @EpicGamer10075
    @EpicGamer10075 ปีที่แล้ว +20

    1:00 Wow, I didn't expect to get slapped in the face with *that* title! XD
    I was just watching the Bismuth video covering the full run, and I know a lot of more casual viewers enjoy that more surface-level explanation a lot more, but I'm glad there's a much more in-depth explanation by yourself for those like myself that enjoy it!

    • @dishwater63
      @dishwater63 ปีที่แล้ว

      Yeah, kinda weird they made the same video at the same time. Different overall videos, but the topic is very similar.

  • @Wiimeiser
    @Wiimeiser ปีที่แล้ว +30

    58:30 Worth noting is that the Mechakoopas actually occupy specific sprite slots (one actually occupies the same slot as sprites carried from the previous level)
    Also, I think the Peach sprite itself is what triggers some of the effects on its init routine.

  • @tOhB_
    @tOhB_ ปีที่แล้ว +14

    I’m doing a computer science A-Level, and this video gave me a better understanding of how the fetch-execute cycle works than any lesson I have ever had.
    Your content is amazing

  • @Meteorite_Shower
    @Meteorite_Shower ปีที่แล้ว +83

    As someone who's seen quite a few Mario Maker videos over the years, hearing 'X=9' at 38:33 sent my brain into fight-or-flight mode.

    • @newsoupvialt
      @newsoupvialt ปีที่แล้ว +7

      SAME LMFAO

    • @_fudgepop01
      @_fudgepop01 ปีที่แล้ว +1

      I didn’t expect to jump and laugh maniacally when I heard such a phrase uttered an a completely unrelated Mario world video that has to do with explaining niche glitches, but here we are LMAO

    • @kales901
      @kales901 ปีที่แล้ว +1

      why

    • @Meteorite_Shower
      @Meteorite_Shower ปีที่แล้ว +17

      @@kales901
      'X=9' is a known glitch in the Mario Maker games, where based on the x coordinate of the level (i.e. 9 blocks from the left, and I think also 129 blocks?) interactions with game objects differ on that spot compared to anywhere else in the level.
      An example would be an exploding Bob-omb normally only destroys a single block to the left, but if that Bob-omb were to be on the 9th block, it would destroy two blocks to the left. And there's many other oddities with other items.
      ...actually not sure why this happens. Might be a rounding issue in the code? Would be interesting to look into.

    • @kales901
      @kales901 ปีที่แล้ว +1

      @@Meteorite_Shower ok

  • @pasu2k
    @pasu2k ปีที่แล้ว +20

    I just watched Bismuth's video about the newest 11 exit SMW speedrun and was wondering why I couldn't remember a video by you about the cloud glitch. Turns out you've uploaded them together! xD

  • @omnisel
    @omnisel ปีที่แล้ว +5

    35:00 this is the best, most intuitive way of demonstrating what a typical glitch/bug induced crash may look like on a technical level.

  • @jansenart0
    @jansenart0 ปีที่แล้ว +24

    Bro, I love how you guys coordinate. This is great.

  • @adampeacock1262
    @adampeacock1262 ปีที่แล้ว +66

    How the devil was this ever discovered? Absolutely fascinating walkthrough, especially for those who have watched Ben Eater’s videos on how to make a CPU on a breadboard. Makes for an interesting connection with things like the open bus

    • @3lH4ck3rC0mf0r7
      @3lH4ck3rC0mf0r7 ปีที่แล้ว +56

      Discoveries like these are often made in baby steps.
      Some people crash their console by stumbling into the glitch by complete accident, and it becomes known that the game can crash there, and then someone figures out a consistent crash setup. It's still not a useful glitch by any measure.
      Then a hacker, emulator developer or glitch hunter (or all of the above) look at the code and document all the possible outcomes. The Cloud Glitch is discovered proper either here or before this, by someone stumbling into it accidentally or as a result of testing every possible incorrect value.
      Of course, its usefulness in speedruns wouldn't have been discovered until later when someone likely messing around with an item box cheat likely noticed Bowser behaving weird, hanging around doing nothing for prolonged periods of time and then suddenly attacking and jumping through phases sooner than expected.
      Someone smart connected all the dots, and here we are.
      Of course, this is just me guessing.

    • @MarioFanGamer659
      @MarioFanGamer659 ปีที่แล้ว +16

      @@3lH4ck3rC0mf0r7 I'd also add in the possibility that it could be known by disassembling and documenting each pieace of memory. For example, the RAM Map on SMW Central mentions that $14B0 and co are used by Bowser and the Lakitu cloud and that information stood there for many years. The effects of what happens when you bring a cloud into the Bowser battle thus might have been known for years, it just was never put in practice as this could only happen by modifying the level data or as showcased in this video, by putting it into the item box and moreover not let the game crash (and given how it requires basically ACE, that one is the hardest part to figure out).

    • @3lH4ck3rC0mf0r7
      @3lH4ck3rC0mf0r7 ปีที่แล้ว +12

      @@MarioFanGamer659 Only very recently have old games begun to get fully disassembled, documented and decompiled. Complete memory maps with accurate, detailed information on how every region is used just aren't possible without it.
      Glitches have been found using this information, but it's a more recent phenomenon. Usually the research that results into an ACE setup is more localized, finding where the game crashed in a debugger, figuring out the ways it reacts to the game state prior, and the memory corruption, if it does those things at all, and then targeting specific functions and variables that tend to be of interest (like setting flags and calling functions to load and play the ending cutscene immediately, for instance)

    • @YaroKasear
      @YaroKasear ปีที่แล้ว +3

      Reverse engineering, basically. The SNES hardware is pretty thoroughly documented at this point. The CPU itself is a 65816, for which you can get plenty of detailed information from Western Design Center on how it works, as that's not really Secret Nintendo Sauce(tm) there.
      The rest basically comes from disassembling a game and glitch hunting, then examining what happens. I imagine some die-hards gleefully attach logic analyzers to a SNES to see what's happening, although an emulator with a debugger probably does just as well.

  • @YEWCHENGYINMoe
    @YEWCHENGYINMoe ปีที่แล้ว +6

    5:44 "Swallow it it immediately" Nice.

  • @ElTaitronAnim
    @ElTaitronAnim ปีที่แล้ว +6

    The entire Magic Open Bus Ride section is so complicated that it's a marvel that we can even make games at all. Amazing work on this explanation and video!

  • @mattiviljanen8109
    @mattiviljanen8109 ปีที่แล้ว +8

    Fascinating! I didn't really think the explanation would go deeper than CPU instructions, but here we are! Open bus explained with ease, great work with the analogy and animations! It's enlightening to see how much work goes into fetching a CPU instruction and its parameters. **crickets**

  • @dragonspight
    @dragonspight ปีที่แล้ว +21

    You know it's a good day when RGME and Bismuth release videos in tandem.

  • @ProfRenderer
    @ProfRenderer ปีที่แล้ว +17

    Over an hour of RGME makes me smile. That powerup visual is super satisfying ngl

  • @TrueN8-bit
    @TrueN8-bit ปีที่แล้ว +4

    27:05 it was at this moment in the video I realized SRAM is MARS backwards, and now I can't unsee it.

    • @RGMechEx
      @RGMechEx  ปีที่แล้ว +5

      Dang, missed opportunity to make it the red planet.

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

      Great now I can't unsee it either

  • @ferenccseh4037
    @ferenccseh4037 11 หลายเดือนก่อน +22

    Assembly sounds fun. No safety nets, no handholding. The cpu just continues doing whatever it thinks it should be doing.

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

      Yes, but coding directly in assembly just isn't done anymore

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

      it is, until it isnt

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

      @@FFKonoko its not exactly practical for anything anymore but the tools are still maintained for modern systems

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

      it's not the language that matters, you could do this in c as well
      the problem is the os which in smw is nothing! so it lets anything happen with no restrictions
      modern systems have oses that are very careful of where you read write and execute, even if you code in assembly (ever heard of Segmentation fault?)

    • @ilonachan
      @ilonachan 22 วันที่ผ่านมา +1

      there are people who prefer that, for good reason! Of course for real software that you want to run safely in the real world, it's far too complex and prone to error to even be considered at this point… but it's a valuable skill to have, and for personal hobby projects, sure why not play around with it.

  • @strawberryjam0585
    @strawberryjam0585 ปีที่แล้ว +8

    The casual "DOODIE" in the open bus explanation made me giggle

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

    Deadpan "Part 1: eating a football player" is the best sentence I've ever heard in my life.

  • @TheSteelDragonG
    @TheSteelDragonG ปีที่แล้ว +3

    Just want to say that I love this channel and to keep on doing what you do.
    There are no other channels like this one that put the extra homework and love into this. Thank you.

  • @yotho8410
    @yotho8410 ปีที่แล้ว +1

    WOW! Great explanation!

  • @markusfassbinder8275
    @markusfassbinder8275 ปีที่แล้ว +6

    Nice, nothing can make me more happy than over an hour technical stuff about retro games!

  • @AllemandInstable
    @AllemandInstable ปีที่แล้ว +4

    your channel is awesome both for entertainment of seeing how glitches work but also I think it is a really good way to start to learn how computers work, it is much less abrupt than daunting books and articles on low level stuff

  • @TinyDeskEngineer
    @TinyDeskEngineer ปีที่แล้ว +9

    "Part 1: Eating a Football Player"

  • @firstnamelastname4224
    @firstnamelastname4224 ปีที่แล้ว +4

    Shoutout to RGMechEx for either captioning this whole 1:12:54 video or having somebody else caption the whole thing

  • @glowstonelovepad9294
    @glowstonelovepad9294 ปีที่แล้ว +3

    26:20
    (00-7B, 80-FF)8000-FFFF: ROM
    (00-3F, 80-BF)0000-1FFF, (7C-7F)0000-FFFF: WRAM
    (70-7B, F0-FF)0000-7FFF: SRAM
    (00-3F, 80-BF)2200-25FF: CPU
    (00-3F, 80-BF)4000-43FF: Joy
    (00-3F, 80-BF)4400-47FF: PPU
    (00-3F, 80-BF)2000-21FF, 2600-3FFF, 4800-7FFF, (40-6F, C0-EF)0000-7FFF: Open Bus

  • @Supperman88
    @Supperman88 ปีที่แล้ว +7

    38:34 X equals 9. Science Yoshi's racing the clock and it ain't no joke.

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

    Casually:
    "Part 1: Eating a football player"
    Ok, a reasonable start... But now I need to know what the next parts are

  • @themightyripples6582
    @themightyripples6582 10 วันที่ผ่านมา

    The planet explanation you used for read and write in terms of code has just changed my life, as a programmer this has always bugged me in a way i couldn't explain then now as a AI dev I can never unsee that, THANK YOU!

  • @soviut303
    @soviut303 ปีที่แล้ว +31

    I wonder if the Chargin Chucks were originally intended to be eaten and give an item (a football? or maybe some coins). I'd be willing to bet that being able to eat them made the places they're used too easy to clear and the behaviour was removed.

    • @dontworry4945
      @dontworry4945 ปีที่แล้ว +6

      "It's a stone Luigi, you didn't make it!"

    • @anstheram
      @anstheram ปีที่แล้ว +1

      ​@@dontworry4945 "It's a football, I chiseled it!"

    • @Xigzagamer
      @Xigzagamer ปีที่แล้ว +1

      @@anstheram "Well, what are you waiting for, throw me a pass!"

    • @Yes-jw8cp
      @Yes-jw8cp ปีที่แล้ว +3

      I feel like it would have been for an earlier version of the cape since some leaked sprites depicted Mario wearing a helmet with the cape.

  • @MeriaDuck
    @MeriaDuck ปีที่แล้ว +1

    50:30 that the stars line up like that in any reproducible way is quite stunning 😂

  • @everetcetera
    @everetcetera ปีที่แล้ว +6

    absolutely beautiful distraction on a hellish day... an hour?? a whole hour??? life is beautiful despite its cruelties. thank you. o7

  • @bmwolgas
    @bmwolgas ปีที่แล้ว +7

    The amount of time it took to put together the visual portion of this video and line it up with commentary had to be astronomical.

  • @adam850
    @adam850 ปีที่แล้ว +34

    I had no idea about this speed run, but the explanation was fascinating. On the SNES, is efficient memory management not as critical, where a developer can "waste" memory just to be safe?

    • @RGMechEx
      @RGMechEx  ปีที่แล้ว +43

      Yeah it'd definitely not as big of a deal as say, the NES. There's 128 kB of work RAM to use, and Super Mario World uses it very generously (along with a lot of unused sections).

    • @MarioFanGamer659
      @MarioFanGamer659 ปีที่แล้ว +7

      It depends on the type of memory, at least.
      With 128KiB, WRAM is plenty, though there are games which only ended up needing half of it. Others, on the other hand, need so much RAM that they even have to include additional RAM from cartridge beyond saving the data (not just these with enhancement chips but also those without). However, what also contributes to not using all of WRAM is the fact that the CPU can further use of ROM which is freely accessible.
      This is different to video and audio as the PPU and SMP can only access VRAM and ARAM, respectively and as a result, the developers have squeeze out as much from the 64 KiB each as possible.

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

    My friend attempted this speed run and got an almost world record time, but his recording software bugged out and it never worked. This video helped him out a ton, so I’m giving an indirect thanks.

  • @EmosewaMC
    @EmosewaMC ปีที่แล้ว +2

    I took a Computer Architecture course this term at my university so it was really cool to hear the terms I learned this term (PC, RAM blocks and more) in use! Thanks for the video

  • @smellyfishstiks
    @smellyfishstiks ปีที่แล้ว +2

    I loved every moment of this. Your visuals and explanation were really well done great job!

  • @bayardop
    @bayardop ปีที่แล้ว +3

    It's funny just how I've been doing the Cloud Glitch for a while now in order to get better PBs and while I did have to understand the very basics of what was going on in order to get the glitch in the first place, I've never actually delved into the inner workings of the actual glitch in such details like it was explained here.
    I will have to re watch this explanation (Specifically on why the B5 value is needed and how to back it up) in order to get more successful attempts so I don't have to reset as much.
    Thank you so much for this video!

  • @socksygen
    @socksygen ปีที่แล้ว +1

    Came from Bismuth, incredibly interesting video! Learned how to write assembly code recently so this was a great watch.

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

    "eating a football player"
    HUH?

  • @Choralone422
    @Choralone422 ปีที่แล้ว +2

    Once again I am amazed at the lengths speed runners go to break games! Excellent explanation!

  • @nishatelya7576
    @nishatelya7576 ปีที่แล้ว +12

    I like how both Bismuth and RGME uploaded a video on the same Speedrun within an hour of each other lol

  • @user-vx1vl1ci1e
    @user-vx1vl1ci1e ปีที่แล้ว +1

    1hour RGMechEX video. My face literally morphed into a pog when I saw the length. You're the best.

  • @arnpoly
    @arnpoly ปีที่แล้ว +1

    Watching the open bus code tracing, I realized how fortunate it was that there were no instructions along the way that manipulated the stack, which would have broken the return back to regular execution.
    Most excellent video, the time just melted away!

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

    "part one, eating a football player"
    I tabbed back in so fast

  • @emo6577
    @emo6577 ปีที่แล้ว

    Bismuth sent me here from his video, I already started doing a deep dive. Your playlist on the snes hardware/software had my attention all day long, super interesting concepts with equally beautiful visuals ❤

  • @TechSY730
    @TechSY730 ปีที่แล้ว +4

    26:08
    Phoebe: "We never went to unmapped memory at my old school"

    • @TechSY730
      @TechSY730 ปีที่แล้ว +2

      For the pedantic among you:
      Yes I know what is unmapped is a virtual memory _address_ , not the memory itself.
      And actually more so, a _region_ of virtual memory address space is unmapped.
      But come on, the joke wouldn't work if I went into all that. 😉

  • @CaptainJZH
    @CaptainJZH ปีที่แล้ว +4

    it's my sleepover, i pick the movie

  • @elecboy5126
    @elecboy5126 ปีที่แล้ว +8

    I really appreciate the devotion to making sure the watcher doesn’t get lost, but the easiest place to get lost IMO is the radix (indexing in particular), which you kinda speed past

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

    5:39 "Swallow it it immediately"

  • @jaygrum
    @jaygrum ปีที่แล้ว +1

    you've done it again, RGME. seeing this all happen is so cool!

  • @clothinghanger6978
    @clothinghanger6978 ปีที่แล้ว +2

    1:00 i fucking died how he just said that like it wasnt the weirdest thing ever 💀💀💀he could have said chargin chuck but chose to say football player 💀

  • @jkljosh7392
    @jkljosh7392 ปีที่แล้ว +8

    Imagine he does a video at this depth explaining every step of a ACE run where they code snake or something like what sethbling did.

    • @BBSplat
      @BBSplat ปีที่แล้ว +5

      The video explaining Triforce% is a very in-depth explanation of loading custom behaviors into Ocarina of Time using ACE.

    • @pixelkated1096
      @pixelkated1096 ปีที่แล้ว

      that would be the absolute dreeeaaam

  • @deepintermission
    @deepintermission ปีที่แล้ว +3

    its insane how much you can fundamentally break this game, its also insane how youtubes auto game detection in the description is also still fundamentally broken saying that this game was the original arcade Mario Bros

  • @ChompDude
    @ChompDude ปีที่แล้ว +7

    "Eating a football player" feels like it would fit in with one of those out of context videos.

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

    Amazing video as always. Really accessible explanations of the open bus trip

  • @עדןמזור
    @עדןמזור ปีที่แล้ว +6

    Just wondering, why is the cloud's smile a little broken? And why does it switch from time to time from being visible to invisible?

  • @3rdalbum
    @3rdalbum ปีที่แล้ว +8

    Okay, I did part one, and I'm in jail. What do I do next?

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

      spin jump at just height and angle and you can clip between the bars

  • @a.lollipop
    @a.lollipop 19 วันที่ผ่านมา

    Absolutely brilliant video! You explain things so well, I've been watching your channel for a long time and your videos have always been so interesting and educational! You helped me find my passion for game programming, and I still love to watch your amazing explanations for these fascinating topics now that I'm making my own games, thank you so much for your work ❤

  • @ThinkAboutVic
    @ThinkAboutVic ปีที่แล้ว +1

    This being uploaded super close to Bismuth's SMW 11 Exit WR Explained vid is so cool

  • @JouvaMoufette
    @JouvaMoufette ปีที่แล้ว +9

    29:50 imagine trying to read D00D1E

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

      Doodle

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

      ​@@Cacodevidro432 doodie

  • @blimpage
    @blimpage ปีที่แล้ว

    Amazing video, I swear your videos get better with each new one you create! The way you explain how everything works is super clear - I've heard of concepts like open bus before but haven't understood them until watching this. Thank you!

  • @PronatorTendon
    @PronatorTendon ปีที่แล้ว

    These are ridiculously in depth explanations. I play with code on NES and SNES games, but I have no where near the knowledge required to elaborate to this degree

  • @luigimaxwell8946
    @luigimaxwell8946 ปีที่แล้ว +5

    bismuth to retro game mechanics explained true combo

  • @brunoais
    @brunoais ปีที่แล้ว

    LOVED IT! It's a really good explanation! Thank you very very much! You clarified another "how do speedrunners do it". Thank you very very much!!!

  • @Kripted
    @Kripted ปีที่แล้ว

    Made my day with this ONE HOUR upload. I love your videos and probably watch at least one daily.

  • @gentlesoul221
    @gentlesoul221 ปีที่แล้ว +1

    4:58 You added an extra It to "Will yoshi swallow it immediately".

  • @michaelschlem2849
    @michaelschlem2849 ปีที่แล้ว +2

    6-1-23
    So, effectively, here's what happens:
    The SNES tries to get information and launches itself, trying to find the information it needs to complete the task. However, something goes wrong on its Navigation software. After Yoshi eats the Chargin' Chuck, it gives the SNES the address of $014A13, sending it off into the Void of Open Bus. The SNES tries desperately to find its way, but everytime it tries to communicate with ANYTHING, it just comes back empty. The player needs to help it find its way back. The Variables all align perfectly to allow it to find its way. Eventually, after 767 BPL Instructions, at $018007, the SNES finds its way to the Wilds of the ROM Planet. It gets found and returns back home, with a Lakitu Cloud in Tow.
    The Stars have to align for you to be able to get the Cloud without the SNES crashing.

  • @Phobos_Anomaly
    @Phobos_Anomaly ปีที่แล้ว +2

    The titlecard reading "Part 1: Eating a Football Player" is funnier than I think it has any right to be lol

  • @glitchy_weasel
    @glitchy_weasel ปีที่แล้ว +1

    Love the breakdown of assembly code in retro games!

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

    Thanks for your great explanations, now I understand functions and aspects of SMW's code better than my own!

  • @thomaskilloy2534
    @thomaskilloy2534 ปีที่แล้ว +1

    I love how dedicated speedrunners are, great video! Would love to know who first found this glitch.

  • @drgabi18
    @drgabi18 ปีที่แล้ว +9

    oh snap a new RGME video, lemme just
    **opens vid**
    *1 HOUR*

    • @drgabi18
      @drgabi18 ปีที่แล้ว +1

      the earth image at 27:00 is accurate because the UK isn't visible and in reality it's not a real country

  • @invalid_user_handle
    @invalid_user_handle ปีที่แล้ว +2

    So, it boils down to "This object was never expected to be in the same room as Bowser, so it uses some of the same memory addresses as the boss object, which if manipulated properly, makes timers shorter than they usually would be, causing phases of the fight to be easily skippable.".
    Takes all of 15 seconds to say, but that isn't nearly as interesting.

  • @jarrod752
    @jarrod752 ปีที่แล้ว +3

    So the goal is to get executable code by building an _incredible machine_ that causes a read into a void to generate it's own executable code that also returns back to where it started. That's a hellova glitch.

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

    This was amazing. So clearly and simply explained.

  • @BluishGreenPro
    @BluishGreenPro ปีที่แล้ว

    This is super neat, perhaps the most complete explanation of this sort of glitch I’ve ever seen!

  • @TeufortHeavy
    @TeufortHeavy ปีที่แล้ว

    I watched the whole video, only to realize at the end that it was 1 hour long, time passes fast when you're doing what you like;
    watching your videos!

  • @ianmathwiz7
    @ianmathwiz7 ปีที่แล้ว +8

    So why is getting the cloud from the Chuck not banned in 11-exit RTA speedruns, when in the TAS community it's banned for being ACE?

    • @RGMechEx
      @RGMechEx  ปีที่แล้ว +20

      The TAS community has a more strict definition of arbitrary code execution, and using the controller buttons, sprite position and speed to manipulate open bus falls under that. For real-time speedruns though, the rules are more relaxed. It's not so much about banning ACE altogether, but only allowing just enough to be able to get the cloud without crashing the game. The run is ultimately about beating the 11 intended levels and defeating Bowser as fast as possible without major skips. It's slightly arbitrary itself, but it's what most runners find fun to play.

  • @ragzard
    @ragzard ปีที่แล้ว +1

    WAIT. That video was more than an hour? I swear I didn't noticed. Now it's 2am. But the most impressive thing is that I actually understood it! I'm a biologist with no good knowledge of SNES programming. That's proof of the excellent RGME's didactics.

  • @SlimXG
    @SlimXG ปีที่แล้ว +3

    Those poor crickets, stuck out there in space

  • @BrownR87
    @BrownR87 ปีที่แล้ว

    It always takes me a while to get tone to watch your longer videos, but man it's always worth it ❤️

  • @baa_tho
    @baa_tho ปีที่แล้ว +1

    man, the Magic Open Bus Ride is wild

  • @fadorka
    @fadorka ปีที่แล้ว +10

    Huh this video and bismuth's SMW video came out within an hour of each other. neat you can never have too much SMW

  • @iamleftie
    @iamleftie ปีที่แล้ว +3

    I dare you to find another process for anything where the first step involves eating a Football player.

  • @andrewbrenton8092
    @andrewbrenton8092 ปีที่แล้ว +1

    Crazy you and Bismuth release the same kind of video at the same time.