The next video in the series will be exploring the really glitchy levels, but if you'd like to take a looksie yourself, I've made a page that has maps of all 128 levels, which includes all of the glitch levels and all of the Frankenstein levels! You can find it here: rgmechex.com/tech/smb1levels/
I'm not sure if it was intentional, but I REALLY like how you managed to get the graphics at 0:33 to be a perfect pixel for pixel recreation when watching in 4k on a 1080p screen, everything just looks so sharp and NICE, IDK how else to describe it, it is a perfect 1x integer scale of the in-game graphics. The only downside is that at 1:45 when the levels shift around, they loose that crispness, I assume it would look just as sharp on a 4k screen, the levels are probably just half a pixel off on a 1080p screen, but besides that really nice work!
You lost me around the middle of the video, not because the information was too complex, but because I was distracted by how clean everything looks. I kept wondering how crazy your After Effects compositions must look like and how much work you put into it and losing track of what you were actually talking about.
There have been *countless* videos about the "minus world" on RUclips and I have never found one that goes more in depth than "It's actually world 36-1, and it loads invalid data". This is the first time to my knowledge that somebody has actually stepped into the process of *why* a particular world number gives you a certain result.
@@thegamingchannel7110 lol that's what he said, after 34 it goes blank. It's actually so good to feel things making sense with my stupid trading school brain
I think the craziest thing in this vid is realizing, after being intimately familiar with this game for decades, that there really are only two full underground and water levels each in the entire game's 32 levels
What’s bittersweet about glitches like this is that they are next to impossible on modern systems due to memory protection. Amazing for cybersecurity, but terrible for glitches. Everything will just crash or boot you if you corrupted or tampered with a memory address
Yea you have to be very very careful with memory editing, and even then most of the time you can't change things at this level. The programs are just too complex, you'd need to change tons of things at the same time to prevent things from disconnecting and just breaking down.. Cheat Engine is a great tool for playing with memory editing on modern programs, but also kinda highlights how easy it is to brick stuff, and how hard it is to do things like reading graphics data as game logic or something.
@@Charmlie.R and might be malicious The cheat engine website has been hacked for a while and a lot of the newer versions are now malicious The older legit versions archived pre-hack aren't that great either because the installer might install other unwanted software if you just click the next button and not read what it's saying
@@Xnoob545 ; That's why I don't usually use the default installers for some software. Cheat Engine is free open source software, meaning that (if you really wanted), you can build it yourself from source. This allows you to bypass simple AV detection, and to know for sure you aren't installing a hacked version.
Nowadays, you have the infamous glitch for Elden Ring where you can change your map number and coordinates at separate times, making you warp to areas of the map you are not supposed to be in.
I worked out World -1 (actually 36-1 since 36 corresponds to a blank tile). First, get the 36th byte in the start-of-world table (it overflows into the level table) which is $33 (51 in decimal). Then, get the byte of index #51 of the level table (it overflows into the sprite-data-pointer table) which is $01 (00 00001 in binary). This corresponds to water (00) level #1, which is used by W2-2 and W7-2.
7:00 I personally like the way this level looks, a water castle seems like a really cool concept for a earlier world. Too bad it isn’t in the actual Mario games
@@nickwallette6201 maybe have a different boss, I’m sure Mario wouldn’t fall for bowsers disguise 7 times in a row. A giant squid or a large fish could work
I am REALLY EXCITED to learn about SMB1's compressed level format. It's one of the few "obvious" topics I haven't yet seen covered by the RUclips SMB faculty 🎓
I've been interested in this game's glitched levels for as long as I can remember and it's nice to finally get an in-depth explanation into exactly why they look the way they do.
You know what, I've seen these glitched levels many times before. I mean, the minus world has probably been known about for decades. But not once have I heard anyone attempt to explain why the levels look like what they do. So thanks for finally explaining it!
Retro glitches are so amusing to me because of how literal assembly code is. Modern games will lock up, or crash if they are given something they don't expect, or will simply refuse to do anything. Whereas retro games will quite happily try to load sound effects as level data, or treat character x and y coordinates as look up addresses.
Heck, the cinnabar missigno glitch or Zzazz in pokemon is a prime example of it, the game refuses to crash and will do anything to prevent it (including traumatizing a random kid that just wanted to try out the cool trick his friend showed him)
Incredible explanation, you took a really complicated subject and dug extremely deep while somehow making it super easy for casual viewers to follow along. Absolutely love your videos, keep up the amazing work
This always fascinates me. Some other retro channels I follow touched on this, but not this deep. Looking forward to the next session with the crazy glitchy levels
Your visual representation of this topic is astounding. It's fundamental when teaching a lay person complicated and abstract concepts. In saying that your detective work in understanding the guts of the code is equally brilliant. And then there's your calm easy going voice over. Over all this is a great channel you got here. I can't wait for the next entry.
That's some incredible spaghetti indexing, I love it. I can't help myself but working on multiple programming projects at once knowing how much they make use of a lot of pointers and data that needs to be efficiently loaded when needed, I want to cry a bit looking at your explanations, so much stuff scattered around, while it all could have been really nicely and cleanly indexed, with a lot of redundancy avoided at the same time, aaaaaargh! XD I really wonder just how much could be cleaned up, to free up memory to insert more valid levels without having to expand the ROM size.
Yep pretty much lol It just looks like they went with whatever they had and pushed it to production, because it was good enough to their liking, I suppose.
So basically the level data is accessed through 4 levels of indirection: - The main world table with 8 entries - The level table - The world type index table + offset - The sprite/tile data pointer high/low byte table - The actual level data I love this :D
There are also three different variables that keep track of what level you are on. One is the world number, one is the "displayed" level number (which is for display only, increases by 1 when you beat levels), and the third is the "actual" level number (increases by 1 when you finish a level OR watch the pipe cutscene)
The attention to detail in your videos is unmatched. I get stressed just thinking about how much time you spend making screenshots/recordings for each segment. Such a treat to sit back and watch.
That's so true! I was never thinking about there being a video like this, but now I know *almost* everything about glitched worlds! There are still some unknowns, though, which is why I'm very excited for part 3.
Nice to finally see a video detailing the process of why the level pointers load the levels the way they do. Honestly it's a clever way of doing it. Especially since you could potentially save a ton of space doing this while having "remixed" levels. Reminds me of the video detailing about the minus world and how there's a broken 'scroll stop' object that was actually in place to prevent Minus World from appearing! It's part of the reason why sometimes when you jump towards the pipe at the end of 1-2, right before you touch the ground the camera would sometimes "hitch" or stop. That's the scroll stop in effect 1-2. Just some code erroneously removes it when it's not suppose to once mario's Y position reaches an even number.
W#6, Looks like the Minus World ( -1 ) ‘s first level on the famicom. W#9, in the famicom version of smb, Looks like the second minus world level, ( -2 ). And U#4 looks like the minus world’s final level on the famicom, ( -3 ). Edit: world 9, A, B, C, and D are in the lost Levels, and the minus world is different.
I have been looking for this information after a Kosmic vid about glitch worlds so I could run some experiments involving a rubber band holding right, some cheat codes and lots of time. I love how you break down all of the complexities visually and clearly. Thank you for doing these. Any idea what causes flag levels with small castles to have some repeating glitch patterns in the background after running well last the flag?
I know this game was clearly written in assembly, but the level tile table and level sprite table are much easier explained as four arrays each which just so happens to be next to each other in memory (probably because they would be declared next to each other). The offsets are the addresses of each array from where they put that particular heap. Always enjoy :)
Thanks for highlighting and explaining zero-based indexing so much in this video, it tends to confuse a lot of people who aren't familiar with programming. I'm already very used to zero-based indexing, but it's always someone's first time encountering it, so every bit helps. Looking forward to the third video in this series!
Been looking forward to this video. You make these topics so easy to follow, and it's much easier to appreciate what goes into how older hardware works
A masterpiece as always! My hex-fu is still bad and it takes me a hot minute to go from decimal to hex but that said, I still absolutely enjoy those videos so much. Great visual explanation of the level ID resolution! Flows really well.
nice video! would also be cool to explain why entering pipes send you to the beginning of the level instead of a coin cash or underwater stage, and what determines what the other sublevels in the world are
I adore analyses of Super Mario Bros., all of the strange incongruities and shortcuts give me the impression of coders who still weren't entirely comfortable with their hardware.
Very well done video. I had also explored the game's code to see how the glitch levels worked, but I had missed the part about the enemy data not lining up with the map tile data.
Admittedly got a liiiittle lost, but I love how you explain it carefully and (ironically) bit by bit so even when you DO get a little lost, you can just rewind back a few seconds to get the gist again. Nice videos!
This was a fascinating explanation! Two questions though... We didn't hear music in the video. What determines the music played? Is that just one-to-one with the level type? How are the cloud bonus levels handled? I was thinking they'd be a whole other level type, but I'm guessing not, given that they don't seem to come up in any of the glitched levels.
Got into retro stuff from Bismuth and Summoning Salt, and then I found your channel. Your explanations are so clean and thorough, and the animations are SUPER helpful :). I really love your videos :)
Hey Awesome! This explains an issue that I ran into some time ago creating a visualization. Really appreciate your slick visuals and clear explanations! :-)
very enjoyable video, especially cuz you repeated the explanation of how the level index is read in binary and how it determines the sprite and layout data, cuz im a bit slow sometimes; and i know i could just repeat the parts i didnt get at first (and i actually did on the previous elements), but im not always in the mood for stopping and having a think. thanks for making these :D
Trying to figure out the way this worked as a jr. high kid drove me to learn binary and hexadecimal and partially reverse engineer how Game Genie codes worked, which later resulted in my interest/career in game programming 😁 I never did figure out anything about the pattern of the content of levels the codes took me to though and now I see why, as it was so complicated internally. Great to have some closure on that finally.
This is fascinating...I have known for a very long time that levels beyond what we got existed in Super Mario Brothers. Ever since I learned how to go to minus world (1989). I have always wanted to see these levels but I thought they would remain mostly out of reach. Your work here gives me hope that we'll not only gain access to these levels but perhaps we will see some from other games as well...like Metroid. What I would like to see is some type of automatic randomizer or random number generator that starts as soon as the player begins. Give the player the choice to include glitched levels as well and let everyone see all that this game has to offer. I wish I knew how to do it myself but I don't. As much as I understand the video I would be lost trying to implement something like that. However, I would be willing to help pay for something like that. Just food for thought. we need some type of randomizer or random number generator that mixes all the levels up.
I've always wondered if you could catch the crashes due to invalid sprite IDs by hacking/patching the ROM in such a way that there are additional, potentially custom, sprites for all possible sprite IDs. This way you could visually explore the nonexistent sprites without having the original game crash on you.
I love how much personality retro games like these have. Are they well programmed? Certainly not by today's standards, there's a lot of archaic data structures, weird routines that overcomplicate things more than anything, and obviously, quite a few glitches to exploit. But every game's got its own quirks, it makes them feel unique down to the ones and zeros. You're never gonna get a modern game that sorts its level structure, level order and level visual data in three individual ways while also having just one pointer lead to all three.
Thanks for making this video. Ever since I found out about these glitch worlds in the rumors of the internet, I wondered what exactly they were and how they work. It's very interesting to not only know but visualize how it happens. Is this why the minus world is different on the FDS version? I'm looking forward to the next part.
0:49 - “There’s a flag in the level that can convert a level into a harder version of itself” - what does that generally entail? And can it be applied to every level, not just those for which both easy and hard versions are used?
More info will be covered about that in the next video, but essentially every sprite and enemy can be flagged to only appear in the 'hard' version of the level, and will be absent from the 'easy' version. So in levels that weren't intended to have a hard version, not much if anything will change. All moving platforms become shorter though. In practice, all levels that are 5-3 or later are treated as their 'hard' versions.
@@RGMechEx You said in somebody else's comment than the ending of 1-2 is the same as the ending of 1-1. Does that mean that the ending of 1-2 is the "hard mode" of 1-1, since 1-2 has a piranha plant while 1-1 doesn't?
0:28 Yeah, why is the Minus World a looping version of level 2-2/7-2 on the NES version - but different on a different port (like the Japanese version and also the Sega Genesis version)? Thanks!
4:30 Probably because the level designers and programmers weren't talking 100% of the time, so the undergrounds were "made" first and filled with sprites last. Or, it could be an intentional desync to slow down bootlegging. I mean, we all know how hands-on Nintendo is with their IPs, who says that attitude wasn't there from project 1?
I stumbled upon the first part of the video and it is so well explained! You got me hooked, sir. If you reverse engineer this video it only shows how optimized (and hard-coded) the game is, packing every exact byte and address into the rom. I had a Mega Drive as an 8 year old. Perhaps you can explain the sonic 1 warp glitch? 🦔
This is seriously amazing, cant wait for the 3rd video! Just curious, is there any way to actually play these extra levels without buying an NES, and the games needed?
I wonder if the reason behind the different numbering for sprite vs tile data was originally so they could purposefully access "invalid" combinations to put them in the game as new levels without having to actually store any more information, but they never ended up using that idea for whatever reason
So that's HOW SMB1 NES generates 246 more worlds than the 8 already known! PS. The Minus or Negative World is generated when the Warp Zone thinks we are in World 4-2 when we clip thru the wall in the end of World 1-2, so being the warps 4-3-2 (Warp Code 4) 36(blank)-5-36(blank) (Wp. C. 5) 8-7-6 (Warp Code 6) for worlds 1-2, 4-2 past the exit pipe over the ceiling and 4-2 climbing the beanstalk respectively, the game thinks we'll activate the Code 5 instead of 4, and having the blank space an ID of 36 0-9 ID 0-9 A-Z ID 10-35 Blank space ID 36 sum other more signs ID 37-42 Tiles used in-game (no palettes) ID 43-255 the game uses the code shown in the video to warp Mario to world 36-1 (or [blank space]-1)
Some overworld levels use different palettes from the default, where is that setting taken from? Awesome video btw, been wondering about this for a long time!
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!!!!!!!!!!!!!!!!!!!!!!!!!! I've been waiting for this, like, forever.
so you take an offset to a pointer that contains an offset to another pointer thats an offset to another pointer that depends on the second offset right shifted and contains two offsets to two pointers that contain four bytes that form two pointers that point to the level and sprite data
The next video in the series will be exploring the really glitchy levels, but if you'd like to take a looksie yourself, I've made a page that has maps of all 128 levels, which includes all of the glitch levels and all of the Frankenstein levels! You can find it here: rgmechex.com/tech/smb1levels/
Thx
"2 days ago"
Ok.
And yes I do know how it was 2 days ago.
@pyrodiac this comment is gonna be so confusing in a week lol
Are you gonna go in depth about world -1?
I'm not sure if it was intentional, but I REALLY like how you managed to get the graphics at 0:33 to be a perfect pixel for pixel recreation when watching in 4k on a 1080p screen, everything just looks so sharp and NICE, IDK how else to describe it, it is a perfect 1x integer scale of the in-game graphics. The only downside is that at 1:45 when the levels shift around, they loose that crispness, I assume it would look just as sharp on a 4k screen, the levels are probably just half a pixel off on a 1080p screen, but besides that really nice work!
You lost me around the middle of the video, not because the information was too complex, but because I was distracted by how clean everything looks. I kept wondering how crazy your After Effects compositions must look like and how much work you put into it and losing track of what you were actually talking about.
It must be absolutely overwhelming.
Just imagine how hot that room must get when rendering.
This is really hilarious. Surely out of all the people watching, you're the last one who'd get lost because of the complexity of the information! 😝🍍
Your just using your slide ruler wrong
Love your content, cool to see you watch stuff like this too
Says the guy that animates entire PUs. ;)
Still, wholeheartedly agree! Dude's a madlad.
There have been *countless* videos about the "minus world" on RUclips and I have never found one that goes more in depth than "It's actually world 36-1, and it loads invalid data". This is the first time to my knowledge that somebody has actually stepped into the process of *why* a particular world number gives you a certain result.
it's 36-1
ID 36 in smb1 corresponds to a blank tile so it's blank-1/-1/36-1
@@thegamingchannel7110 lol that's what he said, after 34 it goes blank. It's actually so good to feel things making sense with my stupid trading school brain
@@MUHAMMADUSMAN-qu2mh oh ok I'm only partially familiar with sprite data
36-1 ends up landing on a level ID of 01, which would just produce an identical layout to 2-2/7-2.
Thanks for these, learning a lot about the game!
oh hey, its kosmic
hi kosmic
I think the craziest thing in this vid is realizing, after being intimately familiar with this game for decades, that there really are only two full underground and water levels each in the entire game's 32 levels
What’s bittersweet about glitches like this is that they are next to impossible on modern systems due to memory protection. Amazing for cybersecurity, but terrible for glitches. Everything will just crash or boot you if you corrupted or tampered with a memory address
Yea you have to be very very careful with memory editing, and even then most of the time you can't change things at this level. The programs are just too complex, you'd need to change tons of things at the same time to prevent things from disconnecting and just breaking down..
Cheat Engine is a great tool for playing with memory editing on modern programs, but also kinda highlights how easy it is to brick stuff, and how hard it is to do things like reading graphics data as game logic or something.
@@Charmlie.R and might be malicious
The cheat engine website has been hacked for a while and a lot of the newer versions are now malicious
The older legit versions archived pre-hack aren't that great either because the installer might install other unwanted software if you just click the next button and not read what it's saying
@@Xnoob545 ;
That's why I don't usually use the default installers for some software.
Cheat Engine is free open source software, meaning that (if you really wanted), you can build it yourself from source.
This allows you to bypass simple AV detection, and to know for sure you aren't installing a hacked version.
Nowadays, you have the infamous glitch for Elden Ring where you can change your map number and coordinates at separate times, making you warp to areas of the map you are not supposed to be in.
@@Dwedit Now that is pretty awesome
I worked out World -1 (actually 36-1 since 36 corresponds to a blank tile).
First, get the 36th byte in the start-of-world table (it overflows into the level table) which is $33 (51 in decimal).
Then, get the byte of index #51 of the level table (it overflows into the sprite-data-pointer table) which is $01 (00 00001 in binary).
This corresponds to water (00) level #1, which is used by W2-2 and W7-2.
Huh
7:00 I personally like the way this level looks, a water castle seems like a really cool concept for a earlier world. Too bad it isn’t in the actual Mario games
Nah, man. With Bowser in there breathing fire, it would be warm and moist. Just imagine the mold...
@@nickwallette6201 maybe have a different boss, I’m sure Mario wouldn’t fall for bowsers disguise 7 times in a row.
A giant squid or a large fish could work
@@ionic7777 Well, there is a water castle in New Super Mario Bros, where the boss is a big fish you have to jump on.
This is no ordinary water castle. It's an underground water castle.
Minus world explained like never before.
more like space world
World 36*
We've gone past negative numbers into imaginary worlds
Level 3 - 2i/5
@@moosemaimer NaN- 0.50000001
A traveler’s guide to the Underwhere!
I am REALLY EXCITED to learn about SMB1's compressed level format. It's one of the few "obvious" topics I haven't yet seen covered by the RUclips SMB faculty 🎓
Haven't seen the format yet but I'm guessing it uses predefined "columns" of metatiles and is just a sequence of numbers that represent those columns.
@@williamdrum9899 werewerewe
I've been interested in this game's glitched levels for as long as I can remember and it's nice to finally get an in-depth explanation into exactly why they look the way they do.
You know what, I've seen these glitched levels many times before. I mean, the minus world has probably been known about for decades. But not once have I heard anyone attempt to explain why the levels look like what they do. So thanks for finally explaining it!
Retro glitches are so amusing to me because of how literal assembly code is. Modern games will lock up, or crash if they are given something they don't expect, or will simply refuse to do anything. Whereas retro games will quite happily try to load sound effects as level data, or treat character x and y coordinates as look up addresses.
This is something I love abiut old games, and a clever programmer can abuse it for "random" graphics, e.g. dumping game code into VRAM for TV static
Also, modern computers will throw a fit if you try to tamper with memory or execute data.
Heck, the cinnabar missigno glitch or Zzazz in pokemon is a prime example of it, the game refuses to crash and will do anything to prevent it (including traumatizing a random kid that just wanted to try out the cool trick his friend showed him)
Incredible explanation, you took a really complicated subject and dug extremely deep while somehow making it super easy for casual viewers to follow along. Absolutely love your videos, keep up the amazing work
Holy shit I did not expect to see u here
Omg its the subzero coin guy in mario video !!!1!!
Hi
@@JJschannel255 ?
@@theopoldthegamer4284 @JJ & Aaron McCurdy’s Channel? ?
This always fascinates me. Some other retro channels I follow touched on this, but not this deep. Looking forward to the next session with the crazy glitchy levels
Your visual representation of this topic is astounding. It's fundamental when teaching a lay person complicated and abstract concepts.
In saying that your detective work in understanding the guts of the code is equally brilliant.
And then there's your calm easy going voice over.
Over all this is a great channel you got here. I can't wait for the next entry.
That's some incredible spaghetti indexing, I love it.
I can't help myself but working on multiple programming projects at once knowing how much they make use of a lot of pointers and data that needs to be efficiently loaded when needed, I want to cry a bit looking at your explanations, so much stuff scattered around, while it all could have been really nicely and cleanly indexed, with a lot of redundancy avoided at the same time, aaaaaargh! XD
I really wonder just how much could be cleaned up, to free up memory to insert more valid levels without having to expand the ROM size.
And it isn't like it was required for performance, if anything it would either make it worse or do almost nothing.
Yep pretty much lol
It just looks like they went with whatever they had and pushed it to production, because it was good enough to their liking, I suppose.
So basically the level data is accessed through 4 levels of indirection:
- The main world table with 8 entries
- The level table
- The world type index table + offset
- The sprite/tile data pointer high/low byte table
- The actual level data
I love this :D
Yo dawg, I heard you like pointers …
There are also three different variables that keep track of what level you are on. One is the world number, one is the "displayed" level number (which is for display only, increases by 1 when you beat levels), and the third is the "actual" level number (increases by 1 when you finish a level OR watch the pipe cutscene)
The attention to detail in your videos is unmatched. I get stressed just thinking about how much time you spend making screenshots/recordings for each segment. Such a treat to sit back and watch.
The video that everyone never asked for but always wanted since they knew about glitched worlds
That's so true! I was never thinking about there being a video like this, but now I know *almost* everything about glitched worlds! There are still some unknowns, though, which is why I'm very excited for part 3.
Nice to finally see a video detailing the process of why the level pointers load the levels the way they do.
Honestly it's a clever way of doing it. Especially since you could potentially save a ton of space doing this while having "remixed" levels.
Reminds me of the video detailing about the minus world and how there's a broken 'scroll stop' object that was actually in place to prevent Minus World from appearing! It's part of the reason why sometimes when you jump towards the pipe at the end of 1-2, right before you touch the ground the camera would sometimes "hitch" or stop. That's the scroll stop in effect 1-2. Just some code erroneously removes it when it's not suppose to once mario's Y position reaches an even number.
W#6, Looks like the Minus World ( -1 ) ‘s first level on the famicom. W#9, in the famicom version of smb, Looks like the second minus world level, ( -2 ). And U#4 looks like the minus world’s final level on the famicom, ( -3 ). Edit: world 9, A, B, C, and D are in the lost Levels, and the minus world is different.
By far the best explanation of this I’ve seen yet. It totally clicked thanks to the visuals.
I have been looking for this information after a Kosmic vid about glitch worlds so I could run some experiments involving a rubber band holding right, some cheat codes and lots of time.
I love how you break down all of the complexities visually and clearly.
Thank you for doing these.
Any idea what causes flag levels with small castles to have some repeating glitch patterns in the background after running well last the flag?
Your videos are a bit over my head but they're so clear and easy to understand when you explain it. Your voice sounds lovely this episode!
I know this game was clearly written in assembly, but the level tile table and level sprite table are much easier explained as four arrays each which just so happens to be next to each other in memory (probably because they would be declared next to each other). The offsets are the addresses of each array from where they put that particular heap. Always enjoy :)
Thanks for highlighting and explaining zero-based indexing so much in this video, it tends to confuse a lot of people who aren't familiar with programming. I'm already very used to zero-based indexing, but it's always someone's first time encountering it, so every bit helps.
Looking forward to the third video in this series!
I know! I've been waiting for a long time to see part 3, but it's taking a while. I hope he uploads it soon though.
Been looking forward to this video. You make these topics so easy to follow, and it's much easier to appreciate what goes into how older hardware works
I've been trying to catalog these for a couple years, now I understand why there's a bunch that straight up don't boot and crash in a black screen
Anti-black screen code: SZTOLS
A masterpiece as always! My hex-fu is still bad and it takes me a hot minute to go from decimal to hex but that said, I still absolutely enjoy those videos so much.
Great visual explanation of the level ID resolution! Flows really well.
I lost count of how many layers of overflow we're in right now. Awesome video!
great video! i love the visualization for the levels - very nice
nice video! would also be cool to explain why entering pipes send you to the beginning of the level instead of a coin cash or underwater stage, and what determines what the other sublevels in the world are
You explain this so well. The visuals definitely help us understand exactly what is going on.
I adore analyses of Super Mario Bros., all of the strange incongruities and shortcuts give me the impression of coders who still weren't entirely comfortable with their hardware.
Very well done video. I had also explored the game's code to see how the glitch levels worked, but I had missed the part about the enemy data not lining up with the map tile data.
Great video. And I always love that you have subtitles because English is not my first language.
Your visualizations are great, props for making them that good!
I've been curious about this for over 20 years.... I thought it would just be one of those mysteries that never gets solved.
When I was younger I always loved using cheats to explore these glitch levels and had always wondered how they work. Thanks for the video!
Haven't even watched it yet and I bet this will be a better explanation of pointers than most CS courses
Admittedly got a liiiittle lost, but I love how you explain it carefully and (ironically) bit by bit so even when you DO get a little lost, you can just rewind back a few seconds to get the gist again. Nice videos!
This was a fascinating explanation! Two questions though...
We didn't hear music in the video. What determines the music played? Is that just one-to-one with the level type?
How are the cloud bonus levels handled? I was thinking they'd be a whole other level type, but I'm guessing not, given that they don't seem to come up in any of the glitched levels.
Got into retro stuff from Bismuth and Summoning Salt, and then I found your channel. Your explanations are so clean and thorough, and the animations are SUPER helpful :). I really love your videos :)
This is pure genius from someone coming from an embedded systems background.
Thank you very much. Clean and simple.
This is the one I've been waiting for.
Thank you for this!
prerequisite knowledge required though. I'm gonna have to watch it a couple of times.
I am very hyped about the final video
Thank you for explaining this mystery from my childhood!
A lot of the glitch worlds were available on a 9999 in 1 cart I had on my Famiclone
Hey Awesome! This explains an issue that I ran into some time ago creating a visualization. Really appreciate your slick visuals and clear explanations! :-)
Great explanation, looking forward to part 3!
I'm so happy you are posting videos again
Awesome stuff. Well explained, and super clean visuals!
very enjoyable video, especially cuz you repeated the explanation of how the level index is read in binary and how it determines the sprite and layout data, cuz im a bit slow sometimes; and i know i could just repeat the parts i didnt get at first (and i actually did on the previous elements), but im not always in the mood for stopping and having a think. thanks for making these :D
I love your videos so much. Thank you for making these!
I love those little counters in the HUD.
(1-1, 1-2...8-4)
This channel has such excellent presentation for absolutely fascinating content, love it
Trying to figure out the way this worked as a jr. high kid drove me to learn binary and hexadecimal and partially reverse engineer how Game Genie codes worked, which later resulted in my interest/career in game programming 😁 I never did figure out anything about the pattern of the content of levels the codes took me to though and now I see why, as it was so complicated internally. Great to have some closure on that finally.
Your channel has always been very informative and clean. The pokémon audio and Racing the beam are still my favourites tho
ngl, was hyped for this video. your content is insanely interesting!
Looking forward to seeing all the different glitch levels!
This is fascinating...I have known for a very long time that levels beyond what we got existed in Super Mario Brothers. Ever since I learned how to go to minus world (1989). I have always wanted to see these levels but I thought they would remain mostly out of reach. Your work here gives me hope that we'll not only gain access to these levels but perhaps we will see some from other games as well...like Metroid.
What I would like to see is some type of automatic randomizer or random number generator that starts as soon as the player begins. Give the player the choice to include glitched levels as well and let everyone see all that this game has to offer. I wish I knew how to do it myself but I don't. As much as I understand the video I would be lost trying to implement something like that. However, I would be willing to help pay for something like that. Just food for thought.
we need some type of randomizer or random number generator that mixes all the levels up.
This is really cool. I figured they’d be sorted like that! Clever!
idk why i'm so surprised that there's only two underground levels... i would've thought there were a lot more lmao
Love this video, series, and channel! Looking forward to the next one :)
I want to see the whole things behind -1, and also -1, -2, and -3 on the Famicom!
Super looking forward to that final video!
Levels from _Super Mario Bros._ on the Nintendo Entertainment System are surprisingly more complex than meets the eye.
I've always wondered if you could catch the crashes due to invalid sprite IDs by hacking/patching the ROM in such a way that there are additional, potentially custom, sprites for all possible sprite IDs. This way you could visually explore the nonexistent sprites without having the original game crash on you.
I love how much personality retro games like these have. Are they well programmed? Certainly not by today's standards, there's a lot of archaic data structures, weird routines that overcomplicate things more than anything, and obviously, quite a few glitches to exploit. But every game's got its own quirks, it makes them feel unique down to the ones and zeros. You're never gonna get a modern game that sorts its level structure, level order and level visual data in three individual ways while also having just one pointer lead to all three.
You always do amazing job explaining everything. I love your videos!
1:48
Is it just me or do you see something sus about the overworld levels. One of them might be an imposter.
nice sounds at 4:11 good work
Thanks for making this video. Ever since I found out about these glitch worlds in the rumors of the internet, I wondered what exactly they were and how they work. It's very interesting to not only know but visualize how it happens. Is this why the minus world is different on the FDS version? I'm looking forward to the next part.
Really coherent explanation.
Great quality as always dude, loved this video!
0:49 - “There’s a flag in the level that can convert a level into a harder version of itself” - what does that generally entail? And can it be applied to every level, not just those for which both easy and hard versions are used?
Usually it adds bullet bills and smaller platforms
More info will be covered about that in the next video, but essentially every sprite and enemy can be flagged to only appear in the 'hard' version of the level, and will be absent from the 'easy' version. So in levels that weren't intended to have a hard version, not much if anything will change. All moving platforms become shorter though. In practice, all levels that are 5-3 or later are treated as their 'hard' versions.
@@RGMechEx You said in somebody else's comment than the ending of 1-2 is the same as the ending of 1-1. Does that mean that the ending of 1-2 is the "hard mode" of 1-1, since 1-2 has a piranha plant while 1-1 doesn't?
I always wonder with these kinds of glitches, if the developers themselves back in the day ever played any of them, and what they thought!
"to awnser this, we have to look at-"
"PARALLEL UNIVERSES"
Y o u a r e s o r e l y m i s t a k e n
thank you for the delightful video!!
This is so cool! I can't wait for the next one!
Babe wake up new Retro Game Mechanics Explained video!
0:28 Yeah, why is the Minus World a looping version of level 2-2/7-2 on the NES version - but different on a different port (like the Japanese version and also the Sega Genesis version)? Thanks!
Yeah the genesis port was always so weird in some really specific areas, makes me wonder what was changed fully
4:30 Probably because the level designers and programmers weren't talking 100% of the time, so the undergrounds were "made" first and filled with sprites last. Or, it could be an intentional desync to slow down bootlegging. I mean, we all know how hands-on Nintendo is with their IPs, who says that attitude wasn't there from project 1?
It's possible to beat 9-1, you just need to wait around in some places.
It didn't make a whole lot of sense (to me) until the whole thing is tied together - then it becomes kinda genius.
I stumbled upon the first part of the video and it is so well explained! You got me hooked, sir.
If you reverse engineer this video it only shows how optimized (and hard-coded) the game is, packing every exact byte and address into the rom.
I had a Mega Drive as an 8 year old. Perhaps you can explain the sonic 1 warp glitch? 🦔
This is seriously amazing, cant wait for the 3rd video!
Just curious, is there any way to actually play these extra levels without buying an NES, and the games needed?
This explanation is so good!
I wonder if the reason behind the different numbering for sprite vs tile data was originally so they could purposefully access "invalid" combinations to put them in the game as new levels without having to actually store any more information, but they never ended up using that idea for whatever reason
3:08. "to answer that, we need to talk about parallel universes" 😂😂
So that's HOW SMB1 NES generates 246 more worlds than the 8 already known!
PS.
The Minus or Negative World is generated when the Warp Zone thinks we are in World 4-2 when we clip thru the wall in the end of World 1-2, so being the warps
4-3-2 (Warp Code 4)
36(blank)-5-36(blank) (Wp. C. 5)
8-7-6 (Warp Code 6)
for worlds 1-2, 4-2 past the exit pipe over the ceiling and 4-2 climbing the beanstalk respectively, the game thinks we'll activate the Code 5 instead of 4, and having the blank space an ID of 36
0-9 ID 0-9
A-Z ID 10-35
Blank space ID 36
sum other more signs ID 37-42
Tiles used in-game (no palettes) ID 43-255
the game uses the code shown in the video to warp Mario to world 36-1 (or [blank space]-1)
last video I felt great being able to follow along with everything so well, this video I am reminded how stupid I really am
This video is just 15 minutes long. But it feels like hours.
Some overworld levels use different palettes from the default, where is that setting taken from?
Awesome video btw, been wondering about this for a long time!
The level's setting (snow, night, etc.) is part of the tile data. Details will be in the next video!
@@RGMechEx I cannot wait!
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!!!!!!!!!!!!!!!!!!!!!!!!!!
I've been waiting for this, like, forever.
I would love to see a video from you exploring glitch pokemon in gen 1
bro can make a recompilation at this point if he wanted to
so you take an offset to a pointer that contains an offset to another pointer thats an offset to another pointer that depends on the second offset right shifted and contains two offsets to two pointers that contain four bytes that form two pointers that point to the level and sprite data
Shoutout to level $50 (underground level #16) for being the best level of all the glitched levels!