New Discovery for Minus World in Super Mario Bros! - Behind the Code

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 พ.ย. 2024

ความคิดเห็น • 535

  • @Kosmicd12
    @Kosmicd12 2 ปีที่แล้ว +718

    learned a lot about why the scrollstop behavior is the way it is. Thanks!

    • @TactfulWaggle
      @TactfulWaggle 2 ปีที่แล้ว +26

      It's insane how long you've been doing this and you're still learning new things about this game!

    • @shantilkhadatkar1195
      @shantilkhadatkar1195 2 ปีที่แล้ว +7

      You should explore Minus worlds of Your Custom ROM series!

    • @The23rdGamer
      @The23rdGamer 2 ปีที่แล้ว +2

      ❤️

    • @luke10198
      @luke10198 2 ปีที่แล้ว +1

      I think that’s cool

    • @mikereynolds1368
      @mikereynolds1368 2 ปีที่แล้ว +4

      @@shantilkhadatkar1195 if you mean explore all minus worlds in SMB he has. Some are playable, some aren't, some are neat, some are garbage.

  • @AWalYT
    @AWalYT 2 ปีที่แล้ว +491

    So I'm not remembering incorrectly and there is an exceptionally rare circumstance where the scrolling will "stiffen" up when leaping towards the -2 exit pipe.
    Glad to finally have a solid explanation for that phenomenon.

    • @TonyTheTGR
      @TonyTheTGR 2 ปีที่แล้ว +10

      It's not just 1-2 exit, it's also 4-2 as well.

    • @jhoughjr1
      @jhoughjr1 2 ปีที่แล้ว +11

      when he mentioned it, and I saw it, it was something so familiar coming back across the decades.

  • @anonymone453
    @anonymone453 2 ปีที่แล้ว +560

    New discovery? Almost 40 years old and we're still learning stuff about this game

    • @AboveEmAllProduction
      @AboveEmAllProduction 2 ปีที่แล้ว +8

      Inb4 all haters come say he wrong 😂☄

    • @andychamplin
      @andychamplin 2 ปีที่แล้ว +2

      @@AboveEmAllProduction Well, we have a new EmKay video now.

    • @HYDEinallcaps
      @HYDEinallcaps 2 ปีที่แล้ว +30

      It's not almost 40 years old.
      EDIT: Oh my god.

    • @deadmetalbr
      @deadmetalbr 2 ปีที่แล้ว +21

      @@HYDEinallcaps Yup. SMB is fast approaching ‘antique’ status, as are those of us who played it as little kids.

    • @guy_th18
      @guy_th18 2 ปีที่แล้ว +2

      its only new because no one's bothered to look before

  • @GeneralBolas
    @GeneralBolas 2 ปีที่แล้ว +253

    The SMB1's "compression" for its levels is interesting because... it's almost exactly the same as Super Mario *World.* Compression was still relevant despite SMW's ROM being more than 10x the size of SMB1's. There are two main differences in the decompression logic (besides SMW obviously having more options):
    1. SMW doesn't have a floor/ceiling "object" thing. It does have an object specifically for making long floors though.
    2. SMW decompresses the *entire level* at level load time (owing to the SNES's at-the-time gargantuan 128KB of RAM. They basically burn half of it just for the current level data). This naturally makes scrolling backwards easier, as well as preserving changes to blocks that Mario has made.
    Indeed, I'm genuinely interested in how SMB2 & 3 pulled that off without decompressing the whole level. SMB2 doesn't preserve changes to blocks (scrolling digg-able sand off screen causes it to come back if you return to that screen), but it does preserve which vegetables have been plucked. Well, unless you leave the level screen and return.
    From a video on Retro Game Mechanics Explained, Super Mario Land 2 on the GB also seemed to decompress the entire level into RAM. Since the GB has the same 8K of WRAM as the NES, it may just be that SMB2 and 3 did the same thing. That would suggest that SMB1 didn't use most of the system's RAM.

    • @jimmyhirr5773
      @jimmyhirr5773 2 ปีที่แล้ว +50

      The NES has only 2K of WRAM internally. However, SMB 2 and 3 have an extra 8K of RAM in their cartridges. I'm sure that RAM helps the sequels have bigger levels that preserve more changes during game play.

    • @mantictac
      @mantictac 2 ปีที่แล้ว +32

      Both Super Mario Bros 2 and 3 use the MMC3 mapper chip, which among other things also allows an external 8K static RAM chip to be added in the cart where the decompression would be stored. The NES itself only has 2K of RAM, 3 pages (256 bytes each) of which are used for fast state variables, the program call stack and the sprite data that gets transferred to the screen, leaving about 1280 bytes for general purpose storage. I think SMB does decompress the current active screen-and-a-half for collision detection, or something like that.
      SMB3 PCB (Top-right is the RAM IC):
      nescartdb.com/images/700/1049b0aa030954854ea9d69ac06aadcb.jpg
      SMB1 PCB:
      nescartdb.com/images/700/ea16e048938de741bfe5bc884a496ce0.jpg

    • @renakunisaki
      @renakunisaki 2 ปีที่แล้ว +6

      SML2 also has extra RAM on the cartridge.

    • @SomeGuy712x
      @SomeGuy712x 2 ปีที่แล้ว +7

      Actually, SMB2 _DOES_ remember which sand tiles you've already dug up when you scroll away and come back, unless you leave the current area entirely via something like a door of course, which would cause the entire place to reload fresh when you return to it.

    • @Lord_Nightmare
      @Lord_Nightmare 2 ปีที่แล้ว +20

      @@renakunisaki And, interestingly, SML2 is one of the few Gameboy games which leaves the extra battery backed RAM unlocked for most of the gameplay (since the game is constantly using it as extra work ram), which means if the batteries are pulled or the cart is loose/pulled out, the savegame is often corrupted and the game will delete it on next boot. Most Gameboy games intentionally keep the SRAM 'locked' (i.e. read-only) unless they're actively saving game data, to prevent battery backed SRAM corruption. They do this by using a mapper feature: a specific value is written to an MMC1/5/etc mapper register to unlock SRAM, and writing any other value to that register makes the SRAM read-only (or flat out disables it so it can be neither read nor written).
      This trick, while common on Gameboy games, was only done on very late games in the NES' lifetime: Startropics and Startropics 2 use the MMC6 memory mapper, which has an SRAM unlock word similar to pretty much all of the Gameboy memory mappers. Hence the whole "hold reset while powering off" thing common on NES games.
      (Interestingly, the power switch on the gameboy has a hidden feature: when it is halfway switched on, it is actually forcing the gameboy cpu to reset, combining the function of the NES' reset and power buttons on one switch! This was presumably done as part of the gameboy design as an additional safety feature to prevent cart SRAM corruption, and other power-related game glitches, such as atari-2600-style "frying" glitches.)

  • @Yipper64
    @Yipper64 2 ปีที่แล้ว +143

    its interesting to know why a bug like this exists. Like, its neat to see a mistake that I could see myself making in one of the most influential games of all time.

    • @ireallydontknowifiamhonest
      @ireallydontknowifiamhonest 2 ปีที่แล้ว

      yeah, it's silly mistakes that make up games, like even the BLJ in the Non-Shindou version of Super Mario 64

    • @ninjaguyYT
      @ninjaguyYT 3 หลายเดือนก่อน

      My favorite mistake that I made in a game was a money cheat.
      So in my game, you start out by owing a loan shark like $5000. Every day, he charges 10% interest. You are not allowed to borrow more money until you pay him everything you owe. Once you do, you can borrow up to 100% more than you have borrowed.
      My balance trick was the 10% interest. I was like "well, if I borrow $4000, then I'll owe him $4400 tomorrow, so I need to make $400 to pay him back and be able to borrow $8800 next time.
      Makes sense. Until I realized during testing that I just have to borrow and pay him back same day - since you don't owe interest until tomorrow. So you could keep borrowing and paying him back immediately to get any amount you want in a single day.
      I decided to either make the interest apply immediately, or make it to where you can only borrow up to the max once per day and that you can't borrow the new max until the next day. I can't remember which one I did, but I picked one.

  • @CapnSlipp
    @CapnSlipp 2 ปีที่แล้ว +37

    Since many of these non-harmful functional “enemies” aren’t enemies, I’d go with the modern gamedev term “entities”, of which enemies would be a subtype. Would avoid a lot of confusion and verbal airquotes.

  • @Aurelyn
    @Aurelyn 2 ปีที่แล้ว +12

    "what video game character are you?"
    Me: "the invisible screen unlocker enemy that's bugged and immediately destroys itself under most conditions"

  • @rolen47
    @rolen47 2 ปีที่แล้ว +32

    Amazing. I always assumed that the level data was block by block. Never considered that the level data is actually repeating patterns. Now it makes sense why minus world looks like intentional level data and why you would run forever if you accidentally jumped over the flag pole, always thought there was just a lot of empty level data, but it was actually just a repeating pattern.

    • @ashleydolin4292
      @ashleydolin4292 2 ปีที่แล้ว

      Almost all NES games work this way. It's an amazing way to reduce game size.

    • @williamdrum9899
      @williamdrum9899 2 ปีที่แล้ว +2

      Block by block would be way too large to fit into 40 kb. Most NES games would predefine "columns" of game graphics and intentionally limit themselves to drawing just those columns. That way, the tiles that make up the flagpole (for example) would only need to be stored in the ROM *once*, rather than a copy of it in each level.

  • @Manticore_007
    @Manticore_007 2 ปีที่แล้ว +162

    This is an awesome video! Everyone is familiar with the -1 secret. But showing the intended way of the warp zone is brilliant! Love the explanation, also the meaning of the assembly language. Also very cool that you recreated it with game genie codes so everyone can play around with it. I would love to see more of these kind of videos. Awesome job! 👌🏻

    • @zitronenwasser
      @zitronenwasser 2 ปีที่แล้ว

      i was thinking "why not just null the instruxtions" but then i remembered if you want to mess with binaries your only option is either to use nops, or replace it with something harmless, or recompile the entire thing fron source. I assume they chose replace with something harmless since NOP may not have been an option, and if you want everyone to have it, a game genie code is the best option

    • @EebstertheGreat
      @EebstertheGreat 2 ปีที่แล้ว

      @@zitronenwasser This is the (reconstructed) source code. There is no "recompiling from source," because the whole game was coded in ASM from the start. Only the comments and labels are lost in the binary.

    • @Myriachan
      @Myriachan 2 ปีที่แล้ว +1

      @@EebstertheGreat Thanks to the big Nintendo leak of 2018, parts of Mario 1's source code leaked, and it's way less commented than the reverse engineered disassembly online.

    • @EebstertheGreat
      @EebstertheGreat 2 ปีที่แล้ว

      @@Myriachan Cool! I had no idea. I have to say that I'm not particularly surprised by the relative lack of comments. The disassembled code here has incredibly detailed and extensive comments. Like, almost every line has a separate comment. It must have been a huge project.

  • @jaylucien669
    @jaylucien669 2 ปีที่แล้ว +44

    Minus World is the gift that keeps on giving.

  • @BokBarber
    @BokBarber 2 ปีที่แล้ว +150

    Imagine an alternate reality where they HAD fixed the minus world bug correctly, and this video was about undoing those fixes to discover "new super secret SMB levels!!!".

    • @boriszakharin3189
      @boriszakharin3189 2 ปีที่แล้ว +42

      There are already "new super secret SMB levels!!!" videos on TH-cam, which use game genie codes to mess with the world number at the start of the game. Those allow you to enter the minus world as well, so this particular level would become known eventually. Though obviously there would be no way to get into the minus world on original hardware without game genie

    • @SuperSmashDolls
      @SuperSmashDolls 2 ปีที่แล้ว +11

      @@boriszakharin3189 Fun fact: in Japan players would actually use *other games* to set this value and hotswap Super Mario Bros on top of them. Magazines of the time would tell you what games gave good hotswap results and there was even a Famicom BASIC script that would set the level to whatever you like.
      This is, as you can imagine, kind of terrible for the game system - these cartridges aren't designed to be hot-swapped and doing so risks shorting or latching up certain pins. Nintendo even designed the Game Boy, Super Famicom, and Super NES with physical interlocks to prevent cartridge removal or insertion when the game was powered on... which they then removed or repurposed in later systems for some reason.
      This is also half of why Nintendo axed Stop n' Swop. For some reason, the N64 designers forgot to make the system lock the cartridge in place, but remembered the whole saga with Famicom hotswapping and cited the risk of system damage if you were to try and swop cartridges without turning the system off first. (The other reason was that the intended route stopped working when RAMBUS moved to a smaller process node.)

    • @EebstertheGreat
      @EebstertheGreat 2 ปีที่แล้ว +6

      @@SuperSmashDolls It works with Mario Tennis at least. Pressing the reset button on SMB1 or Tennis would not reset the current high score, so that part of RAM was not always cleared when the game first booted up. At power on, it would check if a certain part of RAM had what it considered to be valid values, and if so, it would not clear RAM. For whatever reason, the same signature and memory locations were used in SMB1 and in Tennis (and probably in some other games), so you could switch from one game to the other and hit the reset button without clearing RAM.
      I assume this was possible with Famicom BASIC because BASIC can basically change any part of WRAM.

    • @prismavoid3764
      @prismavoid3764 4 หลายเดือนก่อน +1

      @@SuperSmashDolls My guess for why the latches were removed was probably to save money on mechanical parts - needing a mechanism to hold the cart in place would add extra money onto the design. Plus, there's always the risk of the latch getting stuck and it then becoming impossible to remove a cart from the system without disassembling it. Much easier to just put warnings in the manual saying "Don't do that you dummy!" and then say it's their fault if they break their system

  • @DavidWonn
    @DavidWonn 2 ปีที่แล้ว +15

    Nice find! It almost feels like yesterday when I was explaining how the "minus world" was really World space, level 1, or W36-1 on my old site back in the 90s. The strange scrolling was always one of those unexplained / overlooked mysteries.

  • @otakubullfrog1665
    @otakubullfrog1665 2 ปีที่แล้ว +25

    It's interesting that the bug in the first scroll stop only matters because of another bug (being able to glitch through the pipe). Were it not for wall glitches, that bug would be harmless other than unintentionally hinting at the existence of the warp zone by allowing the screen to continue scrolling up to when Mario is stopped by the pipe and wouldn't even really be worth fixing.

    • @khatdubell
      @khatdubell 2 ปีที่แล้ว +1

      Probably the reason why the first one was left in.

  • @NonTwinBrothers
    @NonTwinBrothers 2 ปีที่แล้ว +17

    Oooh so that's what my Scroll Lock key is for

  • @ToniaGlitched
    @ToniaGlitched ปีที่แล้ว +1

    programming and it's possible errors in games are so cool, and it's funny how sometimes what makes something not work correctly is just how it was made, like the minus world bug and how and why it happens

  • @kri249
    @kri249 2 ปีที่แล้ว +27

    God I love these videos. I'm currently trying to learn coding for a hobbie and your video series really helps me understand game design. And sometimes the best way to learn how to do something is to learn what not to do. Like misuse of an AND statement.
    I also remember using the game genie on SMB as a kid to boost my jump and jumped over the flagpole once. All it did was just endless scrolling until the timer ran out (unless I disabled that too). So that's another coding mystery solved.
    So once again, awesome video Chris. They're always a treat.

    • @B3Band
      @B3Band 2 ปีที่แล้ว

      kool hobbie

    • @williamdrum9899
      @williamdrum9899 2 ปีที่แล้ว +1

      AND is a very useful tool if used correctly. If you have a random number generator, you can AND its output with (for example) 3 to get a 1 in 4 event. This works for any power of 2.

    • @kri249
      @kri249 2 ปีที่แล้ว

      @@williamdrum9899 that's so cool. I've been seeing examples on how to make things like random number generators or converting binary. Seeing how it's expressed in code really blows the mind.

  • @Mariorox1956
    @Mariorox1956 2 ปีที่แล้ว +5

    It's frankly amazing that, even 37+ years after it's creation, we're still finding out new things about SMB. Super cool and informative, I loved it

  • @thingsiplay
    @thingsiplay 2 ปีที่แล้ว +83

    Besides your excellent knowledge and explanation, I find the presentation and editing top notch! If we speak about quality content, your channel is a prime example of it. Great job man! I love this channel. ❤
    If you allow me to say the magical words now and sorry in advance, but your channel is a HIDDEN GEM. I hope not that this will be hidden for too long, but it's not a mainstream topic either.

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว +10

      Thank you. I really appreciate your comments!

    • @SeppelSquirrel
      @SeppelSquirrel 2 ปีที่แล้ว +4

      It's not his knowledge or explanation as he clarifies at 15:00 that someone named "doppelganger" did all the research and documentation. But the presentation and editing are top notch, so kudos for that!

    • @thingsiplay
      @thingsiplay 2 ปีที่แล้ว +1

      @@SeppelSquirrel You are not wrong, but see it this way: He learned from doppelganger and now he has the knowledge. So I am not wrong either. ;-)

    • @Dong_Harvey
      @Dong_Harvey 2 ปีที่แล้ว

      @@SeppelSquirrel what if 'doppelganger' is just his pseudonym?

  • @jaybeans981
    @jaybeans981 2 ปีที่แล้ว +58

    I’m interested in knowing - while this explains HOW Mario can get to the Minus World, how is Minus World generated in the first place? There clearly wasn’t a design for it.

    • @KopperNeoman
      @KopperNeoman 2 ปีที่แล้ว +7

      Everyone forgets the FDS version of the Minus World.

    • @churchofclaus
      @churchofclaus 2 ปีที่แล้ว +1

      @@KopperNeoman what about it?

    • @davidmcgill1000
      @davidmcgill1000 2 ปีที่แล้ว +29

      Did somewhat explain it with the overview of the level editor. Minus world is an invalid memory location being treated as the procedure to generate a level.

    • @possible-realities
      @possible-realities 2 ปีที่แล้ว +13

      @@davidmcgill1000 But I seem to remember that minus world doesn't look like garbage, it looks like normal level data but with different tile sets I think. So there must be something more to it than that.

    • @AboveEmAllProduction
      @AboveEmAllProduction 2 ปีที่แล้ว +1

      Probably just a bug 💁

  • @XxUltimateGodzXx
    @XxUltimateGodzXx 2 ปีที่แล้ว +18

    This was a very relaxing video, literally cooked up breakfast, had my coffee ready and didn't hit play until everything was ready, and the content was excellent!!
    Keep this channel going, never programmed in 6502 assembly but somehow you make it easy to understand. Knowing logic gates also helps 😁.

  • @theo2z1z94
    @theo2z1z94 2 ปีที่แล้ว +2

    I think they designed the screen to continue scrolling to give the player a hint that there was a potentially hidden area (warp zone) beyond the brick wall. Awesome video dude thanks for sharing info.

  • @jimmyhirr5773
    @jimmyhirr5773 2 ปีที่แล้ว +3

    It's interesting to see how well compressed Super Mario Bros. is. Lots of run-length encoding to help shrink levels. I also like the "check condition, branch if true, else increment index" pattern they use.

  • @GameJam230
    @GameJam230 2 ปีที่แล้ว +5

    I love how back in this day, games were so simple that a game-breaking bug like this would actually make it MORE interesting, rather than ruining our image of the studio lol. Like, imagine if any game made in the last year had a bug on par with the kind of flawed programming and mysticism that world -1 had! I guess Giga Monty from FNaF Security Breach is close enough lol.

  • @TT-rl7pu
    @TT-rl7pu 2 ปีที่แล้ว +1

    Excellent video, I never would’ve guessed that’s how SMB1 stores level data, but that does explain why the tiling and terrain shapes are so much simpler than in later games.

  • @deadmetalbr
    @deadmetalbr 2 ปีที่แล้ว +1

    I’m not a programmer by any stretch of the imagination, but these dives into the (relatively) simplistic code of old games looks to me like some kind of digital anthropology. If you think your viewers are fascinated now, imagine how future nerds are going to feel watching this in another 37 years or more.

  • @legoboy7107
    @legoboy7107 2 ปีที่แล้ว +2

    That most likely intended way the scroll stop was supposed to work makes so much sense and makes the whole sequence look much more polished. In fact, I'm pretty sure that exact scroll stop behavior is how the warp zone in 1-2 of Mario 3D Land works, where it stops unless you're up at the top. I think a Star Coin in 1-2 of NSMB that references SMB1 Warp Zones also works with that behavior, interesting to see that that scroll stop behavior was apparently intended from the very beginning! It just...didn't actually function right in the original game.

  • @deoxysandmew2162
    @deoxysandmew2162 2 ปีที่แล้ว +6

    This is actually very interesting. I've been into SMB. Game Genie code fiesta for a very long time and I've been always perplexed as to why certain codes such as PIGPOG makes 1-2 unclearable. As in warp zone being unable to scroll.
    Its probably due to that "enemy" missing from that spot as a scroll unlocker, given PIGPOG messes up with the what enemies do spawn in the level. Cool stuff.

    • @Typical.Anomaly
      @Typical.Anomaly 2 ปีที่แล้ว +1

      Off topic, but I have only one NES GG code memorized: ZLZTLT. "Excellent Hit" every time in Dragon Warrior 1.

  • @Bro3256
    @Bro3256 2 ปีที่แล้ว +5

    just gonna mention that Nintendo actually patched the "minus world" glitch in All Night Nippon: Super Mario Bros. on Disk System
    instead of warping you to world 36-1 you're warped to the flagpole at the end of 1-2

    • @joethemanager1
      @joethemanager1 2 ปีที่แล้ว +1

      Didn't the disk system version of Mario (not all night nippon) send you to a different minus world? From what I can tell this new minus world was intentional as it is pretty humorous.

    • @Bro3256
      @Bro3256 2 ปีที่แล้ว +2

      @@joethemanager1 I'm just gonna quote the Super Mario Wiki page on the minus world as it sums it up pretty well
      "The game actually has 256 worlds in total; however, worlds past 8 and world 0 (World 0-1 is an underwater version of World 4-4) are glitched and reuse pointers from other levels in the level data. The Minus World (36) is the only one that can be accessed legitimately in the Western versions. These levels caused a rumor in Japan where a lightning strike on a Family Computer is said to create a Mario level never seen before, thought to be part of a secret World 9 (9-1 is an underwater version of World 6-2 that requires waiting a little to complete). However, the other glitch levels can be accessed in the Japanese version due to differences in the Family Computer hardware. Most versions also feature differences in those glitched worlds, be it different enemy placement, differently placed levels, as well as completely new ones not available on other ports. The most famous method involves swapping cartridges with Tennis while the power is on, which can potentially damage the console's hardware. World 9 in The Lost Levels was inspired by this glitch."

  • @Rubyboat
    @Rubyboat 2 ปีที่แล้ว +1

    This is my first behind the code episode, I am definitely watching more!

  • @joethemanager1
    @joethemanager1 2 ปีที่แล้ว +4

    Have you ever heard of the 256 worlds glitch? It only works on the famicom as it involves removing the game and resetting into Tennis without shutting off the power, which is impossible as the lock out chip of the nes would shut it off anyway. It's a sort of ram-related glitch that involves using tennis to overwrite the part of ram that stores the level you last played. Once you switch back to mario, you can hold a and press start to "continue" into a strange world made up entirely of random level data from the cartridge, creating very strange results. It was very popular in Japanese magazines, if you're interested the Super Mario Bros. page on Legends of Localization goes a little bit more in-depth about it.

    • @JawingSalamander
      @JawingSalamander 2 ปีที่แล้ว

      You can get the same 256 worlds by small changes to the ROM. The key is the "push B button to select a world" feature which is enabled after you rescue the princess once and you can start the game at any world you want (with higher difficulty).
      Because the game has this feature already built-in, you can turn it into a 256 world selector from the start of the game. It's a gee-whiz trick because most of the 256 "worlds" are very broken 🙂

  • @arnpoly
    @arnpoly 2 ปีที่แล้ว +2

    These videos are so fascinating. Thanks so much for making these! It's really neat to see what tricks developers used to make games like this back in the day, and you can see in later games how those ideas were expanded and refined thanks to better techniques and more RAM/ROM.
    Regarding the scroll lock bug, my theory is that for whatever reason they decided against scroll locking before the warp zone, and sort of incompletely patched it out quickly, resulting in the bugs shown.

  • @Sixfortyfive
    @Sixfortyfive 2 ปีที่แล้ว +1

    What I find perhaps the most interesting is that this specific scroll stop behavior shows up *a lot* in more modern Mario games. There are tons of underground secret rooms in the NSMB series and 3D Land / 3D World where the camera will lock up in front of an exit pipe, then unlock itself once you're walking around it on the ceiling or whatever. Toshihiko Nakago is usually only credited as a "programming supervisor" or "level design advisor" in these games instead of being part of the core design staff, and I'd bet that this is one point that he made sure the team dots their i's and crosses their t's on in recent history, lol.

  • @MYAceb
    @MYAceb 2 ปีที่แล้ว +2

    it made me remember couple of 1 in 160 games where only 1 mario bros was normal version and other has like different sprites (save for characters) and some alterations like different gravity or rendering being 3 blocks faster and making a big confusion about what is real and what not if You don't pay attention lol

    • @johnmarkther2218
      @johnmarkther2218 2 ปีที่แล้ว +1

      This channel's video on mario scrolling actually goes into that! They properly recreated the glitch, likely in the same way those bulk cartridges did.

  • @tarzankom
    @tarzankom 2 ปีที่แล้ว +1

    These have been some of the most interesting videos I've seen in a while. My ASM is a little rusty, but it's cool to see all of these games I grew up with broken down to their nuts and bolts.

  • @JackP8414
    @JackP8414 2 ปีที่แล้ว +1

    Very interesting and informative! 👍
    It was truly amazing to see not only the Minus World bug but also the scroll locks at the end of 1-2 fixed with just _three_ Game Genie codes.

  • @MuffledSword
    @MuffledSword 2 ปีที่แล้ว

    I remember noticing the scroll lock while looking at the SMB disassembly, but couldn't understand its purpose. Now I understand.

  • @trorisk
    @trorisk 2 ปีที่แล้ว

    I like that you explain the bug by putting yourself (and us) in the developers' shoes. For next videos you could even propose a pause and ask viewers if they had to how did they fix the code?

  • @JeffGerstmannShow
    @JeffGerstmannShow 2 ปีที่แล้ว +1

    Super fascinating, thanks for breaking it down.

  • @SynaMax
    @SynaMax 2 ปีที่แล้ว +15

    Your reverse engineering work is really incredible, can't thank you enough for these videos, Chris!

  • @DarkMoe
    @DarkMoe 2 ปีที่แล้ว +2

    this is amazing, I was under the impression that everything was already found in this game, I mean, the speedrun tricks with the subpixel stuff for example. Incredible explanation !

  • @BohepansTheThird
    @BohepansTheThird ปีที่แล้ว

    One thing I find interesting with this is that I *have* seen the game stop scrolling at that exact point in 1-2 - many, many times - but only when I've been messing around with Game Genie codes. Whenever I see it happen, I get a feeling of dread - because *very often* (almost always!), this means the game is just going to loop me back to an earlier point in 1-2 if I try the exit pipe (and the scrolling won't resume even if I go on top of the level!), leaving me trapped in the level. Fun times! Such nostalgia. So now I know, it wasn't the Game Genie somehow inventing a new behavior in the game, or anything like that - it was invoking potentially intended behavior, but in a way that caused something else to break in its place. I appreciate this video existing, explains so much to me about those oddities I encountered years and years ago. Thank you!

  • @JargonIsMe
    @JargonIsMe 2 ปีที่แล้ว +1

    ohhhh, this is a beautiful video. loved it, and loved that you made it with game genie codes as well. well deserved sub imo :D

  • @ContraG
    @ContraG 2 ปีที่แล้ว

    Great video man. I love how developers had to be creative to "solve" issues. I made a small game in community college and did something similar, were I made an object and turn on collisions and made it invisible in order to keep player from going out of bounds.

  • @MarcosValverde_mcs
    @MarcosValverde_mcs 2 ปีที่แล้ว +2

    This is almost fixing the matrix behind Super Mario Bros. Awesome video, guys!

  • @youtubehandlesux
    @youtubehandlesux 2 ปีที่แล้ว +3

    Pretty dang awesome, knew this game used some compression technique for level storage but didn't know how exactly they did it, don't think there are any video on youtube that talks about this expect smb1 level editor tutorials

  • @TheFinalChapters
    @TheFinalChapters 2 ปีที่แล้ว +1

    So the mystery of Minus World is finally solved... very interesting!

  • @DerFachwerker
    @DerFachwerker 2 ปีที่แล้ว

    It is always fascinating how much there is to learn and consider even in such old games!

  • @KingMagenta
    @KingMagenta 2 ปีที่แล้ว +1

    Here’s some food for thought though. If the screen locks, Mario still has enough room to get on the elevators and go into the warp zone, bypassing the “challenge” to get there. Perhaps they realized this and thought this was a compromise to prevent that from occurring? The easiest way to prevent the player from doing this while keeping the lock would be to move the exit over a couple blocks, but maybe that interferes with the page number?

    • @PCGamer77
      @PCGamer77 2 ปีที่แล้ว

      Yes, you are on to something there!
      The "trick" on World 1-2 is that running (holding down B button) towards the exit pipe scrolls the screen rightward, making the elevator inaccessible. If you wanted to warp, you were boned. If you didn't know about the warp zone secret, you were delayed from finding it. I think this was 100% intentional on the part of the designers.
      The "challenge" is different in World 4-2. If you are running towards the exit pipe, you will hit the pipe's "mouth." This automatically sucks you in, and prevents you from getting to the warp zone. Again, you're either kept in the dark about the warp zone, or just thwarted in your attempt to get to it.
      As an aside, this kind of design logic is probably what made Sega think they were onto something different and special with Sonic--rewarding players for using speed (and having fun!) instead of punishing them.

  • @Myriachan
    @Myriachan 2 ปีที่แล้ว

    I remember figuring out the main cause of the Minus World bug in the mid-1990s, the 4-2 warp zone data being used in the wrong place. But I never knew why that warp zone control variable got set to 1 like that. Now we know! Cool video =)

  • @TFSned
    @TFSned 2 ปีที่แล้ว

    Incredible. I love learning about the original intended behaviour, like this video about how the screen was supposed to lock unless you pass above the ceiling, or how Lakitu were supposed to throw Spinies ahead of you.

  • @MisterVercetti
    @MisterVercetti 2 ปีที่แล้ว +1

    I had a general idea of why it loaded the Minus World, but all this stuff about a horizontal screen lock being intended to kick in, but being bypassed due to a bug, was news to me. It's a shame the bug's there, since the Warp Zones would have been a much more interesting find.

  • @AlexReynard
    @AlexReynard 7 หลายเดือนก่อน

    I paused Kosmic's video to come watch this one. Two minutes in and I'm lready enjoying this decision.

  • @llSuperSnivyll
    @llSuperSnivyll 2 ปีที่แล้ว

    This explains how "world" G-1, which is actually World 1-2, makes the first and third pipes always send you to "world" -1, whether you pull the glitch or not.

  • @thesnowboundcabin
    @thesnowboundcabin 2 ปีที่แล้ว

    I was confused why I was hearing Wolf and Raven until I realized it was part of the video! Excellent taste, I love Wolf & Raven!

  • @beowulf848
    @beowulf848 2 ปีที่แล้ว +1

    Thank you for expositioning on Mario's x positioning

  • @bmwolgas
    @bmwolgas 2 ปีที่แล้ว +7

    Too bad there's no way to take advantage of that warp zone increment glitch during gameplay to increment it twice instead of once and thus get levels 6-7-8 to load in the warp zone. Would be a breakthrough for speedrunning.

    • @Moonhack95
      @Moonhack95 2 ปีที่แล้ว

      Someone's gonna come up with an arbitrary code injection exploit for that

    • @Snow_Fire_Flame
      @Snow_Fire_Flame 2 ปีที่แล้ว

      @@Moonhack95 : If you're already doing ACE, then you end up with runs like this, no need to even bother with getting to the warp zone: th-cam.com/video/C4IP1nPBaSE/w-d-xo.html

  • @WoolieOG
    @WoolieOG 2 ปีที่แล้ว

    i always find fascinating how old software jumped around hardware constraints, pure beauty rarely seen today

  • @RynRobitske
    @RynRobitske 2 ปีที่แล้ว

    I'm still amazed at the logic used in old games. Limitations breed creative solutions - and bugs. 😂

  • @nyanezt9636
    @nyanezt9636 2 ปีที่แล้ว

    very cool video, this is exactly the kinda stuff i like in IT - low level trickery to make amazing things, how the limitations of assembly and tiny amount of space affect bugs

  • @refractionpcsx2
    @refractionpcsx2 2 ปีที่แล้ว +8

    Love the talk about this :) Would you consider looking at the FDS version of Mario? it's very intriguing. the minus world has 3 levels and you can complete it (it thinks you've completed the game)! I do wonder what is different between that and the western version we got.

  • @chrideedee
    @chrideedee 2 ปีที่แล้ว +2

    I saw the title and thought, did someone else find the thing that I found and never posted anywhere? (Answer: Yeah.)
    The video didn't address why the inc WarpZoneControl instruction is there, though, and I have a guess about that as well. My guess is that at some point in development, that variable only stored whether a warp zone was active: 0 means vertical pipes behave normally, anything else means they behave as a warp zone, so 1 is a perfectly natural value to mean that the warp zone is active. Presumably at this point in development, either the code to determine which warp zone is active would run when you entered the warp pipe, or there was only one warp zone. This would also mean that you wouldn't need to scroll the screen all the way to the right for the warp zones to work, so maybe the platform above the warp zone wouldn't have been there.
    To determine which warp zone to use, the game checks the lower two bits of WarpZoneControl. The valid values are 4 (binary 00000100), 5 (bin 00000101), and 6 (bin 00000110), where the 1 bit in the 4's place is ignored by the code that checks where to warp, and is only there to make the variable not zero. 1 (the glitched value) and 5 (the second warp zone) have the same two lower bits, so they warp to the same place. This also means that if you could set the variable to 3 or 7, you'd get a fourth warp zone. Lost Levels has more warp zones; it looks like it uses the last four bits to determine which warp zone to go to, and uses the highest bit to make it nonzero.
    Also, by coincidence, when setting WarpZoneControl properly, the "default" value is the warp to world 5. (The code is basically, if you're in world 1, warp to 2-3-4, else if you're above ground, 6-7-8, else 5.) In Lost Levels, the code is more complicated but also has the (backwards) warp to world 5 as its "default".

  • @succojones
    @succojones 2 ปีที่แล้ว

    Thanks for your amazing videos. I love seeing how these old games are programmed. It makes them so much less mystifying and it's cool to see them using the same techniques I've discovered myself in making my own games.

  • @jonmayer
    @jonmayer 2 ปีที่แล้ว

    I love seeing what was likely intended and what went wrong. Great video.

  • @prismavoid3764
    @prismavoid3764 4 หลายเดือนก่อน

    It's really cool to finally know why jumping over the flagpole leads to an endless loop. I always was curious about that, when in pretty much any other game the scroll would either eventually stop or just lead to an empty void of nothingness or glitched tiles. How did Super Mario Bros somehow manage to have a truly infinite world back there? Now I know.

  • @ruadeil_zabelin
    @ruadeil_zabelin 2 ปีที่แล้ว +12

    Calling it "minus world" is a pet peeve of mine... it's the level "whitespace" of world 1. Or indeed as you say, 36. I'll accept that also :)

  • @Vuusteri
    @Vuusteri 2 ปีที่แล้ว +1

    11:26 wow, scrolling stopping temporarily must have happened many times, but never paid attention to why it was happening.

  • @allideni836
    @allideni836 2 ปีที่แล้ว +1

    If GameGenie code limitations weren't an issue, you could have the WarpZoneControl set by the Scroll Unlocker instead of the Warp Zone Scroll Lock in order to make it so you can go down the pipes without fully scrolling the screen while still going to the correct destination. You make me want to get back into hacking NES games with interesting dissections like these.

  • @idontwantahandlethough
    @idontwantahandlethough 2 ปีที่แล้ว +1

    Its always fun learning why things be the way that they do.

  • @khatharrmalkavian3306
    @khatharrmalkavian3306 2 ปีที่แล้ว +1

    Answering the important questions. 👍

  • @diegocrusius
    @diegocrusius 2 ปีที่แล้ว

    learned so much from this video. Many mysteries on how mario builds its levels and how to cram all that data into 32kb. Thank you so much.

  • @c3cris2
    @c3cris2 2 ปีที่แล้ว

    I want to recommend that you may want to add in the video description or title something that conveys this video and also explains how are Mario levels built/uncompressed on NES.
    The reason I say this is because I wanted to rewatch the explanation of how Mario levels are generated but I forgot in which video I saw it. I tried searching TH-cam but nothing came up for Mario levels NES generated/algorithm/uncompressed.
    I found it by checking individual channels I follow which took 30 minutes but it was worth it as the video is amazing and you have done a great job.

  • @gitgeronimo9375
    @gitgeronimo9375 2 ปีที่แล้ว

    12:14 is so interesting. It must have been the original intention, as it didn’t really give away the fact that there was more content behind that wall!

  • @greenteawizard8720
    @greenteawizard8720 2 ปีที่แล้ว +1

    I’m not a programmer in any way but I love these videos they’re so interesting

  • @JJ_TheGreat
    @JJ_TheGreat 10 หลายเดือนก่อน

    This is quite interesting! I was fascinated by how Nintendo “fixed” the -1 glitch in Super Mario All-Stars… even though that isn’t fun.

  • @anon_y_mousse
    @anon_y_mousse 2 ปีที่แล้ว

    What's really cool is that you not only showed why the bug occurred but how to fix it.

  • @TriXtanGaming
    @TriXtanGaming 2 ปีที่แล้ว

    I do a lot of Mario gaming on my channel so I really love learning about this stuff, you did an amazing job explaining, thank you so much for this!

  • @VixYW
    @VixYW 2 ปีที่แล้ว

    The cool thing about the scroll bug tho is that it lets players that are paying attention know that there is something beyond that wall, and they'll want to get there. It may be accidental, but it's a neat way to teach players to seek out these secret warp zones. Maybe that's why they didn't bother fixing it.

  • @antyrrama
    @antyrrama 2 ปีที่แล้ว

    this is incredibly interesting for me. and that bittersweet feeling, so cool new Behind the Code episode came out, sadly there will be long before next as they require so much work

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว

      Working hard on the next one right now! Hopefully sooner rather than later.

  • @Falzerexe
    @Falzerexe 2 ปีที่แล้ว +1

    Awesome explanation! Really enjoyed it, and you have a great way of presenting the info!

  • @jstnrgrs
    @jstnrgrs 2 ปีที่แล้ว

    This was definitely known before it was published in Nintendo power. I can remember friends telling me about in fall 1987, though I could never do it myself.

  • @arlwiss5110
    @arlwiss5110 2 ปีที่แล้ว

    I don't even know any programming and this was a fascinating watch

  • @DaizoDeeVonOfficial
    @DaizoDeeVonOfficial 8 หลายเดือนก่อน

    As an SMW ROM Hacker, I have an alternate fix for the scroll stop bug that makes the AND statement make a lot more sense.
    If it was intended for the AND statement to work, it would have to be an AND #$01, and the ram to check has to be !Mario_YPage_B5. Something like:
    LDA !Mario_YPage_B5
    AND #$01
    BNE ExGTimer
    Pass if it's 0, otherwise branch. You CAN also do NOP : NOP, because you're just checking if it's not 00 anyway (and you "save" 2 bytes).
    Nintendo codes are always fascinating to me.

  • @TylerNohbuddy
    @TylerNohbuddy 2 ปีที่แล้ว

    crazy that basically a couple lines of "wrong" code became one of the biggest legends in gaming

  • @Ali_Alhakeem
    @Ali_Alhakeem 2 ปีที่แล้ว

    This is really impressive, amazing video 💙

  • @Wflash00
    @Wflash00 4 หลายเดือนก่อน

    So THIS is why when you use certain Game Genie codes, like PIGPOG for example, the screen stops scrolling at the pipe!
    I've always wondered why that was, that's awesome

  • @davidhuckabayuncensoredmus7719
    @davidhuckabayuncensoredmus7719 2 ปีที่แล้ว

    I love how you explain all the details in each game and would like to make a few more NES Game requests if you can and don't mind.
    Dusty Diamond's All Star Soft Ball, Punch Out, Who Framed Roger Rabbit, and Metroid.

    • @davidhuckabayuncensoredmus7719
      @davidhuckabayuncensoredmus7719 2 ปีที่แล้ว +1

      Tip: What ever world you died in, at start screen, select 1 or 2 players, Hold A button and press start to start back in the last world you lost your last life in, but it starts you on 1st stage.
      Example: 4-1, 6-1

  • @pheonixmmkc
    @pheonixmmkc 2 ปีที่แล้ว

    Lua codes make things so much easier to visualize.
    A video on how to make them would be great :)

  • @Sparkette
    @Sparkette 2 ปีที่แล้ว

    The ceiling/floor block count reminds me of how levels in the original Doom (as well as its sequel) work.

  • @jonnyeh
    @jonnyeh 2 ปีที่แล้ว

    Truly fascinating! I wonder if the original programmer would care or even remember how this happened.

  • @flyjarrett
    @flyjarrett 2 ปีที่แล้ว

    Crazy that we’re still learning about this game almost 40 years later.

  • @SmeddyTooBestChannel
    @SmeddyTooBestChannel 2 ปีที่แล้ว

    We need more channels like this.

  • @slot9
    @slot9 2 ปีที่แล้ว

    So Cool!!!!!!! Thank you for breaking this down explaining it in depth, and visually showing results along the way!

  • @Chubby_Bub
    @Chubby_Bub 2 ปีที่แล้ว

    This was a very interesting and well-explained video. I had watched videos on the Minus World before but they didn’t explain the code as well as here. Something I would suggest as another video is to see is how and why the levels past World 8 (including 36-1) act the way that they do. I've also heard this is different in the Famicom Disk System version…

  • @ReaperX7
    @ReaperX7 2 ปีที่แล้ว +1

    One other fix to -1 would be to prevent Mario from spawning on nonexistent blocks, such as the third loop of -1 on the NES version that spawns Mario directly inside the pit which triggers the automatic kill. It would be interesting to see where the possible 4th loop would be, or if after the 3rd or 4th loop, you are placed back in World 1-1 or another minus world value.

    • @zaphod77
      @zaphod77 2 ปีที่แล้ว

      That's not how it works.
      If you die in the second half, you spawn above the pit. Number of loops means nothing. if you die in the first half, you spawn on solid ground. die after that pit, you need to swim FAST right upon spawning.
      I also remember ALL the rumors about how to pass the level.
      1) enter the last pipe four times without dying (not quite impossible, but DAMN hard, and most people run out of time in the second half of the level trying it)
      2) get on top of the screen, it will scroll (you know, like how 1-2 was originally going to work? damn near impossible to actually do)
      3) get on top of the exit pipe (this just does nothing if small, and traps you if you are big)

    • @ReaperX7
      @ReaperX7 2 ปีที่แล้ว

      @@zaphod77 yeah, the US version changed quite a bit, but there was a loop where you start in the pit. However, I do know there are several revisions of SMB1 so who's to know exactly what the mapping system is doing for that level since it's technically out of bounds...

  • @jslepicka
    @jslepicka 2 ปีที่แล้ว

    This whole video is awesome! I’ve been wondering for a long time why that stutter occurs by the pipe.

  • @chronikuad
    @chronikuad 2 ปีที่แล้ว

    I barely understood this but it was interesting. Congrats on figuring all that out

  • @MillerHammer
    @MillerHammer 2 ปีที่แล้ว

    Excellent video!! Cool to see an explanation of what causes the -1 world.

  • @sagacious03
    @sagacious03 2 ปีที่แล้ว

    Great analysis & explanation video! Thanks for uploading!

  • @awesomedata8973
    @awesomedata8973 2 ปีที่แล้ว

    Thank you for remembering those of us who are interested in game logic! -- This was an epic video and surely a piece of history brought to the masses! Thanks a lot for this, man! :D

  • @samuelthecamel
    @samuelthecamel 2 ปีที่แล้ว +1

    I didn't know that the middle pipe could take you to 5-1 when doing the minus world glitch. I guess if the warp in 4-2 didn't exist, that would be the way to go.