The Minus World is actually World 36-1 of Super Mario Brothers for the NES. It does not appear in the coin-op Vs. Super Mario Brothers, Super Mario All-Stars for Super NES, or Super Mario Brothers Deluxe for Game Boy Color. Start by coming to the end of World 1-2 with fireball power. Break the ceiling above the pipe out of 1-2 EXCEPT the last block on the right. Now jump through the left side of the block you left. The game's buggy early collision detection will push Luigi or Mario through the ceiling and wrap him around the side of the screen. Shoot the plant and jump down the pipe before WELCOME TO WARP ZONE appears.
You are now in world (SPACE)-1. Character 36 in SMB's font (after 0-9A-Z) is an empty tile, used for the space character. If you duck down a pipe before SMB throws up the warp zone menu, it reads the space from the screen and interprets that as the level number. World 36-1 just happened to point to a water level with a map the same as that of 2-2. According to Pseudo_Intellectual, this level eventually ends after eight or so laps and takes you to 8-4 at the end, but I've never managed to pull that off.
If I were porting Super Mario Brothers to another console or computer, I would special-case a space character and send the player to World 2-2, a legitimate water level. Too bad Nintendo decided just to fix the collision detection in Super Mario All-Stars, the Super NES port of SMB.
I haven't gone into the warp zone code with a debugger, but commented 6502 source code for SMB at one time was available at http://darkcode.tripod.com . The code may be reading from world 4-2's underground warp zone, the one with a single pipe in the middle that leads to world 5 (and has space characters on either side).
Getting into the minus world by hexing the ROM
(added Friday, December 7, 2001
If you have an NES emulator and a hex editor, the easiest way to get to Super Mario Bros.'s minus world is to hex the ROM's warp zone table. At offset 0x800 in SMB1.NES (6502 address $87F0), you should see
10 12 04 03 02 00 24 05 24 00 08 07 06 00 00 00
| | |
1-2 end 4-2 end 4-2 top
You can change those numbers 02-08 and 24 to point to any world in the game. (24 is the hexadecimal code for 36, that is, the minus world.) The first byte in "4-2 end" apparently controls which world unlabeled pipes go to.
You can also do this with a game patcher. For Action Replay (address/data) style patchers, use "87F4:24"; for Game Genie, use GXNAGY. This code will replace 1-2's pipe to world 2 with a pipe to the minus world. I've tried this code on Super Mario Bros. version 1.1 under NESten; I can't guarantee that it works on version 1.0, nor do I know of a way to discern which version of SMB a cart contains. Sometimes there will be multiple versions of a cartridge game as the developers fix minor, mostly cosmetic bugs in the game (e.g. change "A WINNER IS YOU" in Pro Wrestling to just " WINNER IS YOU", or "You can only miss twice!" in Super Mario Brothers 3's N-spade bonus level to "Miss twice and your out!"(sic)).
to encode or decode game genie codes visit http://www.monmouth.com/~colonel/videogames/nes/genie.html