Using SMB3 Workshop
SMB3 Workshop is an editor for Super Mario Bros. 3, for the NES. This version was created in 2007 by hukka, and he will ask for a donation to continue it. It edits levels, palettes (colors), a few miscellaneous properties, and graphics, if needed. Basically, it can "make custom levels" for Super Mario Bros. 3. This page is a tutorial or guide for SMB3 Workshop. You can look at this page if there's some problem or help you need with SMB3 Workshop. To start, open up SMB3 Workshop, and open a ROM that you are ready to edit. You will get to choose which level you would like to edit. Get into one, and you can select objects by left-clicking on them, and selecting enemies by right clicking on them. You can save the ROM by clicking the green disk button, or clicking the red disk button to save it as a different ROM. The program will start editing the ROM that you saved it as if you used the red disk. All the buttons do what they say, really.
Making a level
Objects First, go to the Object tab, and find the Delete All list. Here, you will be able to delete all objects and enemies in a level and clear it (you wouldn't want to play a level almost exactly like the original game, would you?). Select 3-byte Objects, 4-byte Objects, and Enemies to remove everything and start building your own level. From then on, editing a level is really easy. Click on the "Add 3-byte Object" button. There are arrows on the left and a slider on the right. Use these to change the object. 4-byte objects’ have one more byte than 3-byte objects, and it is used for length. Add a 4-byte object, and the arrows and scrolling tools will be enabled, and the length can be altered.
Apart from having fun and looking neat, level editing is also about keeping the total number of objects and enemies in the level equal or less than the totals of the original level (unless you can make up for it through some hex editing). Look for the total number of bytes that your level currently has. You can see it when nothing is currently selected. In the lower right-hand corner, the first number is the total number of bytes in hex; the number in parenthesis is the number of bytes in decimal, the normal number system we’ve always used (you only have to mind the hex number if you want to use extra space or use another level’s data using a hex editor). There is a document that contains the total number of objects and enemies in each level and the location of those levels. However, it doesn’t say the total number of bytes combined. You will either have to calculate this or take a quick peek into an original SMB3 ROM with SMB3 Workshop. Also, the Limit Size feature may be useful when you edit a new level. This keeps you from exceeding object and enemy data limits. It doesn't, however, keep the original data size stored; if you reload the level after editing, or close SMB3 Workshop and open it again, and Limit Size is still checked, then it will keep you from adding any more objects and enemies. The number of objects and enemies that was in the level right before you saved and reloaded will be the limit that SMB3 Workshop will use.
When you want a door or pipe that can be entered, or a red note block, you need to use a pointer. Pointers are 3-byte objects that you can add simply by changing the bank of any 3-byte object to Bank 7.Pointers do what their name says; they "point" Mario/Luigi to an exact location in the level described in the level header. The level that a pointer is pointing to (unless using the pipe that "ignores pointers" or goes to a level ending) is found under the Next area/Start tab when you are looking at the header. The offset for the level and the object set is displayed. Input these, and make sure to set the proper object set. Click OK, and save the ROM. Click on your object that's going to take Mario to the next level. The second number near the bottom right-hand corner (indicated here by the blue arrow) is the horizontal location of the object, in hex. Add a 3-byte object, and go to Bank 7. The object is now a pointer; either press Enter, click the Pointer Properties button in the toolbar, or go to the bottom-right corner of SMB3 Workshop and click Edit Pointer. The pointer properties box uses hex numbers. Remember the horizontal position of your object? Set the Entrance Horizontal range so that it fits that hex number. In the case above, the red note block is located at X:22 in hex, so the Entrance Horizontal would be 20-2F. The Exit Horizontal is the exact location where Mario will enter the next stage. The Exit Vertical can be set to a certain number of vertical positions. Keep in mind that Y:00 starts at the top and ends with Y:26 (1A in hex) at the very bottom. Set the Exit Action to the way that Mario should exit. There aren't any differences between the two downward pipe entries. For reference, Exit Type 7 is a rebound from a red note block.
The header contains the information about the level: the length, music, level that the pointers point to, type of scrolling, choice of palette, and a few other things. The level header editor will open when you click on the H. The level header is nine bytes long and isn't counted towards level size. There are three tabs: the Visual tab, the Next Area/Start tab, and the Miscellaneous tab.
- The Visual tab allows you to determine the object and enemy palette (colors) used in the level, and it lets you define the music and graphic set used. Each Object Set has its own object palette and enemy palette, except for Hilly and Underground levels. The graphic set should not change from what the actual level is unless you would like make a Hilly level look like an Underground one, or vice versa. The graphic set is the only difference between an Airship level and a Tank level. Music should be pretty straightforward. Some music has multiple entires, and they have no difference with each other. If No music is selected, then when a P-Switch (also called a Switch Block) is pressed, or a Starman is collected, that music will continue throughout the level, even when Mario enters another part of a level. The World 7 Map music will play though some music in SMB3 when the "running out of time" sound plays.
- The Next Area/Start tab contains the information of the level that pointers in the level currently being edited point to and how Mario will start the level being edited. When a pipe, red note block, or door is used, then the level described here will be the level where Mario ends up. Levels have their offsets in data. This document has all the levels' data locations. Place the level's object data location into the Objects area. Do the same concerning the enemy data location (case insensitive), and be sure to set the proper Object Set. The Level Start modifies where and how Mario starts the level: X position, Y position, and the action. SMB3 Workshop displays the vertical starting position wrong. To start at Y:17, set that number to 01. To start at Y:14, set it to 0C. Also, Exiting out of upward and downward pipes only work for a horizontal starting location of 01 and 0D.
- The Miscellaneous tab stores the level length, the scrolling type, the time, and the Entering pipe ends level option. If this is checked, the level will end when normal pipes are entered, and doors will take Mario/Luigi to the next area at the exact location that the door was located; pointers aren't needed for the doors, and the pointers will not be effective at all. Pipes that take you to the World's Underground bonus areas will not end the level when entered, and neither will the pipes that take you to the level ending, so pointers are still needed for them. When editing level length (also in hex), each increment is one screen in size. It's not recommended to set the level length to FF. Horizontal, scrolls up when flying is a scrolling setting for many levels and for the unique kinds of autoscrolling. The screen also scrolls up when climbing a vine. Horizontal (1) is the vertical scrolling setting. SMB3 Workshop does strange things when it's editing a level like this. When you want to add an object, you'll click in your level and the object will be placed at the very top; sometimes it will make it a crashing object. Vertical Only won't scroll vertically; only horizontally. Free Scrolling speaks for itself. All the other entries are just repeats. Setting the time should be simple.
Click on “Add Enemy”. A Goomba will be added. When the same object/enemy is added repeatedly,
the next time you add one, the one used most often will show up instead. Like objects, enemies have their own data locations and they need to stay in their limits as well. Many combinations of enemies will glitch graphically if they’re on the screen on the same time. The NES can’t load some graphics banks at the same time. The Enemy Compatibility page given with SMB3 Workshop (under the Help menu) gives a list of the enemies that can be shown together. You can also view it in a link at the bottom of this page.
Some kinds of enemies will act differently depending on their vertical(Y) or horizontal(X) position. They're often referred to as sprites. For example, the ausoscrolling enemy will make the screen scroll, and every Y location has its own scrolling path. At some locations below Y:26, the autoscrolling enemy will make the screen rise and fall. The coins required for a White Mushroom House to appear is indicated by the Y value of the White Mushroom House sprite (its X value needs to be uneven). There are also some sprites that stop or generate enemies; there's a sprite that stops infinite flying cheep-cheeps and spiny cheep-cheeps, and a sprite for each kind that will start them. There are sprites that start an infinite number of leftward-moving wooden platforms, and one that serves as a "boundary" for Lakitu.
A treasure chest needs two special sprites along with the chest: Enemy 214 and Enemy 186. The treasure chest alone will give you an inverted image of a treasure chest, which is nothing. Enemy 214 will indicate which item the treasure chest will give you when it's collected. Its Y position determines which item the chest will give you. The X position is flexible. However, you may notice that the timer stops when the chest is collected. Enemy 186 ends the level after the chest is collected. Unlike sprite 214, this sprite doesn't have to be placed anywhere in particular. The Y positions that sprite 214 uses to give items are as follows:
Vertical locations for sprite 214
||Item in Chest
||Hammer Bros. Suit
To edit a level's palette, click the icon with the painting tools. Simply choose the colors you wish to have in your hack. The Object Set drop-down menu lets you choose which Object Set's palette to edit, and the Level Colorset menu lets you select which palette you'll edit. None of these options are necessary for use. If you happen to be editing an Undergound level, the palette you've chosen might not stay. Hilly levels share their palettes with Underground levels; simply edit the Hilly palette instead because you are editing both Object Sets' palettes at the same time. To do this, select Object Set 3, the Hilly Object set.
Be sure to read what's below to ensure that your level works properly.
- Object Set 1: Plains
Screwed Platforms that extend to the ground will cause the level to look weird or crash the game if they're not touching a Flat Ground object or if they're extending over 15 tiles downward. Sometimes they will just need to be rearranged or removed. When using Flat Ground types, C0 and C1, and D0 & D1 are ensured not to cause any problems. Don't bother using the other ones.
- Object Set 2: Fortress
The Dungeon Lamps placed below Y:15 will have their wires hang to Y:16. The Bottom of background with pillar object should be placed where you want the top of you pillars to start extending downward. Background pillars will not show properly is placed in a Blank Fortress background, and Pillar B won't when placed in a Dark Dungeon Background.
- Object Set 3: Hilly
The Nothing object, Bank 2, type 14(0E), should be the first object placed in Hilly levels in order for sprites and other things to be displayed properly. It should preferrably be placed in the upper-left corner of the level. Do not use objects with an underground title.
Waterfalls' top row of graphics are mixed up.
- Object Set 4: Sky
The top of the waterfalls' TSA is messed up for some reason.
- Object Set 5: Piranha Plant
Use a muncher with the corresponding pipe. Do not use the objects used in Giant levels, as those graphics aren't going to load. Also, this object set uses the P-Switch animation regularly.
- Object Set 6: Water
This isn't much different than the Pipe Object Set. The special pipe objects only work in a vertically scrolling setting, and the double-ended pipe doesn't work in a vertical scrolling setting. You can easily turn these into Pipe levels by changing the graphics set to pipe.
- Object Set 7: Mushroom House
SMB3 Workshop doesn't support editing Mushroom levels, so don't try it. But you can edit its palette by choosing to edit Object 7, colorset 0 when editing another level.
- Object Set 8: Pipe
Almost like the Water set. The object "Background for pipe levels" should be the first object placed in the level so things display properly. You can easily turn these level into Water levels by changing the graphics set.
- Object Set 9: Desert
- Object Set A: Ship
Airship graphics are not animated. Many common objects in Bank 1 and Bank 2 are not graphically available in Airship levels. When using metal bars, place the horizontal bar first, then place the vertical bars so that a corner overlaps an end of the horizontal bar. Change the graphic set in an Airship level to Tank if you want it to be a Tank level (and vice versa). Tank levels share graphics with the World maps; thus using 3 frames of animation (as opposed to 4). Do not use any objects that aren't normally in Tank levels unless you are planning to do some graphics editing.
- Object Set B: Giant
Giant [?] Blocks and Bricks must be placed at an even X position and an odd Y position. When note blocks and wooden blocks get bumped, and when a vine sprouts, they will look different than usual. The background color will be the the outline of the lava. Also, don't use the objects meant for Piranha Plant levels.
- Object Set C: Ice
Like Sky levels, Ice levels' waterfalls have some messed up TSA properties. Conveyor belts do not work.
- Object Set D: Cloudy
The Sets background color to white object should be the first object placed if you want that background color. It doesn't work properly for vertically scrolling levels.
- Object Set E: Underground
The Starry background object, Bank 2, type 14(0E), should be the first object placed in Underground levels.