the cutting room mirror

Super Mario Bros. 3

Featured articleThis article has a talk page!
view on tcrf.net

Super Mario Bros. 3 is one of the best-selling games of all time, and with good reason. It was a huge improvement over Super Mario Bros., with new powerups, more levels, Toad Houses, the Koopalings, new mechanics, and so much more.

See also: leaked development materials for the SNES port included in Super Mario All-Stars.

Sub-Pages#

Developer Debug Leftovers#

There are some leftover debug routines in the game, but none can be accessed without cheat devices or hacking.

Level Select and Debug Menu/Mode#

The walls have eyes!

On Japanese, US and European versions, Game Genie code KKKZSPIU activates a level select and debug mode. On Japanese Revision 0, the code instead is SXOXVOTA.

On the title screen:

  • Press Up or Down to select a world to start on.
  • Press A to increase the number of lives by 5 (a tile will change each time you press the button).
  • A + B + Down on Controller 2 warps you to the Princess' chamber at the end of the game.
  • A + B + Right warps you straight to the final curtain.

When you start a game, your item box will be filled with one of every item plus an extra Warp Whistle, and the remaining slots will be filled with P-Wings. During gameplay:

  • Press Select on Controller 1 to cycle through all of Mario's forms.
  • A / B + Select gives Mario a Goomba's Shoe (it may look messed up in some levels, but will otherwise work fine).

Additionally, you'll have infinite time - it will still tick, but Mario won't die once it runs out.

The menu shown in the picture was found elsewhere in the ROM and hacked into the title screen; it doesn't appear if you use the Game Genie code by itself. Apply this IPS patch to a Super Mario Bros. 3 ROM to see it for yourself.

Originally, it appears that this menu would have been accessible from the "1 PLAYER" / "2 PLAYER" selection menu if player 2 was holding A + B. It is also possible that this served some other purpose, but the above menu would be the most likely candidate. See Disassembly source for PRG bank #24, search for "Title_Do1P2PMenu:" Interestingly, the button check is still there but the action it was supposed to perform was overwritten with a series of NOP (no operation) instructions, likely done just before release.

(Source: menu found by Rachel Mae; code created by David Wonn; disassembly by Southbird)

Disconnected Debug Leftovers#

Even if you enable the debug mode above, there are a couple of leftover routines that remain inaccessible. These routines do not seem to pay attention to the aforementioned debug flag, so either the check is simply lost to time or these routines were hardwired to always work. The latter would make sense why they are disconnected from the source.

  • Free Movement Mode - Unclear how this would be accessed, but would allow you to use the D-Pad to move around the level (see disassembly source for PRG bank #0, search for "$C3EA").
  • Toggle Invincibility - Pressing Select would toggle whether you were completely invulnerable (see disassembly source for PRG bank #0, search for "$C91B"; this behavior could be easily restored by retargeting the JMP instruction or moving the Objects_HandleScrollAndUpdate label since this method would fall through into normal game code).

(Source: Southbird)

Unused 2P Respawn Feature#

Watch on YouTube

In a 2P Vs. match, there is an unused game code which causes a player to respawn when they die. They will respawn flashing and invincible until the player moves them. This behavior can be restored using Game Genie code ATUZPKOZ...which as a side effect also breaks logic for exiting after enough points have been earned.

(Source: Southbird)

Unused Objects#

(Additional information: Southbird)

Object 00#

Bank ID: ??
Object ID: 00
It has code that makes it move (up to a certain speed) based on player input when the player is "touching" it. What purpose this may have ever served is unclear. It may have just been used to test out collision.

Object 02#

Bank ID: ??
Object ID: 02
This one is destroyed by its initialization routine if the player is not standing on two of the same tile, otherwise, it starts at a vertical height matching the player +32 (roughly at the player's feet) and moves upward at some changing speed by peculiar logic.

Object 04#

Bank ID: 00
Object ID: 04
Nice numbers......and letters.
Note: This is not how the object actually appears in-game. Image is for reference only.

A very odd object. The tiles that actually make up this object are no longer in the ROM, but it was supposed to use tiles B0-BF. It faces the player upon initialization. If Mario/Luigi collides with this object, it will stick to him like a Micro-Goomba and will never come off, but it doesn't hinder his movement. It can be killed with a Koopa shell or Hammer.

Object 05#

Bank ID: 00
Object ID: 05
More numbersNot as many letters though
Note: This is not how the object actually appears in-game. Image is for reference only.

Another weird sprite. The tiles that actually make up this object are no longer in the ROM, but it was supposed to use tiles A0-A7. This object walks around like a normal enemy. At a certain point in its walk cycle, it will jump up to Mario/Luigi's Y position and then fall back down.

Interestingly, walking into it will bounce Mario/Luigi in the opposite direction. The only way to get damaged by this object is to let it fall on you. It can be destroyed with a Koopa shell or Hammer.

Object 0A#

Bank ID: 00
Object ID: 0A
Who was the unfortunate Toad that got turned into this thing?
Note: This is the best fit for this object's graphics, but it may not be correct; the graphics depicted here are those of the Bolt Lift object.

A simple stationary object that can be "pushed" by Mario/Luigi. Its collision detection doesn't seem to be complete, though, since it can be pushed into walls.

Object 1C#

Bank ID: ??
Object ID: 1C
Probably the most perplexing object, this causes something to fly off towards the player, out into the sky, leaving a mushroom gliding along where it spawned. This might have been like the bushes in Super Mario World where you run by them and a mushroom pops out, though the functionality is not nearly complete enough to be used that way.

Card Objects#

Bank ID: 00
Object ID: 21 (Mushroom), 22 (Fire Flower), 23 (Star)
Electric Solitaire Porycard.
Stationary object versions of the cards found at the end of each level! Collecting them will add the appropriate card to your inventory, but there's nothing in this object's code to handle when the card collected is the third card.

Getting to the goal with three of the same card won't trigger the 1-Up bonus. You still have to get the appropriate third card from the goal.

Peculiarly, this object calls a subroutine coined "Object_MoveAndReboundOffWall" (which would be a great function for just about every ground troop in the game, but only this object actually calls it), even though the object never moves.

Alternate Hot Foot#

Watch on YouTubeObject ID: 45
A variant of the Hot Foot enemy that alternates between walking back and forth, and chasing after the player.

Tan Cheep-Cheep#

Bank ID: 00
Object ID: 88 (Single), D2 (Trio)
If it were in Mario Party, you would get 3 points for defeating it.
This Cheep-Cheep variant only appears in the seventh unused level. In that level, they always show up in groups of three (though sprite overload often keeps at least one from appearing), but a single enemy version is in the code.

It swims across the screen in a strange wavy pattern and is considerably faster than the standard red or green varieties.

Green Para-Beetle#

Object ID: N/A
The speedy green!
This can only be spawned with the unused Para-Beetle Swarm object (see below). It flies faster than the Red Para-Beetle, but otherwise, there's no difference between the two.

Bouncing Object#

Bank ID: ??
Object ID: B3
A peculiar object that basically behaves similarly to a Spiny Egg, but has glitched graphics. It can also curiously be "bounced" by a bounce block to turn around. Its purpose is unknown, maybe it was a rolling spike ball or something of that sort?

Para-Beetle Swarm#

Bank ID: 00
Object ID: B7
A control object that will spawn Green and Red Para-Beetles on the left and right sides of the screen. It's used in the ninth and tenth unused levels.

Unused Palettes#

Level Palettes#

Some level types have unused palettes. Not many, though.

Fortress#

Palette 4 (Used)

Palette 2 (Unused)

Fortress palette #2, located at 36D82 in the ROM, is a green version of the standard fortress color scheme. Set ROM address 2A972 to 02 to view this palette in World 1-Fortress.

Giant#

Giant stage palette #2, located at 37442 in the ROM, uses shades of gray with blue water. Set ROM address 26B9D to 82 to view this palette in World 4-1.

Plains#

Plains palette #1, located at 36CB2 in the ROM, is similar to the used palette #2 (see below), but features a sky with a pinkish hue. Set ROM address 1FB97 to 81 to view this palette in World 1-1.

Palette 2 (Used)

Palette 6 (Unused)

Plains palette #6, located at 36D02 in the ROM, is nearly identical to the used palette #2. The only difference is that the blue part of the palette is blue-green instead of regular blue. Set ROM address 1FB97 to 86 to view this palette in World 1-1.

Mario Palettes#

Used

Unused
(Underground)

Unused
(Castle)

In the palettes normally used for underground and castle sprites, located at 36D32 and 36DE2 in the ROM respectively, unique palettes for Mario can be found. The underground sprite palette gives Mario a dark blue outline, matching the other sprites' outlines in the palette. The castle sprite palette does the same thing, however, it additionally changes Mario's skin color to a more orange-yellow color, the same one used for his skin while wearing the Hammer Suit.

They cannot be seen normally due to the area where Mario's palette goes in the sprite palette being overwritten by a separate set of Mario palettes located elsewhere in the ROM, giving Mario his regular colors regardless of the sprite palette set in the level.

Hidden Objects#

There are a few stages with objects or scenery hidden behind other objects, possible remnants of older level designs.

Hidden Tile

In-Game

A single brick is hidden behind the waterfall in World 4-1.

Hidden Tile

In-Game

A cloud appears behind the first slope in World 5-2.

Unused White Airship#

There's unused, fully functional code that spawns a White Airship on the World Map after collecting enough coins in a level. It is very likely an early version of the final game's Treasure Ship mechanic. It uses the sprite of the small, fast airship fleet from World 8, using the palette for items in the player's storage; as such, the small Rocky Wrench visible in one frame's color will vary depending on the last item highlighted, with red as the default.

The logic for this is shared with the White Mushroom House spawner: a special sprite is placed in any level that can spawn a White Mushroom House/White Airship, and its Y coordinate determines the coin requirement. If it is even, the level will spawn a White Mushroom House, if it is odd, it will spawn a White Airship. However, because all levels in the game have an even coin requirement, they will always spawn a White Mushroom House, rendering the White Airship unused.

While the spawn logic itself is still fully functional and can be triggered by using a level editor to place the spawner sprite at an odd Y coordinate, the rest isn't: the White Airship will always spawn at a fixed position on the World Map, no matter if there actually is a path there, and entering the White Airship takes Mario to the underground part of 7-5; a level layout for the White Airship doesn't seem to exist in the game.

The White Airship logic was carried over to Super Mario All-Stars, and works the same way there, although the White Airship doesn't have a palette defined to it so it will just appear as a regular airship. It even works in Super Mario Advance 4: Super Mario Bros. 3, although entering the White Airship there just locks up the game.

(Source: Retro Game Mechanics Explained)

Oddities#

Palette Inconsistencies#

Normal

Alternate

Hammer Mario/Luigi and Small/Super/Raccoon Luigi use a different palette from normal gameplay in various parts of the game, including on the world map, while speaking to a king after rescuing them, while entering a door if the level was entered as the aforementioned characters/forms and during the ending in Hammer Mario's case. The alternate Hammer Suit palette features the skin color used by the rest of the forms as opposed to the unique orange-yellow one used in the normal palette, while Luigi's alternate palette uses a much darker shade of green, the same shade used by his unique battle game and bonus game cutscene sprites.

These inconsistencies may hint towards the in-game palettes being changed late in development, with the devs forgetting to apply the changes universally. Interestingly, Super Mario All-Stars gets rid of the alternate Hammer Suit skin color, making the form resemble its alternate palette.

"Toad Suit"#

It's-a me, Kinopio!

The Hammer Suit item that pops out of large ? Blocks doesn't look like the actual power-up. While this design has sometimes been interpreted as a "toad suit", it is most likely meant to be based on the Hammer Bros. themselves, judging by the shape of the "helmet". The other items stored next to it, the Frog and Tanooki Suits, match their inventory sprites, so why this one is different is a complete mystery. This oversight was fixed in the remakes.

Jelectro Coins#

Hitting a P-Switch in a level with Jelectros will cause them to turn into silver coins. However, the effect is purely visual, and Mario/Luigi will still get hurt if they try to collect one. This doesn't occur in the remakes.

Opening Curtains#

In-Game

Fixed

One wonders how the developers missed this, considering it's the very first thing seen when starting the game.

The curtains that appear before the title screen have two colors, just like the curtains that appear on the title screen properly and during the ending. However, the highlights are drawn using the transparent part of the palette, and since the background is black during the opening, this causes them to appear black as well, making the curtains look a bit odd. Switching around the colors using a graphic editor will fix this.

References#


  1. Shigeru Miyamoto was a Producer, Director, and Game Designer.↩︎
  2. GDRI↩︎
  3. スーパーマリオブラザーズ3 | ファミリーコンピュータ | 任天堂↩︎
  4. RF Generation: Super Mario Bros. 3 (Hyundai Comboy)↩︎
  5. Nintendo de 8-bits já está à venda no Brasil "8-bit Nintendo console is already at stores in Brazil" - O Estado de S. Paulo, September 19, 1994↩︎
  6. Vending Times - VOL. 29 NO. 10 August 1989 (Clearscan PDF), p. 86. "“Super Mario 3” has injected new vigor into the overall “PlayChoice” system, with many operators reporting earnings at some locations tripling since the new titles began shipping July 15."↩︎
  7. The official home of Super Mario™ – History↩︎
  8. Family Computer - Nintendo Switch Online. "發售日 2019/4/23"↩︎
  9. www.NINTENDO.se. "Super Mario 3 Platform Nintendo 1991-08-29"↩︎
  10. RF Generation: Super Mario Bros. 3 (Nintendo NES)↩︎