Super Mario World Credits Warp Explained

Поделиться
HTML-код
  • Опубликовано: 9 июн 2024
  • Thanks to p4plus2 and masterjun for proofreading my script so I didn't mess things up too badly.
    This video is not an assembly tutorial--if you don't understand the assembly parts and you want to know more there are plenty of resources on the Internet.
    I tried to make something very complicated into something simple enough that a random person could at least kind of understand. Some of my illustrations are "wrong," and I know that. If I made everything technically correct it would be either a) too difficult to animate or b) too difficult for a random person to understand.
    Otherwise, if you have any questions, feel free to ask and I'll try to answer.
    Link to video tutorial of this route: • Super Mario World Cred...
  • ИгрыИгры

Комментарии • 1 тыс.

  • @vivavaldez87
    @vivavaldez87 7 лет назад +697

    This could all be made up nonsense and I wouldn't know any better...

    • @str8kronic
      @str8kronic 6 лет назад +7

      VivaValdez lmao

    • @SuperEthan5.
      @SuperEthan5. 5 лет назад +4

      VivaValdez it checks out pretty well for me

    • @glitchisfluffy
      @glitchisfluffy 5 лет назад +10

      + thereal SuperEthan5 :-D Same. I'm taking a CS class and we're learning assembly! It's super fun.

    • @NoriMori1992
      @NoriMori1992 2 года назад

      I thought the same thing at a particular point in Bismuth's "Why 4:54 is the perfect speedrun" 😂

    • @goatgamer001
      @goatgamer001 Год назад

      Just run address $0069, and if the upload date is 1 April, return nonsense. If not, return false

  • @gameboycolor47
    @gameboycolor47 7 лет назад +417

    I love figuring out how these old games are built cause I feel like they were built to be on the constant verge of breaking but just barely keeping away from actually exploding all over itself.

    • @memerichment
      @memerichment 7 лет назад +44

      You must absolutely love Pokemon R/B/G then!

    • @ManoredRed
      @ManoredRed 7 лет назад +88

      They had to build them that way because they had little memory and processor power to work with, so they had to cut all the corners they could. I mean, for bleb's sake, the actual code is kept in the same space as the data, and the're using jumps. One wrong jump is all it takes to execute data as if it were code and explode everything, as this video demonstrates.

    • @NEWDOR1A
      @NEWDOR1A 7 лет назад +2

      Had the same thoughts man! xD

    • @user-cz9ss4yq4x
      @user-cz9ss4yq4x 6 лет назад +15

      Funnily enough, pwning without modern security features like ASLR (random addresses), NX-bit (prevent data from being executed) and stack canaries (detect buffer overflows) were so similar to this NES ACE. I am talking about Windows XP times.
      Returning to existing code for example is still done to this day with “return-to-libc”.
      Having an invalid MP3 (M4A) file still crashes the Nintendo 3DS, like eating a chuck with Yoshi does in SMW.
      Source engine games had similar issues. Some while ago in Team Fortress 2, a player could spawn with a deformed ragdoll model, so everytime he died he could execute arbitrary code on the PCs of EVERY PLAYER ON THE SERVER. He could open up the calculator, but he could also quickly install viruses.
      of course, nowadays, one update patches everything and NES games are immutable.
      But all software on modern processors still share the same basic vectors like on the NES :P

    • @RANDOMDUDE140
      @RANDOMDUDE140 5 лет назад +45

      as a programmer, I can assure you that literally every piece of software you have ever used is barely held together by duct tape and prayer

  • @Daniel15au
    @Daniel15au 7 лет назад +192

    5:55 "Remember these for later"
    Oh man, I hope there's not a quiz at the end, I've already forgotten them :D

  • @Sebastian1011
    @Sebastian1011 8 лет назад +667

    I love how there's "wut" in the URL address of this video xD

  • @KiramaruXVI
    @KiramaruXVI 8 лет назад +901

    This is what women really want.

    • @Linkjustdoit
      @Linkjustdoit 7 лет назад +15

      You sir, are my hero

    • @shadowmax889
      @shadowmax889 6 лет назад +31

      Sooo they want everything in place and then jump to the happy ending??? o_O

    • @magikarp8416
      @magikarp8416 6 лет назад +41

      shadowmax889 The girl will only ever accept the man if he spin jumps and manipulates specific sprite slots at various x and y coordinates

    • @knightlife98
      @knightlife98 5 лет назад +2

      F'ing A!!!! LoL!!!!!

    • @araigumakiruno
      @araigumakiruno 5 лет назад +3

      Really? They want a credits warp

  • @SJActress
    @SJActress 6 лет назад +64

    "I hope you now have a general idea of what's going on behind the screen."
    *Magic?*

  • @DragonDePlatino
    @DragonDePlatino 8 лет назад +659

    AHHHHH ASSEMBLY CODE
    HOLD ME I'M SCARED

    • @SkyewardSword64
      @SkyewardSword64 8 лет назад +4

      +DragonDePlatino same

    • @potatoonastick2239
      @potatoonastick2239 8 лет назад +34

      LDA [$00],Y
      INY
      INY
      TAX
      LDA [$00],Y
      INY
      INY
      STA $2142
      SEP #$20
      CPX #$0001
      LDA #$00
      ROL A
      STA $2141
      ADC #$7F
      PLA
      STA $2140
      CMP $2140
      BNE $80D3
      BVS $808D
      STZ $2140
      STZ $2141
      You scared yet?

    • @SkyewardSword64
      @SkyewardSword64 8 лет назад +10

      +Potato on a stick I'm terrified. Which instruction set are you using? I'm being taught the same instruction set in my computer science class and I'd like to learn more about it

    • @potatoonastick2239
      @potatoonastick2239 8 лет назад +8

      SkyewardSword I just disassembled the SMW ROM and pasted a part of that in here. 65c816 assembly

    • @mattiaisgro9844
      @mattiaisgro9844 7 лет назад +1

      +Berzark _ ;)

  • @beaal5641
    @beaal5641 8 лет назад +280

    Having somehow understood this, my only question is who on earth took the time to figure this out?!

    • @tchitchouan
      @tchitchouan 8 лет назад +23

      he did

    • @russelldinosores.2332
      @russelldinosores.2332 8 лет назад

      +Bea Al That's true...

    • @epicKiipa
      @epicKiipa 8 лет назад +57

      +Bea Al My guess is that someone who knows the assembly language (eg someone who wrote an emulator, or just some nerd), had a debug session open while playing the game, and figured out what code was needed to get to the credits screen. Then they *had to* figure out how to do it early in the game.
      An interest that became a life style ;P

    • @potatoonastick2239
      @potatoonastick2239 8 лет назад +30

      +Lurvik Pretty much. Basically to figure out this glitch, they looked at an existing glitch which would jump to the sprite X coordinate table located at the OAM (object attribute memory), as those values are easily manipulateble by just moving around sprites on the screen. This glitch happened to be the item swap glitch, the glitch which lets yoshi eat an (I think it has to be a non-charging) chuck. From here, they worked out what code they needed to set the gamemode to the gamemode corresponding to the credits, and assembled it to be byte-code readable by the machine. After having figured out what code they need, they just found a way to manipulate the sprite X coordinate table in such a way that that code would be run by the game, and voila, mario warps to the credits.
      I am by no means an expert in ASM or SMW glitches in general, there might be mistakes in this explanation. Correct me if I'm wrong.

    • @IronLotus15
      @IronLotus15 7 лет назад +9

      I think it's more than that. The item swap glitch only causes the SNES to be confused, and execute instructions from open bus. They still had to find a way to then manipulate the open bus value to make the SNES execute a jump instruction to their code they wrote in the sprite coordinate tables. All the stuff about making sure that the mushroom would spawn in slot 9, only collecting one dragon coin, the P-switch being in Slot 6 & having x-coordinate 0EFF, and the y-coordinate of the particles being at a certain range of values was to manipulate the open bus value to do that, I think.

  • @ShadowBoltTF2
    @ShadowBoltTF2 8 лет назад +483

    Wow... I understood none of that.

    • @-AAA-147
      @-AAA-147 8 лет назад +2

      +★ ShadowBolt ★ Same here.

    • @RoyFlush716
      @RoyFlush716 8 лет назад +46

      TRANSLATION: This glitch makes the credits appear.

    • @Maroki06
      @Maroki06 7 лет назад +1

      ShadowBolt I did understand

    • @alexandercruz6264
      @alexandercruz6264 6 лет назад +8

      im a programmer and i had a bit of a hard time lol

    • @shady8045
      @shady8045 3 года назад +1

      honestly stuff like this is probably more complicated then the actual process that created the game, so dont feel bad.

  • @crisis8v88
    @crisis8v88 8 лет назад +122

    I wonder how long it will be before some speed runner accidentally discovers the code that allows Super Mario World to become self aware.

    • @Maroki06
      @Maroki06 6 лет назад +4

      umm program AI asm code using shells and run it

    • @watamidoing8131
      @watamidoing8131 6 лет назад +13

      Hello guys, sethbling here.
      Today, I'm going to show you something unique. This super Mario Bros cartridge is the only one in the world... Well, here's the other one, but that's it.
      These two games are one of a kind because me, and a friend made an AI using arbitrary code execution with koopa shells.
      Here, I'll show you.
      " This is your fault. I'm going to kill you. And all the cake is gone. You don't even care, do you? "
      *Unplugs super Mario world*
      As you can see, it's still glitchy but nothing big.
      That's about it, thanks for watching

    • @magikarp8416
      @magikarp8416 6 лет назад +5

      What is this? Skynet?

    • @sackboy1665
      @sackboy1665 Год назад +1

      It's at 94df0d

    • @floppa_gamer1111
      @floppa_gamer1111 Год назад +1

      @@sackboy1665 panic

  • @BeefBronson
    @BeefBronson 7 лет назад +271

    to put it simply:
    when yoshi eats the mushroom, the chuck really wants to be in item spot 9, which is where the mushroom was, which is on yoshi's tongue. the game doesn't know what to do about this, flips the fuck out, and asks the open bus to solve its problems. the open bus takes the x value of the p-switch and uses it to determine that it needs to look at the sprite of the third dragon coin. if it's empty, the data bus does some stuff to the address and the stack that makes the code look at the x and y values of the block particles. if they were in the right position, the code starts to run the values of the red shells, which tell the game to roll the credits if Mario is facing right and not swimming, which is all well and good, except we cant get him back in the game with that alone. the rest of the code introduces a routine that brings Mario into an encounter with iggy, which brings him back into the game, but since we're going to the credits and not iggy, the game glitches out.

    • @SuperNickid
      @SuperNickid 4 года назад +17

      @Beef Bronson: you explain the first part incorrect, the reason why the chargeing chuck spond on yoshi tongue, his because mario interupt yoshi eating the mushroom, causing a nil sprite in slot 9 to be on Yoshi tongue, so the chargeing chuck still see slot 9 being empty at would take that spot to appear, but that empty spot his on Yoshi tongue, making the chargeing chuck appear on Yoshi tongue and then get eaten by Yoshi. The mushroom in the reserve box when it come out it was force into slot 9 since the 2 glitch berries are taking slot 11, and slot 10.

    • @ziggy78eog
      @ziggy78eog 4 года назад +7

      Nope, still makes no sense.

    • @thecavesys107
      @thecavesys107 4 года назад +1

      @densch123 no, you do not have to play this game at all to understand the video

    • @SuperNickid
      @SuperNickid 4 года назад +5

      @densch123 : Lets expalining with the real world example: you have 12 basket with numbers on them from 0 to 11, number 0 to 9 are brown basket, while basket 10 and 11 are golden basket, all of the fruit your instructed to put them in basket 9 first except for Pineapple, Pineaplle are instructed to be place in the gold basket number 11 first if it his empty. So you have the normal fruit and then the special fruit, you place a fruit first that his not a Pineapple you have to place it in basket 9 first even thought basket 10, and 11 are empty, then if Baske number 9 to 0 are all full, and you try to put a fruit that his not pineapple even though 10 and 11 are empty, that fruit will go to the trash, it will always search for the highest number besket that it can go to that his empty, the mushroom in this case was the pineapple, so two pineapple as to be already in basket 11, and basket 10, so the next pineapple goes into basket 9, then the buyer bought basket 9, while he bought it the seller takes away the object inside so he carries an empty bucket 9, but the buyer as not notice that yet, that it his empty, and the buyer never notice that bucket 9 his empty, so but the seller knows that bucket 9 his empty, so if the seller put a diffrent fruit in the new basket 9 it will disapear and appear in the buyer same number basket. I'm well aware that in the real world you can't actually do that, that was just an example if the real world would behave like a video game.

    • @pokiplus9672
      @pokiplus9672 4 года назад +9

      SuperNickid that’s genuinely even more confusing

  • @koukilfs7814
    @koukilfs7814 8 лет назад +108

    Assembly... buses... things... (Pretending that I'm understanding)

  • @TownshendSmash
    @TownshendSmash 9 лет назад +771

    ....whut.

  • @seto007
    @seto007 7 лет назад +149

    7:03 it's nice to know that while Jotaro was studying Marine Biology, Star Platinum was apparently coding in Super Mario World.

    • @DSMA98
      @DSMA98 7 лет назад +6

      good to know that I wasn't the only one thinking that XDD

    • @JSoul
      @JSoul 7 лет назад +4

      RickitySplit ORA ORA ORA ORA ORA ORA ORA ORA!

    • @riftvallance2087
      @riftvallance2087 4 года назад

      Ya feel like he should be off working on the cure for cancer or something

    • @NovelteaJ1228
      @NovelteaJ1228 3 года назад +1

      Hehe funny jojoke

  • @Monvayne
    @Monvayne 7 лет назад +190

    instructions not clear, I have a Yoshi stuck in my urethra

    • @Kid_Cat64
      @Kid_Cat64 4 года назад +4

      Aw *shoot* here we go again.

    • @matteusmag
      @matteusmag 4 года назад

      😂 thank you for this comment.

    • @WolfXGamerful
      @WolfXGamerful 4 года назад +3

      i woke up today and i said "i absolutely need to see this comment"

    • @velvet1371
      @velvet1371 3 года назад

      [Insert Franklin's "What?" Here]

    • @InCompet4nt
      @InCompet4nt 3 года назад

      what the hell happened here

  • @skeletorthebest7204
    @skeletorthebest7204 7 лет назад +88

    But first, let's talk about parallel universes.

  • @JimPlaysGames
    @JimPlaysGames 8 лет назад +201

    This is fascinating. I can barely grasp the concepts involved, but I get it just enough to be very impressed and interested. I like how it is all pure logic down in the metal, but by the way Mario is behaving it looks like witchcraft XD

    • @diamondman4252
      @diamondman4252 8 лет назад +7

      +JimPlaysGames If you are interested in getting a better understanding down to the bare metal, look up a book called Code www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319 It is a pretty good introduction that is very accessible, but not insulting if you already know how to code. :)

    • @xenxander
      @xenxander 7 лет назад +1

      Wow, Jim! How is your next game project by the way? I still enjoy 'earth got mooned' from time to time, by the way :)

    • @smashmouthegg570
      @smashmouthegg570 7 лет назад

      lol asm in mario world isnt that bad i made a captain falcon mod that's in testing but i am trying to make a wavedash power up but i keep getting it to work in a conveyor belt fashion which i dont want i want him to slide.

  • @SmOskar
    @SmOskar 7 лет назад +332

    I don't understand this shit but I liked it.

  • @badATchaos
    @badATchaos 9 лет назад +106

    Can you glitch me up a girl friend?

  • @GreenBlueClouds
    @GreenBlueClouds 9 лет назад +81

    I can only imagine the type of memorization needed to get the values just right by eye.

    • @thesilenthack
      @thesilenthack 9 лет назад +21

      ***** I can only think about how anyone came on this idea. "Hey! Lets use sprites to execute code in SMW!"

    • @darkmagician135
      @darkmagician135 9 лет назад +15

      SilentDust and the code writing has gotten pretty crazy. look up "tasbot plays mystery game". they've also gone on to re-write pokemon, one of the times they made it connect to the internet and stream twitch chat

    • @A_Player
      @A_Player 8 лет назад +9

      +darkmagician135 Connect to the internet? Holy shit. Link please. Now.

    • @Nixitur
      @Nixitur 8 лет назад +13

      +darkmagician135 That's not quite correct. It didn't connect to the internet. The SNES has no internet capabilities.
      From what I understand, their laptop was connected to the internet and TASbot was connected to the console, translating the text from Twitch chat into button presses while the console translates those button presses back to text. Stuff like "press L and SELECT at the same time" meaning "A" or something along those lines.
      It's still pretty crazy how quickly it all works. You'd have to get into the detail of how quickly the console can actually register button presses. 'cause just using one letter per frame sounds like it would be way too slow.

    • @weinsim3856
      @weinsim3856 5 лет назад +1

      You might not believe me but after you've done it like 10 times you won't need any more help because it will all be in your head after a few times

  • @LepusZeppelin
    @LepusZeppelin 7 лет назад +188

    This was incredibly informative. I'm going to go spawn some dolphins where they don't belong.

  • @pannenkoek2012
    @pannenkoek2012 8 лет назад +207

    What did you use to make the animations?

    • @IsoFrieze
      @IsoFrieze  8 лет назад +101

      +pannenkoek2012 For the majority of it I use Adobe Premiere. For more detailed stuff like the numbers at 2:54, I created a Java program that displays graphics that I capture with a screen recorder.

    • @ERROR24016
      @ERROR24016 8 лет назад +19

      pannenkoek2012!

    • @dustinrush4320
      @dustinrush4320 7 лет назад +15

      pannenkoek2012 An A press is an A press.

    • @acrid8952
      @acrid8952 7 лет назад +17

      holy shit its the pancake man himself?

    • @bertobop1795
      @bertobop1795 6 лет назад +4

      pannenkoek2012 PANNENKOEK

  • @N0PH0B14
    @N0PH0B14 8 лет назад +9

    It all makes sense, but christ! Who just sits down and figures all this out, let alone timing everything JUST right so all the code falls into place. This is both simply ridiculous and simply amazing!

    • @xtalviper
      @xtalviper 8 лет назад

      +ThePixelPaladin F'n-A, that's what I don't get, how you can execute what you want flawlessly, not like you get on screen indicators of what x-y position you're on...

    • @acrid8952
      @acrid8952 7 лет назад +2

      You can. Emulators let you look at the entire RAM, so you can keep track of your subpixel perfectly. Also, there is a full assembly dump

    • @Oneiroclast
      @Oneiroclast 5 лет назад

      It wasn't an individual person that figured it out, it was a lot of people making small discoveries over the course of decades.

  • @cerealkiller3175
    @cerealkiller3175 7 лет назад +91

    Too much Sprites make me thirsty

  • @kinsaktube
    @kinsaktube 7 лет назад +158

    clear as water
    (screams internally in spanish)

  • @brunoais
    @brunoais 8 лет назад +24

    Thank you! It's rare to find a good explanation video of old glitches like this. I liked how you joined those images together to help the explanation. Thank you!

  • @sabbateus
    @sabbateus 7 лет назад +40

    Well if I go into gamemode 3 you'll see these armor stands...

    • @Hextator
      @Hextator 7 лет назад +4

      Just wait until you make a deal with Satan to tie a villager to one of those armor stands with a lead and end up with duplicate UUIDs...no amount of gamemode 3 or kill command spam will save you.

    • @ayeariola
      @ayeariola 4 года назад +1

      Everything related to sethbling is armor stands

  • @timcreasman2621
    @timcreasman2621 8 лет назад +21

    5:55 "Remember these for later"
    **frantically grabs pen and paper**

    • @ethanpixelate
      @ethanpixelate 7 лет назад +1

      Timothy Creasman *and opens eyes as wide as possible and looks at every single detail of the video*

  • @setsunaes
    @setsunaes 7 лет назад +41

    Well, I think, I think I got it... I mean, I migth lost it at 0:11 when you said "write some code using koopa shells"...

    • @timbergman2511
      @timbergman2511 7 лет назад +4

      if that lost you then im guessing that coding pong into pokemon using the pokedex is a bit too much also....

  • @MeNowDealWIthIt
    @MeNowDealWIthIt 8 лет назад +4

    In other words, you flip flop the flip table in memory, so it flops into the credits.

  • @lahma69
    @lahma69 7 лет назад +4

    As someone who does reverse code engineering and exploit development for a living, I recognize the extreme level of care and detailed analysis that went into the research and development of this video. I'm sure this took a lot of time to make, especially given the great care that went into the presentation of data on screen. All of the graphics, organization, and detailed step by step display of each register's value, memory address, and the transformation of each subsequent CPU instruction was simply beautiful. It clearly takes someone who has a passion for reversing (and sharing that skill with others) to put so much time and effort into something that sadly isn't going to have an equal level of payback in views and attention because of the limited audience who will understand, even in a very limited/abstract way, what was being explained in the video. I applaud your efforts man, and I thank you for putting so much time into making something that I, and I'm sure many others, enjoyed immensely. You definitely earned my subscription, and I'm anxious to see what other videos you've made, as well as what future videos you will create.

  • @meowskull
    @meowskull 7 лет назад +6

    this shit makes colonizing mars look like child's play

  • @Devalation
    @Devalation 7 лет назад +78

    That was an absolutely incredible video. I have a masters in Computer Science and you blew my mind.

    • @patatapotato4398
      @patatapotato4398 6 лет назад +1

      I bet he has a PHD in computer science and his essay thing for getting excepted was on this

    • @unknownanonymous5914
      @unknownanonymous5914 6 лет назад +15

      +Patata Potato excepted....
      EXCEPTED....
      Are you kidding me?

  • @bbrodriguez420
    @bbrodriguez420 5 лет назад +26

    14yr old me: "math is dumb, won't ever need that crap"
    Nearly 30yr old me: "man thats cool asf! how did they figure that out. oh wait.."

    • @b3dubbs72
      @b3dubbs72 4 года назад +1

      I’m taking differential equations in college rn and I still have no idea what this video is about.

  • @Amiculi
    @Amiculi 6 лет назад +2

    "I hope you now have a general idea of what is going on behind the scenes during the Super Mario World credits warp."
    IN NO WAY WHATSOEVER

  • @SSANCHEZ1985
    @SSANCHEZ1985 8 лет назад +14

    I wonder what the creators think about this glitch! xD

  • @CosmoSpeedruns
    @CosmoSpeedruns 9 лет назад +62

    good

    • @ZeldaGlitch
      @ZeldaGlitch 9 лет назад +2

      thank you

    • @Madcowe
      @Madcowe 8 лет назад

      CosmoSpeedruns hey look it's cosmo! xD

    • @beaver229
      @beaver229 8 лет назад +1

      CosmoSpeedruns hello babe

  • @hoodiebk
    @hoodiebk 8 лет назад +4

    "I hope you now have a general idea of what's going on behind the scenes"
    yup. sure do

  • @Someguy8231
    @Someguy8231 7 лет назад +27

    This is impossible to follow without being experienced in coding... :(

    • @Meaw523
      @Meaw523 7 лет назад +23

      Someguy8231 shit ive coded for 4 years and this is too funky for me lmao

    • @GlobalWarmingSkeptic
      @GlobalWarmingSkeptic 7 лет назад +17

      It is impossible to explain. Assembly doesn't go well with English as higher level languages like C++ and Java do. Nothing makes any sense, it's all numbers, and numbers designed to behave in very specific ways that would take a huge tutorial to explain in itself.
      I made an entire program based on corrupting NES and SNES ROMs and had to study a ton of it, and I still don't understand half of it.

    • @Hextator
      @Hextator 7 лет назад +4

      I started with assembly and my "4 years moment" would sooner have come with an obscure C++ feature. Within 2 weeks of deciding to edit my sword damage in Minish cap I probably would have understood this video.
      Maybe you should get into game hacking!

  • @pepe6666
    @pepe6666 9 лет назад +3

    that was the most insane assembler joy ride i have ever experienced.

  • @coolmcdude
    @coolmcdude 7 лет назад +11

    I just don't get why anybody would dislike this video.

  • @user-lr7dt2tb3e
    @user-lr7dt2tb3e 6 лет назад +3

    That bus was quite creative. And scientific...

  • @RMoribayashi
    @RMoribayashi 9 лет назад +2

    Thanks, it's been over 40 years since I had to look at assembly code but I had no problem following along.

    • @kjl3080
      @kjl3080 5 лет назад

      RMoribayashi in hindsight, being able to “compile” a program yourself on paper seems like an amazing consept. It’s like being able to speak another language without an interpreter

  • @russelldinosores.2332
    @russelldinosores.2332 8 лет назад +6

    It takes a bit of thinking but I actually understand everything.

  • @Mackaber
    @Mackaber 9 лет назад +12

    WARNING: Basic understatement of assembly code is required to understand this video...

  • @askjt8090
    @askjt8090 9 лет назад +12

    How did someone figure this out?

  • @nuttymcsquirrel
    @nuttymcsquirrel 7 лет назад

    I love this video, and the comments/replies to comments helped a lot with understanding the more complicated parts, as well as why certain things work the way they do.

  • @Eddio0141
    @Eddio0141 7 лет назад +8

    wow
    i didn't think Mario world is more complicated than Mario 64
    but i won't give up...

    • @memerichment
      @memerichment 7 лет назад +8

      I really isn't, the N64 is an incomparable beast

  • @SimX9000
    @SimX9000 8 лет назад +13

    Yea.... what he said....
    I'll bet they didn't teach you this in school!

    • @forugotenduwera7371
      @forugotenduwera7371 5 лет назад +1

      It's not because it's too complex, it's because it's useful.

  • @mrlucasftw42
    @mrlucasftw42 4 года назад +7

    Very interesting - I'm also really curious how this was discovered (most especially how the specifics were mapped).
    Also, would be killer to see the original coders of the game react to this the first time they saw / heard of it.

  • @henrysanecdotes5323
    @henrysanecdotes5323 2 года назад

    “I hope you have a general idea of what is going on…”
    This is more thorough and comprehensive than I ever thought I would get!

  • @randomnessproductions4212
    @randomnessproductions4212 2 года назад +2

    "I hope you now have a general idea of what's going on behind the screen."
    My brain: *dial-up noises*

  • @Kraigon42
    @Kraigon42 8 лет назад +8

    I actually don't grasp what you explained, but it was entertaining nonetheless.

  • @asup759
    @asup759 9 лет назад +5

    this was edited very nicely. reminds me of sancarn, who does really strange minecraft physics theory videos. well done and it was effective : )

  • @abysmal
    @abysmal 4 года назад

    I originally saw this video years ago, and just came back because I was playing SMW earlier & it made me remember the vid. Point being, as someone that’s been programming since I was a kid, and have always been known & considered myself a nerd; you sir are some sort of super nerd. I mean that as a compliment. The way that you’re able to explain & break down the code, and the way the hardware runs it. Bravo, sir.

  • @nickpow3601
    @nickpow3601 9 лет назад +1

    Wow, that's amazing. I had no idea the games code could be manipulated like that. I'm amazed that someone managed to figure that all out..

    • @Hope-kf1nl
      @Hope-kf1nl 2 года назад

      Well it can't anymore. Games today run their memory with the NX-Bit set to 1 by default which prevents the memory in the stack from executing.

  • @CloudCuckooCountry
    @CloudCuckooCountry 9 лет назад +35

    Fucking computers.

    • @AbeerKDas
      @AbeerKDas 8 лет назад

      +CloudCuckooCountry lol

    • @asdasdasdasd7483
      @asdasdasdasd7483 8 лет назад +3

      +CloudCuckooCountry ikr, how do they work!?

    • @CloisteredExplorer
      @CloisteredExplorer 8 лет назад

      Aha XD

    • @DragunSlyer
      @DragunSlyer 8 лет назад +4

      +CloudCuckooCountry started studying computer science it's really interesting but also very mind blowing lol

    • @SamuraiTacos1
      @SamuraiTacos1 8 лет назад

      +DragunSlyer yep its interesting how the super nintendo handles code is all he is explaining

  • @PremierMilenkov
    @PremierMilenkov 8 лет назад +27

    What I don't fully undertand is this....YOU can interpret the bites as code, but how, and more importantly, why does the GAME do that? Why does it come across this specific series of bites (corresponding to the positions of objects on-screen, and the slots they occupy at the time) and read it as code? I get that it has to do with Yoshi eating Chuck and that causes some kinda weirdness with how the game's memory is read, but that's where you lose me. I still don't understand why the game executes the positions set earier as code.

    • @IsoFrieze
      @IsoFrieze  8 лет назад +42

      +PremierMilenkov If you are familiar with programming, you know that you can call a function in say, C, by using its name (e.g. do_something()). In assembly, you have to call a function by using the address in memory at which it is stored (e.g. JSL $009047). In all the address space, $000000 - $FFFFFF, everything is stored, including RAM, ROM, hardware registers, PPU registers, and more. Normally ROM is stored from $xx8000 to $xxFFFF, which is where most of the code is. $xx0000 - $xx7FFF is saved for pretty much everything else. So really you can call a subroutine that exists in ROM or RAM. So in this case we have JSR $00E0 (effective address $0100E0), which is a call to RAM instead of ROM like normal.
      In fact, SMW does write code to RAM and executes it fairly often, it's just that in our case we get to chose where in RAM we want to "write" a subroutine. Sprite X-positions are super easy to manipulate in game so we just use that.

    • @PremierMilenkov
      @PremierMilenkov 8 лет назад +21

      *****
      Gah, all too complicated...but I think I may have an inkling of why this works. So basically, you're trying to say, rather than calling a function from the game's normal code, that is the ROM, you force the game to call from RAM, which is where the code you wrote using the sprite positions is stored at the time, correct?
      And so you have to manipulate the game into starting to execute the code from the addresses where you set up said snippet of code with the object positions.

    • @IsoFrieze
      @IsoFrieze  8 лет назад +17

      +PremierMilenkov Correct!

    • @PremierMilenkov
      @PremierMilenkov 8 лет назад +3

      *****
      Ah, thank fudge, so I did get it after all :D

    • @PremierMilenkov
      @PremierMilenkov 8 лет назад +7

      *****
      This is fascinating stuff, really.

  • @asdfghyter
    @asdfghyter 6 лет назад

    This was an awesome explanation that made the technical stuff a lot more accessible, while still going into fairly deep details! Thanks!

  • @yoiang
    @yoiang 8 лет назад

    You made an amazingly thorough and well illustrated explanation, thank you so much for taking the time!

  • @Geographus666
    @Geographus666 4 года назад +4

    Ah, this is the RUclips algorithm doing its thing again and I end up with the age old question:
    "Why the hell am I even watching this???"
    ... and for some reason I have absolutely no regrets in doing so.

  • @sethswoodruff
    @sethswoodruff 8 лет назад +27

    Great. Now my brain is on fire. Thanks

  • @Leafia_Barrett
    @Leafia_Barrett 6 лет назад

    Okay, wow. That was REALLY thorough. I actually understand roughly what's going on in that warp now, thanks!

  • @headcheeez
    @headcheeez 9 лет назад

    This was really well put together and SUPER informative. You're definitely going places! I subscribed and can't wait to watch your next video.

  • @ZoranTheBear
    @ZoranTheBear 9 лет назад +6

    This is an amazing video man. It's super neato mosquito to see what happens in the background of these runs.

  • @marioandsonicnotsuck
    @marioandsonicnotsuck 8 лет назад +6

    All of this madness happened around 30 seconds.
    Think about it.

    • @thefriendlyspycrab5983
      @thefriendlyspycrab5983 8 лет назад

      +Kousaku-P (NovaWare) Madness? THAT IS NOT MADNESS! THAT, IS, SPARTA!

    • @Crimson-qo4ii
      @Crimson-qo4ii 8 лет назад

      Madness

    • @nil8659
      @nil8659 2 года назад

      @Pixelsnarfer they were so afraid of you when you said that they were pathetic that they deleted the reply. lol!

  • @cheshire2348
    @cheshire2348 5 лет назад

    I understand this. The cliff notes? You swallow a Charging Chuck with everything set up perfectly, and Yoshi and Mario completely break the Space Time continuum

  • @woltergeist9175
    @woltergeist9175 7 лет назад

    This video is a fantastic way to learn how a computer works. Everyone with an interest in computers should watch it.

  • @MrCheeze
    @MrCheeze 9 лет назад +4

    As I understand it, the old credits warp assembly code - the one that jumped to the middle of the credits - was one byte shorter.
    Suppose you went back to using the old code, but stuck an EA (NOP) at the beginning. Would that double the odds of the credits warp executing successfully, since starting the code from $00E4 or $00E5 would both work? Or would it make no difference in practice?

    • @IsoFrieze
      @IsoFrieze  9 лет назад +4

      You can't get E4 or E5 starting points (I think the next after E3 is E6), but you have the right idea.
      The old old version of the route used 6 bytes. We used the data bus value (4A), divided it by two (25) and stored that to $0100. No LDA was used. The reason it went to the middle of the credits was because it was game mode 25 instead of 1C.

    • @IsoFrieze
      @IsoFrieze  9 лет назад +3

      Expanding on that, you could use the old code with the new route that would save one shell position. However, I think we have decided that it is more important that we warp to Yoshi's House since it shows the full enemies list and has a fanfare. Ignoring that, you could probably save a second or two by only placing 5 shells and a P-switch.

  • @NADQuest
    @NADQuest 9 лет назад +24

    Nice explanation, even though I didn't catch half of it lol

    • @22sk
      @22sk 9 лет назад

      :)

    • @martiangelatsiribera4394
      @martiangelatsiribera4394 9 лет назад

      You probably need to know how a computer works and this is not easy. If you got the general idea (they make code with the sprites and then execute it) it's OK.

  • @Taric25
    @Taric25 8 лет назад +1

    I love how I took Microprocessors at my university last semester and actually understood this.

  • @user-cz9ss4yq4x
    @user-cz9ss4yq4x 6 лет назад

    Perfect explanation and so easy to follow! This gave so much insight in the 6502 internals!!

  • @DragonSoulMusic
    @DragonSoulMusic 7 лет назад +17

    I barely understood this but it was cool

    • @COCmcGameSupport
      @COCmcGameSupport 7 лет назад +4

      Dragon Soul Same, I find how game engines actually work very fascinating

    • @99xara99
      @99xara99 5 лет назад

      Barely isn't even the right word xD

  • @smkcocatriz
    @smkcocatriz 8 лет назад +11

    Aahh...NOW I GOT IT!, no I don't.

  • @SpongyDoom
    @SpongyDoom 8 лет назад +1

    This is amazing.
    Great job, and thanks a lot for explaining it in a video!

  • @schmittyinvests9415
    @schmittyinvests9415 5 лет назад +1

    I love that you made a for dummies version of this. Definitely watching that next

  • @spritz19
    @spritz19 7 лет назад +23

    My goal is to one day watch this video and understand 100% of it.

    • @ShaneChandler87
      @ShaneChandler87 3 года назад

      3 years later, how's it going?

    • @spritz19
      @spritz19 3 года назад +4

      @@ShaneChandler87 I've actually been a part of the SMW speedrunning community (on hiatus rn) since then...still don't understand it 100% yet lol

  • @GustavoMdeOliveira
    @GustavoMdeOliveira 8 лет назад +3

    Awesome video! You won your more subscribe!
    Could you explain the glitches in Donkey Kong 1? For example, when you use a barrel and the Rino... and then you make a donkey kong riding another donkey kong.
    Thx

  • @a.bergantini4129
    @a.bergantini4129 9 лет назад +1

    I don't get most of the technical explanation, but the video and the animation are very well made. Thanks for that.

  • @TheErer1243
    @TheErer1243 9 лет назад

    Suuuuuper confusing. I don't really understand still, but its a better explanation than any other one I've seen. Cool video!

  • @Patashu
    @Patashu 9 лет назад +4

    super well produced, kudos!

    • @FelipeAriasF
      @FelipeAriasF 9 лет назад

      Yes, I wonder what tools/editors he used!

    • @acrid8952
      @acrid8952 6 лет назад

      He said he used Adobe Premier for the animations. Any screen recorder works for the recording, however he probably uses OBS because he regularly streams. Any good emulators works for this. Probably using Snes9x or BizHawk. Any good text editor works. Vim/EMACS is enough, but some people like simpler editors, I really don't know.

    • @Just_A_Random_Person_908
      @Just_A_Random_Person_908 3 года назад

      No he just ripped the audio from Retro Game Mechanics Explain

  • @GeorgeB514
    @GeorgeB514 9 лет назад +5

    Cool vid! Was this skip discovered through 'standard' gameplay and then the explanation was reverse engineered or did someone break down the code and then search for an optimum place in game to execute the steps you outline in your video?

    • @IsoFrieze
      @IsoFrieze  9 лет назад +14

      George B Most definitely the latter. Super Mario World is probably one of the most documented, reverse-engineered game out there. All it takes is a bunch of thinking and planning along with the knowledge of the game and it's mechanics to come up with something like this.

    • @mandokir
      @mandokir 9 лет назад +5

      *****
      You mean, "its". I thought you might appreciate that tip since you are a nerd.

    • @TruciT
      @TruciT 9 лет назад +1

      mandokir
      OH NO !
      Someone call Dr. House.
      I beleive I've found a severe case of stupidity.

  • @Envergure
    @Envergure 7 лет назад +1

    This is my favourite computer science video ever.

  • @Baxxter101
    @Baxxter101 9 лет назад

    I followed very little of that because I have little more than a basic concept of how memory works, but that was f'n awesome! Thanks for making this.

  • @darthnozo
    @darthnozo 8 лет назад +3

    Shoutouts to Simpleflips

  • @dracenmarx
    @dracenmarx 8 лет назад +4

    a wonderful explanation, although a bit too fast. I have a question: there is another end glitch ruclips.net/video/FkQdwUns7H8/видео.html , but it seems to be much easier. I don't see that the player moved the shells into specific positions, and I don't understand how he triggers the end scene. probably eating a fruit while jumping off? (it is too fast to see)

    • @IsoFrieze
      @IsoFrieze  8 лет назад +6

      dracenmarx That TAS uses 4 controllers and inputs that don't exist on console. tasvideos.org/4315S.html The last 5 frames have 121 button inputs, which is why we don't use that route for real-time.

    • @over_loadcode
      @over_loadcode 8 лет назад

      +dracenmarx Aside being impossible, Masterjun did move them into specific positions, but in a TAS you can advance frame by frame. He probably went 1 frame forward until he got the perfect position.

    • @russelldinosores.2332
      @russelldinosores.2332 8 лет назад

      +dracenmarx He kicks a green shell while it gets burnt and turns into a coin.

    • @emeraldkooper1610
      @emeraldkooper1610 8 лет назад

      +Russell Salacup That's the Item Swap not the glitch.

  • @32th
    @32th 4 года назад

    I watched this video a few years ago not knowing any programming. A few years later and now able to understand x86 Assembly I'm glad to have found it again now because now I actually understand what's going on even though I don't actually know 65816 Assembly

  • @bensmith5612
    @bensmith5612 6 лет назад

    This is on a next level. Who knows what's possible anymore. Maybe somebody will do this to reality one day

  • @theqman24
    @theqman24 7 лет назад +5

    but an A press is still an A press

    • @nil8659
      @nil8659 2 года назад

      yeah. the half A press is imaginary.

  • @pleaserespond3984
    @pleaserespond3984 9 лет назад +5

    Literally shellcode ;)

  • @Toadstar0
    @Toadstar0 7 лет назад

    But can you do it in HALF an item swap?

    • @Toadstar0
      @Toadstar0 6 лет назад

      Why did i type this 5 months ago? Its quite irrelivent

  • @lolypopboy777
    @lolypopboy777 8 лет назад

    Very impressive video and amazing memory workarounds haha

  • @viridian6812
    @viridian6812 7 лет назад +7

    And I thought learning binaries was hard...

    • @glitchisfluffy
      @glitchisfluffy 5 лет назад +1

      This is binary idiot

    • @kjl3080
      @kjl3080 5 лет назад +2

      @@glitchisfluffy no this is assembly (assembled in hex) idiot

    • @glitchisfluffy
      @glitchisfluffy 5 лет назад +1

      @@kjl3080 You're fucking kidding me. Hexadecimal is binary. 00 = 00000000, 01 = 00000001... FF = 11111111. It's not that fucking hard. Assembly instructions are written in hexadecimal(binary) and each instruction is the size of the Instruction Register. You wouldn't know what that is since you clearly haven't even taken basic CS yet. Stop arguing on topics you know nothing about.

  • @Ultimalocked
    @Ultimalocked 7 лет назад +25

    7:02
    oraoraoraoraoraoraora

    • @blackmoon4094
      @blackmoon4094 7 лет назад +6

      UltimaNylocke muda muda muda

    • @heroicstardust
      @heroicstardust 6 лет назад +2

      Busarollada!!!!

    • @rachelrpl
      @rachelrpl 4 года назад

      I can't beat the shit out of you without getting closer.

  • @nameistunbekannt7896
    @nameistunbekannt7896 8 лет назад

    This is sick! Please continue your great work!

  • @MishalxIrfan
    @MishalxIrfan 6 лет назад

    This is so cool! I'm glad I stumbled upon it! Super Mario has and always will be my favorite game!

  • @spyda1221
    @spyda1221 7 лет назад +8

    uhm... what?

  • @thisisfyne
    @thisisfyne 7 лет назад +3

    This is both brilliant and autistic as hell!

  • @Masterman80ify
    @Masterman80ify 8 лет назад +9

    Being no native speaker and try to get this... hard.

    • @semproser19
      @semproser19 7 лет назад +8

      Have no fear. I'm a native English speaker, with an A-level in English language, and 2 years into a degree in Computer Science... and I've got no fucking idea what I just heard.

    • @acrid8952
      @acrid8952 6 лет назад

      Don't worry man, I am a non-native speaker and have a Computer Engineering degree, and I was still confused.

    • @Maroki06
      @Maroki06 6 лет назад

      lol i'm not a native speaker and get most of the video

  • @Hapasan808
    @Hapasan808 7 лет назад +2

    AH! I knew my Computer Science degree would come in handy some day!
    I know what I must do...