Super Mario Bros.
Super Mario Bros. |
---|
Developers: Nintendo EAD,
SRD[1] This game has unused code. This game has a prerelease article This game has a bugs page This game has a Data Crystal page |
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.
A few of the unused elements in this game would later be used in the game’s sequel in Japan, which was functionally just a set of new levels for this game, with some minor tweaks and seriously jacked up difficulty.
See also: leaked development materials for the SNES port included in Super Mario All-Stars.
Contents
Sub-Pages
Prerelease Info |
Bugs |
Unused Objects
Enemy 04
Enemy 04 has a green Koopa's sprite index 0c and palette index 01. It uses a stubbed-out initialization routine and normal enemy movement. In the leaked Super Mario All-Stars source code, red Koopas have commented-out code for turning into this enemy after getting stomped. (which means that red Koopa originally could be hit twice)
Unused Green Paratroopa
Enemy object 09 is a version of the green Koopa Paratroopa that simply walks in place due to a stubbed-out movement routine. It turns into a red Koopa Troopa when stomped, because the function for handling Paratroopa demotion doesn't take the unused enemy type into account.
In the SMAS source code, 09 is revealed to be a scrapped enemy with the internal name 'fly green', whose code was almost completely commented out. It appears to be an early version of the green Paratroopa.
A small fragment of code relating to its size remains in the final game.
Enemy 13
Enemy 13 is entirely dummied out, with stubbed initialization and movement functions, and the invalid value ff for both its sprite and palette indices. If forced to spawn it appears as an upside-down, scrambled Buzzy Beetle that turns into an intangible shell after being hit with a fireball, but this is a glitch not reflective of its intended behavior.
The SMAS source code reveals it to be another scrapped enemy with removed code. Its internal name is '-1 ( bakudan )', revealing it to be a scrapped version of the Spiny.
Object 19
Object 19 has an invalid sprite index f6 and palette index 02, which is used by red Koopas. Its initialization and behavior routines are stubbed out.
In the Super Mario All-Stars source code, this object is called 'bridge'.
Object 1A
Object 1A uses invalid sprite index fc and red palette index 02. Its initialization and behavior routines are stubbed out.
Unused Fire Bar Types
Enemy object 1E is a short Fire Bar that quickly rotates counterclockwise. This type is never used in any valid levels, however; its clockwise counterpart 1C is used only in World 5-4.
Unlike invalid Fire Bars 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). Fire Bar (1E) has both the faster speed ($38) and counterclockwise rotation ($10) programmed in.
This behavior was later used in World A-4 of the Japanese Super Mario Bros. 2. It would later return in the Game Boy Color remake, where it remains unused due to the remake's version of A-4 being inaccessible.
Objects 20, 21, and 22 use the Fire Bar behavior routine, but have stubbed out initialization functions and no entries in the speed and rotation direction tables seen above. If the pattern used by the short Fire Bars was to be repeated, then 20 would have been a fast clockwise long Fire Bar, 21 slow counterclockwise long and 22 fast counterclockwise long.
Object 23
Object 23 has stubbed-out initialization and behavior routines.
The Super Mario All-Stars source code calls this object 'loop elevator' and features a significant amount of commented-out code that when restored reveals this object's original intended behavior as a lift that moves in a counterclockwise circle.
Tree Branch
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. According to the leftover source code from the All-Stars version this object is internally known as Wood-3, meaning that it was meant to be attached to the trees located in the Tree levels.
Unused Group Objects
Enemy objects 3D and 3E consist of two and three green Koopa Troopas, respectively, and are placed four blocks higher compared to their used counterparts. The equivalent objects for Goombas are used in a few levels, but these aren't used anywhere. Both of these objects would later be used in the Japanese Super Mario Bros. 2.
Unused Timer Setting
The upper 2 bits of the first level header setting byte determines the starting timer.
Value | Bits | Starting Timer |
---|---|---|
0 | 00xxxxxx | 000 |
1 | 01xxxxxx | 400 |
2 | 10xxxxxx | 300 |
3 | 11xxxxxx | 200 |
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.
This setting is also used in cloud bonuses and World 4-2's vine warp zone, however the current level's timer is still valid there, so this setting goes ineffective.
Coin rooms (such as the one in World 1-1), water bonus (World 5-2) and World 8-4's water portion, however, use setting 1.
Unused Spiny Egg Behavior
The Spiny eggs are thrown by Lakitu in a simple straight-down 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. This behavior is left unchanged in the Japanese Super Mario Bros. 2, so the same fixes can be applied.
The following patch will fix the bug:
Download Spiny Egg Speed Patch
File: SMBSpinyEggPatch.ips (25 B) (info)
|
This patch is intended for the Japan/US version of the game. The Bugs page has more information on the nature of this bug.
In Super Mario Maker, this behavior has been restored and the Spiny eggs are thrown as though this patch is applied.
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.
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.
Unused Tiles
A vertical string that was meant to be used for the pulley lifts, based on its location in the CHR data. The final game uses graphics from the flagpole instead.
The letters F, J, and X are in the ROM, but they are never used. However, the F is used as part of the ending in the sequel, albeit in a modified form.
Oddities
Unused Variable
RAM address 03F0 keeps track of the number of blocks hit, though no routine ever reads the value stored here.
Unused Pointer
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.
Unused World 7-1 Enemy Data
Three of the Koopa Paratroopas and one of the first two Hammer Bros. are set to only appear after World 5-3. This suggests that there was meant to be an easier version of this level at one point, as is the case with some other levels.
Duplicated Scroll Stop Object
There are two identical scroll stop objects: 46 and 47. In the original source code, these are respectively labeled "SCRON" and "SCROFF", but they're connected to the same code, and only the latter is used by the game's levels.
Removed Tiles
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.
Piranha Plant's Stem Animation
The Piranha Plants' heads have a two-frame animation. Interestingly, this also applies to the stem, however the two graphics used to "animate" it are completely identical, resulting in the stem being stationary. It should be noted that the Piranha Plant in All Night Nippon Super Mario Bros. (which takes on the appearance of Japanese DJ Tamori) does use this bottom half as part of the visible animation.
Above-Ground Bloopers
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.
Unused Hidden 1-Up Coin Count
When finishing the fourth stage of each world, the game compares the number of coins that the player collected in the third stage to a value stored in the byte array at 0x32d2, offset by the world number - 1. If the number of coins collected is greater than or equal to the required amount, a flag is set that makes an invisible 1-up block tangible on the first level of the next world. This byte array defines a coin requirement of 99 for World 8, which is unused because in addition to there not being a World 9, it is impossible to collect 99 coins in 8-3.
5-1 Starting Castle
For unknown reasons, most likely an oversight, World 5-1's starting castle is not the 3-tiered one as seen in every other world. This was not fixed in the SNES and GBC remakes.
Regional Differences
Please elaborate. Having more detail is always a good thing. |
This page or section needs more images. There's a whole lotta words here, but not enough pictures. Please fix this. |
The European version, released about 18 months after the Japanese and US versions (which are identical), contains several minor tweaks and bug fixes.
European Version
Japan/US | Europe |
---|---|
Japan/US | Europe |
---|---|
- 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 in the European version over the exit pipe to close the one-tile-high gap. In the Japanese and US version, it is possible to clip into that gap in Super/Fire form and get stuck in the wall with no way out other than letting the time run out.
Japan/US | Europe |
---|---|
- In World 8-2, the starting positions of the Koopa Paratroopas were changed.
- The Japanese and US version 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 power-ups 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.
- The lowest position a Blooper can reach on-screen was lowered by 4 pixels, allowing them to, unlike other versions, hit Super or Fire Mario if he's standing on the ground.
- Originally in the Japanese and US version, the branch of an 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 of the 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.
- 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.
- On 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.
Revisional Differences
To do: Is anything notably different in the FDS port, aside from the "minus world" leading to a different level? |
2-in-1 Super Mario Bros. / Duck Hunt
The beginning of the program was overwritten with code to swap in the menu bank and jump to $8000 on reset (though the bankswitch happens before the JMP instruction can be processed). Additionally, a duplicate tile was removed to make space for the registered trademark symbol used on the menu screen, which necessitated a small change to the title screen tilemap. The code is otherwise identical to the standalone JP/NA release.
3-in-1 Super Mario Bros. / Duck Hunt / World Class Track Meet
The reset vector was altered to point to an MMC1 reset instruction inserted at $F2CA (originally six unused $FF bytes), which resets the mapper and swaps in the bank containing the menu code. The code is otherwise identical to the standalone JP/NA release.
Nintendo World Championships 1990
Original | Nintendo World Championships 1990 |
---|---|
The player options and top score are removed from the title screen. Notably, so is Mario, resulting in a static screen instead of gameplay demos.
Additionally, pressing Start to start the game doesn't work; the game instead starts by itself after a few seconds.
Original | Nintendo World Championships 1990 |
---|---|
- You start with 99 lives. Notably, the lives counter has been modified to display this correctly.
- Your lives are capped at 99, similarly to later Mario games.
- The game can't be paused.
- The game ends when you collect 50 coins.
Anniversary Edition
Original | 25th Anniversary Edition |
---|---|
In the 25th Anniversary Edition for Virtual Console, bundled with specially-marked Japanese and Australian Wii consoles, the question mark on the ? Block was changed to "25".
References
- Good articles
- Good main articles
- Pages missing developer references
- Games developed by Nintendo EAD
- Games developed by SRD
- Pages missing publisher references
- Games published by Nintendo
- Games published by Samurai
- Games published by Hyundai
- NES games
- Famicom Disk System games
- FamicomBox games
- Arcade games
- Pages missing date references
- Games released in 1985
- Games released in September
- Games released on September 13
- Games released in October
- Games released on October 18
- Games with unused code
- Games with unused enemies
- Games with unused objects
- Games with unused graphics
- Games with regional differences
- Games with revisional differences
- Pages with a Data Crystal link
- Articles requiring elaboration
- Needs more images
- To do
- Mario series
Cleanup > Articles requiring elaboration
Cleanup > Needs more images
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with regional differences
Games > Games by content > Games with revisional differences
Games > Games by content > Games with unused code
Games > Games by content > Games with unused enemies
Games > Games by content > Games with unused graphics
Games > Games by content > Games with unused objects
Games > Games by content > Pages with a Data Crystal link
Games > Games by developer > Games developed by Nintendo > Games developed by Nintendo EPD > Games developed by Nintendo EAD
Games > Games by developer > Games developed by Nintendo > Games developed by SRD
Games > Games by platform
Games > Games by platform
Games > Games by platform
Games > Games by platform > Arcade games
Games > Games by publisher > Games published by Hyundai
Games > Games by publisher > Games published by Nintendo
Games > Games by publisher > Games published by Samurai
Games > Games by release date > Games released in 1985
Games > Games by release date > Games released in October
Games > Games by release date > Games released in October > Games released on October 18
Games > Games by release date > Games released in September
Games > Games by release date > Games released in September > Games released on September 13
Games > Games by series > Mario series
The Cutting Room Floor > Good articles
The Cutting Room Floor > Good articles > Good main articles
The Cutting Room Floor > Unimportant Awards > NES games
The Cutting Room Floor > Unimportant Awards > NES games > FamicomBox games
The Cutting Room Floor > Unimportant Awards > NES games > Famicom Disk System games