Super Mario Bros.
|Super Mario Bros./de|
This game has unused code.
This game has a bugs page
|This page or section needs more images. |
There's a whole lotta words here, but not enough pictures. Please fix this.
Super Mario Bros. was, and still is, probably the most well-known and biggest-selling NES platformer ever, especially since it was included with most NES units either by itself or with Duck Hunt. This game cemented Mario as the most famous plumber to grace televisions, with compelling gameplay, catchy music, and good graphics.
It's so ubiquitous, people can't get rid of these carts once they have them.
- 1 Unused Music
- 2 Unused Objects
- 3 Unused Timer Setting
- 4 Unused Spiny Egg Behavior
- 5 Unused Pipe Behavior
- 6 Oddities
- 7 Regional Differences
- 8 Anniversary Edition
An alternate "Game Over" theme with different, plunkier sounding instruments.
A "hurry up!" variation of the short clip that is played when Mario enters an underground or water level (such as World 1-2, 2-2, etc.). As the timer is reset between levels, this is never used.
An object that Mario can climb up or down like a vine. It makes a "buzzing" sound as you climb, as though Mario is repeatedly hitting his head on something. It can still be placed in-game with a level editor. Although it appears as a brown flagpole ball, the actual 16×16 metatile that is used is unique to this object.
Unused Firebar Type
Enemy object 1E is a short Firebar that quickly rotates counterclockwise. This type is never used in any valid levels however, unlike its clockwise counterpart 1C that is used only in World 5-4.
This firebar type also exists in the Game Boy Color remake.
Unlike invalid enemies (such as glitch Firebars 20, 21, and 22), this type has a valid entry in the setting table:
FirebarSpinSpdData: .db $28, $38, $28, $38, $28 FirebarSpinDirData: .db $00, $00, $10, $10, $00
The settings are stored in this order: Clockwise (1B), Speedy Clockwise (1C), Counterclockwise (1D), Speedy Counterclockwise (1E), and Long Firebar (1F). Firebar (1E) has both the faster speed ($38) and counterclockwise rotation ($10) programmed in.
Unused Timer Setting
The upper 2 bits of first level header setting byte determines the starting timer.
The timer starts at 200 if this setting is set to 3 (11xxxxxx), though no valid level actually uses it.
Likewise, the timer starts at 000 (causes instant death on normal levels) if this setting is set to 0 (00xxxxxx). While this setting is used by intros (such as the beginning of World 1-2), the game doesn't actually use the setting, since it completely disables the timer in these levels.
Unused Spiny Egg Behavior
The Spiny eggs are thrown by Lakitu in a simple way, with no horizontal movement whatsoever. However, this is not the intended behavior, and is actually the result of a bug! The eggs are supposed to be thrown out relative to the player's speed, Lakitu's speed, the player's position, and a pseudo-random value, as well as bounce off of any blocks or walls that they hit on the way down.
The following patch will fix the Spiny egg bug:
|Download Spiny Egg Speed Patch
File: SMBSpinyEggPatch.ips (25 B) (info)
This patch is intended for the NTSC version of the game. The Bugs page has more information on the nature of this bug.
Unused Pipe Behavior
The L-shaped pipes used in the intro leading to underground and underwater levels can be entered from the top like a regular pipe. However it is impossible to experience that behavior during regular gameplay, since Mario automatically enters the side of the pipe, and as such this behavior goes unused.
However, an L-shaped pipe appears in World 9-3 of the Japanese Super Mario Bros. 2, and it is possible to enter this pipe from the top.
RAM address 03F0 keeps track of the number of blocks hit, though no routine ever reads the value stored here.
Map 01 (Worlds 2-2 and 7-2) has a third level pointer for World 3, which leads to the same place as the normal World 2 and 7 level pointers.
Duplicated Scroll Stop Object
There are two identical scroll stop objects: 46 and 47. Only the latter is used by the game's valid levels.
The bricks and Bowser's bridge may have each used four unique tiles at some point in development, judging by the arrangement of existing tiles in the CHR data. The second and fourth tiles in each highlighted group are pieces of the block behind the title logo.
Although Bloopers normally appear only in water levels, they can be placed in non-water levels just fine and will award a whopping 1,000 points when stomped. Most other "impossible" ways to kill enemies, like hitting a Podoboo or Bowser with a Starman, only award the default 200 points, though Podoboos also have the stomp code defined.
Given that Bloopers appear in non-water levels (such as World 1-3) in the Japanese Super Mario Bros. 2 and award 1,000 points, this behavior was likely intended all along.
Having more detail is always a good thing.
The European version mostly had some adaptions to the slower refresh rate on 50 Hz televisions, but beyond that it also had a few bugfixes.
- Just like in Vs. Super Mario Bros. and Super Mario Bros. 2, in all underwater areas (Worlds 2-2 and 7-2 plus the underwater sections of 5-2, 6-2, and 8-4), a block was added over the exit pipe to close the one-tile-high gap. In the International versions, it is possible to clip into that gap in Super/Fire form and get stuck in the wall with no way out.
- In World 8-2, the starting positions of the Koopa Paratroopas were changed.
- The International versions had a bug where if a lot of enemies were on-screen, the Springboard sprite could load into a piece of memory normally used to load powerups or the flag at the end of the level, allowing these to overwrite each other. The European version added a check to prevent this from happening.
- In the European version, Bloopers can now get closer vertically.
- Originally in the International versions, the branch if enemy object would add 12 pixels to the player's vertical position. In the European version, it decides whether Mario stomped or got hit depending on the enemy branch if enemy object.
- Mario's initial downward acceleration at the start of the level is higher.
- Mario's vertical acceleration on springs is now defined.
- The movement function for Cheep Cheeps was drastically simplified.
- In the European version, the vertical difference deciding whether Mario stomped or got hit depends on the enemy.
- Rather than doing an ASL (Arithmetic Shift Left) on the injury timer, the value is set explicitly.
- In water stages, Mario's vertical speed is set to 0 after nullifying.
- Some enemies (more specifically: Piranhas, Bullet Bills, Goombas, Spinies, Bloopers, and Cheep Cheeps) have a larger hitbox.
- The second tone of the coin grab sound effect is different.
In the 25th Anniversary Edition for Virtual Console, bundled with specially-marked Japanese and Australian Wii consoles, the question mark on the ? Blocks was changed to display the number "25".