You know the video's gonna be good when it starts with "This thing we're talking about is a side effect of a special case of a side effect of a special case."
While I only understood scraps of this video (I have zero background in assembly code beyond knowing that it is a thing that exists), it really underscores the insane kind of work that went into programming some of these old video games. The hardware constraints that those programmers had to work within inspire awe. As do those who decades later are peeling them apart and using novel methods to manipulate them. Beautiful work.
Josh Killcrop there is a video about the pacman glitch screen and how the ghosts programming work done by I think this same guy that makes even the simplist looking game seem complicated when you get down to the code
Not gonna lie - Stuff like this is a big part of why I love retro gaming in general. Bugs like this are fascinating in a way that you don't really see in modern gaming.
(WhiteYoshiEgg here, not sure if you remember me) This is like watching a mathematical proof - I mean literally, it gave me the chills. I never knew what the glitch was about, but your video was full of lighbulb moments for me, and at the end there was understanding. Great job on that video! :)
Huh, I didn’t know you had another channel before RGME. It’s cool to see how much your editing has improved and that you’re still active over here! Good work man 🙂
Thanks for the explanation, I didn't realize there was such a huge community SMW glitches and code injections until I saw this and SethBling's video. Super interesting stuff!
someone made a TAS for kosmic for smw that wrote the ENTIRE 40 kilobytes of super mario bros's memory and then accessed it so Kosmic could play Super Mario Bros inside of Super Mario World.
MORE VIDEOS LIKE THIS. I love low level coding and I think videos like this make others more informed AND interested about it as well if done right, like this. I've wanted to make a 'how glitches ACTUALLY work' video series like this for years. This started when I explained to a friend, who doesn't know anything about programming, why games, especially from this era, have limits of 255 for coins and stuff and it blew his mind. If something that simple has that power imagine what videos like this could do after a proper series leading up to it with explanations...
I also found a glitch with the swallow timer on "how long yoshi can keep things in his mouth" as well as the "invincibility star" timer: they do freeze if the game freeze flag is set (freezes happens if you do a powerup animation or taking damage/death, as well as scrolling the screen L/R buttons) and should decrement every 4th frame, if $14 (frame counter that can freeze) is divisible by/ multiple of 4, and the game is frozen, it decrements *every frame*
'At this point in the video I've probably explained everything you clicked the video to learn about' - not quite. I learned how to trigger it, I learned how and why it happens, I clicked on the video hoping to learn what it does.
+dotsarecool i have a question for you i am very curious, can the game change the color of textures without there being any, extras or were there already a existing texure?
Yes. In many retro gaming consoles, the colors did not come with the graphics, and were assigned separately (palettes). So what's happening to Mario is that his palette is being corrupted, which results in the same graphics, but different colors.
6:09 I call that "reading in a shifted position", since it jumps to an address where it reads the numbers (ram address $xx, fixed value #$xx) as opcodes and vice versa.
So I understood most of this, but I have a few questions. 1. At around 0:23 you said that whatever Yoshi has in his mouth gets stored in a special table. Why does it get stored in a table, and not just put in a unused RAM adress? (e.g. the next 11141 bytes found after $7F9C7B) (Edit, this question is stupid) 2. If you execute the null-sprite glitch, 5 values in the stack get changed. At around 4:17, you said "when the routine is called, the stack pointer is 01EB.", which I can still understand. But the other code in the stack, with the 5 memory values changed, must be called some time right? It isn't just sitting there waiting to not be used ever again until it is overwritten. What happens if the code that is currently in the stack (with the 5 modified memory values) gets run? 3. At 5:38 you said there are 256 different outcomes you can get by adjusting mario's X position. Has anyone run a LUA script yet to test what happens with all these outcomes? 4. According to the table at 7:30, when mario is at X position #$7A, you can jump to the values located in the OAM (which are easily manipulatable), and execute them as raw code. Could this potentially used for another credits warp? (Although it probably is a lot slower anyway) 5. Why does the SNES use such a janky memory management system? Where you can easily take values which are supposed to be used as arguments and execute them as actual OPCodes? Didn't the developers of the system at the time realise how unsafe that was? (Edit, this is also a stupid question)
+Potato on a stick 1. … so the game remembers where it put it? 2. You might find it instructive and enlightening to disassemble the stack you see in the video. (Gur birejevggra nern bs zrzbel vf hahfrq vs gur fgnpx cbvagre vf zber guna $r3. Gur fgnpx nf n jubyr vf arire rkrphgrq nf pbqr va gur abezny pbhefr bs riragf. Vg vf, vaqrrq, whfg fvggvat gurer jnvgvat gb abg or hfrq rire ntnva hagvy vg vf birejevggra. :-) (I won't comment on 3 and 4.) 5. Nothing to do with memory management, this is a side-effect of using variable-length instructions. The CPU has no notion of the difference between opcodes and operands: it just fetches bytes from memory, addressed by the program counter, and assumes the programmer knows what they're doing.
Incredibly clear explanation? Now, can you explain why the different powerups do what they do? (Especially Powerup 106 and its crazy, level-ending effects.)
+Mr. ROFL Think about it this way. With Big Mario, the game likely checks if powerup value is greater or equals to 1, which allows him to take an extra hit and break turn blocks. With Cape Mario, the game specifically allows for flying/floating if Mario has that powerup value. With Fire Mario, the game specifically allows for fireballs to be shot if Mario has that powerup value. With glitch powerup values, no extra code is assigned to them. They weren't meant to even be accessible, and all they are is junk code. Hence they use (probably) the default sprite, Small Mario, apply a garbage palette, and as its powerup value is above 1, that state's Mario can break turn blocks. Next, consider the glitched movement. This is likely just an odd frame in the animation caused by the glitch powerup value. Hence, if the game does have such strict rules on specific powerup values allowing for specific properties, the glitched powerup values would have nothing assigned to them, hence there is no special property.
+Mr. ROFL There's a few neat things you can do with the power-ups in this glitch. With the "halloween mario" power-up (first one) you can hit the goal tape with a P-Switch in hand and get a star. The star was never added in the game as an end-of-level reward, but it is implemented and will give you a star power-up when you enter the seventh level (I think) after getting it. You can also use powerup number 37 I believe and collect a 1-Up to put a Yoshi in your item box that you can drop anywhere you want, including inside levels with No Yoshi signs. Just a few examples that I can remember.
Most likely. There is a possibility that a compiler was used to compile, say, C into 65c816. Even if so, I'd say the majority was written in assembly. Additionally, some of the external chips like the SuperFX, as well as the SNES's sound processor (SPC700), had their own instruction set as well.
It's just practice, on the beginning everyone struggles with basic concepts of programming. But, to understand assembly, you need to have an background of how a computer/processor works in the fundamental level: registers, stack, and so on. (I'm trying to get good on it, but for now, all I can do is a Hello World on SNES. :p)
this is way over my head but it's super interesting. and it's fascinating that games made by the holy deities at Nintendo can be comprehended at this level by us mere mortals. it puts things into perspective.
The setup I described in the video is for the North American version of SMW. It should also work for VC releases. If you're on the Japanese version, you need to be 2 pixels to the right of where the video shows. This glitch should also work on the All-Stars+World cart as well, but I don't know the setup offhand.
Did you disassemble and comment the SMW code yourself, or is there a reverse engineered version somewhere on the internet? If so, where could I get it? Thanks.
What tools are used to interpret/view the snes asm? I’m familiar with some disassemblers (Ghidra/IDA) but are there ones that can emulate the SNES hardware?
The cheat 7E001963. I remember years ago messing around with that variable, finding strangely-colored Marios that made the game crash when picking up 1UPs (and I have the old video!)
ObiTrev technically yes, but it would involve a ton of arbitrary code execution. it would be easier and more worthwhile just editing the ROM beforehand.
You can also look up "buffer overflow", like what happens if you made the game index table slot use beyond #$0B (sprite slots are valid #$00-#$0B) during execution of a sprite code?
+DragonblazeGames Some of them actually do, they just have higher values. All the animation frames given to Mario when he's above state 3 are garbage, so it's just by chance really.
***** Oh I see. My reasoning behind it was as follows: One state for small + star Another for big + star Another for fire + star Another for cape + star You get the idea.
Is it possible to use this to jump to the subroutine that decrements the powerup state when mario gets hit? And could you "underflow" the powerup state from small mario (state 0) to state 255?
With the correct setup, this glitch does allow for arbitrary code execution, so yes that is possible. It would just take a lot of work relative to powerup incrementation, since that only happens by chance with hardly any setup. And yes, if you subtract one from Mario's status when he's small, it will wrap around to 255.
Uh, Dots... I may have just found a HUGE skip with this. I was on YI-3 and did this at the right time, the screen went black. I can walk around and hear Bowser flying AND the fight music.
Half way through I literally just realized that colors like #ff00ff probably is not only related to this hex stuff but ff probably stands for 255. And I've been making website stuff for 6 years now.
+FatMan2539 When a sprite spawns, it will always try to spawn into the highest numbered slot available. You can use this fact to manipulate which sprites spawn it which slots. If you fill everything up to slot 5 with Koopas and brown platforms, Yoshi will go into the next highest slot, which is slot 4.
So I was at Power-Up State 20 or so and I misclicked by accident just as the brown platform was moving to the left and I accidentally think that I just discovered Power-Up State 257. IDK. Is a small Mario with alime torso, a lime hat, and a black face apart of the 256 Power-Up State? Anyways, I crashed the game testing this new state on Power-Ups, used the NSO's timestamp feature to go back to the point before I crashed and I'm in a new Power-Up State?! Just wanted to know if this was ever documented and if I am going crazy over that first Power-Up State is new or not. Thanks! Great video by the way.
Never knew any of that. I find it weird that the fire flower is a higher power up than the cape though. The cape is way better than the flower. It is also introduced later in the game.
My guess is that when they started development of the game, they started with the cape/super leaf first, since it was going to be the more iconic powerup. Fire power was "easy" to code since they've had two games with it already, and added it in later like, "now that we know we like this cape powerup, lets implement everything else."
***** That makes sense. The game does treat them like equal power ups. Every player I know likes the cape better though, but that is just me and my friends.
i wouldn't say so, because in the original smw, the whole game takes up a lot of memory, but still has a little left, which is how people code stuff into the game using glitches, but in smas+smw, all of that memory is filled with the games smb 1-3
Mario was written in assembler? I would have guessed something low level like C but not THAT low level. When did game developers move away from assembler and into higher level languages? And am I right in guessing that C would come next once they started moving away from assembler?
ASM might not have been the language they developed in, but remember, everything becomes ASM when compiled. (Technically, everything becomes machine language, but that can be rewritten as ASM...)
+jonas knochelmann (angryscientist) There is a table of pointers that correspond to Mario's palette colors. When this table is indexed out of bounds (greater than 03), a junk pointer is loaded which results in junk colors.
Uh sorry, but is that explanation right? "A desynced address comes from treating an argument as an opcode" Aren't those normal opcodes as well where you're pointing at? It's just that instead of pointing to E2 20 you instead point to 20 68 9D. But 20 68 9D isn't an argument, is it?
The 19th Fighter the byte 20 was intended to be an argument to the SEP instruction. when the program counter points to this byte, it is interpreted as an opcode which results in the instruction JSR.
Yeah, I got it right then. The first time I somehow understood that the opcodes that are being shown is what's on the stack (once you interpret those as opcodes). Thank you!
@@IsoFrieze ah i see, persoanlly think it was a good decision and people seem to enjoy it. including myself. can't wait for the next parts of the SNES Features series. at the end of it you should hvae a pretty amazing playlist that serves as starting point for anyone who wants to write an SNES Emulator, or start to develop games for it. so i hope the same kind of series can be done for the NES as well sometime in the future, it's much simplier but there still is a lot to learn about the system. anways, great videos, keep up the good work and the Quality > Quantity policy you got!
You know the video's gonna be good when it starts with "This thing we're talking about is a side effect of a special case of a side effect of a special case."
Perfect avatar for that.
Holy shit.
mind=blown
Here from the future; RGMechEx’s videos nowadays are much more polished and enjoyable to watch.
@@juniorjedi2563 true!
While I only understood scraps of this video (I have zero background in assembly code beyond knowing that it is a thing that exists), it really underscores the insane kind of work that went into programming some of these old video games. The hardware constraints that those programmers had to work within inspire awe. As do those who decades later are peeling them apart and using novel methods to manipulate them. Beautiful work.
Josh Killcrop there is a video about the pacman glitch screen and how the ghosts programming work done by I think this same guy that makes even the simplist looking game seem complicated when you get down to the code
it dont work
"A dark Mario head appears for a single frame"
You can almost hear the sub-par creepypastas writing themselves.
7:47 the best motivational poster ever
+OBSM Productions *The challenge that is*
Thanks yoshi
+OBSM Productions Other challenges aren't. This is the challenge that is.
*the challenge that is*
THIS is what people _should_ be doing on UA-cam.
Yeah. I even watched the ad, because this guy deserves a lot of money. He produces video with knowledge and quality.
Agreed 😎.
Yas
I expect him to start talking about parallel universes at any moment.
Or talking about doing this glitch in half an A press.
CoTeCiOtm or sacrificing a baby goat and summoning satan.
Playing Super Mario World, crashes Super Mario World.
Go away and stop using shitty memes
This glitch is like cloning in Mario 64
4:40 dots roasts the programmers.
Not gonna lie - Stuff like this is a big part of why I love retro gaming in general. Bugs like this are fascinating in a way that you don't really see in modern gaming.
Same here!
(WhiteYoshiEgg here, not sure if you remember me)
This is like watching a mathematical proof - I mean literally, it gave me the chills. I never knew what the glitch was about, but your video was full of lighbulb moments for me, and at the end there was understanding. Great job on that video! :)
+mebamme Yooo WYE! Thanks, I appreciate it. I'm glad you enjoyed it!
While I'm not *that* computer literate, I find this and the end credits explain to be quite entertaining to watch.
Huh, I didn’t know you had another channel before RGME. It’s cool to see how much your editing has improved and that you’re still active over here! Good work man 🙂
"What can you do with this null sprite? not much, But what you CAN do is pretty interesting.'
dotsarecool 2015
Thanks for the explanation, I didn't realize there was such a huge community SMW glitches and code injections until I saw this and SethBling's video. Super interesting stuff!
someone made a TAS for kosmic for smw that wrote the ENTIRE 40 kilobytes of super mario bros's memory and then accessed it so Kosmic could play Super Mario Bros inside of Super Mario World.
MORE VIDEOS LIKE THIS. I love low level coding and I think videos like this make others more informed AND interested about it as well if done right, like this.
I've wanted to make a 'how glitches ACTUALLY work' video series like this for years. This started when I explained to a friend, who doesn't know anything about programming, why games, especially from this era, have limits of 255 for coins and stuff and it blew his mind. If something that simple has that power imagine what videos like this could do after a proper series leading up to it with explanations...
I also found a glitch with the swallow timer on "how long yoshi can keep things in his mouth" as well as the "invincibility star" timer: they do freeze if the game freeze flag is set (freezes happens if you do a powerup animation or taking damage/death, as well as scrolling the screen L/R buttons) and should decrement every 4th frame, if $14 (frame counter that can freeze) is divisible by/ multiple of 4, and the game is frozen, it decrements *every frame*
'At this point in the video I've probably explained everything you clicked the video to learn about' - not quite.
I learned how to trigger it, I learned how and why it happens, I clicked on the video hoping to learn what it does.
I loved that summary in 6:32. Great work
Why are their 15x the amount of views as subs? this guy is awesome. support his ass.
Retro game mechanics explained is going quite well now (he made that channel too)
This was amazing and informative, but I really was looking for some details on the properties of the different powerup states.
Sethbling sent me here!
+rebane2001 same
+rebane2001 me too
+rebane2001 ditto
Same.
Same
Wild weird stuff. Love that this old game still has surprises to offer.
You’re right, this is an old video.
It’s really not.
@@yordansic "Old" is in the eye of the beholder. For some people, this isn't old, but for this person and even myself, yeah this is quite old.
@@Pyrodiac It’s really not.
But can you do this with only 0.5 A presses?
4:36
"this code is pretty jank" said everyone who ever reverse engineered anything lol
The double tongue glitch? I used to do that in college.
Several women I hooked up with in college remember that technique quite well.. ;3
@@happmacdonald .....
@@Preinstallable This was UA-cam then.
@@happmacdonaldGlad to see that the internet was just as... "Expressive" in 2015 as they are now.
it's amazing how many glitches people find in a game when it's been out for 30 or so years.
I still expected you to discuss what the non-standard powerup states did.
this was actually really clear for the most part, especially compared to your first explanation video :P
Hey, is this the same guy as Retro Game Mechanics Explained? He sounds quite similar.
Awesome video! :D
I've been watching your smw let's glitch videos! which I've been commenting on things like when you glitch a berry, it turns into its beta form!
ohi
are you alive
The Null Sprite Glitch can also update the save file banks.
Are you a CompEng major?
+SeeeeJaaaay Yes, how could you tell?
+dotsarecool Because Im a CompSci major with some assembly experience but I have no clue how you figured all this out! Haha
+dotsarecool i have a question for you i am very curious, can the game change the color of textures without there being any, extras or were there already a existing texure?
Yes. In many retro gaming consoles, the colors did not come with the graphics, and were assigned separately (palettes). So what's happening to Mario is that his palette is being corrupted, which results in the same graphics, but different colors.
6:09 I call that "reading in a shifted position", since it jumps to an address where it reads the numbers (ram address $xx, fixed value #$xx) as opcodes and vice versa.
cristal clear explanation. amazing as always!
This is what my OC is based off of
O h , h e l l o t h e r e !
O h h a i i i i i
Hi dad
I am just in awe. Could you recommend any courses/resources to grok this at the level you do?
So I understood most of this, but I have a few questions.
1. At around 0:23 you said that whatever Yoshi has in his mouth gets stored in a special table. Why does it get stored in a table, and not just put in a unused RAM adress? (e.g. the next 11141 bytes found after $7F9C7B) (Edit, this question is stupid)
2. If you execute the null-sprite glitch, 5 values in the stack get changed. At around 4:17, you said "when the routine is called, the stack pointer is 01EB.", which I can still understand. But the other code in the stack, with the 5 memory values changed, must be called some time right? It isn't just sitting there waiting to not be used ever again until it is overwritten. What happens if the code that is currently in the stack (with the 5 modified memory values) gets run?
3. At 5:38 you said there are 256 different outcomes you can get by adjusting mario's X position. Has anyone run a LUA script yet to test what happens with all these outcomes?
4. According to the table at 7:30, when mario is at X position #$7A, you can jump to the values located in the OAM (which are easily manipulatable), and execute them as raw code. Could this potentially used for another credits warp? (Although it probably is a lot slower anyway)
5. Why does the SNES use such a janky memory management system? Where you can easily take values which are supposed to be used as arguments and execute them as actual OPCodes? Didn't the developers of the system at the time realise how unsafe that was? (Edit, this is also a stupid question)
+Potato on a stick 1. … so the game remembers where it put it?
2. You might find it instructive and enlightening to disassemble the stack you see in the video. (Gur birejevggra nern bs zrzbel vf hahfrq vs gur fgnpx cbvagre vf zber guna $r3. Gur fgnpx nf n jubyr vf arire rkrphgrq nf pbqr va gur abezny pbhefr bs riragf. Vg vf, vaqrrq, whfg fvggvat gurer jnvgvat gb abg or hfrq rire ntnva hagvy vg vf birejevggra. :-)
(I won't comment on 3 and 4.)
5. Nothing to do with memory management, this is a side-effect of using variable-length instructions. The CPU has no notion of the difference between opcodes and operands: it just fetches bytes from memory, addressed by the program counter, and assumes the programmer knows what they're doing.
+Dave Norman Thanks for answering
Incredibly clear explanation? Now, can you explain why the different powerups do what they do? (Especially Powerup 106 and its crazy, level-ending effects.)
+MetaKnight68 why 106?
Buecause 106 is the only one known to have strange effects.
I'll guess that 106 is the value for the orb in the sunken ship (forgot the name of the level sorry)
...it isn't, the orb's sprite ID is 74. 106 is that weird coin game cloud.
I was only theorizing. But what cloud are you talking about? I don t remember seeing one.
15 seconds into this video and I'm already so lost I had no idea what those glitches were
So, what do the other powerups do other than glitch? Has any experimentation been put into them?
+Mr. ROFL act like big mario but with glitched movement
ncamen68 So, nothing beneficial? No wierd glitched goomba fireballs?
+Mr. ROFL Think about it this way. With Big Mario, the game likely checks if powerup value is greater or equals to 1, which allows him to take an extra hit and break turn blocks. With Cape Mario, the game specifically allows for flying/floating if Mario has that powerup value. With Fire Mario, the game specifically allows for fireballs to be shot if Mario has that powerup value.
With glitch powerup values, no extra code is assigned to them. They weren't meant to even be accessible, and all they are is junk code. Hence they use (probably) the default sprite, Small Mario, apply a garbage palette, and as its powerup value is above 1, that state's Mario can break turn blocks.
Next, consider the glitched movement. This is likely just an odd frame in the animation caused by the glitch powerup value.
Hence, if the game does have such strict rules on specific powerup values allowing for specific properties, the glitched powerup values would have nothing assigned to them, hence there is no special property.
+Mr. ROFL There's a few neat things you can do with the power-ups in this glitch. With the "halloween mario" power-up (first one) you can hit the goal tape with a P-Switch in hand and get a star. The star was never added in the game as an end-of-level reward, but it is implemented and will give you a star power-up when you enter the seventh level (I think) after getting it. You can also use powerup number 37 I believe and collect a 1-Up to put a Yoshi in your item box that you can drop anywhere you want, including inside levels with No Yoshi signs. Just a few examples that I can remember.
Squiggy Seven: First Impressions [NES Reviews] those levels amount to just castle and ghost house levels in the original game.
Your voice reminds me of retro game mechanics explained
Woah, maybe it's because we're the same person
@@IsoFrieze weird your voice sounds much clearer here
@@wannacry6586 I had a different mic 7 years ago
@@IsoFrieze figured but why does it sound cleaner/clearer
Wonderfully made!
Works with Super Mario All*Stars + Super Mario World or It does something glichy(Edits RAM of the pack code..)??
That was very interesting. I'm also interested in what each incrementation can do.
2:07 What language is that?
65c816 assembly
Were all SNES games written in that?
Most likely. There is a possibility that a compiler was used to compile, say, C into 65c816. Even if so, I'd say the majority was written in assembly. Additionally, some of the external chips like the SuperFX, as well as the SNES's sound processor (SPC700), had their own instruction set as well.
Dang and I struggle to learn C#...
It's just practice, on the beginning everyone struggles with basic concepts of programming.
But, to understand assembly, you need to have an background of how a computer/processor works in the fundamental level: registers, stack, and so on.
(I'm trying to get good on it, but for now, all I can do is a Hello World on SNES. :p)
this is way over my head but it's super interesting. and it's fascinating that games made by the holy deities at Nintendo can be comprehended at this level by us mere mortals. it puts things into perspective.
@IsoFrieze what address is the current pwerup value stored
Is there a specific version that this works in? I'm able to get the black Mario head to appear, but my powerup state doesn't increment.
The setup I described in the video is for the North American version of SMW. It should also work for VC releases. If you're on the Japanese version, you need to be 2 pixels to the right of where the video shows. This glitch should also work on the All-Stars+World cart as well, but I don't know the setup offhand.
Ah Super Mario World, the game with the most entertaining crashes
Did you disassemble and comment the SMW code yourself, or is there a reverse engineered version somewhere on the internet? If so, where could I get it? Thanks.
It's already been disassembled and the source code is up on smwcentral.
What tools are used to interpret/view the snes asm? I’m familiar with some disassemblers (Ghidra/IDA) but are there ones that can emulate the SNES hardware?
Coded by an intern. I love it!
Is there a fast way to get to power up state 0x63?
Kobe Whon Edit the Powerup state in the game via cheat codes to increment your Powerup on emulators.
The cheat 7E001963. I remember years ago messing around with that variable, finding strangely-colored Marios that made the game crash when picking up 1UPs (and I have the old video!)
Alright cool! Thanks guys!
Has anybody made a list of all the powerups marioncycles through? they all have different properties
How did you turn off the music?
What happens if you are damaged in one of these special powerups?
You just return to small Mario.
Is there a way to give Mario a "powerup" from an enemy. Such as making Mario throw baseballs, hammers, or etc?
ObiTrev technically yes, but it would involve a ton of arbitrary code execution. it would be easier and more worthwhile just editing the ROM beforehand.
Darn, there goes my childhood wish fulfillment.
It's weird, when I do it, I get a black mario head under yoshi but my powerup state doesn't get incremented :/
I had watched it first. The problem was I was using a weird emulator. On the real console,it worked perfectly
You can also look up "buffer overflow", like what happens if you made the game index table slot use beyond #$0B (sprite slots are valid #$00-#$0B) during execution of a sprite code?
do you have an explanation video on duplicating blocks?
What does having an invalid powerup state actually get you though other than a scrambled palette for Mario?
Is this a reupload from RGME?
Why do all of the powerup values after Fire use the sprite for small mario, rather than Super, Fire or Cape?
+DragonblazeGames Some of them actually do, they just have higher values. All the animation frames given to Mario when he's above state 3 are garbage, so it's just by chance really.
I see, thank you. :P
So this is a side effect of a side effect of a special case of a side effect?
6:32
Behind a different postcode, two secret walls and a fire?
8:05 And now, Mario turns into a chocolate
why isn't the star effect on the marios on 6:41?
+SuperNikio2 Star invincibility is its entirely different flag. Mario can be invincible while having any powerup state.
***** Oh I see. My reasoning behind it was as follows:
One state for small + star
Another for big + star
Another for fire + star
Another for cape + star
You get the idea.
So what address controls power up?
Is it possible to use this to jump to the subroutine that decrements the powerup state when mario gets hit? And could you "underflow" the powerup state from small mario (state 0) to state 255?
With the correct setup, this glitch does allow for arbitrary code execution, so yes that is possible. It would just take a lot of work relative to powerup incrementation, since that only happens by chance with hardly any setup. And yes, if you subtract one from Mario's status when he's small, it will wrap around to 255.
Uh, Dots... I may have just found a HUGE skip with this. I was on YI-3 and did this at the right time, the screen went black. I can walk around and hear Bowser flying AND the fight music.
Half way through I literally just realized that colors like #ff00ff probably is not only related to this hex stuff but ff probably stands for 255. And I've been making website stuff for 6 years now.
I have one small question, how do you make sure Yoshi is in sprite slot 4?
+FatMan2539 When a sprite spawns, it will always try to spawn into the highest numbered slot available. You can use this fact to manipulate which sprites spawn it which slots. If you fill everything up to slot 5 with Koopas and brown platforms, Yoshi will go into the next highest slot, which is slot 4.
So I was at Power-Up State 20 or so and I misclicked by accident just as the brown platform was moving to the left and I accidentally think that I just discovered Power-Up State 257. IDK. Is a small Mario with alime torso, a lime hat, and a black face apart of the 256 Power-Up State? Anyways, I crashed the game testing this new state on Power-Ups, used the NSO's timestamp feature to go back to the point before I crashed and I'm in a new Power-Up State?! Just wanted to know if this was ever documented and if I am going crazy over that first Power-Up State is new or not. Thanks! Great video by the way.
Incredible video!
For some reason i'm stuck at powerup level 7 :/ Do you know what's happening ? (I'm playing of the american version)
What were those weird colored small Mario's? How do I get them? What do they do?
Sir Potato Bottom They're unused power up states. So, just keep incrementing and you'll get them.
DarklinkXXXX they're not unused. They're just the result of glitched palettes.
Sir Potato Bottom did you even watch the video?
Great. Now i know, that i will never underatand assembly or machine code :D
+StarTrek123456 assembly is something ik the basics of
How do people find these things?
How many powerup increments are possible before the game crashes? Could you make a video trying to get to the highest increment possible?
There are 256 different states. If you do the glitch once more it will wrap back around to 0 and you'll be back to small Mario.
Wow, cool to know. Thanks
+SkydiverTyler side note: there are 256 different states, so the highest number is 255. 0 counts as one of the states
How long does it take to figure out a glitch to this detail?
Can you do this on the virtual console for the Nintendo 3ds?
NitroGamer try
Never knew any of that. I find it weird that the fire flower is a higher power up than the cape though. The cape is way better than the flower. It is also introduced later in the game.
My guess is that when they started development of the game, they started with the cape/super leaf first, since it was going to be the more iconic powerup. Fire power was "easy" to code since they've had two games with it already, and added it in later like, "now that we know we like this cape powerup, lets implement everything else."
***** That makes sense. The game does treat them like equal power ups. Every player I know likes the cape better though, but that is just me and my friends.
5:45 it also makes shirts appear
Where is the table that stores the slot number of the object Yoshi is currently eating?
$160E,X, where X is the slot yoshi is in.
+dotsarecool Thank you.
Does this glitch work on super mario all stars + super mario world?
The two bros Mario and Luigi I think so but since it is emulated differently, it may have different results
i wouldn't say so, because in the original smw, the whole game takes up a lot of memory, but still has a little left, which is how people code stuff into the game using glitches, but in smas+smw, all of that memory is filled with the games smb 1-3
the challenge that is
That text literally appeared a few seconds before you said that
4:40 I was going to lose my mind if you didn't collect that coin
How do people even figure out such glitches? Do they analyze the game's machine code or something? Because I doubt they find it totally by accident.
I wanna know the address of the power up value
Nicely spoken!
Great explanation
Is this possible on wii u?
Mario was written in assembler? I would have guessed something low level like C but not THAT low level. When did game developers move away from assembler and into higher level languages? And am I right in guessing that C would come next once they started moving away from assembler?
ASM might not have been the language they developed in, but remember, everything becomes ASM when compiled. (Technically, everything becomes machine language, but that can be rewritten as ASM...)
I might have been made in assembly or hand compiled, cause the SMW asm is ridiculously efficient for a compiler of the time. even now.
So cool, it's a very fun kind of brainteaser (quite difficult too but who said that brainteasers have to be easy)
nicely explaned
Who came here from SethBling?
+MLG Videos Ltd. me'
Acutually yes
me not
I come back to this every year. This is year 7. And. Nope. I still don't get it
Holy cow, you go deep.
Why does the system change the color code for Mario?
+jonas knochelmann (angryscientist) There is a table of pointers that correspond to Mario's palette colors. When this table is indexed out of bounds (greater than 03), a junk pointer is loaded which results in junk colors.
Ok that makes sense
Uh sorry, but is that explanation right?
"A desynced address comes from treating an argument as an opcode"
Aren't those normal opcodes as well where you're pointing at?
It's just that instead of pointing to E2 20 you instead point to 20 68 9D.
But 20 68 9D isn't an argument, is it?
Ah I think you meant because an argument in this specific case changed the Return Address.
The 19th Fighter the byte 20 was intended to be an argument to the SEP instruction. when the program counter points to this byte, it is interpreted as an opcode which results in the instruction JSR.
Yeah, I got it right then. The first time I somehow understood that the opcodes that are being shown is what's on the stack (once you interpret those as opcodes).
Thank you!
why and how do you sound almost the exact same as Retro Game Mechanics Explained?
same guy
@@IsoFrieze really? so you just made a second channel specifically about these mechanics because of how well they were doing on here?
@@proxy1035 mainly so people could see these kinds of videos without having to wade through my other crap
@@IsoFrieze ah i see, persoanlly think it was a good decision and people seem to enjoy it. including myself.
can't wait for the next parts of the SNES Features series. at the end of it you should hvae a pretty amazing playlist that serves as starting point for anyone who wants to write an SNES Emulator, or start to develop games for it.
so i hope the same kind of series can be done for the NES as well sometime in the future, it's much simplier but there still is a lot to learn about the system.
anways, great videos, keep up the good work and the Quality > Quantity policy you got!