Mario Improvement 3 Version 0.35 Copyright (C) 1999 by LincolnSoft July 25, 1999 The greatest game of all time just got better! New in Version 0.35 =================== This version includes lots of new features! -Mouse support -A Win95-style GUI interface - this makes the editor a lot easier to use (for example: now instead of having to figure out the number for a level, it displays the level name in the "Level Select" dialog box) -The editor now uses my own font instead of the boring VGA BIOS font -New keys added for the map screen (increment/decrement 16 objects) -Removed using the Alt key for 4-byte objects. Now just use the space bar for everything. -Most of all, ENEMY SUPPORT!!! (see below) Mario Improvement 3 is a level editor for Super Mario Bros. 3 (NES). System requirements =================== -At least a 386 (but probably something more like a 486) -A VGA card -A mouse -DOS -If you run it from pure DOS, you need CWSDPMI - available separately. It should work fine from Windows 9x. (A note about Windows 3.x: Not only should you have upgraded to Windows 9x by now, I don't know if it will work properly, either.) -The Mario 3 ROM (available separately) -A NES emulator with Mapper 4/MMC3 support (needed to run Mario 3) NESticle and FWNES should work fine for this -A sense of creativity :) How to use ========== Before you use the editor, you must understand a little bit how Super Mario Bros. 3 stores its levels. Each side-scrolling area in Super Mario Bros. 3 is stored as groups of 4-byte objects (usually consisting of things like ground, walls, etc.) and 3-byte objects (usually onsisting of things like coins, blocks, and bricks). There are only a limited number of these two object types in each level, and they are not interchangeable. If you try to do so, the game will crash miserably when you first enter the level from the map screen. You cannot add or take away any of these objects. Also, the bonus areas (e.g. down the pipe you can fly up to in the first level) are stored separate from the main level, and so are the endings of levels (e.g. the ending to World 1-4), in addition to other "bonus" areas. Enemies are stored in a diffent ROM location than the 3/4-byte object data. All enemies are 3-bytes, and of course there's a limited amount of them too. Things such as moving platforms and the giant "?" blocks found in some bonus rooms are also stored as enemies. You can see how many obejcts there are of each type as well as where in the ROM they are stored by going to Level / Level Info. To check whether an object is 3 bytes or 4 bytes, find the upper left corner of the object. There should be a green or pink upside-down "L". If it's green, that means the object is 3 bytes, and if it's pink, it's 4 bytes. If it's purple then it's an enemy. Some levels (e.g. World 1-4, above) have no 4-byte objects. Some levels have no enemies. Every level, however, has 3-byte objects. Editor Keys =========== Map screen editor keys: Arrow keys/Mouse: Move around Comma key/Left mouse button: Scroll downward through tiles Period key/Right mouse button: Scroll upward through tiles J key: scroll downward through 16 tiles at a time K key: scroll upward through 16 tiles at a time Normal level editor keys: Arrow keys/mouse: Move cursor, scroll around level Space bar: Pick up objects (The editor will autodetect whether it is 3 bytes, 4 bytes, or an enemy). Keys defined for all objects: Arrow keys/mouse drag and drop: Move object around Period key: Increase length/value of object (up to 16), after that it will change to the next object. Comma key: Decrease length/value of object (down to 1), after that it will change to the previous object. "K" key: Jump 16 objects ahead. "J" key: Jump 16 objects backward. Keys defined for 3-byte and 4-byte objects (but not enemies): "M" key: Jump 256 objects ahead. "N" key: Jump 256 objects backward. Keys defined for 4-byte objects only: Apostrophe key: Increase length of object (up to 255) Semicolon key: Decrease length of object (down to 0) Note that you can drag and drop objects in side-scrolling levels using the mouse. GUI Options =========== The keyboard shortcut for each menu item is displayed next to the menu item (e.g. "L" for load rom, or "W" to select level) Options Dialog: Warn if Level Not Saved: On by default. Turning this off disables warning you if you have not saved the level (and you try to load a different level, ROM etc.) Warn on Exit: On by default. Turning this off disables the "Do you want to quit?" box. Mouse Scrolling: On by default. Normally (when this is checked), the level will scroll when the mouse reaches the edge of the screen. If this is unchecked the level will not scroll when the mouse reaches the edge of the screen. (You can still scroll the level by moving the cursor with the arrow keys.) Reset Coordinates when Loading Levels: Off by default. When checked, the cursor location will be reset to the bottom left corner of the level when you load a new level. The rest of the GUI should be mostly self-explanatory. Object set listing: Object Set 0 - Used for the map screens, has a totally different format than the side-scrolling levels do. All the rest are used in side-scrolling levels: Object Set 1 - Plains Levels, the most common set, 40 levels use it. Object Set 2 - Hilly/Underground Levels, this set is shared by the hilly levels (e.g. World 1-2) and the underground ones (e.g. World 1-5). Object Set 3 - Sky Levels, not to be confused with Cloudy Levels, this is the least common set. The first level that uses it is World 1-4. Object Set 4 - Dungeons, used (obviously) by the dungeons. However, not all dungeons use this set (e.g. the dungeon in World 2). Object Set 5 - Ships, used for the airships as well as the tanks in World 8. Object Set 6 - Cloudy Levels, used mostly by levels in World 5, but also used in some bonus levels (e.g. the bonus area in World 1-3). Object Set 7 - Desert Levels, used mostly by the levels in World 2, but some levels in World 7 also use it. Object Set 8 - Water/Pipe Levels, shared by the underwater levels (e.g. World 3-1) and the vertically-scrolling pipe levels (e.g. World 7-1). Object Set 9 - Giant Levels, used mostly by levels in World 4, but also some levels you might not even think of (e.g. the Piranha Plants in World 7 and the Hand Traps in World 8). Object Set 10 - Ice Levels, only levels in World 6 use this. You may just have to find out for yourself which levels use which, because it'd take too long to list all the levels here. (There's 200 of them.) The editor automatically knows which object set each level uses. Some levels might not use what you expect, so beware. Experiment, experiment, experiment. A note on some of the object sets: On the Desert set (object set 7) there is no ground object, because the game automatically knows to put the "sandy ground" object at the bottom of the level for the whole level. In dungeons (set 4) it is the same way with the checkerboard floor and the gray (or sometimes blue or green) dungeon background. To make gaps in these levels (or to block out things, a lot of dungeon levels already use this trick), you must put the "Plain Background" 3-byte object (deserts) or "Blank Background" 4-byte object (dungeons) over where the ground would be, or whatever you want to block out. When edting some levels (especially dungeons) it is a good idea to hide the 4-byte objects when you're not editing them because a lot of times there's 3-byte objects hidden underneath. SMB3 Engine Limitations ======================= Side-scrolling level limitations: There are many objects that will crash (or otherwise do weird stuff to) the game simply by using them. If an object says "Crash" or it says "Warning: Crashes Game" for the object in the status display, don't use it. Some objects (like some of the block platforms in the first level) extend automatically all the way to the ground. If an object other than the "flat ground" object is underneath them, it will do unpredictable (often weird) things to the game, and sometimes crash it. It doesn't work the same way all the time so experiment. As far as I know this only happens in the Plains object set (set 1) and the Water/Pipe object set (set 8). In a level with any other object set it's fine if there's no ground underneath. Some objects, when the length is decreased to one, instead of being one block long, will last the whole level. I don't know all the objects that are like this, but to give you an example, the background clouds are like this. I'm not sure why this happens but there's no way I know of to get around it. Some levels are used twice (mostly level endings), there's not many of them though. If you place pipes or doors in certain locations they won't work properly. I haven't figured out where the pointer tables are located yet (which is needed to fix this problem). Edit these objects at your own risk. Each level is only a certain length. This means that when you get to the end of the level, the game will stop scrolling. If you try to place objects past this point, you'll never see them, because the game won't ever scroll far enough. It is also currently impossible to change a level's object set. Map screen limitations: Don't try to put things like levels, dungeons, etc. in places where there were none previously. The level will not work. When you enter it the game will crash, lock up, or get screwed up. (Same applies for pipes). However, you can do things like putting a dungeon where level 1 used to be (or even a mushroom house...) You can make some really interesting worlds this way :) Map objects such as ships, the World 7 Piranha Plants, boats, and the Hammer Bros. are not editable as they are classified as sprites. Some map objects have a "native world". They will not look right in any other world's map. I've tried to make this clear by putting "World x - object name" for the object name for objects that are like this. As far as I know they will only look right in the specified world, but feel free to experiment. Enemy limitations: The game loads enemies sequentially, so if you modify enemies make sure they're in the same order (of Horizontal Loaction, or Vertical Location in vertical levels), from left to right. For instance, the first enemy in World 1-1 (a goomba, from an unmodified rom) is at horizontal location 0E. The second one (a venus fire trap) is at location 16. When you edit the enemies, make sure the first enemy is before the second one (i.e. has a smaller horizontal loaction value), and that the second one has a smaller horizontal location value than the third one, etc. You can still move them around and stuff, just make sure they're in the same order of horizontal values they were orignally. The game loads the enemies' graphics by dynamically loading the sprites it needs when it needs them. Because the NES only has 256 8x8 tiles to use for sprite graphics (and only some of these can be used for enemies), if you have too many enemies that use different graphics in an area of a level at once (the "area" extends a little bit offscreen) the game bankswitching code will get confused, and the enemies will look like garbage. It's hard to tell when exactly this is going to happen. However, sometimes it happens if you attempt to put "non-native" enemies in certain object sets (such as a Dry Bones in a plains level.) But then again, sometimes it won't happen. There's only one enemy object set, so in theory you can put any enemy in any level. You'll just have to experiment and run the level, to see if the enemies look right. (One way to try and make sure is to not have too many enemies of different types in a general area of the level at once.) Some enemies also crash the game. Some "enemies" also turn on and off autoscrolling. If you put the autoscrolling object in a level that orignally did not have it (or sometimes, move it around or change it in levels that do have it) the game will "screw up". Some enemies (like bosses) stop the screen from scrolling, and when you beat them you automatically beat the level, so make sure you only put them in at the end of your level. They also might do things you don't expect (such as: put a Boom-Boom in World 1-1, beat him, and you automatically beat 1-1, but not the dungeon, and the locked door disappears.) So if you do this, make sure you design your map screens accordingly. The order of enemies in the enemy object set is sort of odd so I've included an enemy listing at the end of this file. Future Progress =============== Listed in arbitrary order: -Support for the pipe levels (i.e. the kind that take you to another spot on the map) and the Hammer Brother levels, and perhaps mushroom houses -Support for pointers (so you can change where pipes and doors lead to, among other things) -Level header support (each level has a 9-byte header that I haven't entirely figured out yet, could potentially control things like the length of the level, the level's music, the object set it uses, the palette it uses, etc.) -Make vertical/diagonal (World 5-9) levels display correctly (World 5-9 has somewhat odd coodinate system that I haven't figured out yet.) -Improve enemy support some -Other new features are also possible (different modes of editing levels, running the level directly from the editor, and other features are certainly a possiblility) Contact ======= LincolnSoft Email: abenintendo@hotmail.com Mario Improvement 3 Website: http://members.tripod.com/~abe_nintendo/ Go here to download all future versions and new levels. If you make any levels with this program, send them to me! I'll put them up on the Mario Improvement 3 Website. (Make sure they're in IPS format, please don't send me the entire ROM.) I expect lots of creative levels to be made with this program. Do not email me asking for ROMs, as all such messages will be ignored and deleted. Mario Improvement 3 does not come with ROMs, and never will. Version History =============== Version 0.35 - July 25, 1999 GUI Enemy support Mouse support Bugs fixed Version 0.20 - May 5, 1999 Support for all the levels Map screen support New keys added Bugs fixed Version 0.12 - April 24, 1999 New keys added Fixed obscure scrolling/object moving bugs Fixed crash bug Sped up the editor Reduced executable size Version 0.1 Beta 1 - April 13, 1999 This version was the first version. Enemy listing ============= (If there's any inconsistencies, or if you find out something about the "nothing" or "weird" objects, please tell me) 00 Nothing 01 Some weird enemy 02 Makes you bounce at beginning of level 03 Nothing 04 Weird enemy 05 Weird enemy 06 Green note block 07 Nothing 08 Invisible door that appears when you get a P-switch 09 Ship anchor 0A Weird enemy 0B 1-up 0C Star 0D Regular mushroom 0E World x boss (where x = world number) 0F Nothing 10 Nothing 11 Nothing 12 Nothing 13 Nothing 14 Nothing 15 Nothing 16 Nothing 17 Spiny cheep-cheep 18 Bowser 19 Flower 1A Weird points 1B Green note block 1C Mushroom 1D Nothing 1E Leaf 1F Vine 20 Nothing 21 Flashing mushroom 22 Flashing flower 23 Flashing star 24 Leftward-moving cloud platform, World 6-style 25 Nothing 26 Still wooden platform that moves right when you step on it 27 Wooden moving platform that moves back and forth 28 Wooden moving platform that moves up and down 29 Spike 2A Ptooie 2B Kuribo's Goomba 2C Same as 24, but slower 2D Boss Bass 2E Upward-moving "circle block" platform (used in Bowser's castle) 2F Boo Buddy 30 Hot Foot 31 Top Stretch 32 Bottom Stretch 33 Nipper Plant 34 Toad & message (used in mushroom houses) 35 Automatically clear stage 36 Leftward-moving wooden platform that falls when you step on it 37 Same as 27, but doesn't move as far 38 Same as 28, but doesn't move as far 39 Walking Nipper Plant 3A Like 2E, but falls when you step on it. 3B Surface cheep-cheep (jumps out of water) 3C Wired platform 3D Walking Ptooie 3E Floating platform 3F Dry Bones 40 Buster Beetle 41 Goal Card 42 Jumping cheep cheep (3 jumps, up and right) 43 Jumping cheep cheep (2 jumps, down and right) 44 Still falling platform (falls when you step on it) 45 "Smart" Hot Foot 46 Pipe Ptooie 47 Nothing 48 Baby cheep cheep 49 Background cloud 4A Magic ball (when you kill Boom-Boom you get this) 4B Boom-Boom 4C Flying Boom-Boom 4D Nothing 4E Nothing 4F Jumping chomp 50 Bob-omb (about to blow up) 51 Double rotodisc (rotate counterclockwise) 52 Treasure chest with treasure chest inside 53 Podoboo 54 Weird block 55 Bob-omb 56 Leftward piranha plant 57 Rightward piranha plant 58 Fire Chomp 59 Fire Snake 5A Single rotodisc (rotate clockwise) 5B Singe rotodisc (rotate counterclockwise) 5C Instantly broken brick 5D Tornado 5E Double rotodisc (rotate both ways, starting at sides) 5F Double rotodisc (rotate both ways, starting at top and bottom) 60 Double rotodisc (rotate clockwise) 61 Bloober (with babies trailing behind) 62 Bloober 63 Big Bertha 64 Surface cheep cheep (jumps out of water high) 65 Upward current 66 Downward current 67 Lava lotus 68 Upside-down moving buzzy beetle shell 69 Upside-down moving spiny shell 6A Bloober Nanny 6B Pile Driver Micro-Goomba 6C Green Koopa Troopa 6D Red Koopa Troopa 6E Green Koopa Paratroopa (bounces) 6F Red Koopa Paratroopa 70 Buzzy Beetle 71 Spiny 72 Goomba 73 Para-Goomba 74 Para-Goomba with Micro-Goombas 75 Bowser's Fireballs 76 Falling cheep-cheep 77 Cheep-Cheep 78 Still bullet bill 79 Missile bill 7A Giant Green Koopa Troopa 7B Giant Red Koopa Troopa 7C Giant Goomba 7D Giant Green Piranha Plant 7E Giant Green Koopa Paratroopa 7F Giant Red Piranha Plant 80 Green Koopa Paratroopa (doesn't bounce) 81 Hammer Brother 82 Boomerang Brother 83 Lakitu 84 Red Spiny Egg 85 Green Spiny Egg 86 Sledge Brother 87 Fire Brother 88 Yellow Cheep Cheep 89 Chain Chomp 8A Regular Thwomp 8B Leftward-moving Thwomp 8C Rightward-moving Thwomp 8D Upward-moving Thwomp 8E Up and Leftward-moving Thwomp 8F Down and Leftward-moving Thwomp 90 Step-activated Spinning Platform 91 Constantly spinning Spinning Platform 92 Periodically spinning Spinning Platform (clockwise) 93 Periodically spinning Spinning Platform (counterclockwise) 94 Giant "?" block with 3 1-ups 95 Giant "?" block with mushroom 96 Giant "?" block with flower 97 Giant "?" block with leaf 98 Giant "?" block with Tanooki Suit 99 Giant "?" block with Frog Suit 9A Giant "?" block with Hammer Bros. Suit 9B Nothing 9C Nothing 9D Upward rocket engine 9E Podoboo (comes out of lava) 9F Para-Beetle A0 Upward green piranha plant A1 Downward green piranha plant A2 Upward red piranha plant A3 Downward red piranha plant A4 Upward Green Venus Fire Trap A5 Downward Green Venus Fire Trap A6 Upward Red Venus Fire Trap A7 Downward Red Venus Fire Trap A8 Automatically moving upward directional platform A9 Automatically moving multi-directional platform AA Propeller AB Nothing AC Leftward rocket engine AD Brown Rocky Wrench AE Nut (use with corkscrew) AF The Angry Sun B0 Still big bullet B1 Rightward rocket engine B2 Downward rocket engine B3 Weird flashing enemy B4 Unlimited flying cheep-cheeps B5 Unlimited spiny cheep-cheeps B6 Nothing B7 Unlimited para-beetles B8 Moving background clouds B9 Unlimited leftward-moving falling platforms BA Nothing BB Nothing BC Bullet bills BD Missile bills BE Rocky Wrench BF Cross-shaped bullets (for use with cross-shaped bullet shooters) C0 Goomba factory (leftward) C1 Goomba factory (rightward) C2 Bullet balls (leftward) C3 Giant bullet balls (leftward) C4 Bullet balls (up/left) C5 Bullet balls (up/right) C6 Bullet balls (down/left) C7 Bullet balls (down/right) C8 Seems the same as C4 C9 Seems the same as C5 CA Seems the same as C6 CB Seems the same as C7 CC Bullet balls (rightward) CD Giant bullet balls (rightward) CE Bob-omb factory (for use with bullet shooters) (leftward) CF Bob-omb factory (for use with bullet shooters) (rightward) D0 Lasers (for use with Bowser Statues) D1 3 Green Koopa Paratroopas D2 3 Yellow Cheep-Cheeps D3 Scroll object D4 Scroll object D5 "The king has been transformed" message D6 Nothing D7-FE Crashes game FF This tells the game to stop reading sprite data so there will be no sprites if you put this in. Legal Stuff =========== Mario Improvement 3 Copyright (C) 1999 by LincolnSoft. All rights reserved. Allegro game programming library by Shawn Hargreaves. Nintendo Entertainment System (NES) is a registered trademark of Nintendo of America. Super Mario Bros. 3 is a trademark of Nintendo of America. This product includes software developed by the University of California, Berkeley and its contributors. This program was compiled with DJGPP, available at http://www.delorie.com/ Neither LincolnSoft nor the author are affiliated with Nintendo nor condone ROM piracy. This program is freeware. When you use this software you do so at your own risk. Neither LincolnSoft nor the author are responsible for any loss or damage resulting as a result of the use or misuse of this software. This program may be distributed freely as long as the archive remains unchanged and ROMs are not packaged with the program.