Having the memory map up and following Mario as he moved through the memory space was a fantastic addition to the video, and really helped visualise where the runner was going.
That's nothing. On AGDQ, they showed you can reprogram Mario World in somewhat the same way (code manipulation by using glitches) and reprogrammed the entire game into Pong. Just by playing the game.
I remember one year where they made a chat interface and used the controllers as input data and showed the live twitch chat You can do some crazy shit when you don't have memory safety
They even re-programmed A Link to the Past to play Super Mario 64 and Portal (both as videos) and even a Skype call, using Megaman 1 and Super Mario Bros 3 audio to create Stereo audio.
I must say, I absolutely love the visualization and representation created for these videos. Your ability to show abstract concepts, such as data maps, memory layouts, matrices and vertices, and assembly procedures as understandable images is marvellous, and I always look forward to how you make the inner workings of a game visible. I was hoping there'd be a full map of the garbage tile world, and my wish was granted and even surpassed by the overview visuals of Mario moving through the world. Thank you for these great videos, and I hope to continue seeing them in the future.
I completely agree! I also love what he did at 8:19, where he showed how the tiles would look like if the game updated them at every change instead of only when they're drawn to the screen. That can't have been easy. I assume he either modified or added his own assembly code at the right place in the ROM, or did it with lua scripting. Either way it's impressive and the effort is very appreciated!
Agreed, that's a great way to show the logic underlying the game's behaviour, which is usually invisible since tiles are only loaded once. I suspect it was either done by video post-editing, or modifying the level loading routine so the entire screen is reloaded from memory on every frame.
Mario, the man who travels through parallel universes, can literally hold the concept of victory on his hands, get the fruit back and walk through the code of reality while also keeping his job as a plumber)
@@silvertotodile6958 Given that this, Mario 3, Mario World, and Yoshi's Island have ACE which allow anything possible within the hardware, Mario basically becomes a god, with feat-backed omnipotence.
Why haven’t people put this much effort into their content before wow. THIS is how you explain something complex to literally anyone! This could literally be used in a classroom and it’s genius and I applaud you man. Great idea for a channel
Good times! I used to program professionally on the GameBoy / GameBoy Color in hand written Z80 assembler. Memory bounds checking was often ignored (or removed on release builds after thorough testing) to minimize the number of instruction cycles per frame. One bad address offset or an improper bank switch and the illusion of a game world is out the window and your well into stomping on random memory land. Good video, nicely explained for the new generation. I'm glad there are still folks that appreciate working on these systems.
I don't think he came off that way at all... I'm glad that he shared his insight. It's rare that you get to directly correspond with actual console developers from back in those days.
Don't you hate it when you are just taking a nice stroll down the memory map and then accidentally break something along the way? I hate when that happens.
One theory of dreams is that our brains are making sense of garbage data and we experience that as something semi coherent we can identify with. Ergo: This is inception: we are inside Mario's dream
the same could be said of the reality we experience as well; its possible that everything in "real life" is simply a complex metaphor created by our brains to make sense of whatever really exists
You know what's crazy? THESE OUT OF BOUNDS areas are, to me, literally the stuff of nightmares. I dunno what it is about seeing random glitchy ROM and having an actual, correctly functioning game sprite traverse it. It's like the universe exploded and the gateway to hell has opened up....digitally.
Yup, same with finding unused or unfinished areas of games. I think it's partly the fear of the unknown, partly the uncanny valley and partly a weird extension of body horror. Fear of the unknown plays into it because we don't know what we'll find in these strange areas, or what effect our blind mucking about will cause. The uncanny valley plays into it because the controls and player sprite are familiar and we can recognize what the glitched tiles are supposed to be, but it's unfamiliar enough to trigger subconscious anxiety and tension, which leads into the extension of body horror; we know how these pieces are supposed to go together and behave so seeing them in such a corrupted state is akin to seeing a body part damaged or mutilated as with a broken bone. It's extremely unsettling to our brains as we are creatures of comfort, order and routine, so anything that shakes any of those three things up is unnerving.
I got that feeling when I accidently glitched through a wall while playing the original Doom and I got the ghost effect when there isn't a skybox. I named the save 'GLITCH WORLD'. At the time I didn't know you could just use the noclip cheat and find it in every level though haha.
There's the "beta quest" GameShark code for Ocarina of Time. (Not the ROM hack.) Playing with that as a kid, not knowing how it worked, it felt so much like the video game version of a dream. Everything kinda makes sense but also doesn't, things don't line up right...
As a kid, these kind of glitches terrorized me. It really creeped me out, even on a physical level I would feel terrible if I had to witness it. This one is kinda soft though. I think the worst offenders were NES cartridges.
2:22 , I was programming a game on a Ti-84 plus SE (it’s a calculator you can make games on) and made an 8-bit tilemap test. The game was pretty straightforward you could move around and not bump into trees or house tiles, however I actually glitched out of the map and after a bit of wandering I started seeing random tiles scattered everywhere looking exactly like this. It’s so cool how a calculator and console run so similarly
I feel that I am no closer to understanding the technical wizardry of retro consoles having watched all of your videos. But I am still here, and eagerly awaiting your next upload!!
AlexElectric9001 just lookup how cheat engine works. Its not just for hacking games. It is a memory manipulation tool/debugger.. its all process of elimination.
If it helps, no one has to "read the matrix" code like this. They develop level editors etc. so that no one has to deal with these strange arcane values directly, for very long anyway.
This is awesome. It makes me kind of sad that game programming has become so advanced. Don’t get me wrong, I love modern games - but these kinds of hacked-together solutions are long gone and we don’t get to see things like this anymore.
That's the beauty of legacy consoles. Witnessing more being done with less is a wonderful thing. Real work was poured into working with the hardware's limitations while making the games look and play fantastic.
It would be cool to see a modern take on a game that you could still do memory or even RNG manipulation on. If companies put a functional mechanic in a platformer or dungeon crawler that mimicked those kinds of things I would honestly love to try it, but since that's probably not what the average consumer wants I doubt that'll happen anytime soon.
I find it interesting that even on rather modern games, it is often still possible to glitch though a wall if you find out how to do it. E.g. in Zelda Wind Waker, there is a video on how speed runners tried really long to glitch through a double wall to Hyrule castle early in the game. They eventually managed to do it. I don't get why it wasn't simply impossible. To be fair, maybe Wind Waker is still too old, and walls in modern games are really impenetrable.
To be fair, it's not that the hacked-together solutions are gone, rather - the hardware, operating systems and programming languages are now clever enough to fail the game in a predictable way when something unexpected occurs.
Homebrew communities and fantasy consoles like PICO-8 keep programming with limitations alive. I recommend trying it sometime if you find exercising your brain with those kinda programming challenges fun.
Mario travels through the floor and lands on actual memory. In this sacred land of unstable volatility, mario immediately gets the urge to spin and break as many blocks as he can...
Small correction, it's 65,536 bytes, not 65,535. 65,535 just happens to be the highest VALUE for an unsigned 16-bit integer, but it's stil 65,536 because of 0x0000.
I love this glitch to death because of how this can be interpreted. Mario is literally *travelling through the very fabric of his reality,* and it's completely unintentional. It's like discovering god's workshop. I kinda wish ACE looked more like this in other games, instead of just being a bunch of inexplicable actions before suddenly cutting to whatever you did.
Game Boy glitches in general are always really fun, but this one was always the one that fascinated me most of all. Just the idea of having your character, in a very literal sense, explore the game's memory space and directly change in-game variables simply by interacting with it as usual... I mean, there must be an actual game concept somewhere in here, right? I would totally play a game based on this.
Woah. This sparks some thinking about recursion. I wonder if this also means we can use this to change the value of Mario's position to get him back on map, just for the sake of it. Imagine someone playing through this game, accidentally doing this glitch, then making their way to that value, and changing it to teleport back to map. lol
That would depend entirely on if the associated tiles are breakable, and even then, the value that his position could be set to would be limited, and would not necessarily lie within the level.
I wonder if this means you could "Jailbreak" Super Mario Land 2 in a similar vein to how Sethbling did with Super Mario World. It seems you might be able to, in game, read, write, and execute, arbitrary code anywhere in the RAM or ROM since Mario, in theory, has access to all of it.
True, though many of the tiles couldn't be changed in-game because Mario can't interact with them. Only certain values like 00 could be changed because they're displayed as tiles that Mario can interact with, so I think this would be limited in what you could do with it.
Well, Mario doesn't have full access. Some of those blocks are unbreakable, some are simply 00 i.e. he can just walk through them and can't interact with them too. And even then, he can't change the values to whatever he wants. Although it's probably possible to change RAM around a little to use other properties for the blocks and change them that way, but that's not really likely.
The problem is the way SethBling does codes like that is that he has extremely fine control over the values that get written. They rely on how far along a sprite is scrolled, which you can do down to the pixel. And then shenanigans execute that sequence as an interpretable code. In this, it looks like the player can only change one block into another block, if _that._ It is as Architector #4 says. They have no fine control. No ability (as of yet) to orchestrate a sequence of objects that "coincidentally" can be executed as code. Only Mario and his stupid brick-busting feet.
+Noxedwin Tepes Wait, can entities in Super Mario Land 2 exist off-screen? If so, maybe we could orchestrate them up in a way similar to SethBling's approach, then jump down into RAM and maybe flick the right block to tell it to execute from that spot of RAM where entities are stored? The chance of this being possible are abysmal, but what if. :o
I seriously doubt that there is even a possibility. When you change a tile or bonk a block in that memory space, you're only *changing* a value, not reading it. I don't claim to know how arbitrary code execution works, only my understanding of it thus far. So anyone with actual knowhow can pipe up whenever they feel like it. But you have 65535 discrete bytes of memory. That's 65535 blocks (inclusive of level geometry and that mangled wraparound beneath the level). *You would need:* • A tile whose opcode representation is that of a Jump instruction. • Have that tile, and *only* that tile, execute on VBlank (the brief window before the picture updates each frame). Or, at the very least, have other executing tiles not change this parameter or hang the CPU or anything like that. Arbitrary code execution often relies on the CPU not being picky enough to ragequit when it gets certain kinds of nonsense. • Four tiles (or so) next to it that, using the same rules as the above point, corresponds to "that spot of RAM where entities are stored" (people generally refer to that as the "sprite table" or "object table" or some variant thereof). • A set of entities that Mario can pick up and put down without him destroying them or being hurt by them (in SMW, Koopa shells do this because you can stomp them to pacify them, and then gently put them down). • The ability to place those entities in a way that represents the operands to give the Jump instruction a destination address (jump to "this"). • KNOW what order those entities exist in the table in order to form a coherent address. • The knowledge and ability to place them correspondent to the place in the program you want to go. This could be the end credits script, the new game script, or even just an instruction to make the GB speaker beep at C-flat for 5.68 seconds. Or 5.69 seconds. Or B-sharp. • For those entities to NOT DESPAWN or change in any way while Mario is not using them (in the case of Koopas, for them to not uncurl and move about on their own), as that would obliterate the code. And _probably_ half a dozen more variables. The chances of these all being true are not merely "abysmal", they're completely incomprehensible. The human mind is not structured to understand a number with that many zeroes in it. That's the sort of number where smarter people than me use the letter "E" in the middle to describe how bloody long that number is. Boffins have to *cheat* to write numbers like that. As a person of science, I can't say "it's impossible" with a clear conscience. But it's so *freakishly unlikely* that trying to find a number small enough that's still bigger than zero to represent it is exhausting me far more than it is for me to write this post explaining how bollock-crushingly improbable that is. If anyone could make a video on UA-cam of them placing an undoctored _Super Mario Land 2_ game pak in an unmodified Game Boy and, step-by-step (in a way that a layperson could replicate and come to the exact same result, accounting for all confounding factors like RNG), create an instruction using the memory zone and sprite table (or some other versatile and easily-manipulable part of the RAM) to control what the game does or where it sends the player in a way that can be written down on a chart and peer-reviewed, I would fear what they could do next. Given enough time and dedication, it might happen. Which is why I can't say it's impossible. I will say "it's certainly impossible *now*." There are too many factors that need to be perfectly aligned. Down to 1/65535. Multiplied by however many variables there are. You would be better off building a romhack of _Super Mario Land 2_ where the only change is a single block that turns into an executable Jump instruction leading to a static operand which is the end credits. But they already did that. It's that block on the right, several layers down that morass beneath the level.
I always refer to hex numbers that way, reading A-F as if they were normal digit names, it's way nicer than "Cee Zero Zero Zero". I avoid that in the xx1A-xx1F range, though, because "Ay-teen" is confusing. Works in my native language, though.
This actually sounds like a cool game concept. Rewriting the code while playing. A bit like the matrix. I do remember a pc game that had the player fighting against a propagating computer virus and the levels where based on the folder structure of the actual computer that it was running on. I never got to play it myself but it was fascinating reading the back of the bo as it promised weird battles where the virus could get control over the settings files and mess with the input and graphics as you were playing. It probably wasn't that good, but the concept and idea always intrigued me.
jmalmsten Yeah, that's a crappy came to today's standards. That doesn't really hold up very well today lol. You can still see it on this guy's channel, he reviews viruses on different operating systems using virtual machines. Search it on UA-cam!
There are two games like this. First the one written above and the other one is called Lose/Lose for Macs. In the latter, killing an enemy literally deletes the file of the HDD. Needless to say, this game is now deemed Malware.
there is also the opposite case in a part of the game DDLC (a game character opens up a file dialog for you and tells you to delete a file which will erase another character's existence from the game, which is true and that's what happens). sadly, this only works within the scripted part of the game, and messing with the files in any other way like adding them back, editing them, deleting more of them, or adding new ones that weren't there before, won't actually have any discernible effect on the game. not even crashing it.
Mario is now canonically a god, he can go through the written rules of the universe in the form of level tiles and modify them as he pleases. But Mario is also a chaotic god, as he can leave a wake of destruction and disarray in his path.
I always had an idea of what was going on, but it's very nice to get a detailed explanation like this! The audio sounds like you're giving a talk in a large room xD
+GreyJolly They're both indeed glitches of the same nature, where the lack of memory protection on the GameBoy means that the playsim will gladly accept data as tile data, even if it's half the memory map away from where the tile data is _supposed_ to be stored.
+Trurl I'm not too familiar with those, but I think you don't actually go into non-map data with that glitch. It's moreso that all dungeon maps are stored in the same place, even those from different dungeons, so going out of bounds results in ending up in an entirely different dungeon - it's just not the easiest to tell, because the game doesn't know to load the right graphics ( or palette on GBC ), so you end with the right layout but it just looks like a complete mess of incorrect tiles. I might be confusing this with what happens in another Zelda game, though. I'm pretty sure I'm thinking of one of the GB Zelda games, at least.
Arctangent No I think you are right, I believe the layout actually is fine and just the graphics look broken. Though the glitch dungeons behave different in the DX version I believe, so they must have changed something. Regarding the other GB Zeldas, I think neither Oracle of Seasons nor Oracle of Ages have known glitch areas.
The reason is because old consoles generally used unmanaged code as opposed to managed code. When a game using managed code tries to read data that it isn't supposed to, it just crashes.
I just found out about your videos, and I've gotta say, these are some of the most informative and well made explanations of glitches that I've seen! Your animations are amazing at showing the viewer what is happening in the game and you really know your stuff when it comes to how these games' code works! Keep up the great videos man! : )
Meatpockets maybe Mario can knock on some blocks in binary to tell the princess in the past to not get captured by Bowser. (Even though she's not in this game...)
Maybe they can add it in GTA 6 traversing in the code and changing the 256 gbs of data manually .....when cheats and haccks are not game breaking enough.
Fantastic work, as always. I'm the author of an editor for WL1 (which use same engine as SML2) and since I had to dig around to reverse level format there is a bunch of things you explained that I already found out but this was a great reminder.
There's all sorts of amazing comments down here, but I want to both let you know A) I can hear the echo from your surroundings, and B) It actually doesn't detract from your video at all. In fact, dare I say it made me more interested? Maybe that's a stretch. Still, great video with amazing content! Love it!
Absolutely fantastic video, man. No idea how I've never heard of you until now, but I'm glad I now have! Your explanations and visualizations are awesome. Per my own experience, I fully understand just how much time and effort you've put into this. I really appreciate your efforts and look forward to going back through your previous videos now. Well done!
Silly nitpick - audio person here. There's a reverb I'm hearing that I haven't heard in your other videos. If that was intentional my suggestion would be to not employ that going forward. If it's not intentional, some mild noise reduction may help. Sounds good otherwise, just a bit distracting. Great explanation!
I love how the way you describe this glitch makes it sound like something from Wreck-It Ralph or some shit, but it's actually entirely accurate to a real game's technical functioning.
Interesting. I'm amazed how you were able to create an image of the entire memory like that. Heck at one point I wanted to make maps for Blaster Master: Enemy Below and was screen shooting and pasting things together; that took forever and I gave up.. Anyway, I'd like to see Metroid II's "secret world" the same way you did this for this game. I'm not sure if anyone has ever mapped the whole thing out before..
You've just made a game I didn't even like that much, into the most interesting game I have ever come to knowing. THIS is how you explain a glitch! This is probably one of the most well made videos I have ever had the pleasure of seeing.
What other kinds of games do this? If any of you ever find something like this, post it to UA-cam under "Memory manipulation" or some title. I'd like to see how many games people can break like this. Even if it's seeing the RAM but not modifying it. It's creepy. You're so used to playing 3D/HD games, imagine if a 3D/HD game spat out tons of textures in your face? It's obviously not possible in 3D games, or HD games. But it's weird seeing the whole RAM, ROM and other bits and pieces of memory in 2D ones. I'll settle for that.
Man, this gets existential. Imagine if we could glitch through the world in real life and start literally punching atoms to reprogram the universe itself. Maybe that's what DMT is?
That was my thought exactly. Maybe that's where lucid dreaming and Astral projection come into play, or looking for the cracks in reality. That's what physicists are doing. Trying to learn how to hack existence.
Nice job on this video, absolutely loved the visuals! It's clear that you put a lot of time and effort into this explanation, and everything made perfect sense as a result. Cheers man.
My goodness. That visualization of Mario traversing the address space sent shivers down my spine. It was incredible. Thank you for doing it. This level of quality and dedication is almost unheard of in UA-cam. Bravo!
I barely thumb up videos but you did such a good job and took the effort to learn and explain all of this that you deserve it. I hate it that some people put in the bare minimum effort and get rewarded while people like you do but don't.
Mario Land 2 was my first Mario Brothers game and it's honestly still fun to this day. Great level design, fun power-ups, fun bosses, and amazing music.
ive only started watching this channel recently and i love it so much!!! such interesting topics and explained so plainly that theyre easy to understand :-) and your voice is very nice to listen to, ive binge watched all your videos! very very underrated channel
Wario: "OBEY WARIO, DESTROY..." Mario, after glitching through time and space: "Surprise-a!" Wario: "...Why do I even bother? I guess I'll start my own business back home in Diamond City or something..."
This was a fascinating, informative video. The work you put into editing this helps immensely in helping viewers understand what's going on. I never knew about this glitch! Does the "secret worlds" glitch in Metroid 2 work in a similar manner? I'd love to see a video about that!
imagine falling out of bounds would let you access the other parts of ram on your pc... punching blocks in minecraft is changing hex values in windows and other programs :D probably the fastest bluescreen ever, but you can still dream, right? ;)
Thanks for the explanation of the memory and the meaning of abbreviations like wram. I was just learning about this and found that very helpful. If anyone is interested, BGB will let you view the RAM, ROM, and assembly code in real time.
I remember this area from doing the bunny fly over glitch, it feels so surreal seeing it finally mapped out and explained, like the wild west being over somewhat
Great video as always! I just have to point out that you're incorrect at 2:30. There should be 65,536 unique bytes, not 65,535 as you said in the video.
Having the memory map up and following Mario as he moved through the memory space was a fantastic addition to the video, and really helped visualise where the runner was going.
I can't click Like on your post, because it's 255, and I'm now afraid the value will wrap around to zero likes :(
It'll cause an integer overflow and allow you to edit the original comment.
Clint Hobson
UA-cam patched it!
Pro Odermonicon TIL!
I enjoy this trend of commenters explaining the obvious. Something tells me that he didn't put it there for the sake of his health.
The hardest custom level ever built: the ROM itself.
lol
Haha! I always like a bit of ROMCom.
Mario RogueLike. The level changes, and moving carelessly will permakill you.
MARIOLAND ZONE
lol nice one...XD
9:45 "Falling through the entire adress space" is such an awesome phrase in this context.
I was looking for this comment!
sounds like something a nerd would say if he and a bunch of others got stuck in a game
Mario is like a NOP slide
Super Mario Land 2: Mario finds out he lives in a game, travels through the memory to portal his way out! Almost like the Truman Show.
Or Tron.
Or Matrix.
Or the matrix
Or the Matrix movie
That's some Doki Doki Literature Club stuff right there...
Holy shit that's freaky.... He's literally bashing the code around... And I thought that part in Wreck-it Ralph was far-fetched.
That's nothing. On AGDQ, they showed you can reprogram Mario World in somewhat the same way (code manipulation by using glitches) and reprogrammed the entire game into Pong. Just by playing the game.
They programed a primitive editor too that way, then edited the level with said editor
I remember one year where they made a chat interface and used the controllers as input data and showed the live twitch chat
You can do some crazy shit when you don't have memory safety
Wow you guys, this is so interesting
They even re-programmed A Link to the Past to play Super Mario 64 and Portal (both as videos) and even a Skype call, using Megaman 1 and Super Mario Bros 3 audio to create Stereo audio.
I must say, I absolutely love the visualization and representation created for these videos.
Your ability to show abstract concepts, such as data maps, memory layouts, matrices and vertices, and assembly procedures as understandable images is marvellous, and I always look forward to how you make the inner workings of a game visible.
I was hoping there'd be a full map of the garbage tile world, and my wish was granted and even surpassed by the overview visuals of Mario moving through the world.
Thank you for these great videos, and I hope to continue seeing them in the future.
I completely agree! I also love what he did at 8:19, where he showed how the tiles would look like if the game updated them at every change instead of only when they're drawn to the screen. That can't have been easy. I assume he either modified or added his own assembly code at the right place in the ROM, or did it with lua scripting. Either way it's impressive and the effort is very appreciated!
Agreed, that's a great way to show the logic underlying the game's behaviour, which is usually invisible since tiles are only loaded once.
I suspect it was either done by video post-editing, or modifying the level loading routine so the entire screen is reloaded from memory on every frame.
Alex283 Can't agree more!
Ditto!
Agreed. Without it, the video wouldn't be remarkable because it'd be too hard to follow.
Mario, the man who travels through parallel universes, can literally hold the concept of victory on his hands, get the fruit back and walk through the code of reality while also keeping his job as a plumber)
In oddesey I heard he got fired sadly
and he STILL gets the fruit back! (im happy to see another scykoh fan lol)
If game logic was a part of vs. debating, Mario would be literally universe shattering.
@@silvertotodile6958 Given that this, Mario 3, Mario World, and Yoshi's Island have ACE which allow anything possible within the hardware, Mario basically becomes a god, with feat-backed omnipotence.
What do you mean "also?" My understanding is that this is what plumbers do
Why haven’t people put this much effort into their content before wow. THIS is how you explain something complex to literally anyone! This could literally be used in a classroom and it’s genius and I applaud you man. Great idea for a channel
You've never seen a video that is this in-depth on UA-cam?? I've seen hundreds.
Tell me what your interests are and I'll try to direct you to some quality vids :)
Watch game theory they have in depth game theorys, mostly just video game lore
You forgot the question mark.
@@pgarcia17 (except when they get everything wrong and post cringe)
Mario in Memory Land
TheIncredibleMasterE underrated comment right here!
Mario and Luigi Bowser's inside story / Dream team?
@@catspawsminecraftgaming9753 vram is forest of illusions
Fd
*Super Memory Land 2: 6 Golden RAMS*
Good times! I used to program professionally on the GameBoy / GameBoy Color in hand written Z80 assembler. Memory bounds checking was often ignored (or removed on release builds after thorough testing) to minimize the number of instruction cycles per frame. One bad address offset or an improper bank switch and the illusion of a game world is out the window and your well into stomping on random memory land. Good video, nicely explained for the new generation. I'm glad there are still folks that appreciate working on these systems.
@@RandomNameLastName811 it does have a bit of a "damn kids" "my generation is better than yours" aspect, but its very tame.
I don't think he came off that way at all... I'm glad that he shared his insight. It's rare that you get to directly correspond with actual console developers from back in those days.
@@kargaroc386 I have no clue where you get that.
@@RandomNameLastName811 it doesn't, snowflake.
@@RandomNameLastName811 What's weird about that?
Don't you hate it when you are just taking a nice stroll down the memory map and then accidentally break something along the way? I hate when that happens.
"this broken block will cause a crash later.."
One theory of dreams is that our brains are making sense of garbage data and we experience that as something semi coherent we can identify with. Ergo: This is inception: we are inside Mario's dream
Franz Pattison
Nah, we arent inside Mario's dream. I mean, where's the shy guys? The vegetables? The frog?
funni n original maybe he's not so anxious over his day job that he dreams about it lol
the same could be said of the reality we experience as well; its possible that everything in "real life" is simply a complex metaphor created by our brains to make sense of whatever really exists
Well, what Mario's experiencing here is _raw_ data. It is what it is. Our dreams are processed data.
Dreams are semi-processed though. You can only make a shape out when you focus on it, really hard.
You know what's crazy? THESE OUT OF BOUNDS areas are, to me, literally the stuff of nightmares. I dunno what it is about seeing random glitchy ROM and having an actual, correctly functioning game sprite traverse it.
It's like the universe exploded and the gateway to hell has opened up....digitally.
Yup, same with finding unused or unfinished areas of games. I think it's partly the fear of the unknown, partly the uncanny valley and partly a weird extension of body horror. Fear of the unknown plays into it because we don't know what we'll find in these strange areas, or what effect our blind mucking about will cause. The uncanny valley plays into it because the controls and player sprite are familiar and we can recognize what the glitched tiles are supposed to be, but it's unfamiliar enough to trigger subconscious anxiety and tension, which leads into the extension of body horror; we know how these pieces are supposed to go together and behave so seeing them in such a corrupted state is akin to seeing a body part damaged or mutilated as with a broken bone. It's extremely unsettling to our brains as we are creatures of comfort, order and routine, so anything that shakes any of those three things up is unnerving.
I got that feeling when I accidently glitched through a wall while playing the original Doom and I got the ghost effect when there isn't a skybox. I named the save 'GLITCH WORLD'. At the time I didn't know you could just use the noclip cheat and find it in every level though haha.
There's the "beta quest" GameShark code for Ocarina of Time. (Not the ROM hack.) Playing with that as a kid, not knowing how it worked, it felt so much like the video game version of a dream. Everything kinda makes sense but also doesn't, things don't line up right...
we aquired somehow a weird fear of graphical glitches - and then a game like Doki Doki Literature Club comes around and plays with this fear.
As a kid, these kind of glitches terrorized me. It really creeped me out, even on a physical level I would feel terrible if I had to witness it. This one is kinda soft though. I think the worst offenders were NES cartridges.
2:22 , I was programming a game on a Ti-84 plus SE (it’s a calculator you can make games on) and made an 8-bit tilemap test. The game was pretty straightforward you could move around and not bump into trees or house tiles, however I actually glitched out of the map and after a bit of wandering I started seeing random tiles scattered everywhere looking exactly like this. It’s so cool how a calculator and console run so similarly
I feel that I am no closer to understanding the technical wizardry of retro consoles having watched all of your videos. But I am still here, and eagerly awaiting your next upload!!
AlexElectric9001 spend some quality time with an emulator and debugger to get a hands on feel
AlexElectric9001 just lookup how cheat engine works. Its not just for hacking games. It is a memory manipulation tool/debugger.. its all process of elimination.
If it helps, no one has to "read the matrix" code like this. They develop level editors etc. so that no one has to deal with these strange arcane values directly, for very long anyway.
This is awesome. It makes me kind of sad that game programming has become so advanced. Don’t get me wrong, I love modern games - but these kinds of hacked-together solutions are long gone and we don’t get to see things like this anymore.
That's the beauty of legacy consoles. Witnessing more being done with less is a wonderful thing. Real work was poured into working with the hardware's limitations while making the games look and play fantastic.
It would be cool to see a modern take on a game that you could still do memory or even RNG manipulation on. If companies put a functional mechanic in a platformer or dungeon crawler that mimicked those kinds of things I would honestly love to try it, but since that's probably not what the average consumer wants I doubt that'll happen anytime soon.
I find it interesting that even on rather modern games, it is often still possible to glitch though a wall if you find out how to do it. E.g. in Zelda Wind Waker, there is a video on how speed runners tried really long to glitch through a double wall to Hyrule castle early in the game. They eventually managed to do it. I don't get why it wasn't simply impossible. To be fair, maybe Wind Waker is still too old, and walls in modern games are really impenetrable.
To be fair, it's not that the hacked-together solutions are gone, rather - the hardware, operating systems and programming languages are now clever enough to fail the game in a predictable way when something unexpected occurs.
Homebrew communities and fantasy consoles like PICO-8 keep programming with limitations alive. I recommend trying it sometime if you find exercising your brain with those kinda programming challenges fun.
Mario travels through the floor and lands on actual memory. In this sacred land of unstable volatility, mario immediately gets the urge to spin and break as many blocks as he can...
Small correction, it's 65,536 bytes, not 65,535. 65,535 just happens to be the highest VALUE for an unsigned 16-bit integer, but it's stil 65,536 because of 0x0000.
Yaro Kasear wow... To see that level of technical detail. I am envy of you.
Agustin Goicoechea It's actually basic coding knowledge but an easy mistake. Good thing to note, regardless.
@@SylveonTrapito And 65536 is the same memory number as the Commodore 64, in exact numbers!
Now that's an off-by-one error
Yaro Kasear Not relevant at all but fine
Speedrunning through the game's memory? Now that's amazing.
Hey this is a great niche for a channel! Super interesting video too! Thanks for making this.
I love this glitch to death because of how this can be interpreted. Mario is literally *travelling through the very fabric of his reality,* and it's completely unintentional. It's like discovering god's workshop. I kinda wish ACE looked more like this in other games, instead of just being a bunch of inexplicable actions before suddenly cutting to whatever you did.
2:35
65536* bytes - byte 0000 matters too!
Whoops, you are so right.
I was looking for this comment
Game Boy glitches in general are always really fun, but this one was always the one that fascinated me most of all. Just the idea of having your character, in a very literal sense, explore the game's memory space and directly change in-game variables simply by interacting with it as usual... I mean, there must be an actual game concept somewhere in here, right? I would totally play a game based on this.
Woah. This sparks some thinking about recursion.
I wonder if this also means we can use this to change the value of Mario's position to get him back on map, just for the sake of it.
Imagine someone playing through this game, accidentally doing this glitch, then making their way to that value, and changing it to teleport back to map. lol
That would depend entirely on if the associated tiles are breakable, and even then, the value that his position could be set to would be limited, and would not necessarily lie within the level.
Yeah, I know.
But still, that'd be cool.
I wonder if this means you could "Jailbreak" Super Mario Land 2 in a similar vein to how Sethbling did with Super Mario World. It seems you might be able to, in game, read, write, and execute, arbitrary code anywhere in the RAM or ROM since Mario, in theory, has access to all of it.
True, though many of the tiles couldn't be changed in-game because Mario can't interact with them. Only certain values like 00 could be changed because they're displayed as tiles that Mario can interact with, so I think this would be limited in what you could do with it.
Well, Mario doesn't have full access. Some of those blocks are unbreakable, some are simply 00 i.e. he can just walk through them and can't interact with them too. And even then, he can't change the values to whatever he wants.
Although it's probably possible to change RAM around a little to use other properties for the blocks and change them that way, but that's not really likely.
The problem is the way SethBling does codes like that is that he has extremely fine control over the values that get written. They rely on how far along a sprite is scrolled, which you can do down to the pixel. And then shenanigans execute that sequence as an interpretable code.
In this, it looks like the player can only change one block into another block, if _that._ It is as Architector #4 says. They have no fine control. No ability (as of yet) to orchestrate a sequence of objects that "coincidentally" can be executed as code. Only Mario and his stupid brick-busting feet.
+Noxedwin Tepes
Wait, can entities in Super Mario Land 2 exist off-screen? If so, maybe we could orchestrate them up in a way similar to SethBling's approach, then jump down into RAM and maybe flick the right block to tell it to execute from that spot of RAM where entities are stored?
The chance of this being possible are abysmal, but what if.
:o
I seriously doubt that there is even a possibility. When you change a tile or bonk a block in that memory space, you're only *changing* a value, not reading it.
I don't claim to know how arbitrary code execution works, only my understanding of it thus far. So anyone with actual knowhow can pipe up whenever they feel like it.
But you have 65535 discrete bytes of memory. That's 65535 blocks (inclusive of level geometry and that mangled wraparound beneath the level).
*You would need:*
• A tile whose opcode representation is that of a Jump instruction.
• Have that tile, and *only* that tile, execute on VBlank (the brief window before the picture updates each frame). Or, at the very least, have other executing tiles not change this parameter or hang the CPU or anything like that. Arbitrary code execution often relies on the CPU not being picky enough to ragequit when it gets certain kinds of nonsense.
• Four tiles (or so) next to it that, using the same rules as the above point, corresponds to "that spot of RAM where entities are stored" (people generally refer to that as the "sprite table" or "object table" or some variant thereof).
• A set of entities that Mario can pick up and put down without him destroying them or being hurt by them (in SMW, Koopa shells do this because you can stomp them to pacify them, and then gently put them down).
• The ability to place those entities in a way that represents the operands to give the Jump instruction a destination address (jump to "this").
• KNOW what order those entities exist in the table in order to form a coherent address.
• The knowledge and ability to place them correspondent to the place in the program you want to go. This could be the end credits script, the new game script, or even just an instruction to make the GB speaker beep at C-flat for 5.68 seconds. Or 5.69 seconds. Or B-sharp.
• For those entities to NOT DESPAWN or change in any way while Mario is not using them (in the case of Koopas, for them to not uncurl and move about on their own), as that would obliterate the code.
And _probably_ half a dozen more variables. The chances of these all being true are not merely "abysmal", they're completely incomprehensible. The human mind is not structured to understand a number with that many zeroes in it. That's the sort of number where smarter people than me use the letter "E" in the middle to describe how bloody long that number is. Boffins have to *cheat* to write numbers like that.
As a person of science, I can't say "it's impossible" with a clear conscience. But it's so *freakishly unlikely* that trying to find a number small enough that's still bigger than zero to represent it is exhausting me far more than it is for me to write this post explaining how bollock-crushingly improbable that is.
If anyone could make a video on UA-cam of them placing an undoctored _Super Mario Land 2_ game pak in an unmodified Game Boy and, step-by-step (in a way that a layperson could replicate and come to the exact same result, accounting for all confounding factors like RNG), create an instruction using the memory zone and sprite table (or some other versatile and easily-manipulable part of the RAM) to control what the game does or where it sends the player in a way that can be written down on a chart and peer-reviewed, I would fear what they could do next.
Given enough time and dedication, it might happen. Which is why I can't say it's impossible. I will say "it's certainly impossible *now*." There are too many factors that need to be perfectly aligned. Down to 1/65535. Multiplied by however many variables there are.
You would be better off building a romhack of _Super Mario Land 2_ where the only change is a single block that turns into an executable Jump instruction leading to a static operand which is the end credits. But they already did that. It's that block on the right, several layers down that morass beneath the level.
C thousand... I never heard it referred to that way before.
I always refer to hex numbers that way, reading A-F as if they were normal digit names, it's way nicer than "Cee Zero Zero Zero". I avoid that in the xx1A-xx1F range, though, because "Ay-teen" is confusing.
Works in my native language, though.
animowany111
Works in Hebrew too!
@@animowany111 bdziesiąt :p
In hexadecimal sense that is a thousands place.
This actually sounds like a cool game concept. Rewriting the code while playing. A bit like the matrix.
I do remember a pc game that had the player fighting against a propagating computer virus and the levels where based on the folder structure of the actual computer that it was running on. I never got to play it myself but it was fascinating reading the back of the bo as it promised weird battles where the virus could get control over the settings files and mess with the input and graphics as you were playing. It probably wasn't that good, but the concept and idea always intrigued me.
jmalmsten Yeah, that's a crappy came to today's standards. That doesn't really hold up very well today lol.
You can still see it on this guy's channel, he reviews viruses on different operating systems using virtual machines. Search it on UA-cam!
jmalmsten check out danoct1
Baba is you
A game where you literally change the behavior of things to solve puzzles
There are two games like this. First the one written above and the other one is called Lose/Lose for Macs.
In the latter, killing an enemy literally deletes the file of the HDD.
Needless to say, this game is now deemed Malware.
there is also the opposite case in a part of the game DDLC (a game character opens up a file dialog for you and tells you to delete a file which will erase another character's existence from the game, which is true and that's what happens). sadly, this only works within the scripted part of the game, and messing with the files in any other way like adding them back, editing them, deleting more of them, or adding new ones that weren't there before, won't actually have any discernible effect on the game. not even crashing it.
Your videos are soooo good. Very nice visual representation, must take a lot of time to put together. I appreciate it!
Mario is now canonically a god, he can go through the written rules of the universe in the form of level tiles and modify them as he pleases. But Mario is also a chaotic god, as he can leave a wake of destruction and disarray in his path.
The production value in this I find really great. And the explanations were well done too. Thanks for making this!
Super interesting, and the memory “world map” you made makes it really easy to understand. Thanks for the video.
I always had an idea of what was going on, but it's very nice to get a detailed explanation like this!
The audio sounds like you're giving a talk in a large room xD
It seems like some types of glitches are common in old games for example this really looks like the glitch towns in pokemon red/blue
+GreyJolly They're both indeed glitches of the same nature, where the lack of memory protection on the GameBoy means that the playsim will gladly accept data as tile data, even if it's half the memory map away from where the tile data is _supposed_ to be stored.
Arctangent Do you know whether the same type of glitch is responsible for the glitch dungeons in Zelda Link's Awakening?
+Trurl I'm not too familiar with those, but I think you don't actually go into non-map data with that glitch. It's moreso that all dungeon maps are stored in the same place, even those from different dungeons, so going out of bounds results in ending up in an entirely different dungeon - it's just not the easiest to tell, because the game doesn't know to load the right graphics ( or palette on GBC ), so you end with the right layout but it just looks like a complete mess of incorrect tiles.
I might be confusing this with what happens in another Zelda game, though. I'm pretty sure I'm thinking of one of the GB Zelda games, at least.
Arctangent No I think you are right, I believe the layout actually is fine and just the graphics look broken. Though the glitch dungeons behave different in the DX version I believe, so they must have changed something. Regarding the other GB Zeldas, I think neither Oracle of Seasons nor Oracle of Ages have known glitch areas.
The reason is because old consoles generally used unmanaged code as opposed to managed code. When a game using managed code tries to read data that it isn't supposed to, it just crashes.
The link between the garbage data and the memory is the reason this is so fascinating
8:18 This part showing what it would look like if the BG refreshed each frame is really impressive. Your video wizardry knows no bounds.
I just found out about your videos, and I've gotta say, these are some of the most informative and well made explanations of glitches that I've seen! Your animations are amazing at showing the viewer what is happening in the game and you really know your stuff when it comes to how these games' code works! Keep up the great videos man! : )
Watching Mario traverse the game’s rom reminds me of the 5th dimension in the movie Interstellar.
Meatpockets maybe Mario can knock on some blocks in binary to tell the princess in the past to not get captured by Bowser. (Even though she's not in this game...)
Maybe they can add it in GTA 6 traversing in the code and changing the 256 gbs of data manually .....when cheats and haccks are not game breaking enough.
NO TIME FOR CAUTION
Fantastic work, as always. I'm the author of an editor for WL1 (which use same engine as SML2) and since I had to dig around to reverse level format there is a bunch of things you explained that I already found out but this was a great reminder.
The visualization of Mario traveling through the memory map in realtime was incredible! Excellent video.
It's surprising just how many old video game visual or level glitches revolve around incorrect parts of the rom being loaded as part of the level
There's all sorts of amazing comments down here, but I want to both let you know A) I can hear the echo from your surroundings, and B) It actually doesn't detract from your video at all. In fact, dare I say it made me more interested? Maybe that's a stretch. Still, great video with amazing content! Love it!
Absolutely fantastic video, man. No idea how I've never heard of you until now, but I'm glad I now have! Your explanations and visualizations are awesome. Per my own experience, I fully understand just how much time and effort you've put into this. I really appreciate your efforts and look forward to going back through your previous videos now. Well done!
Silly nitpick - audio person here. There's a reverb I'm hearing that I haven't heard in your other videos. If that was intentional my suggestion would be to not employ that going forward. If it's not intentional, some mild noise reduction may help. Sounds good otherwise, just a bit distracting. Great explanation!
I know this is like two years old, but it sounds like, in this video, he is in a big room with an echo.
Your explanations and editing skills are unreal (and probably required a lot of time and effort). Kudos!
I love how the way you describe this glitch makes it sound like something from Wreck-It Ralph or some shit, but it's actually entirely accurate to a real game's technical functioning.
Interesting. I'm amazed how you were able to create an image of the entire memory like that. Heck at one point I wanted to make maps for Blaster Master: Enemy Below and was screen shooting and pasting things together; that took forever and I gave up..
Anyway, I'd like to see Metroid II's "secret world" the same way you did this for this game. I'm not sure if anyone has ever mapped the whole thing out before..
Imagine someone using this trick in order to custom-make a brand-new level, or to re-unlock the first level of the game.
imagine having to traverse through a shifting mass of reality to change the course of the universe
The quest to fix the McDonalds icecream machine
You've just made a game I didn't even like that much, into the most interesting game I have ever come to knowing. THIS is how you explain a glitch! This is probably one of the most well made videos I have ever had the pleasure of seeing.
What other kinds of games do this?
If any of you ever find something like this, post it to UA-cam under "Memory manipulation" or some title. I'd like to see how many games people can break like this. Even if it's seeing the RAM but not modifying it. It's creepy. You're so used to playing 3D/HD games, imagine if a 3D/HD game spat out tons of textures in your face?
It's obviously not possible in 3D games, or HD games. But it's weird seeing the whole RAM, ROM and other bits and pieces of memory in 2D ones. I'll settle for that.
If you recreate that but in a 3D space, you could get similar results.
I think the Sonic 1 special stages and Pokemon Gen 1 do that too.
Mariann Mariann pokémon has so much glitch areas
The glitch worlds in the original mario are like this too
Man, this gets existential. Imagine if we could glitch through the world in real life and start literally punching atoms to reprogram the universe itself. Maybe that's what DMT is?
That was my thought exactly. Maybe that's where lucid dreaming and Astral projection come into play, or looking for the cracks in reality. That's what physicists are doing. Trying to learn how to hack existence.
This brings a whole new meaning to "memory lane"
Nice job on this video, absolutely loved the visuals! It's clear that you put a lot of time and effort into this explanation, and everything made perfect sense as a result. Cheers man.
My goodness. That visualization of Mario traversing the address space sent shivers down my spine.
It was incredible. Thank you for doing it. This level of quality and dedication is almost unheard of in UA-cam. Bravo!
Mario's Adventures in Coding
Mario Teaches Memory Addressing
Thank you for making these animations, they make everything much more understandable!
at 6:20 you could just write the rom in assembly based on the blocks that are there. Well, that is as long as there would be only 1 type of ?-block.
PieMa Gaming This is so interesting. The fact that Mario can run around ON the code and bump it around is such a cool concept.
Interesting, as usual. Greetings from Italy :)
I barely thumb up videos but you did such a good job and took the effort to learn and explain all of this that you deserve it. I hate it that some people put in the bare minimum effort and get rewarded while people like you do but don't.
It's always mind boggling to find out something completely new about a game you have played through SO MANY TIMES over 25+ years!
I applaud you, sir!
This was awesome! I loved the live updating memory map !!!
I've just started learning a bit about assembly on the Gameboy and this video is a really awesome way of showing the memory map. Keep it up!
so my question is, what about that single interupt number? what happens if Mario interacted with it?
That may shut down the LCD screen, and damage the hardware if it is done outside of V-Blank.
It's the interrupt enable register. The bits in that number correspond with which ones are enabled.
Now this is the real mario maker. Program your own levels in mario by playing mario!
I've never played or owned Super Mario Land 1 or 2. This is all new, thx.
So, as far as your SNES functionalities series is going, how ya doing?
Mario Land 2 was my first Mario Brothers game and it's honestly still fun to this day. Great level design, fun power-ups, fun bosses, and amazing music.
Mario Land 2 is my favorite GB game, hands down. Both are worth a playthrough though!
ive only started watching this channel recently and i love it so much!!! such interesting topics and explained so plainly that theyre easy to understand :-) and your voice is very nice to listen to, ive binge watched all your videos! very very underrated channel
Another solid explanation on the inner workings of this great game and the Game Boy itself. Thanks for uploading this.
What a wonderful video. It is as amusing for me as an adult as it was the game itself 25 years ago.
Y'all really need to get better at clickbait or marketing or something because your vids deserve a bigger audience. Very well done as always dude!
Mario... Have you been messing with the code again?
Wario: "OBEY WARIO, DESTROY..."
Mario, after glitching through time and space: "Surprise-a!"
Wario: "...Why do I even bother? I guess I'll start my own business back home in Diamond City or something..."
All the visualisations you added to this really helped the explanations. Awesome video!
Wonderful explanation, graphics, and composure throughout the video. Very impressive!
Omg that’s a lot of work you just put in for this. Appreciate it
I just watched that GDQ video which featured this a few days ago, so the timing on this is perfect.
Thanks so much for this, it helps me visualize how custom code was made for Super Mario World as well!
I love how you can show us Mario moving through The Matrix... Mario is Neo!
I love these videos. I don't understand all of it but you do such a good job explaining it, it's just super fascinating.
Serena Samborski Yeah, this game is a rare case.
This was a fascinating, informative video. The work you put into editing this helps immensely in helping viewers understand what's going on.
I never knew about this glitch! Does the "secret worlds" glitch in Metroid 2 work in a similar manner? I'd love to see a video about that!
This is the best visual explanation of the SML2 credits warp glitch. Thanks a lot!
2:19
RGMEX here: We'll explain this in a bit
Also RGMEX: I'm a one man crew
whaet?
This is absolutely amazing. Thank you so much for making these videos, and I hope you continue to do so. Instant subscribe.
Each of your videos is just amazing. Glad to have found your channel!
imagine falling out of bounds would let you access the other parts of ram on your pc... punching blocks in minecraft is changing hex values in windows and other programs :D
probably the fastest bluescreen ever, but you can still dream, right? ;)
I'd love to see runs with the screen updating every frame like that.
SEIZURE ALERT!
Probably one of my favorite glitches of all time.
Thanks for the explanation of the memory and the meaning of abbreviations like wram. I was just learning about this and found that very helpful. If anyone is interested, BGB will let you view the RAM, ROM, and assembly code in real time.
Amazing video! Now I finally (somewhat) understand what I'm doing in the speedrun!
I remember this area from doing the bunny fly over glitch, it feels so surreal seeing it finally mapped out and explained, like the wild west being over somewhat
Omg i think i fell in love with this kind of videos
Finally an RG Mech X video! Keep up the good work. I always wondered how this glitch worked.
Wow ,that’s some really really some impressive technical stuff.
I love these videos so much, they're always so informative and interesting. :)
Where No Plumber Has Gone Before
Great video as always! I just have to point out that you're incorrect at 2:30. There should be 65,536 unique bytes, not 65,535 as you said in the video.
Very interesting pieces of work you hand out. Cudos and best wishes for this year.
Just found your channel today. I must say, I only have half a clue whats going on, but man is it cool.
these videos are amazing. the attention to detail... 😚👌
The amount of work you put in here is amazing. Well done.
Fascinating! Thanks for putting so much detail into this explanation!