Super Mario World Credits Warp Explained

  Рет қаралды 614,458

Frieze

Frieze

Күн бұрын

Пікірлер: 1 000
@gameboycolor47
@gameboycolor47 8 жыл бұрын
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 8 жыл бұрын
You must absolutely love Pokemon R/B/G then!
@ManoredRed
@ManoredRed 8 жыл бұрын
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 жыл бұрын
Had the same thoughts man! xD
@user-cz9ss4yq4x
@user-cz9ss4yq4x 6 жыл бұрын
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 6 жыл бұрын
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 8 жыл бұрын
5:55 "Remember these for later" Oh man, I hope there's not a quiz at the end, I've already forgotten them :D
@maverickjohnson6661
@maverickjohnson6661 7 жыл бұрын
Daniel Lo Nigro I was thinking the same thing xD lol
@Sebastian1011
@Sebastian1011 9 жыл бұрын
I love how there's "wut" in the URL address of this video xD
@RealHatsuneMiku1
@RealHatsuneMiku1 8 жыл бұрын
"wut_I" Perfect xD
@1024x2
@1024x2 7 жыл бұрын
Fits this video perfectly.
@avi8aviate
@avi8aviate 7 жыл бұрын
Oh, KZbin and it's Base64 video ID systems.
@tommybomby4122
@tommybomby4122 7 жыл бұрын
lol
@redstone_mason
@redstone_mason 6 жыл бұрын
ibb.co/Hn4hpDN XD
@vivavaldez87
@vivavaldez87 8 жыл бұрын
This could all be made up nonsense and I wouldn't know any better...
@str8kronic
@str8kronic 7 жыл бұрын
VivaValdez lmao
@thereal_SEV
@thereal_SEV 6 жыл бұрын
VivaValdez it checks out pretty well for me
@glitchisfluffy
@glitchisfluffy 6 жыл бұрын
+ thereal SuperEthan5 :-D Same. I'm taking a CS class and we're learning assembly! It's super fun.
@NoriMori1992
@NoriMori1992 3 жыл бұрын
I thought the same thing at a particular point in Bismuth's "Why 4:54 is the perfect speedrun" 😂
@goatgamer001
@goatgamer001 2 жыл бұрын
Just run address $0069, and if the upload date is 1 April, return nonsense. If not, return false
@SJActress
@SJActress 7 жыл бұрын
"I hope you now have a general idea of what's going on behind the screen." *Magic?*
@crisis8v88
@crisis8v88 9 жыл бұрын
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 7 жыл бұрын
umm program AI asm code using shells and run it
@watamidoing8131
@watamidoing8131 7 жыл бұрын
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 жыл бұрын
What is this? Skynet?
@sackboy1665
@sackboy1665 2 жыл бұрын
It's at 94df0d
@floppa_gamer1111
@floppa_gamer1111 2 жыл бұрын
@@sackboy1665 panic
@DragonDePlatino
@DragonDePlatino 8 жыл бұрын
AHHHHH ASSEMBLY CODE HOLD ME I'M SCARED
@SkyewardSword64
@SkyewardSword64 8 жыл бұрын
+DragonDePlatino same
@potatoonastick2239
@potatoonastick2239 8 жыл бұрын
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 жыл бұрын
+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 жыл бұрын
SkyewardSword I just disassembled the SMW ROM and pasted a part of that in here. 65c816 assembly
@mattiaisgro9844
@mattiaisgro9844 8 жыл бұрын
+Berzark _ ;)
@JimPlaysGames
@JimPlaysGames 9 жыл бұрын
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 жыл бұрын
+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 жыл бұрын
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.
@beaal5641
@beaal5641 9 жыл бұрын
Having somehow understood this, my only question is who on earth took the time to figure this out?!
@tchitchouan
@tchitchouan 9 жыл бұрын
he did
@russelldinosores.2332
@russelldinosores.2332 8 жыл бұрын
+Bea Al That's true...
@epicKiipa
@epicKiipa 8 жыл бұрын
+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 жыл бұрын
+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 жыл бұрын
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.
@koukilfs
@koukilfs 8 жыл бұрын
Assembly... buses... things... (Pretending that I'm understanding)
@BeefBronson
@BeefBronson 8 жыл бұрын
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 жыл бұрын
@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 жыл бұрын
Nope, still makes no sense.
@thecavesys107
@thecavesys107 4 жыл бұрын
@densch123 no, you do not have to play this game at all to understand the video
@SuperNickid
@SuperNickid 4 жыл бұрын
@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 жыл бұрын
SuperNickid that’s genuinely even more confusing
@KiramaruXVI
@KiramaruXVI 8 жыл бұрын
This is what women really want.
@Linkjustdoit
@Linkjustdoit 7 жыл бұрын
You sir, are my hero
@shadowmax889
@shadowmax889 7 жыл бұрын
Sooo they want everything in place and then jump to the happy ending??? o_O
@magikarp8416
@magikarp8416 6 жыл бұрын
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 6 жыл бұрын
F'ing A!!!! LoL!!!!!
@araigumakiruno
@araigumakiruno 5 жыл бұрын
Really? They want a credits warp
@seto007
@seto007 8 жыл бұрын
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 8 жыл бұрын
good to know that I wasn't the only one thinking that XDD
@JSoul
@JSoul 8 жыл бұрын
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 4 жыл бұрын
Hehe funny jojoke
@brunoais
@brunoais 9 жыл бұрын
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!
@GreenBlueClouds
@GreenBlueClouds 9 жыл бұрын
I can only imagine the type of memorization needed to get the values just right by eye.
@thesilenthack
@thesilenthack 9 жыл бұрын
***** I can only think about how anyone came on this idea. "Hey! Lets use sprites to execute code in SMW!"
@darkmagician135
@darkmagician135 9 жыл бұрын
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 9 жыл бұрын
+darkmagician135 Connect to the internet? Holy shit. Link please. Now.
@Nixitur
@Nixitur 9 жыл бұрын
+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 6 жыл бұрын
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
@Monvayne
@Monvayne 7 жыл бұрын
instructions not clear, I have a Yoshi stuck in my urethra
@Kid_Cat64
@Kid_Cat64 4 жыл бұрын
Aw *shoot* here we go again.
@matteusmag
@matteusmag 4 жыл бұрын
😂 thank you for this comment.
@WolfXGamerful
@WolfXGamerful 4 жыл бұрын
i woke up today and i said "i absolutely need to see this comment"
@velvet1371
@velvet1371 4 жыл бұрын
[Insert Franklin's "What?" Here]
@InCompet4nt
@InCompet4nt 3 жыл бұрын
what the hell happened here
@ShadowBoltTF2
@ShadowBoltTF2 9 жыл бұрын
Wow... I understood none of that.
@-AAA-147
@-AAA-147 9 жыл бұрын
+★ ShadowBolt ★ Same here.
@RoyFlush716
@RoyFlush716 8 жыл бұрын
TRANSLATION: This glitch makes the credits appear.
@Maroki06
@Maroki06 7 жыл бұрын
ShadowBolt I did understand
@errPopu
@errPopu 6 жыл бұрын
im a programmer and i had a bit of a hard time lol
@shady8045
@shady8045 4 жыл бұрын
honestly stuff like this is probably more complicated then the actual process that created the game, so dont feel bad.
@SmOskar
@SmOskar 8 жыл бұрын
I don't understand this shit but I liked it.
@drpupper948
@drpupper948 8 жыл бұрын
Óscar Pérez. Same
@dombrecht85
@dombrecht85 6 жыл бұрын
#metoo
@Devalation
@Devalation 8 жыл бұрын
That was an absolutely incredible video. I have a masters in Computer Science and you blew my mind.
@patatapotato4398
@patatapotato4398 7 жыл бұрын
I bet he has a PHD in computer science and his essay thing for getting excepted was on this
@unknownanonymous5914
@unknownanonymous5914 6 жыл бұрын
+Patata Potato excepted.... EXCEPTED.... Are you kidding me?
@SirLankselotYT
@SirLankselotYT 9 жыл бұрын
....whut.
@ERROR24016
@ERROR24016 9 жыл бұрын
lol
@sidgar1
@sidgar1 8 жыл бұрын
I read that in Billy's voice ;)
@PilkScientist
@PilkScientist 7 жыл бұрын
Tapaleurre I agree with you and not these other heathens
@Dudewithbuds
@Dudewithbuds 7 жыл бұрын
I'm just a front end web developer :-(
@Toiletmac
@Toiletmac 7 жыл бұрын
Agreed
@pannenkoek2012
@pannenkoek2012 9 жыл бұрын
What did you use to make the animations?
@IsoFrieze
@IsoFrieze 9 жыл бұрын
+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 9 жыл бұрын
pannenkoek2012!
@gemini04126
@gemini04126 7 жыл бұрын
pannenkoek2012 An A press is an A press.
@acrid8952
@acrid8952 7 жыл бұрын
holy shit its the pancake man himself?
@bertobop1795
@bertobop1795 7 жыл бұрын
pannenkoek2012 PANNENKOEK
@lahma69
@lahma69 7 жыл бұрын
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.
@badATchaos
@badATchaos 9 жыл бұрын
Can you glitch me up a girl friend?
@N0PH0B14
@N0PH0B14 8 жыл бұрын
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 жыл бұрын
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.
@skeletorthebest7204
@skeletorthebest7204 8 жыл бұрын
But first, let's talk about parallel universes.
@drpupper948
@drpupper948 8 жыл бұрын
TheLolCraft Lol
@LepusZeppelin
@LepusZeppelin 8 жыл бұрын
This was incredibly informative. I'm going to go spawn some dolphins where they don't belong.
@ethanpixelate
@ethanpixelate 8 жыл бұрын
zenzetra XD
@louiegarcia3664
@louiegarcia3664 7 жыл бұрын
zenzetra or spawn yosi in cloud
@floppa_gamer1111
@floppa_gamer1111 2 жыл бұрын
spawn as many mario as you can
@cerealkiller3175
@cerealkiller3175 8 жыл бұрын
Too much Sprites make me thirsty
@segymun1720
@segymun1720 8 жыл бұрын
LOL
@JayZeeeeeeee
@JayZeeeeeeee 8 жыл бұрын
Fuck off
@kgr.7archive369
@kgr.7archive369 8 жыл бұрын
ha
@AleHodjason
@AleHodjason 8 жыл бұрын
"bitch you thirsty please grab a sprite."
@Maroki06
@Maroki06 6 жыл бұрын
a sprite's x position, duh
@sabbateus
@sabbateus 8 жыл бұрын
Well if I go into gamemode 3 you'll see these armor stands...
@Hextator
@Hextator 8 жыл бұрын
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 5 жыл бұрын
Everything related to sethbling is armor stands
@timcreasman2621
@timcreasman2621 8 жыл бұрын
5:55 "Remember these for later" **frantically grabs pen and paper**
@ethanpixelate
@ethanpixelate 8 жыл бұрын
Timothy Creasman *and opens eyes as wide as possible and looks at every single detail of the video*
@RMoribayashi
@RMoribayashi 9 жыл бұрын
Thanks, it's been over 40 years since I had to look at assembly code but I had no problem following along.
@kjl3080
@kjl3080 6 жыл бұрын
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
@asup759
@asup759 10 жыл бұрын
this was edited very nicely. reminds me of sancarn, who does really strange minecraft physics theory videos. well done and it was effective : )
@MeNowDealWIthIt
@MeNowDealWIthIt 9 жыл бұрын
In other words, you flip flop the flip table in memory, so it flops into the credits.
@kinsaktube
@kinsaktube 8 жыл бұрын
clear as water (screams internally in spanish)
@watamidoing8131
@watamidoing8131 7 жыл бұрын
kinsaktube jaja, cierto.
@lilparis47
@lilparis47 7 жыл бұрын
JAJAJAJAJJAJAJAJAJAJA
@virgilev1754
@virgilev1754 6 жыл бұрын
You:clear as water! Your mind:DESPACITO!
@abysmal
@abysmal 5 жыл бұрын
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.
@setsunaes
@setsunaes 8 жыл бұрын
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 8 жыл бұрын
if that lost you then im guessing that coding pong into pokemon using the pokedex is a bit too much also....
@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.
@bbrodriguez33
@bbrodriguez33 6 жыл бұрын
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 жыл бұрын
I’m taking differential equations in college rn and I still have no idea what this video is about.
@coolmcdude
@coolmcdude 8 жыл бұрын
I just don't get why anybody would dislike this video.
@CloudCuckooCountry
@CloudCuckooCountry 9 жыл бұрын
Fucking computers.
@AbeerKDas
@AbeerKDas 9 жыл бұрын
+CloudCuckooCountry lol
@asdasdasdasd7483
@asdasdasdasd7483 9 жыл бұрын
+CloudCuckooCountry ikr, how do they work!?
@CloisteredExplorer
@CloisteredExplorer 9 жыл бұрын
Aha XD
@DragunSlyer
@DragunSlyer 9 жыл бұрын
+CloudCuckooCountry started studying computer science it's really interesting but also very mind blowing lol
@SamuraiTacos1
@SamuraiTacos1 9 жыл бұрын
+DragunSlyer yep its interesting how the super nintendo handles code is all he is explaining
@randomnessproductions4212
@randomnessproductions4212 3 жыл бұрын
"I hope you now have a general idea of what's going on behind the screen." My brain: *dial-up noises*
@meowskull
@meowskull 7 жыл бұрын
this shit makes colonizing mars look like child's play
@henrysanecdotes5323
@henrysanecdotes5323 3 жыл бұрын
“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!
@pepe6666
@pepe6666 9 жыл бұрын
that was the most insane assembler joy ride i have ever experienced.
@Emre67511
@Emre67511 19 күн бұрын
08:33 Can someone explain to me why the low Byte of the jump adress and the high Byte of the jump adress are read separately instead of beeing read together ? In the video it goes like this: 1. Read low Byte of jump adress (FC) 2. Push high Byte of return adress onto stack(4A 3. Push low Byte of return adress onto stack(17 4. Read high Byte of jump adress (17) Resulting in the jump adress $17FC Common sense tells me that an adress should be read in one go instead of reading the first part then doing something else and then reading the second part. Why does it read it in such a weird way with stack pushing between the reading ?
@Emre67511
@Emre67511 19 күн бұрын
One explanation I could think of is that it jumps immediately after reading the adress bytes which would skip the whole stack pushing that's why it must push onto the stack before or in-between the reading but that's just an explanation I could think of which I don't know if it's true.
@CosmoSpeedruns
@CosmoSpeedruns 10 жыл бұрын
good
@ZeldaGlitch
@ZeldaGlitch 10 жыл бұрын
thank you
@Madcowe
@Madcowe 9 жыл бұрын
CosmoSpeedruns hey look it's cosmo! xD
@beaver229
@beaver229 9 жыл бұрын
CosmoSpeedruns hello babe
@Amiculi
@Amiculi 7 жыл бұрын
"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
@hoodiebk
@hoodiebk 8 жыл бұрын
"I hope you now have a general idea of what's going on behind the scenes" yup. sure do
@nickpow3601
@nickpow3601 9 жыл бұрын
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.
@SSANCHEZ1985
@SSANCHEZ1985 8 жыл бұрын
I wonder what the creators think about this glitch! xD
@woltergeist9175
@woltergeist9175 7 жыл бұрын
This video is a fantastic way to learn how a computer works. Everyone with an interest in computers should watch it.
@김민환-b3q
@김민환-b3q 7 жыл бұрын
That bus was quite creative. And scientific...
@asdfghyter
@asdfghyter 7 жыл бұрын
This was an awesome explanation that made the technical stuff a lot more accessible, while still going into fairly deep details! Thanks!
@russelldinosores.2332
@russelldinosores.2332 8 жыл бұрын
It takes a bit of thinking but I actually understand everything.
@yoiang
@yoiang 9 жыл бұрын
You made an amazingly thorough and well illustrated explanation, thank you so much for taking the time!
@yuu0141TAS
@yuu0141TAS 8 жыл бұрын
wow i didn't think Mario world is more complicated than Mario 64 but i won't give up...
@memerichment
@memerichment 8 жыл бұрын
I really isn't, the N64 is an incomparable beast
@schmittyinvests9415
@schmittyinvests9415 5 жыл бұрын
I love that you made a for dummies version of this. Definitely watching that next
@Geographus666
@Geographus666 4 жыл бұрын
Ah, this is the KZbin 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.
@a.bergantini4129
@a.bergantini4129 9 жыл бұрын
I don't get most of the technical explanation, but the video and the animation are very well made. Thanks for that.
@ZoranTheWizard
@ZoranTheWizard 9 жыл бұрын
This is an amazing video man. It's super neato mosquito to see what happens in the background of these runs.
@fellipefernandes7100
@fellipefernandes7100 9 жыл бұрын
***** Holy sheez you're here
@Leafia_Barrett
@Leafia_Barrett 7 жыл бұрын
Okay, wow. That was REALLY thorough. I actually understand roughly what's going on in that warp now, thanks!
@Someguy8231
@Someguy8231 8 жыл бұрын
This is impossible to follow without being experienced in coding... :(
@WindexDrinker-j6v
@WindexDrinker-j6v 8 жыл бұрын
Someguy8231 shit ive coded for 4 years and this is too funky for me lmao
@GlobalWarmingSkeptic
@GlobalWarmingSkeptic 8 жыл бұрын
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 8 жыл бұрын
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!
@Envergure
@Envergure 8 жыл бұрын
This is my favourite computer science video ever.
@Kraigon42
@Kraigon42 9 жыл бұрын
I actually don't grasp what you explained, but it was entertaining nonetheless.
@zandgall1837
@zandgall1837 7 жыл бұрын
10:23 I know what Lda (load memory register a) sta (store memory register a) and jmp (jump to code line) mean but what does eor and ror mean?
@acrid8952
@acrid8952 7 жыл бұрын
eor = exclusive OR ror = rotate but keep shifted bits if you did ror eax, 2 and eax looked like this: 0000 1101 it would be changed to : 0100 0011
@mrlucasftw42
@mrlucasftw42 5 жыл бұрын
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.
@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.
@PremierMilenkov
@PremierMilenkov 9 жыл бұрын
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 9 жыл бұрын
+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 9 жыл бұрын
***** 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 9 жыл бұрын
+PremierMilenkov Correct!
@PremierMilenkov
@PremierMilenkov 9 жыл бұрын
***** Ah, thank fudge, so I did get it after all :D
@PremierMilenkov
@PremierMilenkov 9 жыл бұрын
***** This is fascinating stuff, really.
@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!
@SimX9000
@SimX9000 9 жыл бұрын
Yea.... what he said.... I'll bet they didn't teach you this in school!
@forugotenduwera7371
@forugotenduwera7371 5 жыл бұрын
It's not because it's too complex, it's because it's useful.
@Taric25
@Taric25 8 жыл бұрын
I love how I took Microprocessors at my university last semester and actually understood this.
@sethswoodruff
@sethswoodruff 9 жыл бұрын
Great. Now my brain is on fire. Thanks
@Toadstar0
@Toadstar0 7 жыл бұрын
But can you do it in HALF an item swap?
@Toadstar0
@Toadstar0 7 жыл бұрын
Why did i type this 5 months ago? Its quite irrelivent
@NADQuest
@NADQuest 10 жыл бұрын
Nice explanation, even though I didn't catch half of it lol
@22sk
@22sk 10 жыл бұрын
:)
@martiangelatsiribera4394
@martiangelatsiribera4394 10 жыл бұрын
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.
@SpongyDoom
@SpongyDoom 9 жыл бұрын
This is amazing. Great job, and thanks a lot for explaining it in a video!
@Mackaber
@Mackaber 9 жыл бұрын
WARNING: Basic understatement of assembly code is required to understand this video...
@SoLinkSmash
@SoLinkSmash 7 жыл бұрын
This needs some Mario 64 File Select music running under it
@DragonSoulMusic
@DragonSoulMusic 8 жыл бұрын
I barely understood this but it was cool
@COCmcGameSupport
@COCmcGameSupport 8 жыл бұрын
Dragon Soul Same, I find how game engines actually work very fascinating
@99xara99
@99xara99 5 жыл бұрын
Barely isn't even the right word xD
@user-cz9ss4yq4x
@user-cz9ss4yq4x 6 жыл бұрын
Perfect explanation and so easy to follow! This gave so much insight in the 6502 internals!!
@GUZROCK
@GUZROCK 8 жыл бұрын
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
@mikebachmann7240
@mikebachmann7240 9 жыл бұрын
Why do things like coins and fireballs generated by spitting the red shells not take up sprite slots and mess with the data?
@IsoFrieze
@IsoFrieze 9 жыл бұрын
The fireballs Yoshi spits are actually extended sprites, not normal sprites, and they are stored in their own table. The coins are normal sprites, but the ones that show up are always in a slot we haven't set yet. This is because we set the sprites in order from lowest-numbered slot to highest-numbered. The Koopas always spawn the highest numbered slot available, and coins that spawn from burning an enemy inherit the slot that that enemy was in previously.
@Patashu
@Patashu 10 жыл бұрын
super well produced, kudos!
@FelipeAriasF
@FelipeAriasF 9 жыл бұрын
Yes, I wonder what tools/editors he used!
@acrid8952
@acrid8952 7 жыл бұрын
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 4 жыл бұрын
No he just ripped the audio from Retro Game Mechanics Explain
@32th
@32th 5 жыл бұрын
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
@spritz19
@spritz19 8 жыл бұрын
My goal is to one day watch this video and understand 100% of it.
@ShaneChandler87
@ShaneChandler87 4 жыл бұрын
3 years later, how's it going?
@spritz19
@spritz19 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
@UKG_BPM_138
@UKG_BPM_138 7 жыл бұрын
This is on a next level. Who knows what's possible anymore. Maybe somebody will do this to reality one day
@MrCheeze
@MrCheeze 10 жыл бұрын
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 10 жыл бұрын
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 10 жыл бұрын
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.
@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.
@GeorgeB514
@GeorgeB514 9 жыл бұрын
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 жыл бұрын
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 жыл бұрын
***** You mean, "its". I thought you might appreciate that tip since you are a nerd.
@TruciT
@TruciT 9 жыл бұрын
mandokir OH NO ! Someone call Dr. House. I beleive I've found a severe case of stupidity.
@joelmorey
@joelmorey 9 жыл бұрын
At 4:52 when talking about the block despawning... I don't understand how this bottom left block is despawning at exactly 00. It's looks about halfway down the screen. Wouldn't 00 be at the very top of the screen?
@IsoFrieze
@IsoFrieze 9 жыл бұрын
+Joel Morey Good observation! The block particles' positions are stored as 16-bit values. We are only concerned with the lower 8 bits. So you are correct at saying 00 is the very top of the screen, but the lower 8 bits are also 00 at that position about halfway down. In fact, the 16-bit position is 0100. The lower 8 bits will roll back to 00 after 256 pixels.
@joelmorey
@joelmorey 9 жыл бұрын
+dotsarecool Ahh, thank you! I was looking at the two hex values as two bytes rather than two nibbles. Makes sense now. Great video!
@dracenmarx
@dracenmarx 9 жыл бұрын
a wonderful explanation, although a bit too fast. I have a question: there is another end glitch kzbin.info/www/bejne/fJy0laqLo9hqfpo , 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 9 жыл бұрын
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 9 жыл бұрын
+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 9 жыл бұрын
+dracenmarx He kicks a green shell while it gets burnt and turns into a coin.
@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
@smkcocatriz
@smkcocatriz 8 жыл бұрын
Aahh...NOW I GOT IT!, no I don't.
@night2night3
@night2night3 7 жыл бұрын
"and in the next glitch, we will be hacking into the lunar module so that it will land on the second point on the crown of the statue of liberty using code that we wrote onto this toaster with whole wheat bread, and the special type of bread bunny white"
@theqman24
@theqman24 8 жыл бұрын
but an A press is still an A press
@nil8659
@nil8659 3 жыл бұрын
yeah. the half A press is imaginary.
@williammarsman4708
@williammarsman4708 9 жыл бұрын
why does the chuck spawn into slot 9 instead of any of the free slots when the item swap glitch occurs
@ACNEtzGamer
@ACNEtzGamer 8 жыл бұрын
William Marsman When Yoshi eats, the item eaten had it's flag removed this making it an available slot whilst the ' eating ' is still running
@kjl3080
@kjl3080 6 жыл бұрын
ACN EtzGamer it puts the sprite in slot yoshi -1
@darthnozo
@darthnozo 8 жыл бұрын
Shoutouts to Simpleflips
@b.clarenc9517
@b.clarenc9517 7 жыл бұрын
Ok, I will rewatch this video until I deeply get it. See you next century.
@spyda1221
@spyda1221 8 жыл бұрын
uhm... what?
@jansenart0
@jansenart0 7 жыл бұрын
"...so we need to return here at some point, somehow. Now 014A13 happens to not be mapped to any type of memory, so we go to open bus instead. Now, the data bus contains 01 because of...." Magic, got it.
@viridian6812
@viridian6812 8 жыл бұрын
And I thought learning binaries was hard...
@glitchisfluffy
@glitchisfluffy 6 жыл бұрын
This is binary idiot
@kjl3080
@kjl3080 6 жыл бұрын
@@glitchisfluffy no this is assembly (assembled in hex) idiot
@glitchisfluffy
@glitchisfluffy 6 жыл бұрын
@@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.
@pauls4522
@pauls4522 6 жыл бұрын
seeing this, makes me think of all 8bit and 16bit games and what type of assembly manipulations can be achieved that no one has discovered yet.
Level End Glitches in Super Mario World
24:06
Retro Game Mechanics Explained
Рет қаралды 777 М.
Mom Hack for Cooking Solo with a Little One! 🍳👶
00:15
5-Minute Crafts HOUSE
Рет қаралды 23 МЛН
Support each other🤝
00:31
ISSEI / いっせい
Рет қаралды 81 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
Super Mario World Powerup Incrementation Explained
8:15
Frieze
Рет қаралды 165 М.
Super Mario Bros. 3 - Wrong Warp
10:07
Retro Game Mechanics Explained
Рет қаралды 830 М.
SNES Code Injection -- Flappy Bird in SMW
6:31
SethBling
Рет қаралды 2,8 МЛН
Super Mario World Credits Warp for Dummies
9:35
Frieze
Рет қаралды 155 М.
How we fit an NES game into 40 Kilobytes
12:04
Morphcat Games
Рет қаралды 3,6 МЛН
How "oldschool" graphics worked Part 1 - Commodore and Nintendo
7:08
The 8-Bit Guy
Рет қаралды 6 МЛН
MissingNo.'s Glitchy Appearance Explained
21:20
Retro Game Mechanics Explained
Рет қаралды 1,1 МЛН
Super Mario World - Random Number Generation
14:05
Retro Game Mechanics Explained
Рет қаралды 379 М.
TRUNIC Variable Font
25:17
Frieze
Рет қаралды 2 М.