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.









 



 
