If you've blocked our ad, please consider unblocking it.
We promise it isn't annoying. No flash, no sound, ever.

Ads by Project Wonderful! Your ad here, right now: $0

Difference between revisions of "Super Mario Bros."

From The Cutting Room Floor
Jump to: navigation, search
(Marked this version for translation)
m (Regional Differences)
(65 intermediate revisions by 35 users not shown)
Line 7: Line 7:
 
  | systems= {{system|NES}}, {{system|Famicom Disk System}}
 
  | systems= {{system|NES}}, {{system|Famicom Disk System}}
 
  | japan= {{date|1985|September|13}} (Famicom), {{date|1986|February|21|nocat=true}} (FDS)
 
  | japan= {{date|1985|September|13}} (Famicom), {{date|1986|February|21|nocat=true}} (FDS)
  | usa= {{date|1985|November|17}} '''(debatable)'''
+
  | usa= {{date|1985|October|18}}
 
  | europe= {{date|1987|May|15|nocat=true}}
 
  | europe= {{date|1987|May|15|nocat=true}}
 
  | aus= {{date|1987|nocat=true}}
 
  | aus= {{date|1987|nocat=true}}
 +
| code= y
 +
| enemy= y
 +
| objects= y
 
  | graphics= y
 
  | graphics= y
 
  | music= y
 
  | music= y
  | code= y
+
  | region= y
| enemy= y
+
 
}}
 
}}
 
<translate>
 
<translate>
 
<!--T:35-->
 
<!--T:35-->
'''''Super Mario Bros.''''' is a NES game so ubiquitous, people can't get rid of these carts once they have them.
+
'''''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.
 
+
<!--T:36-->
+
{{todo|Regional/Revisional differences.}}
+
  
 
==Unused Music== <!--T:37-->
 
==Unused Music== <!--T:37-->
 +
===Track 10===
 
[[File:SMB1-UnusedGameOver.ogg|300px]]
 
[[File:SMB1-UnusedGameOver.ogg|300px]]
 
<!--T:38-->
 
* Track 10: An alternate "Game Over" theme with different, plunkier sounding instruments.
 
  
 
<!--T:39-->
 
<!--T:39-->
 +
An alternate "Game Over" theme with different, plunkier sounding instruments.
 +
 +
===Track 18===<!--T:40-->
 
[[File:SMB1-TimeUpPipe.ogg|300px]]
 
[[File:SMB1-TimeUpPipe.ogg|300px]]
 
<!--T:40-->
 
* Track 18: 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.
 
  
 
<!--T:41-->
 
<!--T:41-->
 +
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.
 +
 +
<!--T:42-->
 
{{source|Chris Moeller|NSF rips}}
 
{{source|Chris Moeller|NSF rips}}
  
==Unused Objects== <!--T:42-->
+
==Unused Objects== <!--T:43-->
 
[[File:SuperMarioBrosBrownBall.png|32px|left]]
 
[[File:SuperMarioBrosBrownBall.png|32px|left]]
  
<!--T:43-->
+
<!--T:44-->
 
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&times;16 metatile that is used is unique to this object.
 
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&times;16 metatile that is used is unique to this object.
  
==Unused Firebar Type== <!--T:44-->
+
==Unused Firebar Type== <!--T:45-->
 
Enemy object {{hex|1E}} is a short Firebar that rotates counterclockwise quickly. However, unlike its clockwise counterpart {{hex|1C}} (used only in World 5-4), this type is never used in any valid levels.
 
Enemy object {{hex|1E}} is a short Firebar that rotates counterclockwise quickly. However, unlike its clockwise counterpart {{hex|1C}} (used only in World 5-4), this type is never used in any valid levels.
  
<!--T:45-->
+
<!--T:46-->
 
Unlike most invalid enemies (such as glitch Firebars {{hex|20}}, {{hex|21}}, and {{hex|22}}), this type has a valid entry in the setting table:
 
Unlike most invalid enemies (such as glitch Firebars {{hex|20}}, {{hex|21}}, and {{hex|22}}), this type has a valid entry in the setting table:
  
  <!--T:46-->
+
  <!--T:47-->
 
FirebarSpinSpdData:
 
FirebarSpinSpdData:
 
       .db $28, $38, $28, $38, $28
 
       .db $28, $38, $28, $38, $28
Line 56: Line 56:
 
       .db $00, $00, $10, $10, $00
 
       .db $00, $00, $10, $10, $00
  
<!--T:47-->
+
<!--T:48-->
 
The settings are stored in this order: Clockwise ({{hex|1B}}), Speedy Clockwise ({{hex|1C}}), Counterclockwise ({{hex|1D}}), Speedy Counterclockwise ({{hex|1E}}), and Long Firebar ({{hex|1F}}). Firebar ({{hex|1E}}) has both the faster speed ({{hex|$38}}) and counterclockwise rotation ({{hex|$10}}) programmed in.
 
The settings are stored in this order: Clockwise ({{hex|1B}}), Speedy Clockwise ({{hex|1C}}), Counterclockwise ({{hex|1D}}), Speedy Counterclockwise ({{hex|1E}}), and Long Firebar ({{hex|1F}}). Firebar ({{hex|1E}}) has both the faster speed ({{hex|$38}}) and counterclockwise rotation ({{hex|$10}}) programmed in.
  
<!--T:48-->
+
<!--T:49-->
 
{{source|[http://www.romhacking.net/documents/344/ doppelganger's SMBDis] (Setting Table)}}
 
{{source|[http://www.romhacking.net/documents/344/ doppelganger's SMBDis] (Setting Table)}}
  
<!--T:49-->
+
<!--T:50-->
 
This firebar type also exists in the [[Super Mario Bros. Deluxe|Game Boy Color remake]].
 
This firebar type also exists in the [[Super Mario Bros. Deluxe|Game Boy Color remake]].
  
==Unused Spiny Egg Behavior==  <!--T:50-->
+
==Unused Spiny Egg Behavior==  <!--T:51-->
The Spiny eggs are thrown by Lakitu in a simple way, with no horizontal movement whatsoever. However, this is ''not'' the intended behavior; it's 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. The following patch will fix the Spiny egg bug:
+
<youtube align="default" width="640" height="330">FmzyO2fYyCs</youtube>
 +
 
 +
The Spiny eggs are thrown by Lakitu in a simple way, with no horizontal movement whatsoever. However, this is ''not'' the intended behavior; it's 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
 
{{Download
 
| title=Spiny Egg Speed Patch
 
| title=Spiny Egg Speed Patch
Line 73: Line 75:
 
| filesize=25 B
 
| filesize=25 B
 
}}
 
}}
Patch is intended for the Revision 0 version of the game. Please read the notes page for more information on the nature of this bug.
+
{{clear}}
 
+
This patch is intended for the NTSC version of the game. The [[Bugs:Super Mario Bros.|Bugs page]] has more information on the nature of this bug.
<!--T:51-->
+
<!--T:52-->
 
{{source|[http://www.romhacking.net/documents/344/ doppelganger's SMBDis] (Spiny egg function), GoldS (patch)}}
 
{{source|[http://www.romhacking.net/documents/344/ doppelganger's SMBDis] (Spiny egg function), GoldS (patch)}}
  
==Unused Timer Setting== <!--T:52-->
+
 
 +
 
 +
==Unused Timer Setting== <!--T:53-->
 
The upper 2 bits of first level header setting byte determines the starting timer.
 
The upper 2 bits of first level header setting byte determines the starting timer.
  
<!--T:53-->
+
<!--T:54-->
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 95: Line 99:
 
|}
 
|}
  
<!--T:54-->
+
<!--T:55-->
 
The timer starts at 200 if this setting is set to '''3''' ('''11xxxxxx'''), though no valid level actually uses it.
 
The timer starts at 200 if this setting is set to '''3''' ('''11xxxxxx'''), though no valid level actually uses it.
  
<!--T:55-->
+
<!--T:56-->
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 care its setting since the game completely disables the timer during those intro levels.
+
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.
  
==Duplicated Scroll Stop Object== <!--T:56-->
+
==Duplicated Scroll Stop Object== <!--T:57-->
 
There are two identical scroll stop objects: '''46''' and '''47'''. Only '''47''' is used by the game's valid levels.
 
There are two identical scroll stop objects: '''46''' and '''47'''. Only '''47''' is used by the game's valid levels.
  
==Unused Pointer== <!--T:57-->
+
==Unused Pointer== <!--T:58-->
Map 01 (Worlds 2-2 and 7-2) has a 3rd level pointer for World 3, which leads to the same place as the normal World 2 and 7 level pointers. It is possible that levels were rearranged during development, or it could be a simple mistake that was left in.
+
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 Variable== <!--T:58-->
+
==Unused Variable== <!--T:59-->
 
RAM address {{hex|03F0}} keeps track of the number of blocks hit, though no routine ever reads the value stored here.
 
RAM address {{hex|03F0}} keeps track of the number of blocks hit, though no routine ever reads the value stored here.
  
==Oddities== <!--T:59-->
+
==Unused Pipe Behavior==<!--T:60-->
 +
 
 +
L-shaped pipes (used for the beginning of underground and underwater levels) are enterable from the top like a regular pipe. However, since Mario automatically enters the side of the pipe, this behavior goes unused.
 +
 
 +
However, in the [[Super Mario Bros. 2 (Famicom Disk System)|Japanese ''Super Mario Bros. 2'']], an L-shaped pipe appears in World 9-3, and it is possible to enter this pipe from the top.
 +
 
 +
==Oddities== <!--T:61-->
 
===Removed Tiles===  
 
===Removed Tiles===  
 
[[File:SuperMarioBrosBGTiles.png|256px]]
 
[[File:SuperMarioBrosBGTiles.png|256px]]
  
<!--T:60-->
+
<!--T:62-->
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. It's possible that the addition of the block behind the title logo necessitated the removal of the extra 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.
  
===Above-Ground Bloopers=== <!--T:61-->
+
===Above-Ground Bloopers=== <!--T:63-->
 
[[File:SMB_1000Bloopers.png|left]]
 
[[File:SMB_1000Bloopers.png|left]]
  
<!--T:62-->
+
<!--T:64-->
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.
+
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.
  
<!--T:63-->
+
<!--T:65-->
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.
+
Given that Bloopers appear in non-water levels (such as World 1-3) in the [[Super Mario Bros. 2 (Famicom Disk System)|Japanese ''Super Mario Bros. 2'']] and award 1,000 points, this behavior was likely intended all along.
 
</translate>
 
</translate>
 +
{{clear}}
 +
==Regional Differences==
 +
{{todo|there's more, check out [https://github.com/MrWint/smb-dis/commit/1f5331163c952d6bdb02553aa516f12f552a68b3 this diff of the SMB1 disassembly for details]. Also add screenshots.}}
 +
The PAL version mostly had some adaptions to the slower refresh rate compared to NTSC, but beyond that it also had a few bugfixes.
 +
 +
{{compare
 +
| leftt = NTSC
 +
| rightt = PAL
 +
| left = [[File:Super_Mario_Bros_(NTSC)_underwater.png]]
 +
| right = [[File:Super_Mario_Bros_(PAL)_underwater.png]]
 +
}}
 +
Just like in ''Vs. Super Mario Bros.'' and ''[[Super Mario Bros. 2 (Famicom Disk System)|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 NTSC version, 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 NTSC 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 powerups or the flag at the end of the level, allowing these to overwrite each other. The PAL version added a check to prevent this from happening.
 +
* Bloopers can now get closer vertically.
 +
* Originally in the NTSC version the branch if enemy object would add 12 pixels to the player's vertical position. In the PAL version, it decides whether Mario stomped or got hit depending on the enemy branch if enemy object.
 
{{Mario series}}
 
{{Mario series}}

Revision as of 19:26, 2 December 2017

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎中文(中国大陆)‎


Title Screen

Super Mario Bros.

Developer: Nintendo
Publisher: Nintendo
Platforms: NES, Famicom Disk System
Released in JP: September 13, 1985 (Famicom), February 21, 1986 (FDS)
Released in US: October 18, 1985
Released in EU: May 15, 1987
Released in AU: 1987


CodeIcon.png This game has unused code.
EnemyIcon.png This game has unused enemies.
ObjectIcon.png This game has unused objects.
GraphicsIcon.png This game has unused graphics.
MusicIcon.png This game has unused music.
RegionIcon.png This game has regional differences.


BugsIcon.png This game has a bugs page
PrereleaseIcon.png This game has a prerelease article

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.

Unused Music

Track 10

An alternate "Game Over" theme with different, plunkier sounding instruments.

Track 18

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.


(NSF rips: Chris Moeller)

Unused Objects

SuperMarioBrosBrownBall.png

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 rotates counterclockwise quickly. However, unlike its clockwise counterpart 1C (used only in World 5-4), this type is never used in any valid levels.

Unlike most 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.


(Source: doppelganger's SMBDis (Setting Table))

This firebar type also exists in the Game Boy Color remake.

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; it's 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.png 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.

(Source: doppelganger's SMBDis (Spiny egg function), GoldS (patch))


Unused Timer Setting

The upper 2 bits of 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.

Duplicated Scroll Stop Object

There are two identical scroll stop objects: 46 and 47. Only 47 is used by the game's valid levels.

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 Variable

RAM address 03F0 keeps track of the number of blocks hit, though no routine ever reads the value stored here.

Unused Pipe Behavior

L-shaped pipes (used for the beginning of underground and underwater levels) are enterable from the top like a regular pipe. However, since Mario automatically enters the side of the pipe, this behavior goes unused.

However, in the Japanese Super Mario Bros. 2, an L-shaped pipe appears in World 9-3, and it is possible to enter this pipe from the top.

Oddities

Removed Tiles

SuperMarioBrosBGTiles.png

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.

Above-Ground Bloopers

SMB 1000Bloopers.png

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.

Regional Differences

Hmmm...
To do:
there's more, check out this diff of the SMB1 disassembly for details. Also add screenshots.

The PAL version mostly had some adaptions to the slower refresh rate compared to NTSC, but beyond that it also had a few bugfixes.

NTSC PAL
Super Mario Bros (NTSC) underwater.png Super Mario Bros (PAL) underwater.png

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 NTSC version, 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 NTSC 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 powerups or the flag at the end of the level, allowing these to overwrite each other. The PAL version added a check to prevent this from happening.
  • Bloopers can now get closer vertically.
  • Originally in the NTSC version the branch if enemy object would add 12 pixels to the player's vertical position. In the PAL version, it decides whether Mario stomped or got hit depending on the enemy branch if enemy object.