Super Mario Bros. Level Hack Attack

Mon, Apr 01 2013 07:00 PM
04/02/2013 - 12:00
04/08/2013 - 00:00

In this event, we shall design levels for the Super Mario Bros. ROM! Much like the previous Knytt Stories events, this is centered around designing new environments and stories within a familiar and fondly regarded game engine.

I suggest you use this edited ROM for this event. I've edited it to be more gentle and Knytt-like in its sensibilities, and more conducive to different kinds of storytelling and playing. It has the following changes:

  1. Mario has unlimited lives and time.
  2. All score-related numbers are not displayed.
  3. Mario respawns from the last pipe or castle he popped out of, not the mid-way point. This means you can create a long level made of parts joined by pipe warps.

The editor we'll be using is SMB Utility (Windows native, but can work in WINE). It's a level editor that provides a lot of useful functionality, most notably possessing an emulator built right into the editor that lets you test levels as soon as you make them!

A slightly quick guide to SMB Utility:
There are two 'layers' to each level - the enemy layer and the block layer. Switch between them with the Shell icon and the Excavator icon in the toolbar.

Various high-level data:

  1. Edit the emulator's controls in "Configuration" in the Tools menu. (Select "Emulator" from the top-left dropdown menu.)
  2. "Edit Header" in the Edit menu lets you edit Mario's start position for this level, and the terrain foreground and background for the level. "Guns" means that Bullet Bill Blasters will replace tree platforms and mushroom platforms.
  3. "General Setting" in the Tools menu determines which world is the last world. When you collect an Axe in that world, the game ends. For a short hack, you'd want it to be world 1 (but don't change it yet - doing so will hide the remaining levels' data from the editor).
  4. "Sort Areas" lets you re-order the levels of the game. Note: a level containing an Axe will cause the subsequent levels to be in the next world.

Editing blocks:
  1. Blocks (and enemies) can be selected and (slowly) dragged using the mouse. When you select a block, use the + and - keys on the numpad to change the block into the next type of block. You can also double-click a block and choose its type from a dropdown list.
  2. Long objects mustn't extend across page borders! Which is to say, the vertical white lines every 16 blocks. If they do, then they might cause other blocks in that page to disappear. Furthermore, they won't appear if Mario respawns on that screen (may be useful, maybe not).
  3. When a block is moved to row 12 (the bottom of the visible screen) it becomes a long object. Long objects include pits, rows of coin blocks, wood bridges and things.
  4. Row 13 objects contain some important entities (the axe, the flagpole, and "scroll stops" that stop the screen scrolling) but also contain page skips, which offset the positions of other objects by a full screen. Be careful they don't mess up your design!
  5. Row 14 objects transform the background and underlying terrain of the foreground. They're used a lot in castles to create the narrow, cavernous passageways.
  6. Row 15 objects are huge objects: the level goal castles, the level goal staircase, and the L-shaped pipe at the end of cave levels.
  7. If you can't figure out the construction of a certain level structure, consult the Object List, which lists every object in the level.

Editing enemies:
  1. Row 14 enemies are actually Room Change objects. These determine where Mario goes when he goes down a pipe in the rest of the level. Double-click one, then hit Preview to see and alter where it's set. You can't easily create these - you'll have to use existing ones (or use Send Object To to transfer one from another level.)
  2. The "After 5-3" flag means that the enemy will only appear after the "Become Harder" level (5-3 by default) is passed. Because 5-3, 5-4, 6-4, 7-2 and 7-3 re-use previous level data, this is used to differentiate the re-used versions of the levels. (You can change the "Become Harder" level in "Edit Some Game Stuff")

Finishing the game:
  1. When Mario gets the flagpole, he walks forward until he encounters a castle doorway. Unless he does so, the level won't finish.
  2. When Mario gets the axe, any Bowser present will fall down (breaking the floor where the bridge out to be) and he'll walk forward to hear the victory message. If this is the final world (see "General Setting"), the game ends.

And remember: if you want to know how a certain SMB level works, go to it and have a look!

Click here to download SMB Utility.
Click here to download the Super Mario Bros. ROM (with unlimited respawning).
Click here to submit your hack.

Q: Is it legal to distribute ROMs?
A: Ehhh.

If you want you can use Lunar IPS to make a patch file of your hack and distribute that instead, but you'd have to specify which ROM to use as the base ROM.

Games made for Super Mario Bros. Level Hack Attack


SpindleyQ's picture

This is lovely, Leon!

This is lovely, Leon!

sergiocornaga's picture

This is a great idea, L.

This is a great idea, L. Hopefully I'll be able to participate and break out of the unable-to-make-games funk I've been in lately.

P.S. I googled 'super mario bros rom hacking' (in search of easy ways to alter graphics and music) and you were the fourth result.

EDIT: dang, looks like I'm not smart enough to design levels with this program.

YetiSeekingYeti's picture

Cool idea. I'll have to poke

Cool idea. I'll have to poke around with the editor this weekend to see what sort of stuff is possible, if I can think of something fun to make I'll definitely join in :)