83

In Super Mario Bros. for the NES and Famicom there exists a secret world, accessible by clipping through a wall to the first warp zone and entering the left-most pipe.

This pipe will take you to level " -1". In the NES release, this level is extremely similar to 7-2, except the pipe at the end will send you back to the beginning of the level. There is no way to escape.

Why does the Minus World exist, and why are all the level numbers negative?

In World 1-2 of Super Mario Bros., Fire Mario runs, lands on the front of the exit pipe, and quickly crouches and jumps to reach a peak where the exit pipe crosses the ceiling. At that moment, Mario stops crouching and is ejected through the wall to reach the warp zone and ducks into the pipe to the minus world. (Click for attribution of both the image and this alt-text.) Level 1 of the Minus World.

5
  • 12
    Someone voted to close this question and it ended up in the CV queue. While I understand why this question was asked on Retrocomputing, you might want to elaborate a little bit on the glitch in a Retrocomputing context so others decide not to vote to close your canonical Q&A pair.
    – JAL
    Nov 7, 2016 at 0:00
  • There is this cool video explaining it youtube.com/watch?v=Hv_h_R3o9r8
    – user24300
    Nov 8, 2016 at 3:19
  • 5
    It's actually <blank>-1
    – user253751
    Apr 3, 2018 at 0:37
  • 1
    Wouldn't this be more appropriate on arcade? Feb 14, 2020 at 1:27
  • @ThorbjørnRavnAndersen The scope overlaps. It's on-topic on both sites, so it's fine here – the question's more about the software internals, so arguably it'd be more appropriate here.
    – wizzwizz4
    Feb 14, 2020 at 18:46

3 Answers 3

72

In Super Mario Bros, you can access warp zones in three areas of the game. There are two of these that are important for the minus world glitch: the one at the end of World 1-2 (following the exit pipe) and the one at the end of World 4-2 (also following the exit pipe).

The first warp zone takes you normally to World 2, 3, and 4, while the second one only allows the player to World 5, however, the warp zones internally must have three locations.

Internally, the game represents the second warp zone mentioned as World 36, World 5, and World 36 again. This can be verified by looking in a level editor, as shown here:

SMB Utility with an unedited copy of the Super Mario Bros ROM open to the 'Other Settings' screen showing the warp zone locations

This was done, because the 36 (0x24)'s tile is a tile that takes the color of the current background (for all intents and purposes, transparent). The first nine represent the numerals 0 through 9, and the next 26 being capital letters (A-Z).

This gives the appearance in World 4-2 of a warp zone with only one location, as shown in the screenshot below:

Screenshot of warp zone at the end of World 4-2

For unknown reasons, the World 4-2 warp zone is the "default" warp zone, and it's warp zone data is used if there is no other data loaded. Normally the game loads the data from the first warp zone when you walk to the end (scrolling the screen), but performing the wall glitch moves the character without scrolling the screen. There is a scroll stop tile which moving into the warp zone area activates, which refreshes the current warp zone data.

Because when you perform the wall glitch, it moves the character without scrolling the screen, you never scroll far enough to activate the scroll stop which refreshes the warp zone data. Because of this, the default is then used, and because the pipe exists, you are free to swim in the never-ending ocean that is World 36-1.

(It's worth noting that in the Famicom Disk System version of the game, you get an underwater version of 1-3/5-3 instead, followed by World 2-3/7-3, and then an underground version of 4-4.)

But aren't there only 8 worlds?

There are eight intentionally developed worlds, with four levels each. However, the game doesn't stop at World 8. In fact, theoretically there are a total of 256 valid worlds (0-255).

A byte stores both the world counter and level counter. When a level is loaded, it loads an area from an address. For worlds 0 and 9-255, it loads other data as the room offset. A Japanese fan site has documented all of the worlds and levels and even describes the mechanism on how Super Mario Bros. loads the levels (and why the worlds work they do).

Worlds 2-2 and 7-2 are duplicates of each other, and it also happens to be World 36-1 in the NES version. Because no pipe data in ever loaded (it is loaded when 2-2 and 7-2 load I believe) it uses the default start position for the pipe which is the beginning of the level.

Is there more to this?

Yes. In Season 3 Episode 35 of Pop Fiction, the team behind the internet show covered more of these "lost levels", sourcing Legends of Localization. They found that using cartridge hot swapping (and a form of memory corruption), one is able to access all 256 worlds.

Most are unplayable and load garbage data, sometimes from RAM, but some are levels from the actual game, either with the correct tileset or not.

Videos of all 256 worlds can be found here.

Some Further Reading

Minus World - Super Mario Wiki
Deconstructing the Minus World
Marionaire

10
  • 17
    Welcome to Retrocomputing. Thanks for giving this great answer; this is exactly what I meant when I said "better or more complete answer". Have an upvote!
    – wizzwizz4
    Nov 7, 2016 at 7:21
  • 5
    what program is that level editor window screenshot from?
    – user17915
    Nov 7, 2016 at 12:49
  • 4
    @user17915 It was taken from SMB Utility. Nov 7, 2016 at 15:13
  • 4
    thanks. Is it this one? romhacking.net/utilities/178
    – user17915
    Nov 7, 2016 at 15:33
  • 2
    The 256 levels could also be reached by using Game Genie when you figure out the pattern. (For example, they published codes for starting on worlds 2 through 8 here: gamegenie.com/cheats/gamegenie/nes/super_mario_bros.html).
    – Xantix
    Nov 7, 2016 at 18:43
52

Warp zones exist at the end of some levels. In order to access them, you have to break through blocks at the top of the level, then run along the top until a secret area becomes visible. In order to access the warp zone below you, you have to fall through a gap at the right-most side of the level.

The loading of the right-most wall is what triggers the message to appear and the pipes to initialise. Before they initialise, they contain the data for the 4-2 standard warp zone, which has only one pipe (to level 5-1). The other pipes' warp data is filled in with the blank (air) tile, internally numbered with 36.

The initial "uninitialised" state of the pipes is not a problem; whenever you access the warp zone you have to walk far enough right to fall through the gap, and therefore load the right-most wall. That is, unless you clip through the wall. By doing this, you are preventing the pipe's warp location from changing from World 36 before you enter it.

World 36 was never programmed into the game. As a result the game tries to interpret "garbage data" when trying to load the level. For some reason, the data in question is mostly sections of other levels, so the level is still somewhat playable. However, as you have already found out, it is impossible to complete the first level in the NES version, as the pipe at the end simply leads back to the start.

The reason the level number is displayed as  -1 at the top of the screen is due to the way tile data works. Tile 36 is the empty space, and so this is what the game draws instead of the world number, which is the reason for the appearance of "no world". This is not coincidence; the very reason that the world you are warped to is World 36 is because tile 36 is blank (see the second paragraph).

This effect is what causes the Minus World to appear to be "negative". There isn't actually anything "minus" about it, but the absence of any visible world number makes the dash that separates the world number from the level number look like a negative sign.

In the Famicom Disk System version of the game, due to differences, level  -1 is different (a 1-3 where you swim) and, importantly, completable. Level  -2 is identical to 7-3, and level  -3 is an underground-coloured version of 4-4 with neither Bowser nor a maze, and is full of flying bloopers. After completing the third and final level of the Minus World, you are taken back to the title screen.

11
  • 2
    I plan to update this answer later, (hopefully) complete with some pictures. If anyone has a better or more complete answer don't hesitate to post it.
    – wizzwizz4
    Nov 6, 2016 at 19:31
  • 17
    I think it might be worth noting that there's nothing "minus" about it, and the dash is always there as in "1-1"; it's just that we're seeing "(space)-1" which people read as negative 1. All the facts are there in your answer, but people get very confused about that part of it, so it's good to call it out clearly.
    – hobbs
    Nov 7, 2016 at 8:39
  • 3
    @uoɥʇʎPʎzɐɹC I'll put it in words that a programmer, as opposed to a layperson, would understand. An uninitialised left-most or right-most pipe sends you to world 36, because that's the value of the empty tile. Because all of the world and level numbers should be digits, the programmers just display the tile that corresponds to them instead of displaying multiple-digit numbers that happen to have one digit. But because tile 36 is invisible, the number doesn't display. The glitchy levels just occur because the level data pointer is pointing somewhere unexpected.
    – wizzwizz4
    Nov 8, 2016 at 7:29
  • 1
    The "garbage data" being composed of other data from the game is expected with this kind of buffer overflow because the data being accessed is from other parts of memory, so it's just all kinds of data from other parts of the game that the engine is trying its best to interpret: en.wikipedia.org/wiki/Buffer_overflow Jan 20, 2018 at 9:40
  • 1
    @SpencerWilliams If it was random level data, you would expect to get complete garbage (like, imagine every byte contains a completely random tile). Somehow it ends up reading from other levels. Maybe what gets corrupted is only a pointer to the level data, so sometimes it still points to a level.
    – user253751
    Feb 6, 2020 at 18:54
1

(Just to be pedantic)

It doesn't exist.

What we see is just what happens to occupy the part of the rom that gets loaded into memory when using a bogus level number as input for the rom-offset lookup routine.

Using another (but still invalid) level number, would either crash and freeze the system or drop Mario into another dysfunctional adventure.

Another hint at it's non-existence...

If it actually was an existing level, then the exit at the end (triggered by entering the pipe) would have been configured to load another level and place Mario at the intended entry point in that map. For example like at the end of level 2-2.

Since no new map (or entry) is configured, the old (current) values will be re-used. Which means Mario will end up on the same level using the same entry point (at the beginning of the level).

And thus the endlessly looping level with it's inevitable outcome: The Time Up! screen when the timer runs out.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .